diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index b1dc5f82be91bc3b109a161e2060b3e8bff1baf3..8d4280cf68c20dccc49abd6fef324f4ab4343caf 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -1109,7 +1109,7 @@
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <title></title>
                 <description></description>
                 <dependencies>
@@ -1142,7 +1142,7 @@
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <title></title>
                 <description></description>
                 <dependencies>
@@ -1904,7 +1904,7 @@
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -2444,20 +2444,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>CONTACT_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>INFO</name>
                 <dbName></dbName>
@@ -3398,7 +3384,7 @@
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index c816a762ad4a67c2cb55ad09fcea6b534af94ad2..f8c7af04b1f75331bbe83a26980787f53783455d 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -19,6 +19,7 @@
       <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>
     </entityField>
@@ -151,7 +152,7 @@
     </entityParameter>
     <entityConsumer>
       <name>Links</name>
-      <title>Verknüpfungen</title>
+      <title>Connections</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
@@ -258,7 +259,7 @@
     </entityField>
     <entityConsumer>
       <name>ModuleTrees</name>
-      <title>Baum</title>
+      <title>Tree</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
@@ -279,16 +280,16 @@
     <entityActionField>
       <name>newActivity_action</name>
       <fieldType>ACTION</fieldType>
-      <title>Neue Aktivität</title>
+      <title>New activity</title>
       <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newactivity_action/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:PLUS</iconId>
+      <iconId>NEON:HISTORY</iconId>
     </entityActionField>
     <entityActionField>
       <name>newTask_action</name>
       <fieldType>ACTION</fieldType>
-      <title>Neue Aufgabe</title>
+      <title>New task</title>
       <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newtask_action/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:PLUS</iconId>
+      <iconId>VAADIN:TASKS</iconId>
     </entityActionField>
     <entityParameter>
       <name>ParentId_param</name>
diff --git a/entity/AddressType_entity/AddressType_entity.aod b/entity/AddressType_entity/AddressType_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8a71a164f322a8284003fcc21c1be45bc740a181
--- /dev/null
+++ b/entity/AddressType_entity/AddressType_entity.aod
@@ -0,0 +1,77 @@
+<?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.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.2.1">
+  <name>AddressType_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <titleProcess>%aditoprj%/entity/AddressType_entity/titleProcess.js</titleProcess>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>KEYID</name>
+    </entityField>
+    <entityField>
+      <name>TITLE</name>
+    </entityField>
+    <entityField>
+      <name>AB_KEYWORD_ENTRYID</name>
+    </entityField>
+    <entityProvider>
+      <name>ByCategory</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <lookupIdfield>KEYID</lookupIdfield>
+      <dependencies>
+        <entityDependency>
+          <name>b6ddc934-51ac-43a5-8aa9-7239423ea14d</name>
+          <entityName>Address_entity</entityName>
+          <fieldName>KeywordAddressType</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>usageFilter_param</name>
+          <expose v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>usageFilter_param</name>
+      <title></title>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <alias>Data_alias</alias>
+      <conditionProcess>%aditoprj%/entity/AddressType_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <linkInformation>
+        <linkInformation>
+          <name>a4614347-7edb-4101-9e79-40971acfd79e</name>
+          <tableName>AB_KEYWORD_ENTRY</tableName>
+          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>AB_KEYWORD_ENTRYID.value</name>
+          <recordfield>AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>KEYID.value</name>
+          <recordfield>AB_KEYWORD_ENTRY.KEYID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TITLE.value</name>
+          <recordfield>AB_KEYWORD_ENTRY.TITLE</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..99de51563c292033c4e4bf73e103579af4f5d021
--- /dev/null
+++ b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,25 @@
+import("system.db");
+import("system.vars");
+import("system.result");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+import("Keyword_lib");
+
+var cond = SqlCondition.begin()
+                       .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.addressType());
+
+
+var usageFilter = vars.get("$param.usageFilter_param");
+if (usageFilter)
+{
+    var keywordAttribute = new KeywordAttribute($KeywordRegistry.addressType(), usageFilter);
+    cond.andAttachPrepared(SqlCondition.begin()
+                                       .andPrepare("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID", keywordAttribute.id)
+                                       .andPrepare("AB_KEYWORD_ATTRIBUTERELATION." + keywordAttribute.dbField, "1")
+                                       .buildSql("AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID in (\n\
+                                                    select AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID \n\
+                                                    from AB_KEYWORD_ATTRIBUTERELATION ", null, ")"));
+}
+
+cond = db.translateStatement(cond.build("1 = 2"));
+result.string(cond);
\ No newline at end of file
diff --git a/entity/AddressType_entity/titleProcess.js b/entity/AddressType_entity/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..554c806f6eba1b0e1f71ea1b1b1b9dc8f032b094
--- /dev/null
+++ b/entity/AddressType_entity/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+result.string(translate.text(vars.get("$field.TITLE")));
\ No newline at end of file
diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod
index 6142a768ec32f6a6623c6abfa03ccf95349dbb30..124f22a21699db143ad14c524f9e9d9fea69d4f1 100644
--- a/entity/Address_entity/Address_entity.aod
+++ b/entity/Address_entity/Address_entity.aod
@@ -42,6 +42,7 @@
       <title>Country</title>
       <consumer>Countries</consumer>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Address_entity/entityfields/country/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Address_entity/entityfields/country/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
@@ -71,7 +72,6 @@
     <entityProvider>
       <name>OrganisationAddresses</name>
       <fieldType>DEPENDENCY_IN</fieldType>
-      <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
           <name>b484b43c-16f6-4875-9787-f0813dd200cb</name>
@@ -84,7 +84,7 @@
         <entityParameter>
           <name>ContactType_param</name>
           <valueProcess>%aditoprj%/entity/Address_entity/entityfields/organisationaddresses/children/contacttype_param/valueProcess.js</valueProcess>
-          <expose v="true" />
+          <expose v="false" />
           <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
         </entityParameter>
         <entityParameter>
@@ -106,7 +106,6 @@
     <entityProvider>
       <name>ContactAddresses</name>
       <fieldType>DEPENDENCY_IN</fieldType>
-      <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
           <name>efdb2f19-ab41-4f49-941a-843610e2b31b</name>
@@ -119,7 +118,7 @@
         <entityParameter>
           <name>ContactType_param</name>
           <valueProcess>%aditoprj%/entity/Address_entity/entityfields/contactaddresses/children/contacttype_param/valueProcess.js</valueProcess>
-          <expose v="true" />
+          <expose v="false" />
           <triggerRecalculation v="true" />
           <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
         </entityParameter>
@@ -149,7 +148,6 @@
       <name>OrganisationAddressesByContact</name>
       <fieldType>DEPENDENCY_IN</fieldType>
       <documentation>%aditoprj%/entity/Address_entity/entityfields/organisationaddressesbycontact/documentation.adoc</documentation>
-      <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
           <name>388f6ad3-b817-4dc0-a5d5-a41eec485357</name>
@@ -162,7 +160,7 @@
         <entityParameter>
           <name>ContactType_param</name>
           <valueProcess>%aditoprj%/entity/Address_entity/entityfields/organisationaddressesbycontact/children/contacttype_param/valueProcess.js</valueProcess>
-          <expose v="true" />
+          <expose v="false" />
           <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
         </entityParameter>
       </children>
@@ -192,13 +190,13 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
+        <entityName>AddressType_entity</entityName>
+        <fieldName>ByCategory</fieldName>
       </dependency>
       <children>
         <entityParameter>
-          <name>containerName_param</name>
-          <valueProcess>%aditoprj%/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/valueProcess.js</valueProcess>
+          <name>usageFilter_param</name>
+          <valueProcess>%aditoprj%/entity/Address_entity/entityfields/keywordaddresstype/children/usagefilter_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Address_entity/entityfields/contactaddresses/children/contacttype_param/valueProcess.js b/entity/Address_entity/entityfields/contactaddresses/children/contacttype_param/valueProcess.js
deleted file mode 100644
index 805812e9e79c8e443c591c62a20738c9d27e4760..0000000000000000000000000000000000000000
--- a/entity/Address_entity/entityfields/contactaddresses/children/contacttype_param/valueProcess.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import("system.result");
-result.object(2);
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/country/valueProcess.js b/entity/Address_entity/entityfields/country/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0bbec92588a0d5155ba8f200c1c8699e0c106ed7
--- /dev/null
+++ b/entity/Address_entity/entityfields/country/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value"))
+{
+    result.string("DE");
+}
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/valueProcess.js b/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/valueProcess.js
deleted file mode 100644
index 167d3dc35f38110620b4eb5e6004b4c4454578f2..0000000000000000000000000000000000000000
--- a/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-result.string($KeywordRegistry.addressType());
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/keywordaddresstype/children/usagefilter_param/valueProcess.js b/entity/Address_entity/entityfields/keywordaddresstype/children/usagefilter_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..efc47e64ed30ff43c3af035f0771d32e4d0b55a6
--- /dev/null
+++ b/entity/Address_entity/entityfields/keywordaddresstype/children/usagefilter_param/valueProcess.js
@@ -0,0 +1,20 @@
+import("system.logging");
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var keywordAttributeFilterName = "";
+var contactType = vars.get("$param.ContactType_param");
+
+switch (contactType) {
+    case Contact.TYPES.Contact:
+    case Contact.TYPES.Private:
+        keywordAttributeFilterName = "contact";
+        break;
+    case Contact.TYPES.Organisation:
+        keywordAttributeFilterName = "organisation";
+        break;
+}
+logging.log("contactType>>" + contactType);
+logging.log("keywordAttributeFilterName>>" + keywordAttributeFilterName);
+result.object(keywordAttributeFilterName);
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/organisationaddresses/children/contacttype_param/valueProcess.js b/entity/Address_entity/entityfields/organisationaddresses/children/contacttype_param/valueProcess.js
deleted file mode 100644
index 85a095aeb8aaaff00b627db260104e8790cb3a03..0000000000000000000000000000000000000000
--- a/entity/Address_entity/entityfields/organisationaddresses/children/contacttype_param/valueProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.object(1);
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/organisationaddressesbycontact/children/contacttype_param/valueProcess.js b/entity/Address_entity/entityfields/organisationaddressesbycontact/children/contacttype_param/valueProcess.js
deleted file mode 100644
index 85a095aeb8aaaff00b627db260104e8790cb3a03..0000000000000000000000000000000000000000
--- a/entity/Address_entity/entityfields/organisationaddressesbycontact/children/contacttype_param/valueProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.object(1);
\ No newline at end of file
diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod
index d3d68b7e20e1569c22d38ab36e7ef5c7b75531ee..66244e2a5aca0e2b79364c016963cae6cafdebfb 100644
--- a/entity/AnyContact_entity/AnyContact_entity.aod
+++ b/entity/AnyContact_entity/AnyContact_entity.aod
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.2.1">
   <name>AnyContact_entity</name>
-  <description>former Relation</description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <titleProcess>%aditoprj%/entity/AnyContact_entity/titleProcess.js</titleProcess>
   <recordContainer>db</recordContainer>
@@ -31,7 +30,9 @@
     </entityProvider>
     <entityField>
       <name>ADDRESS_ID</name>
+      <title>standard address</title>
       <searchable v="false" />
+      <displayValueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/address_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>LANGUAGE</name>
@@ -56,7 +57,7 @@
     <entityField>
       <name>contactType</name>
       <description>Relation type. Value is based on the existance or non-existance of ORGANISATION_ID and PERSON_ID.
-See RelationUtils.getRelationTypeByPersOrg for possible values</description>
+See ContactUtils.getRelationTypeByPersOrg for possible values</description>
       <contentType>NUMBER</contentType>
       <searchable v="false" />
       <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/contactType/valueProcess.js</valueProcess>
@@ -92,7 +93,7 @@ See RelationUtils.getRelationTypeByPersOrg for possible values</description>
       </children>
     </entityConsumer>
     <entityField>
-      <name>ORG_NAME</name>
+      <name>ORGANISATION_NAME</name>
       <title>Organisation name</title>
     </entityField>
     <entityField>
@@ -152,6 +153,20 @@ See RelationUtils.getRelationTypeByPersOrg for possible values</description>
       <name>RELATIONSHIP</name>
       <description>TODO: Beziehung zu der Relation 1024846 (z.B. per Ampelsystem)</description>
     </entityField>
+    <entityField>
+      <name>PERSON_MIDDLENAME</name>
+    </entityField>
+    <entityField>
+      <name>PERSON_TITLE</name>
+    </entityField>
+    <entityField>
+      <name>PERSON_SALUTATION</name>
+    </entityField>
+    <entityField>
+      <name>PERSON_FULL_NAME</name>
+      <title>Person</title>
+      <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/person_full_name/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -214,7 +229,7 @@ See RelationUtils.getRelationTypeByPersOrg for possible values</description>
           <recordfield>CONTACT.STATUS</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
-          <name>ORG_NAME.value</name>
+          <name>ORGANISATION_NAME.value</name>
           <recordfield>ORGANISATION.NAME</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
@@ -237,6 +252,18 @@ See RelationUtils.getRelationTypeByPersOrg for possible values</description>
           <name>RELATIONSHIP.value</name>
           <recordfield>CONTACT.RELATIONSHIP</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PERSON_MIDDLENAME.value</name>
+          <recordfield>PERSON.MIDDLENAME</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PERSON_TITLE.value</name>
+          <recordfield>PERSON.TITLE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PERSON_SALUTATION.value</name>
+          <recordfield>PERSON.SALUTATION</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/AnyContact_entity/entityfields/address_id/displayValueProcess.js b/entity/AnyContact_entity/entityfields/address_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f212ec24e70e27e30a7f0a66299874a335617f4d
--- /dev/null
+++ b/entity/AnyContact_entity/entityfields/address_id/displayValueProcess.js
@@ -0,0 +1,8 @@
+import("system.db");
+import("system.vars");
+import("system.result");
+import("PostalAddress_lib");
+
+var addrId = vars.get("$field.ADDRESS_ID");
+var addr = AddressUtils.getFormattedOnlineAddressById(addrId);
+result.string(addr);
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js b/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js
index 51fe974083978cb392d4f2c281c66687794d2d50..32bb8ca1976dad71cedfc90616c378fce1d9ccde 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(RelationUtils.getRelationType(vars.get("$field.CONTACTID"), vars.get("$field.PERSON_ID"), vars.get("$field.ORGANISATION_ID")));
\ No newline at end of file
+result.object(ContactUtils.getRelationType(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/entityfields/image/valueProcess.js b/entity/AnyContact_entity/entityfields/image/valueProcess.js
index bc039e74557533bbb18b9efc1a7ebe573abcf3ee..d30dd86601985ac8a4812256a8365faf820353f4 100644
--- a/entity/AnyContact_entity/entityfields/image/valueProcess.js
+++ b/entity/AnyContact_entity/entityfields/image/valueProcess.js
@@ -7,7 +7,7 @@ import("Contact_lib");
 
 if (vars.get("$field.contactType") == 1) // 1 == org, 2 == person, 3 == person
 {
-    result.string(OrgUtils.getImage(vars.get("$field.ORGANISATION_ID"), vars.getString("$field.ORG_NAME")));
+    result.string(OrgUtils.getImage(vars.get("$field.ORGANISATION_ID"), vars.getString("$field.ORGANISATION_NAME")));
 }
 else
 {
diff --git a/entity/AnyContact_entity/entityfields/person_full_name/valueProcess.js b/entity/AnyContact_entity/entityfields/person_full_name/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..682dadd6b419f7ad33a1928786fee5f74b202ffe
--- /dev/null
+++ b/entity/AnyContact_entity/entityfields/person_full_name/valueProcess.js
@@ -0,0 +1,14 @@
+import("system.vars");
+import("system.result");
+import("Util_lib");
+import("Contact_lib");
+
+var contact = new Contact();
+contact.salutation = vars.get("$field.PERSON_SALUTATION");
+contact.title = vars.get("$field.PERSON_TITLE");
+contact.firstname = vars.get("$field.PERSON_FIRSTNAME");
+contact.middlename = vars.get("$field.PERSON_MIDDLENAME");
+contact.lastname = vars.get("$field.PERSON_LASTNAME");
+
+var renderer = new ContactTitleRenderer(contact, null);
+result.string(renderer.asString());
\ 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 754b510a9579742a29e6c83c9960e86b34808e25..c2008fc0d19dfe96ca7074d6f2ceddf2c5941f78 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(RelationUtils.getFullRelationFromString());
\ No newline at end of file
+result.string(ContactUtils.getFullRelationString());
\ No newline at end of file
diff --git a/entity/AnyContact_entity/titleProcess.js b/entity/AnyContact_entity/titleProcess.js
index 383efef8d5428179a79ee3f5042f8cf5482b3843..54d51a48576dbc49bf35a56ce5cf570dd7cea087 100644
--- a/entity/AnyContact_entity/titleProcess.js
+++ b/entity/AnyContact_entity/titleProcess.js
@@ -1,8 +1,15 @@
 import("system.vars");
 import("system.result");
+import("Util_lib");
+import("Contact_lib");
 
-if(vars.get("$field.PERSON_FIRSTNAME")) {
-    result.string(vars.get("$field.PERSON_FIRSTNAME") + " " + vars.get("$field.PERSON_LASTNAME"));
-} else {
-    result.string(vars.get("$field.ORG_NAME"));
-}
+var contact = new Contact();
+contact.organisationName = vars.get("$field.ORGANISATION_NAME");
+contact.salutation = vars.get("$field.PERSON_SALUTATION");
+contact.title = vars.get("$field.PERSON_TITLE");
+contact.firstname = vars.get("$field.PERSON_FIRSTNAME");
+contact.middlename = vars.get("$field.PERSON_MIDDLENAME");
+contact.lastname = vars.get("$field.PERSON_LASTNAME");
+
+var renderer = new ContactTitleRenderer(contact);
+result.string(renderer.asString());
\ No newline at end of file
diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod
index 593eaa5ce9c299b66263ce41f1ad705e757bbaa3..7123f2201ac1888b2a0a547f46b46b121b3e71de 100644
--- a/entity/Appointment_entity/Appointment_entity.aod
+++ b/entity/Appointment_entity/Appointment_entity.aod
@@ -17,13 +17,16 @@
     <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>
@@ -43,9 +46,11 @@
     </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>
@@ -54,9 +59,11 @@
     <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>
@@ -100,9 +107,11 @@
     </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>
diff --git a/entity/Appointment_entity/entityfields/appointmentlinks/children/appointmentid_param/valueProcess.js b/entity/Appointment_entity/entityfields/appointmentlinks/children/appointmentid_param/valueProcess.js
deleted file mode 100644
index 4caaf9402605c0a83fd12dcc35e028cce239345d..0000000000000000000000000000000000000000
--- a/entity/Appointment_entity/entityfields/appointmentlinks/children/appointmentid_param/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.logging");
-import("system.result");
-import("system.vars");
-
-logging.log("SET: -" + vars.get("$field.UID") + "-")
-result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/attendees/valueProcess.js b/entity/Appointment_entity/entityfields/attendees/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..bc78b4d9d3d55e3ce2a327d8c5e5fde3a0698eb6
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/attendees/valueProcess.js
@@ -0,0 +1,15 @@
+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.AFFECTEDUSERS])
+        result.string(event[calendars.AFFECTEDUSERS]);
+}
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/begin/valueProcess.js b/entity/Appointment_entity/entityfields/begin/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0ec0da52b21a9bb3169b5447365dda3006449bfb
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/begin/valueProcess.js
@@ -0,0 +1,15 @@
+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.DTSTART])
+        result.string(event[calendars.DTSTART]);
+}
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/classification/valueProcess.js b/entity/Appointment_entity/entityfields/classification/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a4056b88346388dc049b7dbcf191192c0ce66b57
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/classification/valueProcess.js
@@ -0,0 +1,15 @@
+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/end/valueProcess.js b/entity/Appointment_entity/entityfields/end/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3ed796fe837b42f4eec0696316a9f20e6654a7eb
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/end/valueProcess.js
@@ -0,0 +1,15 @@
+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.DTEND])
+        result.string(event[calendars.DTEND]);
+}
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/recurrenceid/valueProcess.js b/entity/Appointment_entity/entityfields/recurrenceid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a9bbcc8f22e6c3c92abf23eddda3cdf7ddbebc6
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/recurrenceid/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.neon");
+import("system.vars");
+import("system.calendars");
+import("system.result");
+
+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.RECURRENCEID])
+        result.string(event[calendars.RECURRENCEID]);
+}
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/reminder/valueProcess.js b/entity/Appointment_entity/entityfields/reminder/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b2b5966bb17617eefdd962c7b56942bba6f2173d
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/reminder/valueProcess.js
@@ -0,0 +1,15 @@
+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.REMINDER_DURATION])
+        result.string(event[calendars.REMINDER_DURATION]);
+}
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/reminder_check/valueProcess.js b/entity/Appointment_entity/entityfields/reminder_check/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0929f447e7a9425bc6aee2645697c4e8da534282
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/reminder_check/valueProcess.js
@@ -0,0 +1,15 @@
+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.HASREMINDER])
+        result.string(event[calendars.HASREMINDER]);
+}
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/rrule/valueProcess.js b/entity/Appointment_entity/entityfields/rrule/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..560cffd4c2c2ce0f57494440835a19fa80eb7e91
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/rrule/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.neon");
+import("system.vars");
+import("system.calendars");
+import("system.result");
+
+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.RRULE])
+        result.string(event[calendars.RRULE]);
+}
\ 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 d3f5a12faa99758192ecc4ed3fc22c9249232e86..432475ace31148f4466c021837b49896e0a6fc45 100644
--- a/entity/Appointment_entity/entityfields/summary/valueProcess.js
+++ b/entity/Appointment_entity/entityfields/summary/valueProcess.js
@@ -1 +1,15 @@
-
+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.SUMMARY])
+        result.string(event[calendars.SUMMARY]);
+}
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/transparency/valueProcess.js b/entity/Appointment_entity/entityfields/transparency/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..774f704312ccb614d774153b95e867a49ac1b952
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/transparency/valueProcess.js
@@ -0,0 +1,15 @@
+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.TRANSPARENCY])
+        result.string(event[calendars.TRANSPARENCY]);
+}
\ 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 cdb013d534b7da88ec0ab2504791226409950ffc..469d54a1670eaee152ef65a0ca7f8449f704b46a 100644
--- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
@@ -10,7 +10,6 @@ if(vars.exists("$param.Entry_param"))
 {
 
     var entry = JSON.parse(vars.getString("$param.Entry_param"));
-        logging.log(entry.toSource())
 
     var masterEntry = null;
     if (vars.exists("$param.MasterEntry_param") && vars.get("$param.MasterEntry_param") != "") {
diff --git a/entity/Appointment_entity/recordcontainers/jdito/onInsert.js b/entity/Appointment_entity/recordcontainers/jdito/onInsert.js
index 64df0562ab699eb5da2989fde4ec97879d229d47..c9605494a99c5d654ff5513a9454754c83e2c524 100644
--- a/entity/Appointment_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/Appointment_entity/recordcontainers/jdito/onInsert.js
@@ -10,10 +10,13 @@ import("system.db");
 import("system.result");
 import("system.tools");
 
+logging.log("onInsert");
+
 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.
+logging.log("attendees: "+ vars.get("$field.ATTENDEES"));
 event[calendars.AFFECTEDUSERS] = vars.get("$field.ATTENDEES");
 event[calendars.STATUS] = vars.getString("$field.STATUS");
 event[calendars.SUMMARY] = vars.getString("$field.SUMMARY");
@@ -24,6 +27,8 @@ 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";
diff --git a/entity/Appointment_entity/recordcontainers/jdito/onUpdate.js b/entity/Appointment_entity/recordcontainers/jdito/onUpdate.js
index b0b135b62a2d1e77cf852189ab621ea76037dc98..2fe0a95ace54c144bf0ae994071933a6128ba54f 100644
--- a/entity/Appointment_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/Appointment_entity/recordcontainers/jdito/onUpdate.js
@@ -12,12 +12,26 @@ import("system.result");
 import("system.tools");
 
 
+logging.log("onUpdate");
 // Dieser Prozess speichert die im Frame angezeigten Daten
 // Je nach Modus (INSERT, EDIT) wird ein neuer Datensatz angelegt oder der alte editiert
 
-if(vars.exists("$param.Entry_param") && vars.getString("$param.Entry_param") != "")
+var event;
+
+if(vars.get("$field.SAFESCOPEFIELD") == "ALL" && vars.exists("$param.MasterEntry_param") && vars.getString("$param.MasterEntry_param") != "")
+{
+    event = JSON.parse(vars.getString("$param.MasterEntry_param")); 
+    logging.log("safescope all");
+}
+else if(vars.exists("$param.Entry_param") && vars.getString("$param.Entry_param") != "")
 {
-    var event = JSON.parse(vars.getString("$param.Entry_param"));
+    event = JSON.parse(vars.getString("$param.Entry_param"));
+    logging.log("safescope this");
+}
+
+if(event)
+{    
+    var differencesDetected = areEventAndFieldsDifferent(event);
 
     //if ( calendars.getBackendType() == calendars.BACKEND_EXCHANGEWS  && event[calendars.ORGANIZER2]["cn"] != event[calendars.USER2]["cn"])
     //    question.showMessage(translate.text("Ein Gruppentermin kann nur durch den Organisator bearbeitet werden."));
@@ -36,301 +50,43 @@ if(vars.exists("$param.Entry_param") && vars.getString("$param.Entry_param") !=
         event[calendars.CATEGORIES] = vars.get("$field.CATEGORIES");
         event[calendars.AFFECTEDUSERS] = vars.get("$field.ATTENDEES");
         event[calendars.TRANSPARENCY] = vars.get("$field.TRANSPARENCY");
-        if(vars.get("$field.REMINDER") != undefined && vars.get("$field.REMINDER") != "")
+        if(vars.get("$field.REMINDER"))
         {
             event[calendars.HASREMINDER] = "true";
             event[calendars.REMINDER_DURATION] = vars.get("$field.REMINDER");
         }
-        if(event[calendars.RRULE] != undefined)     
-            event[calendars.RRULE] = vars.getString("$field.RRULE")
-    
+        
+        if(event[calendars.RRULE])
+            event[calendars.RRULE] = [vars.getString("$field.RRULE")];
         
         calendars.updateEntry(event);
 }
 
-// Liefert die AffectedUsers
-function getAffectedUsers( pEvent )
-{
-        var affectedusers = vars.get("$context.affectedusers");   
-        var attendess = pEvent[calendars.ATTENDEES]
-        var calendarusers = [];
-        for ( var i = 0; i < affectedusers.length; i++)   
-        {
-            var insert = true;
-            for ( var y = 0; y < attendess.length; y++)
-            {
-                // Teilnehmer schon vorhanden
-                if ( text.encodeMS( [attendess[y]["paramvalue"], "CN:" + attendess[y]["cn"]] ) == affectedusers[i][0] )
-                {
-                    var userparts = [attendess[y]["paramvalue"]];
-                    if ( affectedusers[i][1] != "" && affectedusers[i][1] != "UNKNOWN" )  attendess[y]["partstat"] = affectedusers[i][1];
-                    for ( var part in attendess[y] )   if ( part != "paramvalue")  userparts.push(part + ":" + attendess[y][part] )
-                    calendarusers.push( text.encodeMS(userparts) );
-                    insert = false;
-                    break;
-                }
-            }
-            if ( insert ) // Teilnehmer noch nicht im Termin vorhanden
-            {
-                var resource = db.cell("select THEME from THEME where THEMEID = '" + affectedusers[i][0] + "'");
-                if( resource != "" && tools.existUsers(resource) )   
-                    calendarusers.push(text.encodeMS(text.decodeMS(calendars.getCalendarUser(resource)).concat("CUTYPE:RESOURCE")));
-                else    calendarusers.push(affectedusers[i][0]);
-            }
-        }
-        return text.encodeMS( calendarusers );
-    }
 
-// 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("$comp.rec_end");
-
-    // Automatische Erkennung, was gewollt ist
-    if (rec_end == "")
-    {
-        if (vars.get("$comp.rec_end_count") != "")
-            rec_end = "Endet nach Anzahl Terminen";
-        else if (vars.get("$comp.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("$comp.rec_end_count"));
-    }
-    else if (rec_end == "Endet am")
-    {
-        var dat = vars.get("$comp.rec_end_date");
-        var start = vars.get("$comp.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("$comp.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("$comp.rec_yearly");
-    var rec_yearly_month = vars.get("$comp.rec_yearly_month");
-    var rec_yearly_day = vars.get("$comp.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("$comp.rec_yearly_day2") != "" && vars.get("$comp.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("$comp.rec_yearly_month2");
-        day = vars.get("$comp.rec_yearly_day2");
-        var number = vars.get("$comp.rec_yearly_number2");
-        event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTH="+month+";BYDAY="+number+day);
-    }
-}
-/***********************/
-function rec_monthly(event)
-{
-    var rec_month = vars.get("$comp.rec_month");
-    var rec_monthly_day = vars.get("$comp.rec_monthly_day");
-    var rec_monthly_interval = vars.get("$comp.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("$comp.rec_monthly_day2") != "" && vars.get("$comp.rec_monthly_interval2") != "" && vars.get("$comp.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("$comp.rec_monthly_day2");
-        interval = vars.get("$comp.rec_monthly_interval2");
-        var weekday = vars.get("$comp.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("$comp.rec_weekly_intervall");
-    if (rec_weekly_intervall == "")
-        rec_weekly_intervall = "1";
-
-    var days = new Array();
-    var count = 0;
-    if (vars.get("$comp.rec_weekly_mo") == "true")
-    {
-        days[count] = "MO";
-        count++;
-    }
-    if (vars.get("$comp.rec_weekly_di") == "true")
-    {
-        days[count] = "TU";
-        count++;
-    }
-    if (vars.get("$comp.rec_weekly_mi") == "true")
-    {
-        days[count] = "WE";
-        count++;
-    }
-    if (vars.get("$comp.rec_weekly_do") == "true")
-    {
-        days[count] = "TH";
-        count++;
-    }
-    if (vars.get("$comp.rec_weekly_fr") == "true")
-    {
-        days[count] = "FR";
-        count++;
-    }
-    if (vars.get("$comp.rec_weekly_sa") == "true")
-    {
-        days[count] = "SA";
-        count++;
-    }
-    if (vars.get("$comp.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++)
+* checks if the entryParam has different values like the current fieldvalues
+*/
+function areEventAndFieldsDifferent(event){
+    
+    var different = false;
+    
+    if( event[calendars.ID] != vars.getString("$field.UID") ||
+        event[calendars.TYPE] != calendars.VEVENT ||
+        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.HASREMINDER] != "false" ||
+        event[calendars.CLASSIFICATION] != vars.get("$field.CLASSIFICATION") ||
+        event[calendars.CATEGORIES] != vars.get("$field.CATEGORIES") ||
+        event[calendars.AFFECTEDUSERS] != vars.get("$field.ATTENDEES") ||
+        event[calendars.TRANSPARENCY] != vars.get("$field.TRANSPARENCY"))
         {
-            event[calendars.RRULE][0] += days[i];
-            if (i+1 < count)
-            {
-                event[calendars.RRULE][0] += ",";
-            }
+            different = true;
         }
-    }
-}
-/***********************/
-function rec_daily(event)
-{
-    var rec_dailytype = vars.get("$comp.rec_dailytype");
-    var rec_dailydays = vars.get("$comp.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);
-    }
+    
+    return different;
 }
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
index b0a8d74257436807f7c265899c6a0a453307b587..97767789a37e4b96af5efc880f53611fcb69fc00 100644
--- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod
+++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
@@ -16,9 +16,10 @@
     <entityField>
       <name>AB_ATTRIBUTE_ID</name>
       <title>Attribute</title>
+      <consumer>SpecificAttribute</consumer>
       <mandatory v="true" />
-      <possibleItemsProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/ab_attribute_id/possibleItemsProcess.js</possibleItemsProcess>
       <groupable v="true" />
+      <displayValueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js</displayValueProcess>
       <onValueChange>%aditoprj%/entity/AttributeRelation_entity/entityfields/ab_attribute_id/onValueChange.js</onValueChange>
     </entityField>
     <entityField>
@@ -75,6 +76,12 @@
           <fieldName>Attributes</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>a9b81050-e7f8-408d-aa73-e2709188e121</name>
+          <entityName>SalesprojectCompetition_entity</entityName>
+          <fieldName>Attributes</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
@@ -143,6 +150,34 @@
     <entityField>
       <name>MEMO_VALUE</name>
     </entityField>
+    <entityParameter>
+      <name>filteredAttributeIds_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityConsumer>
+      <name>SpecificAttribute</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Attribute_entity</entityName>
+        <fieldName>SpecificAttribute</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>objectType_param</name>
+          <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificattribute/children/objecttype_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+          <triggerRecalculation v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>filteredAttributeIds_param</name>
+          <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificattribute/children/filteredattributeids_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..601eb01de38092b0173fa46c4a762f98a38fb53e
--- /dev/null
+++ b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+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
diff --git a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/onValueChange.js b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/onValueChange.js
index e641c892888d2ee12cdbf69f722f489e30af0f93..9347efa6c0caed251cd27fdabf8e94710302e365 100644
--- a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/onValueChange.js
+++ b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/onValueChange.js
@@ -8,4 +8,5 @@ if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT ||
     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/ab_attribute_id/possibleItemsProcess.js b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/possibleItemsProcess.js
deleted file mode 100644
index 2449074c9672b85ce7ddec1e78cfce6710a1e7fb..0000000000000000000000000000000000000000
--- a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/possibleItemsProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.vars");
-import("system.result");
-import("Attribute_lib");
-        
-result.object(AttributeUtil.getPossibleAttributes(vars.get("$param.objectType_param")));
diff --git a/entity/AttributeRelation_entity/entityfields/attributerelation_value/valueProcess.js b/entity/AttributeRelation_entity/entityfields/attributerelation_value/valueProcess.js
index 4895956380293de93b3a437d1ab0e2e156d6e7ee..f1d1025828f4a7c554dd525a6f8ed38fc3551b2f 100644
--- a/entity/AttributeRelation_entity/entityfields/attributerelation_value/valueProcess.js
+++ b/entity/AttributeRelation_entity/entityfields/attributerelation_value/valueProcess.js
@@ -3,39 +3,19 @@ import("system.result");
 import("system.vars");
 import("Attribute_lib");
 
+"$field.CHAR_VALUE";
+"$field.DATE_VALUE";
+"$field.NUMBER_VALUE";
+"$field.BOOL_VALUE";
+"$field.ID_VALUE";
+"$field.MEMO_VALUE";
+
 if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW)
 {
-    var attrType = AttributeHandler.begin(vars.get("$field.AB_ATTRIBUTE_ID")).getAttributeType();
+    var attrField = AttributeHandler.begin(vars.get("$field.AB_ATTRIBUTE_ID")).getAttributeField();
     var value = null;
-    if (attrType != null) //load the value from the correct field for the type
-    {
-        switch (attrType)
-        {
-            case $AttributeTypes.TEXT.toString():          
-                value = vars.get("$field.CHAR_VALUE");
-                break;    
-            case $AttributeTypes.DATE.toString():
-                value = vars.get("$field.DATE_VALUE");
-                break;
-            case $AttributeTypes.NUMBER.toString():
-                value = vars.get("$field.NUMBER_VALUE");
-                break;
-            case $AttributeTypes.BOOLEAN.toString():
-                value = vars.get("$field.BOOL_VALUE");
-                break;
-            case $AttributeTypes.COMBO.toString():
-            case $AttributeTypes.KEYWORD.toString():
-                value = vars.get("$field.ID_VALUE");
-                break;
-            case $AttributeTypes.MEMO.toString():
-                value = vars.get("$field.MEMO_VALUE");
-                break;
-        }
-    } 
-    //var attrField = AttributeHandler.begin(vars.get("$field.AB_ATTRIBUTE_ID")).getAttributeField();
-    //var value = null;
-    //if (attrField != null) //load the value from the correct field for the type
-    //    value = vars.get("$field." + attrField);
+    if (attrField != null) //load the value from the correct field for the type
+        value = vars.get("$field." + attrField);
     
     if(value != null && value != "")
         result.string(value); 
diff --git a/entity/AttributeRelation_entity/entityfields/specificattribute/children/filteredattributeids_param/valueProcess.js b/entity/AttributeRelation_entity/entityfields/specificattribute/children/filteredattributeids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..823de404382c671455ed572865742aabb9d50ee7
--- /dev/null
+++ b/entity/AttributeRelation_entity/entityfields/specificattribute/children/filteredattributeids_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.exists("$param.filteredAttributeIds_param") ? vars.get("$param.filteredAttributeIds_param") : "");
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/specificattribute/children/objecttype_param/valueProcess.js b/entity/AttributeRelation_entity/entityfields/specificattribute/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..987f30bf1e3214329ff1c5a07c18abca106f0a10
--- /dev/null
+++ b/entity/AttributeRelation_entity/entityfields/specificattribute/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.exists("$param.objectType_param") ? vars.get("$param.objectType_param") : "");
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js b/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js
index f83ae05abaf417c8b8502955eb3a6af39a9d4f89..f48af1586cd6331e94c372f69656df270f40b9e5 100644
--- a/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js
@@ -1,14 +1,23 @@
-import("system.db");
-import("system.vars");
-import("system.result");
-import("Sql_lib");
-
-if (vars.exists("$param.objectRowId_param") && vars.get("$param.objectRowId_param") != null)
-{
-    cond = SqlCondition.begin()
-                       .andPrepare("AB_ATTRIBUTERELATION.OBJECT_ROWID", vars.get("$param.objectRowId_param"))
-                       .build();
-    result.string(db.translateCondition(cond));
-}
-else
-    result.string("1 = 2");
\ No newline at end of file
+import("system.vars");
+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"))
+{
+    var filteredIds = JSON.parse(vars.get("$param.filteredAttributeIds_param"));
+    var filteredIdsCondition = new SqlCondition();
+    
+    filteredIds.forEach(function(id) 
+    {
+        this.orPrepare("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", id);
+    }, filteredIdsCondition);
+    
+    cond.andSqlCondition(filteredIdsCondition);
+}
+result.string(db.translateCondition(cond.build("1=2")));
diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod
index 0482ebc306faf422aca1ceb3423af278fb2396df..c204aef676ae39a7c6598da1397f70a48d887fd4 100644
--- a/entity/Attribute_entity/Attribute_entity.aod
+++ b/entity/Attribute_entity/Attribute_entity.aod
@@ -29,11 +29,12 @@
     </entityField>
     <entityField>
       <name>AB_ATTRIBUTEID</name>
+      <searchable v="false" />
       <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/ab_attributeid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>ATTRIBUTE_PARENT_ID</name>
-      <title>Parent Attribute</title>
+      <title>Superordinate Attribute</title>
       <consumer>AttributeChildren</consumer>
       <linkedContext>Attribute</linkedContext>
       <stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/attribute_parent_id/stateProcess.js</stateProcess>
@@ -56,6 +57,11 @@
           <triggerRecalculation v="true" />
           <mandatory v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>attrParentType_param</name>
+          <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityProvider>
@@ -128,12 +134,6 @@
       <state>INVISIBLE</state>
       <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attribute_level/valueProcess.js</valueProcess>
     </entityField>
-    <entityActionField>
-      <name>test</name>
-      <fieldType>ACTION</fieldType>
-      <title>test</title>
-      <onActionProcess>%aditoprj%/entity/Attribute_entity/entityfields/test/onActionProcess.js</onActionProcess>
-    </entityActionField>
     <entityField>
       <name>KEYWORD_CONTAINER</name>
       <title>Keyword</title>
@@ -141,6 +141,64 @@
       <state>AUTO</state>
       <stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js</stateProcess>
     </entityField>
+    <entityParameter>
+      <name>attrParentType_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>objectType_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>SpecificAttribute</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <lookupIdfield>AB_ATTRIBUTEID</lookupIdfield>
+      <dependencies>
+        <entityDependency>
+          <name>342e8ba6-db61-411b-9f79-e9271335b00f</name>
+          <entityName>AttributeRelation_entity</entityName>
+          <fieldName>SpecificAttribute</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>objectType_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>filteredAttributeIds_param</name>
+          <expose v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityField>
+      <name>FULL_ATTRIBUTE_NAME</name>
+      <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/full_attribute_name/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>filteredAttributeIds_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityActionGroup>
+      <name>AttributeActions</name>
+      <children>
+        <entityActionField>
+          <name>newChildAttribute</name>
+          <fieldType>ACTION</fieldType>
+          <title>New attribute</title>
+          <onActionProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
+          <isSelectionAction v="true" />
+          <iconId>VAADIN:FILE_TREE_SMALL</iconId>
+          <tooltipProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/tooltipProcess.js</tooltipProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Attribute_entity/entityfields/attribute_name/displayValueProcess.js b/entity/Attribute_entity/entityfields/attribute_name/displayValueProcess.js
index bb5f44d124ef66e4da13d4e661679b6e1b003a11..e55588aa4fb9dea4ee26b065951ab47b1ad43256 100644
--- a/entity/Attribute_entity/entityfields/attribute_name/displayValueProcess.js
+++ b/entity/Attribute_entity/entityfields/attribute_name/displayValueProcess.js
@@ -1,5 +1,4 @@
 import("system.vars");
 import("system.result");
-import("Attribute_lib");
 
-result.string(AttributeUtil.getFullAttributeName(vars.get("$field.AB_ATTRIBUTEID")));
+result.string(vars.get("$field.FULL_ATTRIBUTE_NAME"));
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/onActionProcess.js b/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1ec2bc6c8d7639880db01b7e9d2bb1fa1794cda7
--- /dev/null
+++ b/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/onActionProcess.js
@@ -0,0 +1,14 @@
+import("system.vars");
+import("system.neon");
+import("Attribute_lib");
+
+var params = {};
+if (vars.exists("$local.rows"))
+{
+    var row = JSON.parse(vars.get("$local.rows"));
+    
+    var type = row[0].ATTRIBUTE_TYPE.trim();
+    if (type == $AttributeTypes.GROUP || type == $AttributeTypes.COMBO)
+        params["attrParentId_param"] = row[0].AB_ATTRIBUTEID;
+}
+neon.openContext("Attribute", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/tooltipProcess.js b/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/tooltipProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8e60c9408cea7253931ee12e4142673823cdfe3f
--- /dev/null
+++ b/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/tooltipProcess.js
@@ -0,0 +1,4 @@
+import("system.translate");
+import("system.result");
+
+result.string(translate.text("New attribute"));
\ 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
deleted file mode 100644
index b63cf032dd51caa4b6896e89b5bdaafcf4d01a07..0000000000000000000000000000000000000000
--- a/entity/Attribute_entity/entityfields/attributechildren/children/attrparentid_param/valueProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.vars");
-import("system.result");
-import("Attribute_lib");
-
-var type = vars.getString("$field.ATTRIBUTE_TYPE").trim();
-if (type == $AttributeTypes.GROUP || type == $AttributeTypes.COMBO)
-    result.string(vars.getString("$field.AB_ATTRIBUTEID"));
-else
-    result.string("");
diff --git a/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js b/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cbb5a62f5fedf49496fd6787ba7671c936bc24c0
--- /dev/null
+++ b/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.getString("$field.ATTRIBUTE_TYPE").trim());
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/full_attribute_name/valueProcess.js b/entity/Attribute_entity/entityfields/full_attribute_name/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..40820d463337ab8ae4c656ed49bc07256a59c571
--- /dev/null
+++ b/entity/Attribute_entity/entityfields/full_attribute_name/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Attribute_lib");
+
+result.string(AttributeUtil.getFullAttributeName(vars.get("$field.AB_ATTRIBUTEID")));
diff --git a/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js b/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js
index 42c609201e61f3a4cf3974964f6f929a2881e7cd..beaaa08c35beeb077df7f67ebf1671858d2daf15 100644
--- a/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js
+++ b/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js
@@ -9,4 +9,5 @@ if (vars.get("$field.ATTRIBUTE_TYPE") == $AttributeTypes.KEYWORD)
 else
     fieldState = neon.COMPONENTSTATE_INVISIBLE;
 
+//TODO result the correct state here when updating the state is possible
 result.string(neon.COMPONENTSTATE_AUTO);//result.string(fieldState);
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/test/onActionProcess.js b/entity/Attribute_entity/entityfields/test/onActionProcess.js
deleted file mode 100644
index 2fcdd32dea2394891771151026565786fde2ba68..0000000000000000000000000000000000000000
--- a/entity/Attribute_entity/entityfields/test/onActionProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.logging");
-import("Attribute_lib");
-logging.log(AttributeRelationUtils.getSqlUtil().toSource());
\ 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 909e2e15bb63eabf093a4a524105bfe5d32955d5..3ed5587eb64e97091d33e3297dc1eb785b7d0c6a 100644
--- a/entity/Attribute_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Attribute_entity/recordcontainers/db/conditionProcess.js
@@ -4,11 +4,37 @@ import("system.result");
 import("Sql_lib");
 import("Attribute_lib");
 
-var condition = "AB_ATTRIBUTE.ATTRIBUTE_TYPE = '" + $AttributeTypes.GROUP + "'";
+var condition = "1 = 2";
 
-if (vars.exists("$param.attrParentId_param") && vars.get("$param.attrParentId_param"))
-    condition = "AB_ATTRIBUTE.AB_ATTRIBUTEID in ('" + AttributeUtil.getAllChildren(vars.getString("$param.attrParentId_param")).join("','") + "')";
-else if (vars.exists("$param.attrParentId_param") && vars.get("$param.attrParentId_param") !== "")
-    condition = "";
+var objectType = vars.exists("$param.objectType_param") && vars.get("$param.objectType_param");
+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 = "AB_ATTRIBUTE.AB_ATTRIBUTEID in ('" + ids.join("','") + "')";
+} 
+else 
+{
+    var type = vars.exists("$param.attrParentType_param") && vars.get("$param.attrParentType_param");
+    if (type != $AttributeTypes.COMBOVALUE)
+        condition = SqlCondition.begin()
+            .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.GROUP)
+            .build();
+
+    if (type == $AttributeTypes.COMBO)
+        condition = SqlCondition.begin()
+            .andPrepareVars("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", "$param.attrParentId_param")
+            .build();
+
+    var parentId = vars.exists("$param.attrParentId_param") && vars.get("$param.attrParentId_param");
+    if (parentId)
+        condition = "AB_ATTRIBUTE.AB_ATTRIBUTEID in ('" + AttributeUtil.getAllChildren(vars.getString("$param.attrParentId_param")).join("','") + "')";
+    else if (!type)
+        condition = "";
+    
+}
 
 result.string(condition);
diff --git a/entity/Attribute_entity/titleProcess.js b/entity/Attribute_entity/titleProcess.js
index bbb15f2a7f35c157449854b9c7fbeecd7550756d..e55588aa4fb9dea4ee26b065951ab47b1ad43256 100644
--- a/entity/Attribute_entity/titleProcess.js
+++ b/entity/Attribute_entity/titleProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.ATTRIBUTE_NAME"));
\ No newline at end of file
+result.string(vars.get("$field.FULL_ATTRIBUTE_NAME"));
\ No newline at end of file
diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod
index 628182608a44406ed507339aefa51e6c0900f095..9aee7a44cbf820c395c66a545c9bb6777cf18a63 100644
--- a/entity/Contract_entity/Contract_entity.aod
+++ b/entity/Contract_entity/Contract_entity.aod
@@ -23,6 +23,7 @@
       <title>Next due date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <onValidation>%aditoprj%/entity/Contract_entity/entityfields/contractdue/onValidation.js</onValidation>
     </entityField>
     <entityField>
@@ -31,6 +32,7 @@
       <title>Contract expiry date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <onValidation>%aditoprj%/entity/Contract_entity/entityfields/contractend/onValidation.js</onValidation>
       <onValueChange>%aditoprj%/entity/Contract_entity/entityfields/contractend/onValueChange.js</onValueChange>
     </entityField>
@@ -45,6 +47,7 @@
       <title>Contract start date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <onValidation>%aditoprj%/entity/Contract_entity/entityfields/contractstart/onValidation.js</onValidation>
       <onValueChange>%aditoprj%/entity/Contract_entity/entityfields/contractstart/onValueChange.js</onValueChange>
     </entityField>
@@ -377,10 +380,6 @@
           <name>CONTACT_PERSON_ID.value</name>
           <recordfield>CONTACT.PERSON_ID</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ORG_NAME.value</name>
-          <recordfield>ORGANISATION.NAME</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>PERSON_FIRSTNAME.value</name>
           <recordfield>PERSON.FIRSTNAME</recordfield>
diff --git a/entity/Contract_entity/entityfields/contact_id/displayValueProcess.js b/entity/Contract_entity/entityfields/contact_id/displayValueProcess.js
index 5badfc772a90e1e057c0ed3a480063f68de010a9..85822946ab4fe0ba7730ca93fd6fca69250a5b33 100644
--- a/entity/Contract_entity/entityfields/contact_id/displayValueProcess.js
+++ b/entity/Contract_entity/entityfields/contact_id/displayValueProcess.js
@@ -3,4 +3,4 @@ import("system.vars");
 import("Contact_lib");
 import("system.neon");
 
-result.string(RelationUtils.getNameByPersOrgWithRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
+result.string(ContactUtils.getFullTitleByContactId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contact_id/linkedContextProcess.js b/entity/Contract_entity/entityfields/contact_id/linkedContextProcess.js
index 242297cdf0e97a6b0a61004ba62ca1301a6cc791..e678b842c5b6cf510473693a355fa7833dcf28e8 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(RelationUtils.getContextByRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
+result.string(ContactUtils.getContextByRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Countries_Entity/Countries_Entity.aod b/entity/Countries_Entity/Countries_Entity.aod
index a7e4e6dabf44922eb4b4d4dd292e2cf0def56b02..672fa2572514c9b665af4f87f7ed5db52f7c184a 100644
--- a/entity/Countries_Entity/Countries_Entity.aod
+++ b/entity/Countries_Entity/Countries_Entity.aod
@@ -15,7 +15,6 @@
     <entityProvider>
       <name>ISO2_NAME</name>
       <fieldType>DEPENDENCY_IN</fieldType>
-      <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
           <name>83e8a2e6-aa80-4b35-a0ad-8dad483ed428</name>
@@ -108,6 +107,7 @@
     <dbRecordContainer>
       <name>db</name>
       <alias>Data_alias</alias>
+      <orderClauseProcess>%aditoprj%/entity/Countries_Entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <linkInformation>
         <linkInformation>
           <name>cc219004-43fd-4a3f-bee0-be5e732c61f1</name>
diff --git a/entity/Countries_Entity/recordcontainers/db/orderClauseProcess.js b/entity/Countries_Entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9537434d69525e936a42f0a975a3d8b09392d1bc
--- /dev/null
+++ b/entity/Countries_Entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.db");
+
+result.object({"case AB_COUNTRYINFO.ISO2 when 'DE' then 2500 when 'AT' then 2490 when 'CH' then 2480 else 100 end": db.DESCENDING
+              ,"AB_COUNTRYINFO.NAME_LATIN": db.ASCENDING});
\ No newline at end of file
diff --git a/entity/Countries_Entity/titleProcess.js b/entity/Countries_Entity/titleProcess.js
index 0410b3c20565ef2329a237909c752a668c1373e1..6a1357835421f5c8fe5231388b03ee15dd29f58b 100644
--- a/entity/Countries_Entity/titleProcess.js
+++ b/entity/Countries_Entity/titleProcess.js
@@ -1,3 +1,3 @@
 import("system.result");
 import("system.vars");
-result.string(vars.get("$field.NAME"))
\ No newline at end of file
+result.string(vars.get("$field.NAME_TRANSLATED"));
\ No newline at end of file
diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod
index 855f7f249af838c60bb8d65abbcd8603f816114e..1203a37bd4b840f0fb8427e57e43c5645191deb2 100644
--- a/entity/Document_entity/Document_entity.aod
+++ b/entity/Document_entity/Document_entity.aod
@@ -20,26 +20,27 @@
     </entityProvider>
     <entityField>
       <name>NAME</name>
-      <title>Dateiname</title>
+      <title>Filename</title>
       <mandatory v="true" />
       <state>AUTO</state>
     </entityField>
     <entityField>
       <name>TYPE</name>
-      <title>Dateityp</title>
+      <title>Filetype</title>
       <state>READONLY</state>
     </entityField>
     <entityField>
       <name>SIZE</name>
-      <title>Dateigröße</title>
+      <title>Filesize</title>
       <contentType>FILESIZE</contentType>
       <state>READONLY</state>
     </entityField>
     <entityField>
       <name>DATE_EDIT</name>
-      <title>Datum</title>
+      <title>Date</title>
       <contentType>DATE</contentType>
-      <outputFormat>yyyy-MM-dd HH:mm:ss</outputFormat>
+      <resolution>MINUTE</resolution>
+      <outputFormat>dd.MM.yyyy HH:mm:ss</outputFormat>
       <state>READONLY</state>
     </entityField>
     <entityField>
diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index d265803d223fbe08b7e67a9c29306665d04092ba..cd4ccf5beb0ec7cefecff191293e8d234353b888 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -276,12 +276,6 @@
           <fieldName>KeywordMedium</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
-          <name>2ed3c1ee-0cae-4017-aaf2-49bf4307abc4</name>
-          <entityName>Address_entity</entityName>
-          <fieldName>KeywordAddressType</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
         <entityDependency>
           <name>04b28ce6-a144-4c19-ac2d-4cfbc3568700</name>
           <entityName>Organisation_entity</entityName>
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index 392df6ebfc652fe6a1549c00b26bb07b56f36c1e..d1523d93507445f54c874ff6b38fc91e6d6df28e 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -31,6 +31,7 @@
       <title>Creation date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offerdate/valueProcess.js</valueProcess>
     </entityField>
@@ -78,6 +79,8 @@
     <entityField>
       <name>VAT</name>
       <title>Total VAT</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00</outputFormat>
       <state>READONLY</state>
     </entityField>
     <entityField>
@@ -140,12 +143,16 @@
     <entityField>
       <name>NET</name>
       <title>Total net</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00</outputFormat>
       <state>READONLY</state>
     </entityField>
     <entityField>
       <name>TotalGross</name>
       <documentation>%aditoprj%/entity/Offer_entity/entityfields/totalgross/documentation.adoc</documentation>
       <title>Total gross</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00</outputFormat>
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/totalgross/valueProcess.js</valueProcess>
     </entityField>
diff --git a/entity/Offer_entity/entityfields/contact_id/displayValueProcess.js b/entity/Offer_entity/entityfields/contact_id/displayValueProcess.js
index ef417d00db927adfdb10354ec3346c74f15bceeb..08ad146eeefe97e12cfe29fc61672ae76f34c01b 100644
--- a/entity/Offer_entity/entityfields/contact_id/displayValueProcess.js
+++ b/entity/Offer_entity/entityfields/contact_id/displayValueProcess.js
@@ -4,4 +4,4 @@ import("Contact_lib");
 import("system.neon");
 
 
-result.string(RelationUtils.getNameByPersOrgWithRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
+result.string(ContactUtils.getFullTitleByContactId(vars.getString("$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 242297cdf0e97a6b0a61004ba62ca1301a6cc791..e678b842c5b6cf510473693a355fa7833dcf28e8 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(RelationUtils.getContextByRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
+result.string(ContactUtils.getContextByRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/salesproject_id/mandatoryProcess.js b/entity/Offer_entity/entityfields/salesproject_id/mandatoryProcess.js
index 419ee8c0b688b7f9586fbd5b21184903cc66834c..05b1f9bd5c0c54e2c707e0ac6f2fce2ea12850e0 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 = RelationUtils.getRelationType(vars.get("$field.CONTACT_ID"), vars.get("$field.CONTACT_PERSON_ID"), vars.get("$field.CONTACT_ORG_ID"));
+var type = ContactUtils.getRelationType(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/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod
index a54c888b50d4e7b2c3f0adaf10acd992d0dc981a..ef7a5704ad94ffbfc651111d093b60d707890591 100644
--- a/entity/Offeritem_entity/Offeritem_entity.aod
+++ b/entity/Offeritem_entity/Offeritem_entity.aod
@@ -16,6 +16,8 @@
     <entityField>
       <name>DISCOUNT</name>
       <title>Discount %</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0</outputFormat>
     </entityField>
     <entityField>
       <name>GROUPCODEID</name>
@@ -57,6 +59,8 @@
     <entityField>
       <name>PRICE</name>
       <title>Unit price</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00</outputFormat>
     </entityField>
     <entityField>
       <name>PRODUCT_ID</name>
@@ -74,6 +78,8 @@
       <name>QUANTITY</name>
       <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/documentation.adoc</documentation>
       <title>Quantity</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0</outputFormat>
       <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/valueProcess.js</valueProcess>
       <onValueChange>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/onValueChange.js</onValueChange>
       <onValueChangeTypes>
@@ -90,6 +96,8 @@
     <entityField>
       <name>VAT</name>
       <title>VAT</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00</outputFormat>
       <state>READONLY</state>
     </entityField>
     <entityParameter>
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index 23d366a6831b753ec462f8c47ec31c669c838ad2..a279f454693a961bbb649f309660e85dcc2f255d 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -31,6 +31,7 @@
       <title>Creation date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesorderdate/valueProcess.js</valueProcess>
     </entityField>
@@ -389,6 +390,7 @@
       <name>OFFER_ID</name>
       <title>Offer</title>
       <linkedContext>Offer</linkedContext>
+      <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offer_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/offer_id/displayValueProcess.js</displayValueProcess>
     </entityField>
diff --git a/entity/Order_entity/entityfields/contact_id/displayValueProcess.js b/entity/Order_entity/entityfields/contact_id/displayValueProcess.js
index 5badfc772a90e1e057c0ed3a480063f68de010a9..85822946ab4fe0ba7730ca93fd6fca69250a5b33 100644
--- a/entity/Order_entity/entityfields/contact_id/displayValueProcess.js
+++ b/entity/Order_entity/entityfields/contact_id/displayValueProcess.js
@@ -3,4 +3,4 @@ import("system.vars");
 import("Contact_lib");
 import("system.neon");
 
-result.string(RelationUtils.getNameByPersOrgWithRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
+result.string(ContactUtils.getFullTitleByContactId(vars.getString("$field.CONTACT_ID")));
\ 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 242297cdf0e97a6b0a61004ba62ca1301a6cc791..e678b842c5b6cf510473693a355fa7833dcf28e8 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(RelationUtils.getContextByRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
+result.string(ContactUtils.getContextByRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index e79bb55e698a63d0ab89562f748292c095e8a8ff..8546885e0c6fac6514549c4b229952894a742452 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -305,24 +305,6 @@
       <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/newoffer/onActionProcess.js</onActionProcess>
       <iconId>VAADIN:CART</iconId>
     </entityActionField>
-    <entityField>
-      <name>PRICE_POLITICS</name>
-      <title>Price politics</title>
-      <consumer>KeywordPrice_Politics</consumer>
-      <searchable v="false" />
-    </entityField>
-    <entityField>
-      <name>STRENGTH</name>
-      <title>Strength</title>
-      <consumer>KeywordStrenght</consumer>
-      <searchable v="false" />
-    </entityField>
-    <entityField>
-      <name>WEAKNESS</name>
-      <title>Weakness</title>
-      <consumer>KeywordWeakness</consumer>
-      <searchable v="false" />
-    </entityField>
     <entityField>
       <name>STANDARD_EMAIL_COMMUNICATION</name>
       <title>standard email</title>
diff --git a/entity/Organisation_entity/entityfields/address_id/displayValueProcess.js b/entity/Organisation_entity/entityfields/address_id/displayValueProcess.js
index ad0d57c105476296ea6fe2d811c487db5abb3d4f..f212ec24e70e27e30a7f0a66299874a335617f4d 100644
--- a/entity/Organisation_entity/entityfields/address_id/displayValueProcess.js
+++ b/entity/Organisation_entity/entityfields/address_id/displayValueProcess.js
@@ -2,18 +2,7 @@ import("system.db");
 import("system.vars");
 import("system.result");
 import("PostalAddress_lib");
-import("Sql_lib");
 
 var addrId = vars.get("$field.ADDRESS_ID");
-var addr = "";
-if (addrId) 
-{
-    var select = "select ADDRESS.COUNTRY, ADDRESS.ADDRESS, ADDRESS.BUILDINGNO, ADDRESS.ZIP, ADDRESS.CITY from ADDRESS ";
-    var addrData = db.array(db.ROW, 
-        SqlCondition.begin()
-        .andPrepare("ADDRESS.ADDRESSID", addrId)
-        .buildSql(select));
-        
-    addr = AddressUtils.formatOneline.apply(this, addrData);
-}
+var addr = AddressUtils.getFormattedOnlineAddressById(addrId);
 result.string(addr);
\ No newline at end of file
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index 822529f6d2cd47861ea8197412375af32dba9718..140dfda122631b0b75635246b0c91b8d7a717e02 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -15,6 +15,7 @@
       <title>Date of birth</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
     </entityField>
     <entityField>
       <name>FIRSTNAME</name>
@@ -147,6 +148,7 @@
       <mandatory v="false" />
       <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>
     </entityField>
     <entityConsumer>
@@ -339,7 +341,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
         <element>FIRSTNAME</element>
         <element>MIDDLENAME</element>
         <element>LASTNAME</element>
-        <element>TITLESUFFIX</element>
       </fields>
     </entityFieldGroup>
     <entityProvider>
diff --git a/entity/Person_entity/entityfields/address_id/displayValueProcess.js b/entity/Person_entity/entityfields/address_id/displayValueProcess.js
index ad0d57c105476296ea6fe2d811c487db5abb3d4f..f212ec24e70e27e30a7f0a66299874a335617f4d 100644
--- a/entity/Person_entity/entityfields/address_id/displayValueProcess.js
+++ b/entity/Person_entity/entityfields/address_id/displayValueProcess.js
@@ -2,18 +2,7 @@ import("system.db");
 import("system.vars");
 import("system.result");
 import("PostalAddress_lib");
-import("Sql_lib");
 
 var addrId = vars.get("$field.ADDRESS_ID");
-var addr = "";
-if (addrId) 
-{
-    var select = "select ADDRESS.COUNTRY, ADDRESS.ADDRESS, ADDRESS.BUILDINGNO, ADDRESS.ZIP, ADDRESS.CITY from ADDRESS ";
-    var addrData = db.array(db.ROW, 
-        SqlCondition.begin()
-        .andPrepare("ADDRESS.ADDRESSID", addrId)
-        .buildSql(select));
-        
-    addr = AddressUtils.formatOneline.apply(this, addrData);
-}
+var addr = AddressUtils.getFormattedOnlineAddressById(addrId);
 result.string(addr);
\ 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 c39d231e9c0c04f41704c75149d3375291f45ecf..b3a098ff143cffbd6bd95e276a5b5c0ba689d3d7 100644
--- a/entity/Person_entity/entityfields/full_name_fieldgroup/valueProcess.js
+++ b/entity/Person_entity/entityfields/full_name_fieldgroup/valueProcess.js
@@ -1,9 +1,14 @@
 import("system.vars");
 import("system.result");
+import("Util_lib");
+import("Contact_lib");
 
-result.string((vars.get("$field.SALUTATION") ? vars.get("$field.SALUTATION") + " " : "")
-            + (vars.get("$field.TITLE") ? vars.get("$field.TITLE") + " " : "")
-            + (vars.get("$field.FIRSTNAME") ? vars.get("$field.FIRSTNAME") + " " : "")
-            + (vars.get("$field.MIDDLENAME") ? vars.get("$field.MIDDLENAME") + " " : "")
-            + (vars.get("$field.LASTNAME") ? vars.get("$field.LASTNAME") + " " : "")
-            + vars.get("$field.TITLESUFFIX"))
\ No newline at end of file
+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");
+
+var renderer = new ContactTitleRenderer(contact, null);
+result.string(renderer.asString());
\ 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
new file mode 100644
index 0000000000000000000000000000000000000000..efe14ce09df366b0c5b96e6dadb3c309e9d98469
--- /dev/null
+++ b/entity/Person_entity/entityfields/organisation_id/displayValueProcess.js
@@ -0,0 +1,16 @@
+import("system.result");
+import("system.db");
+import("system.vars");
+import("Sql_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"));
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod
index 7621e778584db2d6a5ae01d505796eb43077b2e6..1a477cb4efeb741f94a6a05935e782a714a44ba4 100644
--- a/entity/Product_entity/Product_entity.aod
+++ b/entity/Product_entity/Product_entity.aod
@@ -62,20 +62,18 @@
       <mandatory v="true" />
     </entityField>
     <entityField>
-      <name>currentPurchasePriceId</name>
+      <name>currentPurchasePrice</name>
       <title>Curr. purchase price</title>
-      <contentType>NUMBER</contentType>
-      <outputFormat>#,##0.00 €</outputFormat>
+      <contentType>TEXT</contentType>
       <state>READONLY</state>
-      <valueProcess>%aditoprj%/entity/Product_entity/entityfields/currentpurchasepriceid/valueProcess.js</valueProcess>
+      <valueProcess>%aditoprj%/entity/Product_entity/entityfields/currentpurchaseprice/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
-      <name>currentSalesPriceId</name>
+      <name>currentSalesPrice</name>
       <title>Curr. sales price</title>
-      <contentType>NUMBER</contentType>
-      <outputFormat>#,##0.00 €</outputFormat>
+      <contentType>TEXT</contentType>
       <state>READONLY</state>
-      <valueProcess>%aditoprj%/entity/Product_entity/entityfields/currentsalespriceid/valueProcess.js</valueProcess>
+      <valueProcess>%aditoprj%/entity/Product_entity/entityfields/currentsalesprice/valueProcess.js</valueProcess>
     </entityField>
     <entityConsumer>
       <name>Organisations</name>
diff --git a/entity/Product_entity/entityfields/currentpurchaseprice/valueProcess.js b/entity/Product_entity/entityfields/currentpurchaseprice/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e9ef972e437973279fcf9144c2504ab288b20df6
--- /dev/null
+++ b/entity/Product_entity/entityfields/currentpurchaseprice/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.translate");
+import("system.text");
+import("system.result");
+import("system.vars");
+import("Product_lib");
+
+var price = ProductUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "PP");
+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/currentpurchasepriceid/valueProcess.js b/entity/Product_entity/entityfields/currentpurchasepriceid/valueProcess.js
deleted file mode 100644
index 67eac3b8220e51644ee450e4d74252cb89a3c8dc..0000000000000000000000000000000000000000
--- a/entity/Product_entity/entityfields/currentpurchasepriceid/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Product_lib");
-
-result.string(ProductUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "PP"));
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/currentsalesprice/valueProcess.js b/entity/Product_entity/entityfields/currentsalesprice/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..50bd3113611e859c5288cb2fe8a4851384a3a001
--- /dev/null
+++ b/entity/Product_entity/entityfields/currentsalesprice/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.translate");
+import("system.text");
+import("system.result");
+import("system.vars");
+import("Product_lib");
+
+var price = ProductUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "SP");
+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/currentsalespriceid/valueProcess.js b/entity/Product_entity/entityfields/currentsalespriceid/valueProcess.js
deleted file mode 100644
index dfac7a4979bc666a1b65a3609bc5e19a773a2021..0000000000000000000000000000000000000000
--- a/entity/Product_entity/entityfields/currentsalespriceid/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Product_lib");
-
-result.string(ProductUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "SP"));
\ No newline at end of file
diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod
index 6ecc49a490101f0629121b04192eb4f39a1366a0..811cb33671947750fbc166c2aa2d4cd2cdf26f27 100644
--- a/entity/Productprice_entity/Productprice_entity.aod
+++ b/entity/Productprice_entity/Productprice_entity.aod
@@ -60,6 +60,7 @@
       <title>Valid from</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/valid_from/valueProcess.js</valueProcess>
       <onValidation>%aditoprj%/entity/Productprice_entity/entityfields/valid_from/onValidation.js</onValidation>
@@ -69,6 +70,7 @@
       <title>Valid until</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <onValidation>%aditoprj%/entity/Productprice_entity/entityfields/valid_to/onValidation.js</onValidation>
     </entityField>
     <entityField>
diff --git a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
index e8b81e54cf2499e9a48fdc0eded6edebaeb2c335..cab3c0a17ff4df23b59399e852b2dbeae08615de 100644
--- a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
+++ b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
@@ -13,6 +13,7 @@
       <title>Excreted</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
     </entityField>
     <entityField>
       <name>INFO</name>
@@ -71,7 +72,7 @@
       <linkedContext>Organisation</linkedContext>
     </entityField>
     <entityField>
-      <name>ORG_NAME</name>
+      <name>ORGANISATION_NAME</name>
       <state>READONLY</state>
       <onValueChangeTypes>
         <element>MASK</element>
@@ -99,21 +100,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityField>
-      <name>ORG_PRICE_POLITICS</name>
-      <title>Price politics</title>
-      <consumer>KeywordPrice_Politics</consumer>
-    </entityField>
-    <entityField>
-      <name>ORG_STRENGTH</name>
-      <title>Strength</title>
-      <consumer>KeywordStrenght</consumer>
-    </entityField>
-    <entityField>
-      <name>ORG_WEAKNESS</name>
-      <title>Weakness</title>
-      <consumer>KeywordWeakness</consumer>
-    </entityField>
     <entityConsumer>
       <name>Organisations</name>
       <fieldType>DEPENDENCY_OUT</fieldType>
@@ -219,6 +205,30 @@
         </entityParameter>
       </children>
     </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>objectType_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>objectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>filteredAttributeIds_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/attributes/children/filteredattributeids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -252,7 +262,7 @@
           <recordfield>SALESPROJECT_COMPETITION.INFO</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
-          <name>ORG_NAME.value</name>
+          <name>ORGANISATION_NAME.value</name>
           <recordfield>ORGANISATION.NAME</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
@@ -279,18 +289,6 @@
           <name>STATUS.value</name>
           <recordfield>SALESPROJECT_COMPETITION.STATUS</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ORG_PRICE_POLITICS.value</name>
-          <recordfield>ORGANISATION.PRICE_POLITICS</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ORG_STRENGTH.value</name>
-          <recordfield>ORGANISATION.STRENGTH</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ORG_WEAKNESS.value</name>
-          <recordfield>ORGANISATION.WEAKNESS</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>CONTACT_ID.displayValue</name>
           <recordfield>ORGANISATION.NAME</recordfield>
@@ -303,18 +301,6 @@
           <name>PHASE.value</name>
           <recordfield>SALESPROJECT_COMPETITION.PHASE</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ORG_PRICE_POLITICS.displayValue</name>
-          <expression>%aditoprj%/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_price_politics.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ORG_WEAKNESS.displayValue</name>
-          <expression>%aditoprj%/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_weakness.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ORG_STRENGTH.displayValue</name>
-          <expression>%aditoprj%/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_strength.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>PHASE.displayValue</name>
           <expression>%aditoprj%/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/phase.displayvalue/expression.js</expression>
diff --git a/entity/SalesprojectCompetition_entity/entityfields/attributes/children/filteredattributeids_param/valueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/attributes/children/filteredattributeids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..76d502d1caf3f69fdc72c4fb9b90c4ce9631375f
--- /dev/null
+++ b/entity/SalesprojectCompetition_entity/entityfields/attributes/children/filteredattributeids_param/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+
+result.object([
+    '8af37871-d407-4414-98ad-e64dbaa5794a', // Price politics
+    '558419b2-6113-4060-b88d-cc6324754765', // Strength
+    '71226196-2812-4d70-b90f-c3e2c14fd4d1' // Weakness
+]);
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ef0d5bcac51027b862291e5abd61c0c05773a8df
--- /dev/null
+++ b/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CONTACT_ID"));
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9e359dfbd05a73d0010c8e90a0a645160e0087e4
--- /dev/null
+++ b/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("Organisation");
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_price_politics.displayvalue/expression.js b/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_price_politics.displayvalue/expression.js
deleted file mode 100644
index d352cbd476f1f9c7225a6d4e287f254d0478fb4b..0000000000000000000000000000000000000000
--- a/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_price_politics.displayvalue/expression.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPricePolitics(), "ORGANISATION.PRICE_POLITICS");
-result.string(sql);
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_strength.displayvalue/expression.js b/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_strength.displayvalue/expression.js
deleted file mode 100644
index 0071a532b7942b287c869f4eaef13c430b057297..0000000000000000000000000000000000000000
--- a/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_strength.displayvalue/expression.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectStrenght(), "ORGANISATION.STRENGTH");
-result.string(sql);
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_weakness.displayvalue/expression.js b/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_weakness.displayvalue/expression.js
deleted file mode 100644
index 1f3ec844e7b00069d9f8bb49e3f1842402b71bdd..0000000000000000000000000000000000000000
--- a/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/org_weakness.displayvalue/expression.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectWeakness(), "ORGANISATION.WEAKNESS");
-result.string(sql);
\ No newline at end of file
diff --git a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod b/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod
index 0b5b4f36811f65accf7671703ce5da1448b845b3..8a5a058e9f830cb7b795b4a78a71d668282dcbdb 100644
--- a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod
+++ b/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod
@@ -13,6 +13,7 @@
       <title>End date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <searchable v="true" />
     </entityField>
     <entityField>
@@ -20,6 +21,7 @@
       <title>Date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
     </entityField>
     <entityField>
       <name>SALESPROJECT_CYCLEID</name>
diff --git a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
index 8236c364d7279bdbd07d424076d6b521032ab020..0d0c6958258a7f614ddfdb5fefdb589d4075130d 100644
--- a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
+++ b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
@@ -13,6 +13,7 @@
       <title>Planned</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
     </entityField>
     <entityField>
       <name>GROUPCODE</name>
@@ -23,10 +24,6 @@
       <name>INFO</name>
       <title>Info</title>
     </entityField>
-    <entityField>
-      <name>CONTACT_ID</name>
-      <mandatory v="true" />
-    </entityField>
     <entityField>
       <name>SALESPROJECT_FORECASTID</name>
       <valueProcess>%aditoprj%/entity/SalesprojectForecast_entity/entityfields/salesproject_forecastid/valueProcess.js</valueProcess>
@@ -113,10 +110,6 @@
           <name>INFO.value</name>
           <recordfield>SALESPROJECT_FORECAST.INFO</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>CONTACT_ID.value</name>
-          <recordfield>SALESPROJECT_FORECAST.CONTACT_ID</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>SALESPROJECT_FORECASTID.value</name>
           <recordfield>SALESPROJECT_FORECAST.SALESPROJECT_FORECASTID</recordfield>
diff --git a/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js b/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js
index e8c2da35cd446c7b78eb3384dd01998dcf787450..dd25fd0e8ea4a00efb98164071eff5dbc65ee362 100644
--- a/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js
+++ b/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js
@@ -1,4 +1,4 @@
 import("system.result");
 import("system.translate");
 
-result.string(translate.text("${VOLUME_MONEY}") + translate.text("${THOUSAND_SHORT}") + translate.text("${EURO_SIGN}"));
\ No newline at end of file
+result.string(translate.text("${VOLUME_MONEY}") + " " + translate.text("${THOUSAND_SHORT}") + " " + translate.text("${EURO_SIGN}"));
\ No newline at end of file
diff --git a/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod b/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
index d3b3857806ca98a0473e3e2b4a30bc0ce7851130..bac19d2e222c5d52d3278b86abff4a73fbb251f2 100644
--- a/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
+++ b/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
@@ -30,6 +30,8 @@
     <entityProvider>
       <name>SalesprojectMembers</name>
       <fieldType>DEPENDENCY_IN</fieldType>
+      <targetContextField>TARGETCONTEXT</targetContextField>
+      <targetIdField>CONTACT_ID</targetIdField>
       <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
@@ -54,7 +56,7 @@
       <description>PARAMETER</description>
     </entityParameter>
     <entityField>
-      <name>ORG_NAME</name>
+      <name>ORGANISATION_NAME</name>
       <title>Company</title>
       <state>READONLY</state>
     </entityField>
@@ -158,14 +160,17 @@ TODO: intuitive möglichkeit, auf dend Stand aus Relation zurückzusetzen... akt
     <entityField>
       <name>CONTACTROLE</name>
       <title>Function</title>
+      <state>READONLY</state>
     </entityField>
     <entityField>
       <name>DEPARTMENT</name>
       <title>Department</title>
+      <state>READONLY</state>
     </entityField>
     <entityField>
       <name>POSITION</name>
       <title>Position</title>
+      <state>READONLY</state>
     </entityField>
   </entityFields>
   <recordContainers>
@@ -206,7 +211,7 @@ TODO: intuitive möglichkeit, auf dend Stand aus Relation zurückzusetzen... akt
       </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
-          <name>ORG_NAME.value</name>
+          <name>ORGANISATION_NAME.value</name>
           <recordfield>ORGANISATION.NAME</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
index 21932998caae17deea9a8766310468eadcaca9fb..aba44317376e981cc9864b5540ebf433e5cb418f 100644
--- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
+++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
@@ -39,6 +39,7 @@
       <title>Date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
     </entityField>
     <entityField>
       <name>INFO</name>
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index d44fc215bf3cd2089e6a2be3c7676d8c3963a317..089cb81db92d660ca6d693bbe7f07e1da63a1694 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -29,6 +29,7 @@
       <title>Rollout</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/enddate/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -70,6 +71,7 @@
       <title>Project start</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startdate/valueProcess.js</valueProcess>
     </entityField>
@@ -83,7 +85,8 @@
       <name>VOLUME</name>
       <title>Volume</title>
       <description>The displayValue from the recoord container adds T € (translated)</description>
-      <contentTypeProcess>%aditoprj%/entity/Salesproject_entity/entityfields/volume/contentTypeProcess.js</contentTypeProcess>
+      <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/Salesproject_entity/entityfields/volume/onValidation.js</onValidation>
     </entityField>
     <entityConsumer>
       <name>Organisations</name>
@@ -501,10 +504,6 @@
           <name>CONTACT_ID.displayValue</name>
           <recordfield>ORGANISATION.NAME</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>VOLUME.displayValue</name>
-          <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volume.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>PROBABILITY.displayValue</name>
           <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js</expression>
diff --git a/entity/Salesproject_entity/entityfields/volume/contentTypeProcess.js b/entity/Salesproject_entity/entityfields/volume/contentTypeProcess.js
deleted file mode 100644
index ce76b0444f1f77a3b3c25eab41c4940feb10702f..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/entityfields/volume/contentTypeProcess.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import("system.result");
-import("system.vars");
-import("system.neon");
-
-var recordState = vars.get("$sys.recordstate");
-if (recordState == neon.OPERATINGSTATE_EDIT || recordState == neon.OPERATINGSTATE_NEW)
-{
-    result.string("NUMBER");
-}
-else
-{
-    result.string("TEXT");
-}
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js b/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..55d8076a7378a810484d3ce8390ff36034d4dba4
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+var volume = vars.get("$field.VOLUME");
+result.string(parseInt(volume) + " " + translate.text("${THOUSAND_SHORT}") + " " + translate.text("${EURO_SIGN}"))
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/volume/onValidation.js b/entity/Salesproject_entity/entityfields/volume/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..bf0a8f97253cff58d9188c390b044ecc2f1c26d5
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/volume/onValidation.js
@@ -0,0 +1,15 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("PostalAddress_lib");
+import("Entity_lib");
+
+// TODO: displayValue + contentType number crashes so we use TEXT and validate ourselve
+// Workaround for 1035861
+
+var volume =  ProcessHandlingUtils.getOnValidationValue(vars.get("$field.VOLUME"));
+var message = "";
+if (!/^\d+\.?\d*$/.test(volume))
+    message = translate.text("Only numbers are allowed.");
+    
+result.string(message);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volume.displayvalue/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volume.displayvalue/expression.js
deleted file mode 100644
index 542d45f41cf7db2349f5a6908b87813c5565f725..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volume.displayvalue/expression.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.translate");
-import("system.result");
-import("Sql_lib");
-
-var maskingUtils = new SqlMaskingUtils();
-result.string(maskingUtils.concat(["char(SALESPROJECT.VOLUME)", "'" + translate.text("${THOUSAND_SHORT}") + "'", "'" + translate.text("${EURO_SIGN}") + "'"], " ", true))
\ No newline at end of file
diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod
index 5011a77554e7ca13aa40f85d40eb645f92963ca7..2fc3e2fa984debad331b4c7eb62e5aab4bd2cf0e 100644
--- a/entity/Stock_entity/Stock_entity.aod
+++ b/entity/Stock_entity/Stock_entity.aod
@@ -11,6 +11,7 @@
       <title>Date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Stock_entity/entityfields/entrydate/valueProcess.js</valueProcess>
     </entityField>
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 3a67fd90a3cb8daf8bc8f3c4d1cd6e68d2b98995..9b17a3c0b6901ee6de3b798ca389a3ef110f092a 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -60,6 +60,7 @@
       <title>start date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/start_date/valueProcess.js</valueProcess>
       <onValidation>%aditoprj%/entity/Task_entity/entityfields/start_date/onValidation.js</onValidation>
@@ -69,6 +70,7 @@
       <title>maturity date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/maturity_date/valueProcess.js</valueProcess>
       <onValidation>%aditoprj%/entity/Task_entity/entityfields/maturity_date/onValidation.js</onValidation>
     </entityField>
@@ -173,7 +175,7 @@
     </entityConsumer>
     <entityConsumer>
       <name>ModuleTrees</name>
-      <title>Baum</title>
+      <title>Tree</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
@@ -215,16 +217,16 @@
     <entityActionField>
       <name>newActivity_action</name>
       <fieldType>ACTION</fieldType>
-      <title>Neue Aktivität</title>
+      <title>New activity</title>
       <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity_action/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:PLUS</iconId>
+      <iconId>NEON:HISTORY</iconId>
     </entityActionField>
     <entityActionField>
       <name>newTask_action</name>
       <fieldType>ACTION</fieldType>
-      <title>Neue Aufgabe</title>
+      <title>New task</title>
       <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newtask_action/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:PLUS</iconId>
+      <iconId>VAADIN:TASKS</iconId>
     </entityActionField>
     <entityParameter>
       <name>RowId_param</name>
diff --git a/entity/Timetracking_entity/Timetracking_entity.aod b/entity/Timetracking_entity/Timetracking_entity.aod
index e361b597e5adc2d4b20e55e86349ceab3c81776e..b39f8f8e77181201653a9d706efa042c6cf765d6 100644
--- a/entity/Timetracking_entity/Timetracking_entity.aod
+++ b/entity/Timetracking_entity/Timetracking_entity.aod
@@ -16,9 +16,10 @@
     <entityField>
       <name>MINUTES</name>
       <title>Time</title>
-      <contentType>NUMBER</contentType>
+      <contentType>TEXT</contentType>
       <mandatory v="true" />
       <displayValueProcess>%aditoprj%/entity/Timetracking_entity/entityfields/minutes/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/Timetracking_entity/entityfields/minutes/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>OBJECT_ID</name>
@@ -47,6 +48,7 @@
       <title>Date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Timetracking_entity/entityfields/date/valueProcess.js</valueProcess>
     </entityField>
diff --git a/entity/Timetracking_entity/entityfields/minutes/onValidation.js b/entity/Timetracking_entity/entityfields/minutes/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..8080e185f4cc8a1f4b3a3dc07081b6b04cf036eb
--- /dev/null
+++ b/entity/Timetracking_entity/entityfields/minutes/onValidation.js
@@ -0,0 +1,15 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("PostalAddress_lib");
+import("Entity_lib");
+
+// TODO: displayValue + contentType number crashes so we use TEXT and validate ourselve
+// 1035861
+
+var minutes =  ProcessHandlingUtils.getOnValidationValue(vars.get("$field.MINUTES"));
+var message = "";
+if (!/^\d+$/.test(minutes))
+    message = translate.text("Only numbers are allowed.");
+    
+result.string(message);
\ No newline at end of file
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 3089411e79d7343329144da9356d6b354a788725..333f1811e09074b643c328dc1f265387f295e881 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -2514,6 +2514,48 @@
     <entry>
       <key>Salesdashboard</key>
     </entry>
+    <entry>
+      <key>Discount %</key>
+    </entry>
+    <entry>
+      <key>Memo</key>
+    </entry>
+    <entry>
+      <key>Function</key>
+    </entry>
+    <entry>
+      <key>Relational</key>
+    </entry>
+    <entry>
+      <key>test</key>
+    </entry>
+    <entry>
+      <key>Only numbers are allowed.</key>
+    </entry>
+    <entry>
+      <key>Superordinate Attribute</key>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_OFFER}</key>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_NEGOTIATION}</key>
+    </entry>
+    <entry>
+      <key>Filesize</key>
+    </entry>
+    <entry>
+      <key>Filename</key>
+    </entry>
+    <entry>
+      <key>Filetype</key>
+    </entry>
+    <entry>
+      <key>Special price list</key>
+    </entry>
+    <entry>
+      <key>New attribute</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
   <sqlModels>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 84e7cd2b6dc961f06289ba1c2e263d35f6601cbb..794fae92df857eaf46e2004a40ebb66f230e07fb 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -58,6 +58,14 @@
       <key>Communication data</key>
       <value>Kommunikationsdaten</value>
     </entry>
+    <entry>
+      <key>${SALESPROJECT_NEGOTIATION}</key>
+      <value>Negotiation</value>
+    </entry>
+    <entry>
+      <key>Filename</key>
+      <value>Dateiname</value>
+    </entry>
     <entry>
       <key>Male</key>
       <value>Männlich</value>
@@ -86,6 +94,10 @@
       <key>Time expenses</key>
       <value>Aufwand</value>
     </entry>
+    <entry>
+      <key>${SALESPROJECT_OFFER}</key>
+      <value>Offer</value>
+    </entry>
     <entry>
       <key>Status</key>
       <value>Status</value>
@@ -358,7 +370,7 @@
     </entry>
     <entry>
       <key>standard address</key>
-      <value>Standardadresse</value>
+      <value>Standard-Adresse</value>
     </entry>
     <entry>
       <key>Create receipt</key>
@@ -373,6 +385,7 @@
     </entry>
     <entry>
       <key>Key account</key>
+      <value>Großkunde</value>
     </entry>
     <entry>
       <key>Cover letter</key>
@@ -995,6 +1008,10 @@
       <key>Show all offers</key>
       <value>Alle Angebote anzeigen</value>
     </entry>
+    <entry>
+      <key>Filetype</key>
+      <value>Dateityp</value>
+    </entry>
     <entry>
       <key>child of</key>
       <value>Kind von</value>
@@ -1003,6 +1020,10 @@
       <key>Products</key>
       <value>Produkte</value>
     </entry>
+    <entry>
+      <key>Filesize</key>
+      <value>Dateigrösse</value>
+    </entry>
     <entry>
       <key>Industry 1</key>
       <value>Branche 1</value>
@@ -1395,7 +1416,7 @@
     </entry>
     <entry>
       <key>New activity</key>
-      <value>Aktivität erstellen</value>
+      <value>Neue Aktivität</value>
     </entry>
     <entry>
       <key>July</key>
@@ -1649,9 +1670,6 @@
       <key>Title (original language)</key>
       <value>Titel (ursprüngliche Sprache)</value>
     </entry>
-    <entry>
-      <key>Parent Attribute</key>
-    </entry>
     <entry>
       <key>Attribute Relation</key>
       <value></value>
@@ -1724,6 +1742,10 @@
     <entry>
       <key>Paraguay</key>
     </entry>
+    <entry>
+      <key>New attribute</key>
+      <value>Neues Attribut</value>
+    </entry>
     <entry>
       <key>Solomon Islands</key>
     </entry>
@@ -1919,6 +1941,10 @@
     <entry>
       <key>United States dollar</key>
     </entry>
+    <entry>
+      <key>Superordinate Attribute</key>
+      <value>Ãœbergeordnetes Attribut</value>
+    </entry>
     <entry>
       <key>Kyrgyzstan</key>
     </entry>
@@ -2149,6 +2175,7 @@
     </entry>
     <entry>
       <key>${PRICELIST_SERVICE}</key>
+      <value>Service</value>
     </entry>
     <entry>
       <key>English</key>
@@ -2358,7 +2385,8 @@
       <value>Stunden</value>
     </entry>
     <entry>
-      <key>Special price list1</key>
+      <key>Special price list</key>
+      <value>Sonderpreisliste</value>
     </entry>
     <entry>
       <key>Christmas Island</key>
@@ -2451,6 +2479,7 @@
     </entry>
     <entry>
       <key>${PRICELIST_DEFAULT}</key>
+      <value>Standard</value>
     </entry>
     <entry>
       <key>Customer recommendation</key>
@@ -2824,6 +2853,7 @@
     </entry>
     <entry>
       <key>Tree</key>
+      <value>Baum</value>
     </entry>
     <entry>
       <key>100%</key>
@@ -2945,6 +2975,28 @@
       <key>supporter - supported</key>
       <value>Unterstützt - Wird unterstützt von</value>
     </entry>
+    <entry>
+      <key>Memo</key>
+    </entry>
+    <entry>
+      <key>Function</key>
+    </entry>
+    <entry>
+      <key>Relational</key>
+    </entry>
+    <entry>
+      <key>test</key>
+    </entry>
+    <entry>
+      <key>Only numbers are allowed.</key>
+      <value>Es sind nur Zahlen erlaubt.</value>
+    </entry>
+    <entry>
+      <key>Parent Attribute</key>
+    </entry>
+    <entry>
+      <key>Special price list1</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 144d7408513a252e27207e6ea0eb17de36b67062..abbf572093d0f286c71424b49653862be97d33e0 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -17,7 +17,6 @@
     </entry>
     <entry>
       <key>Activity</key>
-      <value></value>
     </entry>
     <entry>
       <key>Name</key>
@@ -69,7 +68,6 @@
     </entry>
     <entry>
       <key>Activities</key>
-      <value></value>
     </entry>
     <entry>
       <key>Female</key>
@@ -752,7 +750,6 @@
     </entry>
     <entry>
       <key>Offer report</key>
-      <value></value>
     </entry>
     <entry>
       <key>New offer</key>
@@ -1755,6 +1752,7 @@
     </entry>
     <entry>
       <key>${PRICELIST_SERVICE}</key>
+      <value>Service</value>
     </entry>
     <entry>
       <key>English</key>
@@ -1959,6 +1957,7 @@
     </entry>
     <entry>
       <key>Special price list1</key>
+      <value>Special price list</value>
     </entry>
     <entry>
       <key>Christmas Island</key>
@@ -2019,6 +2018,7 @@
     </entry>
     <entry>
       <key>Key account</key>
+      <value></value>
     </entry>
     <entry>
       <key>Brunei Darussalam</key>
@@ -2052,6 +2052,7 @@
     </entry>
     <entry>
       <key>${PRICELIST_DEFAULT}</key>
+      <value>Standard</value>
     </entry>
     <entry>
       <key>Customer recommendation</key>
@@ -2538,6 +2539,50 @@
     <entry>
       <key>Salesdashboard</key>
     </entry>
+    <entry>
+      <key>Discount %</key>
+    </entry>
+    <entry>
+      <key>Memo</key>
+    </entry>
+    <entry>
+      <key>Function</key>
+    </entry>
+    <entry>
+      <key>Relational</key>
+    </entry>
+    <entry>
+      <key>test</key>
+    </entry>
+    <entry>
+      <key>Only numbers are allowed.</key>
+    </entry>
+    <entry>
+      <key>Superordinate Attribute</key>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_OFFER}</key>
+      <value>Offer</value>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_NEGOTIATION}</key>
+      <value>Negotiation</value>
+    </entry>
+    <entry>
+      <key>Filesize</key>
+    </entry>
+    <entry>
+      <key>Filename</key>
+    </entry>
+    <entry>
+      <key>Filetype</key>
+    </entry>
+    <entry>
+      <key>Special price list</key>
+    </entry>
+    <entry>
+      <key>New attribute</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonContext/AddressType/AddressType.aod b/neonContext/AddressType/AddressType.aod
new file mode 100644
index 0000000000000000000000000000000000000000..c0acbfc73bfe0319b362981309a496d194235155
--- /dev/null
+++ b/neonContext/AddressType/AddressType.aod
@@ -0,0 +1,6 @@
+<?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.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.0.0">
+  <name>AddressType</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>AddressType_entity</entity>
+</neonContext>
diff --git a/neonContext/Attribute/Attribute.aod b/neonContext/Attribute/Attribute.aod
index 3504918a02b55108b0a0b0d7985b65676c4551c4..490a8f162c38c09ff9745b63ddff2f9f3edb30d2 100644
--- a/neonContext/Attribute/Attribute.aod
+++ b/neonContext/Attribute/Attribute.aod
@@ -8,7 +8,6 @@
   <filterview>AttributeFilter_view</filterview>
   <editview>AttributeEdit_view</editview>
   <preview>AttributePreview_view</preview>
-  <lookupview>AttributeFilter_view</lookupview>
   <entity>Attribute_entity</entity>
   <references>
     <neonViewReference>
diff --git a/neonContext/AttributeRelation/AttributeRelation.aod b/neonContext/AttributeRelation/AttributeRelation.aod
index 3d56373fb0ac8111c7d1df0efc29eee8f5c1b36f..d22d27e6d7bb6a4f4af9686983b4ebba55157301 100644
--- a/neonContext/AttributeRelation/AttributeRelation.aod
+++ b/neonContext/AttributeRelation/AttributeRelation.aod
@@ -14,5 +14,9 @@
       <name>d2970ead-0da7-4fad-9f82-0c02fe85fe2c</name>
       <view>AttributeRelationEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>e23b445d-12eb-400c-9153-af6b026654e6</name>
+      <view>AttributeRelationPreviewList</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/Organisation/Organisation.aod b/neonContext/Organisation/Organisation.aod
index 26e9b98ce2551670cd108cf2ad6cc54f7486eed9..f6ed8390a1ccd3f99b71b5df881ca0cca5ccbc82 100644
--- a/neonContext/Organisation/Organisation.aod
+++ b/neonContext/Organisation/Organisation.aod
@@ -27,10 +27,6 @@
       <name>68c233a5-ac5a-4aa7-b795-cd5aeb7af2e6</name>
       <view>OrganisationEdit_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>bb592f88-fa9f-4ecc-98cc-51a7903dc970</name>
-      <view>OrganisationAttr_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>27c1cd03-506a-4e1e-a080-79b9dca6eefd</name>
       <view>OrganisationLookup_view</view>
diff --git a/neonDashboard/Home/Home.aod b/neonDashboard/Home/Home.aod
index c5f89ec119a76d74b445df7c34bf1b1c17df2951..beae892d0e6a0845711ed569185bca3d4a276061 100644
--- a/neonDashboard/Home/Home.aod
+++ b/neonDashboard/Home/Home.aod
@@ -3,6 +3,7 @@
   <name>Home</name>
   <title>My Dashboard</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:HOME</icon>
   <dashboardType>PRIVATE</dashboardType>
   <editRoles />
   <defaultDashlets>
diff --git a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
index b401b585bd726d843dad69d6482bebf8551eb5a7..2b42818bb7d9df37fcd3656865c3a41450027e7f 100644
--- a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
+++ b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
@@ -3,7 +3,7 @@
   <name>Vertriebsdashboard</name>
   <title>Salesdashboard</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <icon>NEON:LOGO_A</icon>
+  <icon>VAADIN:CHART_GRID</icon>
   <dashboardType>PUBLIC</dashboardType>
   <editRoles>
     <element>INTERNAL_ADMINISTRATOR</element>
diff --git a/neonView/ActivityDetail_view/ActivityDetail_view.aod b/neonView/ActivityDetail_view/ActivityDetail_view.aod
index 5c1f702b4d3c5bfd08ee3174cf04c44329c6dc64..3409dd71072b0365b04e4a66f649950932adbe10 100644
--- a/neonView/ActivityDetail_view/ActivityDetail_view.aod
+++ b/neonView/ActivityDetail_view/ActivityDetail_view.aod
@@ -1,7 +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.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
   <name>ActivityDetail_view</name>
-  <title>Beschreibung</title>
+  <title>Description</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
     <boxLayout>
diff --git a/neonView/AddressEdit_view/AddressEdit_view.aod b/neonView/AddressEdit_view/AddressEdit_view.aod
index 60a769bd9d3b7e03293cb832b6c904b70a19630c..74be246944169d13557a1832e318c6e292494ddb 100644
--- a/neonView/AddressEdit_view/AddressEdit_view.aod
+++ b/neonView/AddressEdit_view/AddressEdit_view.aod
@@ -21,10 +21,6 @@
           <name>d8a7a16b-9d7f-44d7-bbb1-b0404d5b8b8f</name>
           <entityField>COUNTRY</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>e7804363-405d-429d-91c9-23de9685cc9a</name>
-          <entityField>STATE</entityField>
-        </entityFieldLink>
         <entityFieldLink>
           <name>c70668f3-6722-4a90-86d6-0d89be06dbe1</name>
           <entityField>ADDRESS</entityField>
@@ -41,6 +37,10 @@
           <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>
diff --git a/neonView/AddressFilter_view/AddressFilter_view.aod b/neonView/AddressFilter_view/AddressFilter_view.aod
index 78f5d08807b8c870c61f898395c631ad52193115..4c33eb1e108945b9ab272e0bff15b1ecfe24f2ce 100644
--- a/neonView/AddressFilter_view/AddressFilter_view.aod
+++ b/neonView/AddressFilter_view/AddressFilter_view.aod
@@ -17,6 +17,10 @@
           <name>852583d4-1883-4b36-963f-6f3a4df63a89</name>
           <entityField>ADDR_TYPE</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>10e9e08f-db9b-4789-a4b4-b2a0a750b069</name>
+          <entityField>COUNTRY</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>32b8b6f0-bdbc-4a4b-b98c-0a22861b0e6c</name>
           <entityField>ADDRESS</entityField>
@@ -33,10 +37,6 @@
           <name>57247c5c-6498-420b-b288-68ca316cf7f2</name>
           <entityField>CITY</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>10e9e08f-db9b-4789-a4b4-b2a0a750b069</name>
-          <entityField>COUNTRY</entityField>
-        </neonTableColumn>
         <neonTableColumn>
           <name>9a965a25-a8aa-4777-865e-138624f2d848</name>
           <entityField>STATE</entityField>
diff --git a/neonView/AddressList_view/AddressList_view.aod b/neonView/AddressList_view/AddressList_view.aod
index ab275f2b133aa5e18f0c73f3a177f71a4f29c44a..ab11f3f168a5411ca39e31ab8e53f2c98c64af55 100644
--- a/neonView/AddressList_view/AddressList_view.aod
+++ b/neonView/AddressList_view/AddressList_view.aod
@@ -22,10 +22,6 @@
           <name>dfaa01a1-0b11-4f92-aa18-89f12ebb2db5</name>
           <entityField>COUNTRY</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>17039f2e-4253-4242-bcc4-b75483adfbd0</name>
-          <entityField>STATE</entityField>
-        </neonTableColumn>
         <neonTableColumn>
           <name>4e5e6a4f-f43e-4861-a912-fb05e576f960</name>
           <entityField>ADDRESS</entityField>
@@ -42,6 +38,10 @@
           <name>12727b21-0359-4430-a9c2-54eb48e2e864</name>
           <entityField>CITY</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>17039f2e-4253-4242-bcc4-b75483adfbd0</name>
+          <entityField>STATE</entityField>
+        </neonTableColumn>
       </columns>
     </titledListViewTemplate>
   </children>
diff --git a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
index 4192daba616b5f41261d4545ae65b0fb90d82dc5..e343aeea66dcf9790222f33a2c13d9042203bc91 100644
--- a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
+++ b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
@@ -16,6 +16,10 @@
           <name>b210372e-dfd3-4cec-bc2e-84b72aebb2b6</name>
           <entityField>ADDR_TYPE</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>d8a7a26b-9d7f-44d7-bbb1-b0404d5b8b2f</name>
+          <entityField>COUNTRY</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>c20668f3-6722-4a90-86d6-0d29be06dbe1</name>
           <entityField>ADDRESS</entityField>
@@ -32,10 +36,6 @@
           <name>fafca2d6-c2dd-4b66-b1ff-1d6ba451827b</name>
           <entityField>CITY</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>d8a7a26b-9d7f-44d7-bbb1-b0404d5b8b2f</name>
-          <entityField>COUNTRY</entityField>
-        </neonTableColumn>
         <neonTableColumn>
           <name>945bd8e7-9d0d-4e32-8908-24d8dfb74463</name>
           <entityField>STATE</entityField>
diff --git a/neonView/AnyContactLookup_view/AnyContactLookup_view.aod b/neonView/AnyContactLookup_view/AnyContactLookup_view.aod
index 4273a0ee681dcf1f137be5d18a1b010ffc6b32bb..c6ca766c71de2386e22e89289b7d6581866cd8c8 100644
--- a/neonView/AnyContactLookup_view/AnyContactLookup_view.aod
+++ b/neonView/AnyContactLookup_view/AnyContactLookup_view.aod
@@ -18,15 +18,11 @@
         </neonTableColumn>
         <neonTableColumn>
           <name>ca59a64a-adce-49c3-93ad-2978c81809f8</name>
-          <entityField>ORG_NAME</entityField>
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>814b3f18-106a-443e-8415-762669f862e6</name>
-          <entityField>PERSON_FIRSTNAME</entityField>
+          <entityField>ORGANISATION_NAME</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>4b05d812-aa6c-49a5-afa3-ea5cd99560ef</name>
-          <entityField>PERSON_LASTNAME</entityField>
+          <entityField>PERSON_FULL_NAME</entityField>
           <width v="75" />
           <expandRatio v="100" />
         </neonTableColumn>
@@ -38,6 +34,10 @@
           <name>16174be3-c8fb-46a8-8f73-f6b8d8fad963</name>
           <entityField>STANDARD_EMAIL_COMMUNICATION</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>c7d50d7a-11da-491c-a4be-7d5f75d335f0</name>
+          <entityField>ADDRESS_ID</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/AttributeFilter_view/AttributeFilter_view.aod b/neonView/AttributeFilter_view/AttributeFilter_view.aod
index 6f180a2023453e5b98aa02932e15315fd076c27f..626b9f0d2c86e82065ba3be5adb8e8222989920f 100644
--- a/neonView/AttributeFilter_view/AttributeFilter_view.aod
+++ b/neonView/AttributeFilter_view/AttributeFilter_view.aod
@@ -5,17 +5,36 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <treetableViewTemplate>
-      <name>Treetable</name>
+      <name>Treetable_template</name>
       <parentField>ATTRIBUTE_PARENT_ID</parentField>
+      <favoriteActionGroup1>AttributeActions</favoriteActionGroup1>
       <titleField>ATTRIBUTE_NAME</titleField>
       <descriptionField>ATTRIBUTE_TYPE</descriptionField>
       <entityField>#ENTITY</entityField>
     </treetableViewTemplate>
+    <tableViewTemplate>
+      <name>Table_template</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>4dae1a23-8798-42ff-998c-7f5fedc7dcc5</name>
+          <entityField>ATTRIBUTE_NAME</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>ed7598ea-c29c-4d04-9b28-27ee3b28a5b1</name>
+          <entityField>ATTRIBUTE_TYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>cc88ea53-2673-4c6e-ac2e-6766d2698453</name>
+          <entityField>ATTRIBUTE_ACTIVE</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/AttributePreview_view/AttributePreview_view.aod b/neonView/AttributePreview_view/AttributePreview_view.aod
index f3e5d5fa9e51b0d3fedf0e8f0b07f37f8c561472..4ebba8e503f92b6b617857ec1904bcb729c47d19 100644
--- a/neonView/AttributePreview_view/AttributePreview_view.aod
+++ b/neonView/AttributePreview_view/AttributePreview_view.aod
@@ -24,6 +24,10 @@
           <name>5f20a5d4-0343-4b8c-92bf-15eeb2483ba9</name>
           <entityField>ATTRIBUTE_PARENT_ID</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>7e64cd02-e91e-4845-bc77-256a4945670e</name>
+          <entityField>KEYWORD_CONTAINER</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>e00bfeb1-7003-4d5a-b71a-c6921e255c9d</name>
           <entityField>ATTRIBUTE_ACTIVE</entityField>
diff --git a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod
new file mode 100644
index 0000000000000000000000000000000000000000..41ed1f745ebc495d92c4b4cc9c0006764e5e90de
--- /dev/null
+++ b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.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.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
+  <name>AttributeRelationPreviewList</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>attributes</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>ca2fb22d-2987-443d-8e69-fccaba68e0c5</name>
+          <entityField>AB_ATTRIBUTE_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>a4661c55-6e51-4884-b460-0ef1dca7c5f7</name>
+          <entityField>ATTRIBUTERELATION_VALUE</entityField>
+        </neonTableColumn>
+      </columns>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/OrganisationAttr_view/OrganisationAttr_view.aod b/neonView/OrganisationAttr_view/OrganisationAttr_view.aod
deleted file mode 100644
index 776e229c1ed02a1c41f2600c4f1928dbb5974117..0000000000000000000000000000000000000000
--- a/neonView/OrganisationAttr_view/OrganisationAttr_view.aod
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
-  <name>OrganisationAttr_view</name>
-  <description>TODO: View verknüpfung von generics momentan nicht möglich! Desshalb habe ich die Felder nochmal direkt verknüpft, damit es zumindest nutzbar ist. 
-TODO: diese Felder werden später als Attribute implementiert</description>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <noneLayout>
-      <name>layout</name>
-    </noneLayout>
-  </layout>
-  <children>
-    <genericViewTemplate>
-      <name>OrgAttributes</name>
-      <showDrawer v="true" />
-      <drawerCaption>Attributes</drawerCaption>
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>504f38a1-5642-42c5-9f43-cc20897330ec</name>
-          <entityField>PRICE_POLITICS</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>1c7a75d0-9032-4f63-8128-410d0c80dc0e</name>
-          <entityField>STRENGTH</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>8719c99b-89bb-472d-9596-109d921a1cf2</name>
-          <entityField>WEAKNESS</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
index 42815a374b95759344d91eb754372de398619373..a8f5cd47c2dbbb9bb37a9c70b53c31a0b0c7e8df 100644
--- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
+++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
@@ -63,6 +63,10 @@
           <name>213d7434-cac6-42d8-aa3a-d893dc77b7b3</name>
           <entityField>STANDARD_PHONE_COMMUNICATION</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>067eeef9-9a98-483b-9b4f-67bcc46eca3a</name>
+          <entityField>ADDRESS_ID</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/OrganisationLookup_view/OrganisationLookup_view.aod b/neonView/OrganisationLookup_view/OrganisationLookup_view.aod
index a491b144cddf6da2928a3ebe0e4be62f705c1c88..d51544e0e9ef248bca1a46d11f8c2af2d00401ec 100644
--- a/neonView/OrganisationLookup_view/OrganisationLookup_view.aod
+++ b/neonView/OrganisationLookup_view/OrganisationLookup_view.aod
@@ -28,6 +28,10 @@
           <name>44f2a229-3288-448e-9f74-b29751ab3c49</name>
           <entityField>STANDARD_EMAIL_COMMUNICATION</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>6e0191b5-468b-41f6-b87e-732bb1c0ded8</name>
+          <entityField>ADDRESS_ID</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod
index 5aaf1f8ecc20c5a5b5ddd0b60e60ca0bf219b6ae..0d52a18a1b932ec96237fcb26c330bff4de24671 100644
--- a/neonView/PersonFilter_view/PersonFilter_view.aod
+++ b/neonView/PersonFilter_view/PersonFilter_view.aod
@@ -70,6 +70,10 @@
           <name>1b99eaf7-7ce7-4b7d-bb71-f21e6cae4417</name>
           <entityField>STANDARD_PHONE_COMMUNICATION</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>4e9d69fc-a072-41b9-a089-0a9c5c1e37c2</name>
+          <entityField>ADDRESS_ID</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/PersonLookup_view/PersonLookup_view.aod b/neonView/PersonLookup_view/PersonLookup_view.aod
index f93afb3fdd66e9f9b654d0b7ae378bd3c0447832..4c71e4b72b2294d0d34cbe55b9631d063f120299 100644
--- a/neonView/PersonLookup_view/PersonLookup_view.aod
+++ b/neonView/PersonLookup_view/PersonLookup_view.aod
@@ -32,6 +32,10 @@
           <name>eb778e57-1f2d-436e-b22a-e92f7a190606</name>
           <entityField>STANDARD_EMAIL_COMMUNICATION</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>27d03313-3ec6-438f-b79b-724369316ef3</name>
+          <entityField>ADDRESS_ID</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/PersonPreview_view/PersonPreview_view.aod b/neonView/PersonPreview_view/PersonPreview_view.aod
index ae395531ab792a06b8029ee086e108cddee63e3b..a46e953f3c5307e1248693928966ddaf93a78b68 100644
--- a/neonView/PersonPreview_view/PersonPreview_view.aod
+++ b/neonView/PersonPreview_view/PersonPreview_view.aod
@@ -11,7 +11,7 @@
     <cardViewTemplate>
       <name>PersHeader_template</name>
       <iconField>IMAGE</iconField>
-      <titleField>NAME_fieldGroup</titleField>
+      <titleField>FULL_NAME_fieldGroup</titleField>
       <descriptionField>ORGANISATION_ID</descriptionField>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
diff --git a/neonView/ProductPreview_view/ProductPreview_view.aod b/neonView/ProductPreview_view/ProductPreview_view.aod
index b027cff6ec46895f9a2012132616409c72fc59f3..ec357f90b38dd8275058f1310dedab536c091ed7 100644
--- a/neonView/ProductPreview_view/ProductPreview_view.aod
+++ b/neonView/ProductPreview_view/ProductPreview_view.aod
@@ -54,12 +54,12 @@
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
-          <name>b93cd0c5-7028-496b-9709-ed57ba53ab47</name>
-          <entityField>currentPurchasePriceId</entityField>
+          <name>e47628f5-dd89-4a5d-bb39-8edf8dba9e73</name>
+          <entityField>currentPurchasePrice</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>6e4db325-6546-47f8-8dfa-ae60e8c37a13</name>
-          <entityField>currentSalesPriceId</entityField>
+          <name>da93c159-d0b2-41d4-8ebe-7f28f623356c</name>
+          <entityField>currentSalesPrice</entityField>
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
diff --git a/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod b/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod
index 4d5f8da9ec87ed5acd40a327d0eeebc1769c2346..a75b6dbedd4669e0e74988874158a0b115adb5c2 100644
--- a/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod
+++ b/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod
@@ -36,25 +36,10 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
-    <genericViewTemplate>
-      <name>OrgAttrWorkaround_template</name>
-      <showDrawer v="true" />
-      <drawerCaption>Attributes</drawerCaption>
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>9cf17ad8-d91f-4445-b66c-9227bc237787</name>
-          <entityField>ORG_PRICE_POLITICS</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>e9d9fefd-3493-458e-b9aa-a0300de4f771</name>
-          <entityField>ORG_STRENGTH</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>032e932c-038c-4a74-94e8-39e0be31fbae</name>
-          <entityField>ORG_WEAKNESS</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
+    <neonViewReference>
+      <name>a0ff837d-f2f8-4e14-8246-3acdd6653be0</name>
+      <entityField>Attributes</entityField>
+      <view>AttributeRelationPreviewList</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
index 29c93d4f39c080379433f65949323e2d101c1c11..2181c73016332558c0b0bd74e3f74f0cf09592b0 100644
--- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
+++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
@@ -54,6 +54,10 @@
       <entityField>#ENTITY</entityField>
       <title></title>
       <columns>
+        <neonTableColumn>
+          <name>2cbd6486-e1e4-4660-94f9-1b71e29b11ba</name>
+          <entityField>IMAGE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>6702bb75-1c57-42a7-9cf0-acd7cd8515f5</name>
           <entityField>CONTACT_ID</entityField>
diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
index 86f931d7521318c8f855c0602cfed8fe337205b2..ac2bea3a9905982d4254ae0c7e33426a74f7d04e 100644
--- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
+++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
@@ -20,9 +20,9 @@
       <view>ActivityFilter_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>b0302dd4-fd72-4d34-8c22-70d3a721347f</name>
-      <entityField>#ENTITY</entityField>
-      <view>SalesprojectCycle_view</view>
+      <name>9dbe03b3-e5d3-4db8-b542-506b13322d4f</name>
+      <entityField>SalesprojectForecasts</entityField>
+      <view>SalesprojectForecastFilter_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>5d7248e8-3f3e-4262-8f13-6d5eff7165c1</name>
@@ -44,11 +44,6 @@
       <entityField>SalesprojectMembers</entityField>
       <view>SalesprojectMemberFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>a989abee-e88b-46b1-a78b-b16fa11de634</name>
-      <entityField>SalesprojectClassifications</entityField>
-      <view>SalesprojectClassificationFilter_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>c0027b4d-c014-4053-a595-daad9a73ad5c</name>
       <entityField>Timetrackings</entityField>
diff --git a/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod b/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod
index bd7d56408d9e22ddf4829b409a028b2510d5efd0..325028978da8c455396bc3871c94340d38de2ee9 100644
--- a/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod
+++ b/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod
@@ -15,7 +15,7 @@
       <columns>
         <neonTableColumn>
           <name>27e658bc-c134-4fef-a3a5-b172852d606e</name>
-          <entityField>ORG_NAME</entityField>
+          <entityField>ORGANISATION_NAME</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>59e6aea1-9752-48b5-9d91-43edd0c1d670</name>
diff --git a/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_view.aod b/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_view.aod
index 94da8a83f6260b6d127edfca968580167262ab7e..dc494029004cf195eeb62b92d4b27b187d13c1e2 100644
--- a/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_view.aod
+++ b/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_view.aod
@@ -14,17 +14,5 @@
       <descriptionField>SALESPROJECT_ROLE</descriptionField>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
-    <genericViewTemplate>
-      <name>SalesprojectMemberInfo_template</name>
-      <showDrawer v="true" />
-      <drawerCaption>Details</drawerCaption>
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>9eafb9df-5b00-4e1f-aacf-04c62cfaddf0</name>
-          <entityField>RELATIONSHIP</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
   </children>
 </neonView>
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AddressType.xml b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AddressType.xml
index f5e48e9b9d2743f01d7bb5b6d402f4759aecc779..365041d05129931d01e7a9392530fb089da6e44f 100644
--- a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AddressType.xml
+++ b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AddressType.xml
@@ -4,7 +4,7 @@
         <insert tableName="AB_KEYWORD_ATTRIBUTE">
             <column name="AB_KEYWORD_ATTRIBUTEID" value="1d5c5d49-0ffd-47fb-af10-542f7cf454cd"/>
 
-            <column name="NAME" value="organinsation"/>
+            <column name="NAME" value="organisation"/>
             <column name="CONTAINER" value="AddressType"/>
             <column name="TYPE" value="BOOL_VALUE"/>
         </insert>
diff --git a/others/db_changes/data_alias/basic/2019.2/AttributeKeyword.xml b/others/db_changes/data_alias/basic/2019.2/AttributeKeyword.xml
index a66ac3b370297109422637e54f1d0ed906b4ba9a..9e0b5a7112973263fbffaa25761aa8e5b95f23b6 100644
--- a/others/db_changes/data_alias/basic/2019.2/AttributeKeyword.xml
+++ b/others/db_changes/data_alias/basic/2019.2/AttributeKeyword.xml
@@ -4,6 +4,12 @@
 	<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"/>
 	</addColumn>
diff --git a/others/db_changes/data_alias/basic/2019.2/ActivityCategory.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/ActivityCategory.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/ActivityCategory.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/ActivityCategory.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/AddressType.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/AddressType.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AddressType.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/AddressType.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/CommunicationMedium.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/CommunicationMedium.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/CommunicationMedium.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/CommunicationMedium.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/OfferProbability.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/OfferProbability.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/OfferProbability.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/OfferProbability.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/SalesProjectCompetitionPhase.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectCompetitionPhase.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/SalesProjectCompetitionPhase.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectCompetitionPhase.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/SalesProjectPhase.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPhase.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/SalesProjectPhase.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPhase.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/SalesProjectPricePolitics.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPricePolitics.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/SalesProjectPricePolitics.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPricePolitics.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/SalesProjectState.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectState.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/SalesProjectState.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectState.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/SalesProjectStrength.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectStrength.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/SalesProjectStrength.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectStrength.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/SalesProjectWeakness.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectWeakness.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/SalesProjectWeakness.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectWeakness.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/SalesprojectCompetitionState.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesprojectCompetitionState.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/SalesprojectCompetitionState.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesprojectCompetitionState.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/TaskPriority.xml b/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/TaskPriority.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/TaskPriority.xml
rename to others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/TaskPriority.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/changelog.xml b/others/db_changes/data_alias/basic/2019.2/changelog.xml
index fdbb022fcb46c91b2c946b4463a729c149c5d243..64b6861a57843b46fae97676f4ff215d486f3bd7 100644
--- a/others/db_changes/data_alias/basic/2019.2/changelog.xml
+++ b/others/db_changes/data_alias/basic/2019.2/changelog.xml
@@ -1,6 +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">
-    <include relativeToChangelogFile="true" file="data/example_organisation/ORGANISATION_privat.xml" context="example"/>
+    <include relativeToChangelogFile="true" file="data/ORGANISATION_private.xml"/>
     <include relativeToChangelogFile="true" file="data/example_organisation/ORGANISATION_gfk.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_organisation/ORGANISATION_mnf.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_organisation/ORGANISATION_lichtenstein.xml" context="example"/>
@@ -40,6 +40,10 @@
     <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="AttributeKeyword.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="update_TaskType_Task.xml"/>
     
@@ -57,17 +61,18 @@
     <include relativeToChangelogFile="true" file="ObjectRelation_add_type_exampleData.xml" context="example"/>
     -->
     <!--References to the Keyword Values-->
-    <include relativeToChangelogFile="true" file="OfferProbability.xml"/>
-    <include relativeToChangelogFile="true" file="ActivityCategory.xml"/>
-    <include relativeToChangelogFile="true" file="CommunicationMedium.xml"/>
-    <include relativeToChangelogFile="true" file="AddressType.xml"/>
-    <include relativeToChangelogFile="true" file="SalesProjectStrength.xml"/>
-    <include relativeToChangelogFile="true" file="SalesProjectPhase.xml"/>
-    <include relativeToChangelogFile="true" file="SalesProjectState.xml"/>
-    <include relativeToChangelogFile="true" file="SalesProjectWeakness.xml"/>
-    <include relativeToChangelogFile="true" file="SalesProjectPricePolitics.xml"/>
-    <include relativeToChangelogFile="true" file="TaskPriority.xml"/>
-    <include relativeToChangelogFile="true" file="SalesprojectCompetitionState.xml"/>
+    <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/OfferProbability.xml"/>
+    <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/ActivityCategory.xml"/>
+    <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/CommunicationMedium.xml"/>
+    <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/AddressType.xml"/>
+    <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/SalesProjectStrength.xml"/>
+    <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/SalesProjectPhase.xml"/>
+    <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/SalesProjectState.xml"/>
+    <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/SalesProjectWeakness.xml"/>
+    <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/SalesProjectPricePolitics.xml"/>
+    <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"/>
@@ -79,10 +84,16 @@
     <include relativeToChangelogFile="true" file="AditoBasic/init_TaskPriority.xml"/>
     <include relativeToChangelogFile="true" file="AditoBasic/init_SalesprojectCompetitionState.xml"/>
     <include relativeToChangelogFile="true" file="AditoBasic/init_AttributeType.xml"/>
-    <include relativeToChangelogFile="true" file="SalesProjectCompetitionPhase.xml"/>
-    <include relativeToChangelogFile="true" file="AttributeKeyword.xml"/>
     <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="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"/>
 </databaseChangeLog>
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_privat.xml b/others/db_changes/data_alias/basic/2019.2/data/ORGANISATION_private.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_privat.xml
rename to others/db_changes/data_alias/basic/2019.2/data/ORGANISATION_private.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_attribute/Attribute.xml b/others/db_changes/data_alias/basic/2019.2/data/example_attribute/Attribute.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9ccc46c08d8a92dbf13ea0b33e0bbe3d1e85add3
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/data/example_attribute/Attribute.xml
@@ -0,0 +1,1736 @@
+<?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="f1b149fb-bd9d-44b7-a334-8f6d77261b95">
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="752d7706-ac6e-4b51-a918-4265531794a4"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Mitbewerber"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="8af37871-d407-4414-98ad-e64dbaa5794a"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Preispolitik"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/>
+	<column name="ATTRIBUTE_TYPE" value="KEYWORD                             "/>
+	<column name="KEYWORD_CONTAINER" value="SalesprojectPricePolitics"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="558419b2-6113-4060-b88d-cc6324754765"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Stärke"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/>
+	<column name="ATTRIBUTE_TYPE" value="KEYWORD                             "/>
+	<column name="KEYWORD_CONTAINER" value="SalesprojectStrength"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="71226196-2812-4d70-b90f-c3e2c14fd4d1"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Schwäche"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/>
+	<column name="ATTRIBUTE_TYPE" value="KEYWORD                             "/>
+	<column name="KEYWORD_CONTAINER" value="SalesprojectWeakness"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="0644222a-2b3b-4f5e-a85a-d24c32fa0e72"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Interessen"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="53266a7c-58ed-47dc-bbe8-9e00b33cb344"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Kulanz"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="965823ef-fe63-41f8-9b0b-432f17ac31a7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="0ecd14d9-837c-47fc-9676-afe71f7e5518"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Schadensart"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="965823ef-fe63-41f8-9b0b-432f17ac31a7"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Regulierung"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="10dc7354-cb50-4354-8412-2c35b569e3ad"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Technische Merkmale"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="e7e05c6e-6108-44bd-824a-c076dfa5ae93"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="B"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="f11f65d0-4352-4f81-85d0-bfd034275e34"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="ed4c3079-51b0-4bb5-b228-55de4309d5ab"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="0 gering"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="6266b41c-fa20-47b9-bd71-5633015d0796"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="gut"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="dc52ede6-2b79-488c-b7bb-48877bd5d198"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="dc52ede6-2b79-488c-b7bb-48877bd5d198"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Stimmung"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+	<column name="SORTING" valueNumeric="6"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="691452ec-3b9f-43dc-91a2-645a97b775b2"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Risiko"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+	<column name="SORTING" valueNumeric="4"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="54018b5e-0e02-48d1-873c-1c934d2e97ed"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Rennrad"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="65f0027d-7939-4342-b531-f31f10c3c045"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="292825e8-fa96-4b7b-8dab-71955ae14571"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="A"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="f11f65d0-4352-4f81-85d0-bfd034275e34"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="4fcd8bb8-72fd-48d0-9e64-4c80e5177c36"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="NPO"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="9e9568c5-ad8a-4c1e-a6e6-72c9b4a3acf7"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_INFO" value="Als Attribut ist der Name aus lib_frame z.B. 'ORG' 'PERS' 'OFFER' etc. zu verwenden."/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Doku Vorlagen Verwendung"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="2b6e3225-9447-4706-9313-62c9463d6671"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Handwerk"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="da8e8568-63e0-41d3-a83f-2d8ae4982ba5"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="be60e4b3-19b1-48a9-ad5c-c7d38698b4a1"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Dumpingpreis Wettbewerb"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="691452ec-3b9f-43dc-91a2-645a97b775b2"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="6d15f683-389e-4915-9043-c4cfdf188095"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Vollberechnung"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="965823ef-fe63-41f8-9b0b-432f17ac31a7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="ab545654-1fce-4993-b763-0ec469781302"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_INFO" value="Konditionen die bei Angebotserstellung übernommen werden"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Konditionen"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="25e97db1-f796-497d-9842-3efcbb5bebf1"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Sonstiges"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="0644222a-2b3b-4f5e-a85a-d24c32fa0e72"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="a844a395-e857-447d-b8f8-fa850bbceb82"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Produkttyp"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+	<column name="SORTING" valueNumeric="6"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="b1c552a0-eab9-417d-9f12-039d41603f6d"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="mittel"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="dc52ede6-2b79-488c-b7bb-48877bd5d198"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="9e20d257-e2a7-4ef7-9253-1d8ed971b7b9"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="D"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="f11f65d0-4352-4f81-85d0-bfd034275e34"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="1 mittel"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="32612c75-b32c-4043-88c4-e8237acf8d5c"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="liebt Geselligkeit"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="25e97db1-f796-497d-9842-3efcbb5bebf1"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="6db07a20-86bc-48da-8b27-b39bdd73b86b"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Projektverschiebung Kunde"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="691452ec-3b9f-43dc-91a2-645a97b775b2"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="85c9cdd8-f7a6-4210-840e-fab8628f4dbe"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Qualitätsproblem Kunde"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="691452ec-3b9f-43dc-91a2-645a97b775b2"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="7c39913b-a07c-4332-96ff-7b34b566ff49"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Wein"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7621696c-40ce-4cf2-92ec-74bc940e49ec"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="07fc6730-6c83-4996-bfd9-41c18765a10a"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Wechsel Entscheidungsträger"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="691452ec-3b9f-43dc-91a2-645a97b775b2"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="4"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="26385e16-6b2f-428c-9c28-1bfa9c2ccf6f"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Finanzdienstleistung"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="65f0027d-7939-4342-b531-f31f10c3c045"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Sport"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="0644222a-2b3b-4f5e-a85a-d24c32fa0e72"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="7f01bfa6-ce9d-4964-b1e2-3cd5464d076a"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Gerät/Maschine"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="a844a395-e857-447d-b8f8-fa850bbceb82"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="e857f9ee-fb27-4507-8381-46ba0a181cef"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Jahresurlaub"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="acaf54c3-9613-4740-aa22-4f6ebd0d6cb0"/>
+	<column name="ATTRIBUTE_TYPE" value="NUMBER                              "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="005b2ec8-68f3-4cbe-b9e5-783526e4c288"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Fernreisen"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="25e97db1-f796-497d-9842-3efcbb5bebf1"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="4dce5406-9a91-4a92-b55e-d1313c18f9c6"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Teilberechnung"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="965823ef-fe63-41f8-9b0b-432f17ac31a7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="9cfa5ce3-f1ae-4d18-9a65-0571f5ffb786"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="PERS"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="9e9568c5-ad8a-4c1e-a6e6-72c9b4a3acf7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Beurteilung"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Branche"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Zielgruppe"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="bb0c6356-33be-4e7c-a409-9ef5145f7aae"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Dienstleistung"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="17746b46-2702-447a-b749-a92bfdf4bb38"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Kunde"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="d0a9eb78-6dcf-48e0-ba91-04a3ba104d26"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Interessent"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="e4a60941-513f-4e75-a787-f00070ecb00a"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Hersteller"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="1d30d0ab-6103-4972-84c0-fd23eef15ca1"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Wettbewerber"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Betreuung"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="786148de-56b3-497e-88db-2ff5e4dc0bd7"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Kontaktierung"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="1d4c071b-237e-4a11-abff-0acaeaf6f8b1"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Signatur"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="79ee6a0f-5192-4db3-9b05-156fd18b01b4"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Bier"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7621696c-40ce-4cf2-92ec-74bc940e49ec"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="7621696c-40ce-4cf2-92ec-74bc940e49ec"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Genuss"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="0644222a-2b3b-4f5e-a85a-d24c32fa0e72"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="a3972e57-d081-463a-a33c-5d4d3af6d8f2"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Motorrad"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="65f0027d-7939-4342-b531-f31f10c3c045"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="4"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="6819c616-a580-4bd6-ba41-9ba1db569dc4"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Drehzahl (rpm)"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="10dc7354-cb50-4354-8412-2c35b569e3ad"/>
+	<column name="ATTRIBUTE_TYPE" value="NUMBER                              "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="4c28a67b-dbc5-4399-bf33-b52e4cf82ffd"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="ORG"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="9e9568c5-ad8a-4c1e-a6e6-72c9b4a3acf7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="2318607b-556a-4537-92f0-9870ee9a9201"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Zigarren"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7621696c-40ce-4cf2-92ec-74bc940e49ec"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="43321e69-c8aa-4b0e-9c4e-8cde74f5c0fc"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Verschleißteil"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="a844a395-e857-447d-b8f8-fa850bbceb82"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="9882c4bc-a3d9-43a9-8238-81ef39387869"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Maschinenbau"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Loyalität"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+	<column name="SORTING" valueNumeric="5"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="b93fc811-e0dc-4e50-9ca6-107f43ac4c0c"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Tabellen Daten"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="be31d7a5-9a02-4ae0-8265-916d32c1fccb"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="915d566f-acbe-448c-a7b6-11898adc3880"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Liefersperre"/>
+	<column name="ATTRIBUTE_TYPE" value="BOOLEAN                             "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="d14f6eea-8760-43bf-ad3a-e7c3e4416392"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Partner"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="4"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Geburtstagsliste"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+	<column name="SORTING" valueNumeric="10"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="62b43c0f-9afb-4b57-8b7d-de38d43a9d47"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Nein"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="ddf607c0-a45b-4255-bf4e-b2d515df4b86"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Ja"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="fd3963bc-8e60-411a-9911-b97eb73e5cf7"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Projektart"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="3265f271-2e85-42b2-84af-c9e23e8a1e8c"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Intern"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="fd3963bc-8e60-411a-9911-b97eb73e5cf7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="615d3850-ef32-4988-9a8d-7b702b489194"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Partner"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="fd3963bc-8e60-411a-9911-b97eb73e5cf7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="be3b5fe2-2146-4eab-80a4-3c1cf4d6156a"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Bestandskunde"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="fd3963bc-8e60-411a-9911-b97eb73e5cf7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="87204e4b-2db2-4eb4-b216-5e16b227561e"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Interessent"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="fd3963bc-8e60-411a-9911-b97eb73e5cf7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="4a9625ed-0cd9-445f-ae13-5bdbfdf3f38c"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Fussball"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="65f0027d-7939-4342-b531-f31f10c3c045"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="66271d11-a275-4141-8f84-86ab2ed3fedf"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Förderband"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="10dc7354-cb50-4354-8412-2c35b569e3ad"/>
+	<column name="ATTRIBUTE_TYPE" value="BOOLEAN                             "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="fa0171cf-2e0d-4ff0-bbe7-8ff083a96593"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="weitere Daten"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="be31d7a5-9a02-4ae0-8265-916d32c1fccb"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="974bbd28-08b3-41a4-bd74-7d9c3c778249"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="kein Risiko"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="691452ec-3b9f-43dc-91a2-645a97b775b2"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="5"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="9350afa2-7181-4eb4-b731-3699fe71b0f6"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="schlecht"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="dc52ede6-2b79-488c-b7bb-48877bd5d198"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="d8949d8f-051b-4f5b-ba61-5af49e9499cc"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Ersatzteil"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="a844a395-e857-447d-b8f8-fa850bbceb82"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="23a4d394-9fae-4205-a811-730d5109c115"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Segeln"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="65f0027d-7939-4342-b531-f31f10c3c045"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="b78ef891-16a3-4354-bc95-7b70ef5b4e2e"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Werkzeugwechsler"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="10dc7354-cb50-4354-8412-2c35b569e3ad"/>
+	<column name="ATTRIBUTE_TYPE" value="BOOLEAN                             "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="617da3f5-d8bc-45ff-85a1-258621ea2a0b"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Logistik"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="7"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="1a3c1c77-e57c-4481-a67f-adf7e084ea90"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="IT"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="da8e8568-63e0-41d3-a83f-2d8ae4982ba5"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="953e3b5e-0ca7-4215-8dee-b0ba28ef1bf9"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Zahlungsproblem Kunde"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="691452ec-3b9f-43dc-91a2-645a97b775b2"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="2bdb04cb-4cd3-4454-802c-8e2b4a5e2e36"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Behörde"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="6"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="30be2556-e09b-4169-be32-d4bafeb89a2f"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Tourismus"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="da8e8568-63e0-41d3-a83f-2d8ae4982ba5"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="acafca42-8ef4-4c21-abe8-1c2ca358a5aa"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Handel"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="4"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="79378933-9f74-4391-b876-4528b582661f"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Bauwesen"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="5"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="c85a5ebe-80fe-4176-a92a-35d2200baa07"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="2 gross"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="7b687991-601c-4d75-b201-00a6cc9c6b93"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Gewicht (kg)"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="10dc7354-cb50-4354-8412-2c35b569e3ad"/>
+	<column name="ATTRIBUTE_TYPE" value="NUMBER                              "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="f11f65d0-4352-4f81-85d0-bfd034275e34"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Bonität"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="da8e8568-63e0-41d3-a83f-2d8ae4982ba5"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Beruf"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="0644222a-2b3b-4f5e-a85a-d24c32fa0e72"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="acaf54c3-9613-4740-aa22-4f6ebd0d6cb0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Personal"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="957d61a4-0038-46e0-b5a3-fc2a5d413004"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="C"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="f11f65d0-4352-4f81-85d0-bfd034275e34"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="be31d7a5-9a02-4ae0-8265-916d32c1fccb"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="zusätzliche Daten"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="4d4ef830-68e6-4228-9e4f-13614d841328"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Wirtschaft"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="da8e8568-63e0-41d3-a83f-2d8ae4982ba5"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="bb62ae03-be34-4d34-885c-27591c5bf1b4"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Golf"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="65f0027d-7939-4342-b531-f31f10c3c045"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="0afb463f-6ce4-4dfb-b093-09a8fcd925a3"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="2"/>
+	<column name="ATTRIBUTE_NAME" value="Bauteil"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="a844a395-e857-447d-b8f8-fa850bbceb82"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="bad29370-3c47-4ac7-8d5d-4e86439000ef"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Mitarbeiterkonto"/>
+	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="97c6f6ec-2ed2-4c26-8612-b524e3ef15db"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="DOCUMENT"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="9e9568c5-ad8a-4c1e-a6e6-72c9b4a3acf7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="fffbb6b5-05ea-4f76-83c6-cf2cb29ef576"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="unvollständige Lieferung"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="0ecd14d9-837c-47fc-9676-afe71f7e5518"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="5c188c8c-14b2-4c66-ad48-65b750e05353"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Qualitätsbeanstandung"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="0ecd14d9-837c-47fc-9676-afe71f7e5518"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="1"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="3600aba4-01d4-4ca3-a3e7-79e0b946a2b1"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="fehlerhafte Lieferung"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="0ecd14d9-837c-47fc-9676-afe71f7e5518"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="2"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="66b64741-a896-4404-874a-b83b3525fcff"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Transportschaden"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="0ecd14d9-837c-47fc-9676-afe71f7e5518"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="c0fb9a3a-89a5-46a4-9b95-f48c9481375e"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="EVENT"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="9e9568c5-ad8a-4c1e-a6e6-72c9b4a3acf7"/>
+	<column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+	<column name="SORTING" valueNumeric="3"/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Zahlungskondition"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/>
+	<column name="ATTRIBUTE_TYPE" value="KEYWORD                             "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Lieferkondition"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/>
+	<column name="ATTRIBUTE_TYPE" value="KEYWORD                             "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<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                             "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="e7886e41-252e-414c-a169-5d1481d010c8"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Lieferant"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="44d53f3a-a8cd-4e79-bc09-a6e17d678e7e"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Rückantwort Kampagne"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="786148de-56b3-497e-88db-2ff5e4dc0bd7"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="e8999504-5851-4934-a3f1-fb4b513d41e9"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<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"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="33cb83f1-aee2-469e-b57d-666ac6725f61"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="Unterkampagne von"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="093c7337-c134-4be5-a215-dc94804c3511"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+	<column name="ATTRIBUTE_NAME" value="übergeordnete Kampagne von"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="28fd7a4b-72d8-40ff-a893-a9479abcf19e"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Feiertag"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="bad29370-3c47-4ac7-8d5d-4e86439000ef"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="14847ea6-b6fd-43f6-a819-af2b1e53177e"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Innendienst"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="cd90b9e3-e663-4248-b9ed-4e25ed330c58"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Aussendienst"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="7abdc3a7-f46b-4021-b695-7fde6b21c6a4"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Service"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="2f963668-9e8c-41d7-aee4-6beaf37492e4"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Besuchsfrequenz"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="ff84c147-27c7-4698-83ff-0e25b1d33851"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Vorgesetzter von"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="d637fc6c-9452-4498-8379-ec71d946cbab"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="berichtet an"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="6bdb658c-94bc-4e68-aefb-a38483ee68b1"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Gebiet"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="3e5736c4-93ff-4471-96f5-48bb34ab53d2"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
+	<column name="ATTRIBUTE_NAME" value="Urlaubsgenehmigung durch"/>
+	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<insert tableName="AB_ATTRIBUTE">
+	<column name="AB_ATTRIBUTEID" value="3f119858-9d69-4903-a572-d286be151f73"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<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"/>
+	<column name="ATTRIBUTE_TYPE" value="TEXT                                "/>
+</insert>
+<rollback>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="752d7706-ac6e-4b51-a918-4265531794a4"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="8af37871-d407-4414-98ad-e64dbaa5794a"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="558419b2-6113-4060-b88d-cc6324754765"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="71226196-2812-4d70-b90f-c3e2c14fd4d1"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="0644222a-2b3b-4f5e-a85a-d24c32fa0e72"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="53266a7c-58ed-47dc-bbe8-9e00b33cb344"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="0ecd14d9-837c-47fc-9676-afe71f7e5518"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="965823ef-fe63-41f8-9b0b-432f17ac31a7"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="10dc7354-cb50-4354-8412-2c35b569e3ad"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="e7e05c6e-6108-44bd-824a-c076dfa5ae93"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="ed4c3079-51b0-4bb5-b228-55de4309d5ab"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="6266b41c-fa20-47b9-bd71-5633015d0796"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="dc52ede6-2b79-488c-b7bb-48877bd5d198"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="691452ec-3b9f-43dc-91a2-645a97b775b2"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="54018b5e-0e02-48d1-873c-1c934d2e97ed"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="292825e8-fa96-4b7b-8dab-71955ae14571"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="4fcd8bb8-72fd-48d0-9e64-4c80e5177c36"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="9e9568c5-ad8a-4c1e-a6e6-72c9b4a3acf7"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="2b6e3225-9447-4706-9313-62c9463d6671"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="be60e4b3-19b1-48a9-ad5c-c7d38698b4a1"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="6d15f683-389e-4915-9043-c4cfdf188095"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="ab545654-1fce-4993-b763-0ec469781302"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="25e97db1-f796-497d-9842-3efcbb5bebf1"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="a844a395-e857-447d-b8f8-fa850bbceb82"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="b1c552a0-eab9-417d-9f12-039d41603f6d"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="9e20d257-e2a7-4ef7-9253-1d8ed971b7b9"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="32612c75-b32c-4043-88c4-e8237acf8d5c"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="6db07a20-86bc-48da-8b27-b39bdd73b86b"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="85c9cdd8-f7a6-4210-840e-fab8628f4dbe"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="7c39913b-a07c-4332-96ff-7b34b566ff49"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="07fc6730-6c83-4996-bfd9-41c18765a10a"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="26385e16-6b2f-428c-9c28-1bfa9c2ccf6f"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="65f0027d-7939-4342-b531-f31f10c3c045"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="7f01bfa6-ce9d-4964-b1e2-3cd5464d076a"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="e857f9ee-fb27-4507-8381-46ba0a181cef"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="005b2ec8-68f3-4cbe-b9e5-783526e4c288"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="4dce5406-9a91-4a92-b55e-d1313c18f9c6"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="9cfa5ce3-f1ae-4d18-9a65-0571f5ffb786"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="bb0c6356-33be-4e7c-a409-9ef5145f7aae"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="17746b46-2702-447a-b749-a92bfdf4bb38"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="d0a9eb78-6dcf-48e0-ba91-04a3ba104d26"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="e4a60941-513f-4e75-a787-f00070ecb00a"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="1d30d0ab-6103-4972-84c0-fd23eef15ca1"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="786148de-56b3-497e-88db-2ff5e4dc0bd7"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="1d4c071b-237e-4a11-abff-0acaeaf6f8b1"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="79ee6a0f-5192-4db3-9b05-156fd18b01b4"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="7621696c-40ce-4cf2-92ec-74bc940e49ec"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="a3972e57-d081-463a-a33c-5d4d3af6d8f2"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="6819c616-a580-4bd6-ba41-9ba1db569dc4"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="4c28a67b-dbc5-4399-bf33-b52e4cf82ffd"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="2318607b-556a-4537-92f0-9870ee9a9201"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="43321e69-c8aa-4b0e-9c4e-8cde74f5c0fc"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="9882c4bc-a3d9-43a9-8238-81ef39387869"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="e73ed929-8631-46de-b28f-eb1423abb808"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="b93fc811-e0dc-4e50-9ca6-107f43ac4c0c"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="915d566f-acbe-448c-a7b6-11898adc3880"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="d14f6eea-8760-43bf-ad3a-e7c3e4416392"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="62b43c0f-9afb-4b57-8b7d-de38d43a9d47"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="ddf607c0-a45b-4255-bf4e-b2d515df4b86"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="fd3963bc-8e60-411a-9911-b97eb73e5cf7"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="3265f271-2e85-42b2-84af-c9e23e8a1e8c"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="615d3850-ef32-4988-9a8d-7b702b489194"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="be3b5fe2-2146-4eab-80a4-3c1cf4d6156a"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="87204e4b-2db2-4eb4-b216-5e16b227561e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="4a9625ed-0cd9-445f-ae13-5bdbfdf3f38c"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="66271d11-a275-4141-8f84-86ab2ed3fedf"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="fa0171cf-2e0d-4ff0-bbe7-8ff083a96593"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="974bbd28-08b3-41a4-bd74-7d9c3c778249"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="9350afa2-7181-4eb4-b731-3699fe71b0f6"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="d8949d8f-051b-4f5b-ba61-5af49e9499cc"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="23a4d394-9fae-4205-a811-730d5109c115"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="b78ef891-16a3-4354-bc95-7b70ef5b4e2e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="617da3f5-d8bc-45ff-85a1-258621ea2a0b"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="1a3c1c77-e57c-4481-a67f-adf7e084ea90"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="953e3b5e-0ca7-4215-8dee-b0ba28ef1bf9"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="2bdb04cb-4cd3-4454-802c-8e2b4a5e2e36"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="30be2556-e09b-4169-be32-d4bafeb89a2f"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="acafca42-8ef4-4c21-abe8-1c2ca358a5aa"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="79378933-9f74-4391-b876-4528b582661f"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="c85a5ebe-80fe-4176-a92a-35d2200baa07"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="7b687991-601c-4d75-b201-00a6cc9c6b93"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="f11f65d0-4352-4f81-85d0-bfd034275e34"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="da8e8568-63e0-41d3-a83f-2d8ae4982ba5"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="acaf54c3-9613-4740-aa22-4f6ebd0d6cb0"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="957d61a4-0038-46e0-b5a3-fc2a5d413004"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="be31d7a5-9a02-4ae0-8265-916d32c1fccb"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="4d4ef830-68e6-4228-9e4f-13614d841328"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="bb62ae03-be34-4d34-885c-27591c5bf1b4"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="0afb463f-6ce4-4dfb-b093-09a8fcd925a3"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="bad29370-3c47-4ac7-8d5d-4e86439000ef"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="97c6f6ec-2ed2-4c26-8612-b524e3ef15db"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="fffbb6b5-05ea-4f76-83c6-cf2cb29ef576"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="5c188c8c-14b2-4c66-ad48-65b750e05353"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="3600aba4-01d4-4ca3-a3e7-79e0b946a2b1"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="66b64741-a896-4404-874a-b83b3525fcff"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="c0fb9a3a-89a5-46a4-9b95-f48c9481375e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="e7886e41-252e-414c-a169-5d1481d010c8"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="44d53f3a-a8cd-4e79-bc09-a6e17d678e7e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="e8999504-5851-4934-a3f1-fb4b513d41e9"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="33cb83f1-aee2-469e-b57d-666ac6725f61"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="093c7337-c134-4be5-a215-dc94804c3511"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="28fd7a4b-72d8-40ff-a893-a9479abcf19e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="14847ea6-b6fd-43f6-a819-af2b1e53177e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="cd90b9e3-e663-4248-b9ed-4e25ed330c58"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="7abdc3a7-f46b-4021-b695-7fde6b21c6a4"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="2f963668-9e8c-41d7-aee4-6beaf37492e4"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="ff84c147-27c7-4698-83ff-0e25b1d33851"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="d637fc6c-9452-4498-8379-ec71d946cbab"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="6bdb658c-94bc-4e68-aefb-a38483ee68b1"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="3e5736c4-93ff-4471-96f5-48bb34ab53d2"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTE">
+	<where>AB_ATTRIBUTEID = ?</where>
+	<whereParams>
+		<param value="3f119858-9d69-4903-a572-d286be151f73"/>
+	</whereParams>
+</delete>
+</rollback>
+    </changeSet>
+</databaseChangeLog>
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_attribute/AttributeUsage.xml b/others/db_changes/data_alias/basic/2019.2/data/example_attribute/AttributeUsage.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e6019bb9b660635d94b05846fc6b0673494611a9
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/data/example_attribute/AttributeUsage.xml
@@ -0,0 +1,523 @@
+<?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="c4f2943f-a63c-4ede-815b-0d588f33d5fb"/>
+	<column name="AB_ATTRIBUTE_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="cf947eee-dc58-40ad-92b0-f30314a8b2a7"/>
+	<column name="AB_ATTRIBUTE_ID" value="8af37871-d407-4414-98ad-e64dbaa5794a"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="81426072-72e5-4a69-945e-754b7fd0bcf7"/>
+	<column name="AB_ATTRIBUTE_ID" value="558419b2-6113-4060-b88d-cc6324754765"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="18d77833-d551-405c-8a96-9e99cb4d722d"/>
+	<column name="AB_ATTRIBUTE_ID" value="71226196-2812-4d70-b90f-c3e2c14fd4d1"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="900d4e93-0927-407b-a7bc-bb535fa0caa9"/>
+	<column name="AB_ATTRIBUTE_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	<column name="OBJECT_TYPE" value="Salesproject"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="1f2749b3-1402-46fb-892a-e68b9a39065d"/>
+	<column name="AB_ATTRIBUTE_ID" value="f11f65d0-4352-4f81-85d0-bfd034275e34"/>
+	<column name="MIN_COUNT" valueNumeric="1"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="20f400fc-4709-4ecc-a8ca-d8fe405b5e2a"/>
+	<column name="AB_ATTRIBUTE_ID" value="ab545654-1fce-4993-b763-0ec469781302"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="140b87a4-4f8e-4ae5-84d5-4bc26fa51901"/>
+	<column name="AB_ATTRIBUTE_ID" value="691452ec-3b9f-43dc-91a2-645a97b775b2"/>
+	<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"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="f06dd320-4757-4261-aace-cb827a313d28"/>
+	<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"/>
+	<column name="OBJECT_TYPE" value="Product"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="e744c324-27ca-4d91-bf57-c487a904d8d6"/>
+	<column name="AB_ATTRIBUTE_ID" value="6819c616-a580-4bd6-ba41-9ba1db569dc4"/>
+	<column name="OBJECT_TYPE" value="Product"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="e5ccaa2e-1cae-4ac8-b76c-5c06eac0e53d"/>
+	<column name="AB_ATTRIBUTE_ID" value="25e97db1-f796-497d-9842-3efcbb5bebf1"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="9e9829fe-880d-4b65-b729-34a99b37c5bf"/>
+	<column name="AB_ATTRIBUTE_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="86d385a6-f97f-4868-a65a-9b60940886f0"/>
+	<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"/>
+	<column name="MIN_COUNT" valueNumeric="1"/>
+	<column name="OBJECT_TYPE" value="Salesproject"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="d31efbea-3583-4772-9b5b-b900ab88c9a3"/>
+	<column name="AB_ATTRIBUTE_ID" value="10dc7354-cb50-4354-8412-2c35b569e3ad"/>
+	<column name="OBJECT_TYPE" value="Product"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="e79d1096-a2e0-4c4f-acca-2f5976699dcd"/>
+	<column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
+	<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"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="66cac4bb-6dd9-4ddd-b329-14d4542bfd2e"/>
+	<column name="AB_ATTRIBUTE_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="05576033-1bee-4547-ab82-fdfcdd039642"/>
+	<column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
+	<column name="MAX_COUNT" valueNumeric="0"/>
+	<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"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="4ff67f07-1aa7-47d4-8e5f-c4860793085a"/>
+	<column name="AB_ATTRIBUTE_ID" value="915d566f-acbe-448c-a7b6-11898adc3880"/>
+	<column name="MIN_COUNT" valueNumeric="1"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="8593dbe5-617a-4f09-a789-02b54157b1d3"/>
+	<column name="AB_ATTRIBUTE_ID" value="da8e8568-63e0-41d3-a83f-2d8ae4982ba5"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="96d0c724-a00a-4d04-ad44-6a4014318e5a"/>
+	<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"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="4d649c71-ba74-4ee1-ba73-6155327190d4"/>
+	<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"/>
+	<column name="MIN_COUNT" valueNumeric="1"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="be7d0f5c-8941-4b3d-b128-bab67e1d609b"/>
+	<column name="AB_ATTRIBUTE_ID" value="66271d11-a275-4141-8f84-86ab2ed3fedf"/>
+	<column name="OBJECT_TYPE" value="Product"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="44398121-8b60-41ff-a657-84b2b5c1e034"/>
+	<column name="AB_ATTRIBUTE_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	<column name="OBJECT_TYPE" value="Product"/>
+</insert>
+<rollback>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="c4f2943f-a63c-4ede-815b-0d588f33d5fb"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="cf947eee-dc58-40ad-92b0-f30314a8b2a7"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="81426072-72e5-4a69-945e-754b7fd0bcf7"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="18d77833-d551-405c-8a96-9e99cb4d722d"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="900d4e93-0927-407b-a7bc-bb535fa0caa9"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="1f2749b3-1402-46fb-892a-e68b9a39065d"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="20f400fc-4709-4ecc-a8ca-d8fe405b5e2a"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="140b87a4-4f8e-4ae5-84d5-4bc26fa51901"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="5b9d5f38-4486-4586-8de0-9c607d51e698"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="9216c562-b361-4a9d-be60-a6fdf9bdc07c"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="f06dd320-4757-4261-aace-cb827a313d28"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="8adfbc93-2daa-4e6b-a3ce-76110b46e458"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="6ad188dc-5e76-467a-9bc3-8c63f50862ae"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="31b6b6f1-b980-4b14-a382-a718be560009"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="c32d3322-5ff6-400a-82b6-4f8524ec7f6b"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="e744c324-27ca-4d91-bf57-c487a904d8d6"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="e5ccaa2e-1cae-4ac8-b76c-5c06eac0e53d"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="9e9829fe-880d-4b65-b729-34a99b37c5bf"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="86d385a6-f97f-4868-a65a-9b60940886f0"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="89be2b44-2766-4dea-9a73-725b84a20d6d"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="0766ff88-304d-41a7-8224-642a0aee5587"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="ef63620d-f247-4ca0-bd92-9efa0b14676e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="512ef5be-3381-42ac-860a-b1fbb9be665b"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="dbb70409-43b2-4a94-b7f7-bbb4e4ba101d"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="f579e0d5-42f4-4682-99b5-358e06ffe4a1"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="06afbdb4-a9e1-493d-b45e-c14e114a9cc7"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="d31efbea-3583-4772-9b5b-b900ab88c9a3"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="e79d1096-a2e0-4c4f-acca-2f5976699dcd"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="9a145e7f-bb66-4541-bb99-28c2dd944f3d"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="37855ddd-c5cb-4692-86a5-3a94aae7c455"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="fade7115-40fb-41a2-8f71-dbb6905176e9"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="97dce2df-5757-4a2e-89a1-60a9a88d181c"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="66cac4bb-6dd9-4ddd-b329-14d4542bfd2e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="05576033-1bee-4547-ab82-fdfcdd039642"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="6fd80f33-6d9a-4b95-b420-c3c5b249caf9"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="7c0f32be-d3f5-48be-8b7e-a80eb6ade28d"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="4ff67f07-1aa7-47d4-8e5f-c4860793085a"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="8593dbe5-617a-4f09-a789-02b54157b1d3"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="96d0c724-a00a-4d04-ad44-6a4014318e5a"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="ebb3b2a2-0fd2-4307-8f21-c118e7ad7b8e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="755239d0-7fe3-46bc-8ec4-923977148455"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="4d649c71-ba74-4ee1-ba73-6155327190d4"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="0826cf13-f379-417d-9fed-302fe44a618e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="2d2c7f0f-29aa-42e8-88f5-b6234d52e349"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="be7d0f5c-8941-4b3d-b128-bab67e1d609b"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="44398121-8b60-41ff-a657-84b2b5c1e034"/>
+	</whereParams>
+</delete>
+</rollback>
+    </changeSet>
+</databaseChangeLog>
diff --git a/others/db_changes/data_alias/basic/2019.2/drop_contact_id_sp_forecast.xml b/others/db_changes/data_alias/basic/2019.2/drop_contact_id_sp_forecast.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3f6430b6e1fd2a7fa0a74e918157b2fc30c33b28
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/drop_contact_id_sp_forecast.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="0601eb26-fc5e-4b57-ad18-2b6a064f383f">
+        <dropColumn tableName="SALESPROJECT_FORECAST" columnName="CONTACT_ID"/>
+        
+        <rollback>
+            <addColumn tableName="SALESPROJECT">
+                <column name="CONTACT_ID" type="CHAR(36)">
+                    <constraints nullable="false"/>
+                </column>
+            </addColumn>
+        </rollback>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/drop_pricePolitics-weakness-strength.xml b/others/db_changes/data_alias/basic/2019.2/drop_pricePolitics-weakness-strength.xml
new file mode 100644
index 0000000000000000000000000000000000000000..59d462631e8c07712b7edd59b82de439d4e6399a
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/drop_pricePolitics-weakness-strength.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.hoermann" id="4aae69ae-85ca-4bdf-a13d-e7e6db13172c">
+        <dropColumn tableName="ORGANISATION" columnName="WEAKNESS"/>
+        <dropColumn tableName="ORGANISATION" columnName="STRENGTH"/>
+        <dropColumn tableName="ORGANISATION" columnName="PRICE_POLITICS"/>
+        
+        <rollback>
+            <addColumn tableName="ORGANISATION">
+                <column name="WEAKNESS" type="CHAR(36)"/>
+            </addColumn>
+            <addColumn tableName="ORGANISATION">
+                <column name="STRENGTH" type="CHAR(36)"/>
+            </addColumn>
+            <addColumn tableName="ORGANISATION">
+                <column name="PRICE_POLITICS" type="CHAR(36)"/>
+            </addColumn>
+        </rollback>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/fix_sp_phases.xml b/others/db_changes/data_alias/basic/2019.2/fix_sp_phases.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0e36cda05c7f4a9b8437307a4baa25356b31aa66
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/fix_sp_phases.xml
@@ -0,0 +1,53 @@
+<?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="3e7869e8-5cc1-4db8-bc3b-d2d719722cb0">
+        <delete tableName="AB_KEYWORD_ENTRY">
+            <where>AB_KEYWORD_ENTRYID in(?,?,?,?,?,?,?,?,?)</where>
+            <whereParams>
+                <param value="f630f573-baae-4041-aeb0-41ff30ad188a"/>
+                <param value="4895c091-f810-4c64-9bba-698c07a59c5e"/>
+                <param value="b255450e-418c-41dd-be47-26c69aedbffa"/>
+                <param value="de2e8c2a-ef34-4d62-8d65-a4ca530e7236"/>
+                <param value="58f6b20b-0cae-4a1c-bb47-d2bfaab58df5"/>
+                <param value="4f957f7d-173d-4450-8502-ba8dc3351db3"/>
+                <param value="ee7de36d-b33b-4e5c-b750-5ec2798d2964"/>
+                <param value="1991320a-3e15-4ed3-867a-5c7c39a4cf4a"/>
+                <param value="adb3d122-992c-4d00-88a8-c04ec6e15cd3"/>
+            </whereParams>
+        </delete>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="028af5dd-1071-4108-8685-ed7124376706"/>
+            <column name="KEYID" value="4814b51b-40f5-49bc-897b-f0933b9fc12c"/>
+            <column name="TITLE" value="MQC"/>
+            <column name="CONTAINER" value="SalesprojectPhase"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="${SALESPROJECT_OFFER}"/>
+            <where>AB_KEYWORD_ENTRYID = ?</where>
+            <whereParams>
+                <param value="0e8eab64-4c79-4eed-9746-0ac6fc397620"/>
+            </whereParams>
+        </update>
+                
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="${SALESPROJECT_NEGOTIATION}"/>
+            <where>AB_KEYWORD_ENTRYID = ?</where>
+            <whereParams>
+                <param value="405e2b7b-20c2-4824-a8b5-c7a533784ef3"/>
+            </whereParams>
+        </update>
+        
+        <sql>update AB_KEYWORD_ENTRY set SORTING = SORTING+1 where AB_KEYWORD_ENTRYID in (
+            '8a2d19c9-bc32-437e-9261-78ed30110e92',
+            '46f55a58-dbe4-40ae-9306-481df9095088',
+            'afa8cf58-07e8-4ee9-b24e-96cb6fa76aec',
+            'c9483fb9-c295-43d2-94e0-8c949cf6dc47',
+            '0e8eab64-4c79-4eed-9746-0ac6fc397620',
+            '405e2b7b-20c2-4824-a8b5-c7a533784ef3')
+        </sql>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/update_pricelist_keyword.xml b/others/db_changes/data_alias/basic/2019.2/update_pricelist_keyword.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d0d5bc9de47f081e3fbb0c66bdd8982831ce2004
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/update_pricelist_keyword.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.hoermann" id="dcb90106-a55a-4506-94e3-af4d15d5b587">
+        
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="Special price list"/>
+            <where>AB_KEYWORD_ENTRYID = ?</where>
+            <whereParams>
+                <param value="b47478a1-1fac-4e74-921f-b47c146e034d" />
+            </whereParams>
+        </update>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js
index 6648cbb580b63d43cbb9819bc1f3db67b83e52c4..010f064aef2e1a8bfc867c756aae7b2065b5b58a 100644
--- a/process/Attribute_lib/process.js
+++ b/process/Attribute_lib/process.js
@@ -14,15 +14,16 @@ import("Sql_lib");
 function AttributeUtil () {}
 
 /**
- * Gives a list of all available attributes for a context. This is used in the possibleItems
+ * Gives an array of all available attributes for a context. This is used in the possibleItems
  * process for the attribute id in AttributeRelation
  * 
  * @param {String} pObjectType the object type (= context)
- * @param {boolean} pIncludeGroups
+ * @param {boolean} [pIncludeGroups=false]
+ * @param {String[]} [pFilteredAttributeIds=[]] Whitleist of attribute ids
  * 
- * @return {String[][]} two-dimensional array of attributeIds and names
+ * @return {String[]} array of attributeIds
  */
-AttributeUtil.getPossibleAttributes = function (pObjectType, pIncludeGroups)
+AttributeUtil.getPossibleAttributes = function (pObjectType, pIncludeGroups, pFilteredAttributeIds)
 {
     if (pObjectType == null)
         return [];
@@ -31,16 +32,26 @@ AttributeUtil.getPossibleAttributes = function (pObjectType, pIncludeGroups)
         + " join AB_ATTRIBUTEUSAGE  on AB_ATTRIBUTEID = AB_ATTRIBUTE_ID";
     attrCond = SqlCondition.begin()
         .andPrepare("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", pObjectType)
-        .and("ATTRIBUTE_TYPE != '" + $AttributeTypes.COMBOVALUE + "'")
+        .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# <> ?")
         .and("ATTRIBUTE_ACTIVE = 1");
         
+    if (pFilteredAttributeIds != undefined && pFilteredAttributeIds.length > 0)
+    {
+        var filteredIdsCondition = new SqlCondition();
+
+        pFilteredAttributeIds.forEach(function(id) 
+        {
+            this.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", id);
+        }, filteredIdsCondition);
+
+        attrCond.andSqlCondition(filteredIdsCondition);
+    }
+
     if (!pIncludeGroups)
         attrCond.and("ATTRIBUTE_TYPE != '" + $AttributeTypes.GROUP + "'");
     
-    var attributes = db.array(db.COLUMN, attrCond.buildSql(attrSql)).map(function (id) 
-    {
-        return [id, AttributeUtil.getFullAttributeName(id)];
-    });
+    var attributes = db.array(db.COLUMN, attrCond.buildSql(attrSql));
+    
     return attributes;
 }
 
@@ -125,18 +136,29 @@ function AttributeRelationUtils () {}
 
 /**
  * gets the value of an attributeRelation for one dataset (e. g. a person)
+ * 
+ * @param {String} pAttributeId attribute-id
+ * @param {String} pObjectRowId row-id of the dataset
+ * @param {String} [pObjectType=null] object-type
+ * 
+ * @return {String|null} the value of the attribute
  */
 AttributeRelationUtils.getAttribute = function (pAttributeId, pObjectRowId, pObjectType)
 {
-    var attrCond = SqlCondition().begin()
+    var attrCond = SqlCondition.begin()
         .andPrepare("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", pAttributeId)
         .andPrepare("AB_ATTRIBUTERELATION.OBJECT_ROWID", pObjectRowId);
     if (pObjectType != null)
         attrCond.andPrepare("AB_ATTRIBUTERELATION.OBJECT_TYPE", pAttributeId);
     
-    var attrSql = AttributeRelationUtils.getSqlUtil();
-    var attributeValues = db.array(db.ROW, attrCond.buildSql(attrSql.sqlSelect));
-    return attrSql.getFieldFromType(attributeValues);
+    var attributeSql = attrCond.buildSql("select ATTRIBUTE_TYPE, " + AttributeTypeUtil.getAllDatabaseFields() 
+        + " from AB_ATTRIBUTERELATION join AB_ATTRIBUTE on AB_ATTRIBUTE_ID = AB_ATTRIBUTEID");
+    var attributeValues = db.array(db.ROW, attributeSql);
+    if (attributeValues.length == 0)
+        return null;
+    
+    var valueIndex = AttributeTypeUtil.getTypeColumnIndex(attributeValues[0]) + 1;
+    return attributeValues[valueIndex];
 }
 
 AttributeRelationUtils.getAttributes = function ()
@@ -152,59 +174,6 @@ AttributeRelationUtils.setAttribute = function ()
     //TODO: implement
 }
 
-/**
- * Builds an object for the work with the values of attributeRelations. This should make
- * the attribute type definition more flexible, the returned object has the following properties
- * and methods:
- *
- * columns = array of all database columns in AB_ATTRIBUTERELATION that hold attribute values
- * typeColMap = object with the attribute type as key and the index in the columns-array with the column holding
- *      the value for that attribute type as value
- * sqlSelect = an sql-select string where the columns are the type of the attribute plus the value columns
- * getFieldFromType = a method that takes a one-dimensional array that has been created with a query using the 'sqlSelect' property
- *      and returns the value at the right position of that array depending on the type. For example:
- *                      //type,   values
- *          vals = ["TEXT", "abcdef", "", "", "", ""];
- *      the method would return "abcdef", because it looks at the first position where the type is, e. g. "TEXT"
- *      and then it gets the value at, for example, index 1 because the typeColMap object says that the value for type "TEXT"
- *      is at position 1.
- * 
- */
-AttributeRelationUtils.getSqlUtil = function ()
-{
-    var sqlMap = {
-        columns : [],
-        typeColMap : {}
-    };
-    for (let type in $AttributeTypes)
-    {
-        type = $AttributeTypes[type];
-        if (type.databaseField)
-        {
-            var typeKey = type.toString();
-            var colIndex = sqlMap.columns.indexOf(type.databaseField);
-            if (colIndex == -1)
-            {
-                colIndex = sqlMap.columns.length;
-                sqlMap.columns.push(type.databaseField);
-            }
-            sqlMap.typeColMap[typeKey] = colIndex;
-        }
-    }
-    
-    sqlMap.sqlSelect = "select ATTRIBUTE_TYPE, " + sqlMap.columns.join(", ") + " from AB_ATTRIBUTERELATION "
-        + " join AB_ATTRIBUTE on AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID ";
-    
-    sqlMap.getFieldFromType = function (pTypeAndValues)
-    {
-        if (pTypeAndValues.length > 0)
-            return pTypeAndValues[this.typeColMap[pTypeAndValues[0]] + 1];
-        return null;
-    }
-    
-    return sqlMap;
-}
-
 /*********************************************************************************************************************/
 
 /**
@@ -255,7 +224,7 @@ AttributeHandler.prototype.getAttributeType = function () //TODO: maybe the type
  */
 AttributeHandler.prototype.getAttributeField = function ()
 {
-    return $AttributeTypes.getEntityField(this.getAttributeType());
+    return AttributeTypeUtil.getEntityField(this.getAttributeType());
 }
 
 /**
@@ -265,7 +234,7 @@ AttributeHandler.prototype.getAttributeField = function ()
  */
 AttributeHandler.prototype.getAttributeContentType = function ()
 {
-    return $AttributeTypes.getContentType(this.getAttributeType());
+    return AttributeTypeUtil.getContentType(this.getAttributeType());
 }
 
 /**
@@ -363,6 +332,10 @@ $AttributeTypes.MEMO = {
     entityField : "MEMO_VALUE"
 };
 
+
+
+function AttributeTypeUtil () {}
+
 /**
  * returns the required contentType for the given attribute type
  * 
@@ -370,7 +343,7 @@ $AttributeTypes.MEMO = {
  *                  (use the values of the AttributeTypes object, e. g. AttributeTypes.TEXT)
  * @return {String} the contentType for the attribute
  */
-$AttributeTypes.getContentType = function (pAttributeType)
+AttributeTypeUtil.getContentType = function (pAttributeType)
 {
     if (pAttributeType in $AttributeTypes)
         return $AttributeTypes[pAttributeType].contentType;
@@ -384,7 +357,7 @@ $AttributeTypes.getContentType = function (pAttributeType)
  *                  (use the values of the AttributeTypes object, e. g. AttributeTypes.TEXT)
  * @return {String} the field for the attribute
  */
-$AttributeTypes.getEntityField = function (pAttributeType)
+AttributeTypeUtil.getEntityField = function (pAttributeType)
 {
     if (pAttributeType in $AttributeTypes)
         return $AttributeTypes[pAttributeType].entityField;
@@ -398,7 +371,7 @@ $AttributeTypes.getEntityField = function (pAttributeType)
  *                  (use the values of the AttributeTypes object, e. g. AttributeTypes.TEXT)
  * @return {String} the database field for the attribute
  */
-$AttributeTypes.getDatabaseField = function (pAttributeType)
+AttributeTypeUtil.getDatabaseField = function (pAttributeType)
 {
     if (pAttributeType in $AttributeTypes)
         return $AttributeTypes[pAttributeType].databaseField;
@@ -412,9 +385,46 @@ $AttributeTypes.getDatabaseField = function (pAttributeType)
  *                  (use the values of the AttributeTypes object, e. g. AttributeTypes.TEXT)
  * @return {String} the name the attribute
  */
-$AttributeTypes.getName = function (pAttributeType)
+AttributeTypeUtil.getName = function (pAttributeType)
 {
     if (pAttributeType in $AttributeTypes)
         return translate.text($AttributeTypes[pAttributeType].displayName);
     return null;
 }
+
+AttributeTypeUtil._initTypeColumnData = function ()
+{
+    columns = [];
+    typeColumnMap = {};
+    for (let type in $AttributeTypes)
+    {
+        type = $AttributeTypes[type];
+        if (type.databaseField)
+        {
+            var typeKey = type.toString();
+            var colIndex = columns.indexOf(type.databaseField);
+            if (colIndex == -1)
+            {
+                colIndex = columns.length;
+                columns.push(type.databaseField);
+            }
+            typeColumnMap[typeKey] = colIndex;
+        }
+    }
+    this._allDBColumns = columns;
+    this._typeColumnMap = typeColumnMap;
+}
+
+AttributeTypeUtil.getAllDatabaseFields = function ()
+{
+    if (this._allDBColumns == undefined)
+        AttributeTypeUtil._initTypeColumnData();
+    return this._allDBColumns;
+}
+
+AttributeTypeUtil.getTypeColumnIndex = function (pAttributeType)
+{
+    if (this._typeColumnMap == undefined)
+        AttributeTypeUtil._initTypeColumnData();
+    return this._typeColumnMap[pAttributeType.trim()];
+}
diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js
index 019c9557e71d7f258dd425977c6ef2ba61dbcfdf..dfe2c88b7b0f91219ea2f4fa54d047364d21bb25 100644
--- a/process/Contact_lib/process.js
+++ b/process/Contact_lib/process.js
@@ -3,6 +3,7 @@ import("system.vars");
 import("system.result");
 import("system.db");
 import("Sql_lib");
+import("Util_lib");
 import("Context_lib");
 
 /**
@@ -11,7 +12,7 @@ import("Context_lib");
  * Do not create an instance of this!
  * @class
  */
-function RelationUtils() {}
+function ContactUtils() {}
 
 /**
  * Get the type of contact. <br>
@@ -38,15 +39,15 @@ function RelationUtils() {}
  *                      2 if privat person <br>
  *                      3 if person of an organisation <br>
  */
-RelationUtils.getRelationType = function(pRelationId, pPersId, pOrgId)
+ContactUtils.getRelationType = function(pRelationId, pPersId, pOrgId)
 {
     if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
     {
-        return RelationUtils.getRelationTypeByRelation(pRelationId);
+        return ContactUtils.getRelationTypeByRelation(pRelationId);
     }
     else
     {
-        return RelationUtils.getRelationTypeByPersOrg(pPersId, pOrgId);
+        return ContactUtils.getRelationTypeByPersOrg(pPersId, pOrgId);
     }
 }
 
@@ -60,9 +61,9 @@ RelationUtils.getRelationType = function(pRelationId, pPersId, pOrgId)
  *                  2 if privat person <br>
  *                  3 if person of an organisation <br>
  */
-RelationUtils.getRelationTypeByRelation = function(pRelationId)
+ContactUtils.getRelationTypeByRelation = function(pRelationId)
 {
-    var relationData = RelationUtils.getPersOrgIds(pRelationId);
+    var relationData = ContactUtils.getPersOrgIds(pRelationId);
     if (relationData[0]) 
     {
         return this.getRelationTypeByPersOrg(relationData[1], relationData[2]);
@@ -95,7 +96,7 @@ RelationUtils.getRelationTypeByRelation = function(pRelationId)
  *                      2 if privat person <br>
  *                      3 if person of an organisation <br>
  */
-RelationUtils.getRelationTypeByPersOrg = function(pPersId, pOrgId)
+ContactUtils.getRelationTypeByPersOrg = function(pPersId, pOrgId)
 {
     if (!pPersId)
     {
@@ -138,9 +139,9 @@ RelationUtils.getRelationTypeByPersOrg = function(pPersId, pOrgId)
  * 
  * @return {String} contextname or "" if both ids are empty
  */
-RelationUtils.getContextByPersOrg = function(pPersId, pOrgId)
+ContactUtils.getContextByPersOrg = function(pPersId, pOrgId)
 {
-    switch (RelationUtils.getRelationTypeByPersOrg(pPersId, pOrgId))
+    switch (ContactUtils.getRelationTypeByPersOrg(pPersId, pOrgId))
     {
         case 1: // Org
             return ContextUtils.getContextName("Organisation");
@@ -159,10 +160,10 @@ RelationUtils.getContextByPersOrg = function(pPersId, pOrgId)
  * @param {String} pRelationId
  * @return {String} contextname or "" if contact not found
  */
-RelationUtils.getContextByRelationId = function(pRelationId)
+ContactUtils.getContextByRelationId = function(pRelationId)
 {
-    var relationData = RelationUtils.getPersOrgIds(pRelationId);
-    return RelationUtils.getContextByPersOrg(relationData[1], relationData[2])
+    var relationData = ContactUtils.getPersOrgIds(pRelationId);
+    return ContactUtils.getContextByPersOrg(relationData[1], relationData[2])
 }
 
 /**
@@ -171,7 +172,7 @@ RelationUtils.getContextByRelationId = function(pRelationId)
  * @param {String} pRelationId
  * @return {String[]} result as [persid, orgid] if one of them is null in the db, "" will be returned as the id.
  */
-RelationUtils.getPersOrgIds = function(pRelationId)
+ContactUtils.getPersOrgIds = function(pRelationId)
 {
     if (pRelationId) {
         return db.array(db.ROW, 
@@ -186,58 +187,27 @@ RelationUtils.getPersOrgIds = function(pRelationId)
 
 /**
  * get the name of the person or organisation
- * The parameters have to be selected from the same contact.
  * 
- * @param {String} pPersId value of the person_id selected from CONTACT
- * @param {String} pOrgId value of the org_id selected from CONTACT
- * @param {String} pPersFirstname value of the firstname selected from PERSON
- * @param {String} pPersLastname value of the lastname selected from PERSON
- * @param {String} pOrgname value of the name selected from ORGANISATION
- * @param {String} [pTitle=undefined] value of the title selected from PERSON. You can ommit this parameter if you do not want to append the title
+ * @param {String} pContactId the contact id where pers-name or orgname shall be loaded
  * 
  * @return {String} the name or ""
  */
-RelationUtils.getNameByPersOrg = function(pPersId, pOrgId, pPersFirstname, 
-                                            pPersLastname, pOrgname, pTitle)
+ContactUtils.getFullTitleByContactId = function(pContactId)
 {
-    if(!pPersId && !pOrgId)
-        return "";
-    else 
+    if (pContactId) 
     {
-        switch (RelationUtils.getRelationTypeByPersOrg(pPersId, pOrgId))
-        {
-            case 1: // Org   
-                return pOrgname;
-            case 2: // private Person
-            case 3: // Person
-                var name = "";
-                
-                if (pTitle != undefined && pTitle)
-                    name = pTitle + " ";
-               
-                return name + pPersFirstname.concat(" " , pPersLastname);
-            default:
-                return "";
-        }
-    }
-}
-
-/**
- * get the name of the person or organisation
- * 
- * @param {String} pRelationId the contact id
- * @param {Boolean} [pTitle=false] also add the title for persons
- * 
- * @return {String} the name or ""
- */
-RelationUtils.getNameByPersOrgWithRelationId = function(pRelationId, pTitle)
-{
-    if (pRelationId) {
         var data = db.array(db.ROW, SqlCondition.begin()
-                            .andPrepare("CONTACT.CONTACTID", pRelationId)
-                            .buildSql("select CONTACT.PERSON_ID, CONTACT.ORGANISATION_ID, PERSON.FIRSTNAME, PERSON.LASTNAME, PERSON.TITLE, ORGANISATION.NAME from CONTACT CONTACT join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID", "1 = 2"));                                    
- 
-        return RelationUtils.getNameByPersOrg(data[0], data[1], data[2], data[3], data[5], (pTitle ? data[4] : undefined));
+                .andPrepare("CONTACT.CONTACTID", pContactId)
+                .buildSql("select ORGANISATION.NAME, PERSON.SALUTATION, PERSON.TITLE, PERSON.FIRSTNAME, PERSON.MIDDLENAME, PERSON.LASTNAME "
+                    + "from CONTACT CONTACT "
+                    + "join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID "
+                    + "left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID", "1 = 2"));
+        if (data.length == 0)
+            return "";
+        var contact = new Contact();
+        [contact.organisationName, contact.salutation, contact.title, contact.firstname, contact.middlename, contact.lastname] = data;
+        var renderer = new ContactTitleRenderer(contact);
+        return renderer.asString();
     }
     
     return "";
@@ -248,28 +218,165 @@ RelationUtils.getNameByPersOrgWithRelationId = function(pRelationId, pTitle)
  *
  * @return {String}
  */
-RelationUtils.getFullRelationFromString = function()
+ContactUtils.getFullRelationString = 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";
 }
 
+
 /**
- * returns the select string for the contact joined with org, person, address 
- *  
- * @param {String} pIdField field used as id
+ * object for handling of a single contact
+ * provides static- and instance-functions
+ * 
+ * @class
  *
- * @return {String}
  */
-RelationUtils.getFullRelationSelectString = function(pIdField)
+function Contact()
 {
-    if(pIdField == undefined)
-        pIdField = "CONTACTID";
+    //storage for information
+    this.salutation = "";
+    this.title = "";
+    this.firstname= "";
+    this.middlename = "";
+    this.lastname = "";
+    this.suffix = "";
 
-    var maskingUtils = new SqlMaskingUtils();
+    this.customercode = "";
+    this.organisationName = "";
+    
+    this._contactType = Contact.TYPES.Auto;
+}
 
-    return " " + pIdField + ","
-    + maskingUtils.concat( [ maskingUtils.concat(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"]) , "NAME"], " - " ) +  " as anzeige, "
-    + "CUSTOMERCODE, NAME, ZIP, CITY, TITLE, FIRSTNAME, LASTNAME ";
-}
\ No newline at end of file
+/**
+ * sets the contactType of a contact
+ * reserved for future implementation
+ * 
+ * @param {String} pContactType contactType that shall be set; value of Contact.TYPES.
+ *
+ * @return void
+ */
+Contact.prototype.setContactType = function (pContactType)
+{
+    if (! ObjectUtils.existsValue(Contact.TYPES, pContactType))
+        throw new TypeError("the given contact type is not a valid value and not a contact type");
+    
+    this._contactType = pContactType;
+};
+
+/**
+ * returns the contactType of a contact
+ * reserved for future implementation
+ * 
+ * @return {String} the contactType is a value of Contact.TYPES.
+ */
+Contact.prototype.getContactType = function ()
+{
+    return this._contactType;
+};
+
+/**
+ * constants for types of Contacts
+ * use only within functions
+ * reserved for future implementation
+ * 
+ * @static
+ */
+Contact.TYPES = {
+    Organisation: "organisation",
+    Contact: "contact",
+    Private: "private",
+    Auto: null
+};
+
+/**
+ * creates a new Contact-object with a preset of DB-columns
+ * 
+ * @static
+ */
+Contact.createWithColumnPreset = function()
+{
+    var contact = new Contact();
+    contact.salutation = "PERSON.SALUTATION";
+    contact.title = "PERSON.TITLE";
+    contact.firstname= "PERSON.FIRSTNAME";
+    contact.middlename = "PERSON.MIDDLENAME";
+    contact.lastname = "PERSON.LASTNAME";
+    contact.suffix = "PERSON.TITLESUFFIX";
+    contact.customercode = "ORGANISATION.CUSTOMERCODE";
+    contact.organisationName = "ORGANISATION.NAME";
+    return contact;
+};
+
+/**
+ * object for rendering a Contact-object into text representation or an sql that represents the text
+ * provides static- and instance-functions
+ * 
+ * @param {Contact} pContact The Contact-object to render
+ * @param {Number} pOptions additional options for rendering; use values of ContactTitleRenderer.OPTIONS and pass them by bitwise OR concatination; e.g.:
+ *                  OPTION_1 | OPTION_2 | OPTION_5
+ * 
+ * @class
+ *
+ */
+function ContactTitleRenderer(pContact, pOptions)
+{
+    this.contact = pContact;
+    if (pOptions !== undefined)//null means null which is "no option"; so check exactly for undefined
+        this._options = pOptions;
+    else 
+        this._options = ContactTitleRenderer.OPTIONS.IncludeOrganisation;
+    
+    //function that renders the contact into a sql expression (e.g. for a subselect)
+    this._asSqlFn = function(){
+        var maskingUtil = new SqlMaskingUtils();
+        var res = maskingUtil.concat([this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname].filter(function (e){
+            return e != "";
+        }), " ");
+        if (this._options & ContactTitleRenderer.OPTIONS.IncludeOrganisation && this.contact.organisationName)
+            res = maskingUtil.concat([res, this.contact.organisationName], " | ");
+        return res;
+    };
+    
+    //function that renders the contact into a text  (e.g. for a displayValue)
+    this._asStringFn = function (){
+        var res = StringUtils.concat(" ", [this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname]);
+
+        if (this._options & ContactTitleRenderer.OPTIONS.IncludeOrganisation && this.contact.organisationName)
+            res = StringUtils.concat(" | ", [res, this.contact.organisationName]);
+        return res;
+    }
+}
+
+/**
+ * constants for options for the ContactTitleRenderer
+ * use only within functions
+ * 
+ * @static
+ */
+ContactTitleRenderer.OPTIONS = {
+    IncludeOrganisation: 1
+};
+
+/**
+ * function that renders the contact into a sql expression (e.g. for a subselect)
+ * what this function exactly does depends on specified values and options specified in the Renderer-object
+ * 
+ * @return {String} sql-expression that can be placed inside a select statement
+ */
+ContactTitleRenderer.prototype.asSql = function ()
+{
+    return this._asSqlFn.apply(this, arguments);
+};
+
+/**
+ * function that renders the contact into text
+ * what this function exactly does depends on specified values and options specified in the Renderer-object
+ * 
+ * @return {String} rendered values as text
+ */
+ContactTitleRenderer.prototype.asString = function ()
+{
+    return this._asStringFn.apply(this, arguments);
+};
diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js
index 058f498fa6c9b9fbff0404cc52c957ee07fc974c..a2480fc3437ee723677644de79d322af03cdda1a 100644
--- a/process/Context_lib/process.js
+++ b/process/Context_lib/process.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.translate");
 import("system.project");
 import("system.vars");
diff --git a/process/Person_lib/process.js b/process/Person_lib/process.js
index c5ad5751f5658c861d30f4243e78295b96a07cc5..2fe262fac3ee20b20078c4ff90293500a8b77f16 100644
--- a/process/Person_lib/process.js
+++ b/process/Person_lib/process.js
@@ -1,6 +1,7 @@
 import("system.result");
 import("Binary_lib");
 import("Sql_lib");
+import("Contact_lib");
 
 /**
  * a static Utility class for the Person context.
@@ -55,9 +56,12 @@ PersUtils.removeImage = function(pPersId)
  */
 PersUtils.getResolvingDisplaySubSql = function(pRelationIdField)
 {
-    var maskingHelper = new SqlMaskingUtils();
-    //TODO: verify if there is a better solution for the usage of this as a displayValueExpression --> automatic use of #TITLE
-    return "select " + maskingHelper.concat(["PERSON.FIRSTNAME", "PERSON.LASTNAME"]) + "from PERSON \n\
+    var contact = Contact.createWithColumnPreset();
+    var renderer = new ContactTitleRenderer(contact, null);
+    var selectExpression = renderer.asSql();
+
+    //TODO: verify if there is a better solution for the usage of this as a displayValueExpression --> automatic use of #TITLE | waiting vor implementation
+    return "select " + selectExpression + "from PERSON \n\
         join CONTACT on (PERSON.PERSONID = CONTACT.PERSON_ID) \n\
         where CONTACT.CONTACTID = " + pRelationIdField;
 }
\ No newline at end of file
diff --git a/process/PostalAddress_lib/process.js b/process/PostalAddress_lib/process.js
index c18e69398a84f6f99591b495c4d5622167679884..40445e11ecbd90447ef35c2df80f330ee39473fc 100644
--- a/process/PostalAddress_lib/process.js
+++ b/process/PostalAddress_lib/process.js
@@ -3,6 +3,7 @@ import("system.db");
 import("Sql_lib");
 import("Contact_lib");
 import("Keyword_lib");
+import("Util_lib");
 /**
  * Methods for addresses.
  * Todo: evtl. übernahme / anpassung der Adresslib aus altem Basic. 1030856
@@ -26,19 +27,35 @@ function AddressUtils(){}
  */
 AddressUtils.formatOneline = function (pCountry, pAddressLine, pBuildingNo, pZipCode, pCity)
 {
-    var country = pCountry || "";
-    var addressLine = pAddressLine || "";
-    var buildingNo = pBuildingNo || "";
-    var zipCode = pZipCode || "";
-    var city = pCity || "";
-    return [country, addressLine, buildingNo, zipCode, city]
-    .filter(function (v)
-    {
-        return v != "";
-    })
-    .join(", ");
+    return StringUtils.concat(", ", [pCountry, pAddressLine, pBuildingNo, pZipCode, pCity]);
 };
 
+/**
+ * returns the formatted address by the ADDRESSID as one line
+ * 
+ * TODO: Dummy method! Ãœbernahme der Adresslib aus altem Basic
+ * 
+ * @params  {String} pAddressId ADDRESSID of the address which shall be loaded
+ * 
+ * @return {String} formatted address
+ */
+AddressUtils.getFormattedOnlineAddressById = function(pAddressId)
+{
+    var addrId = pAddressId;
+    var addr = "";
+    if (addrId) 
+    {
+        var select = "select ADDRESS.COUNTRY, ADDRESS.ADDRESS, ADDRESS.BUILDINGNO, ADDRESS.ZIP, ADDRESS.CITY from ADDRESS ";
+        var addrData = db.array(db.ROW, 
+            SqlCondition.begin()
+            .andPrepare("ADDRESS.ADDRESSID", addrId)
+            .buildSql(select));
+
+        addr = AddressUtils.formatOneline.apply(this, addrData);
+    }
+    return addr;
+}
+
 /**
  * Returns the formatted standard address for the contact.
  * 
@@ -47,7 +64,7 @@ AddressUtils.formatOneline = function (pCountry, pAddressLine, pBuildingNo, pZip
  * @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' + RelationUtils.getFullRelationFromString(), "1=0"));
+    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"));
     
     // TODO: currently there are some relations without standard address. Use Hardcoded one.
     if (!address[1]) {
@@ -58,7 +75,7 @@ AddressUtils.getAddress = function(pRelationId) {
         address[4] = dummyAddress[3];
         
     }
-    var type = RelationUtils.getRelationTypeByRelation(pRelationId);
+    var type = ContactUtils.getRelationTypeByRelation(pRelationId);
     
     return AddressUtils.formatAddress(type, address[1], address[2], address[3], address[4], address[5], address[6], address[7], address[8]);
 }
@@ -86,7 +103,7 @@ AddressUtils.getAddressById = function(pAddressId) {
         address[4] = dummyAddress[4];
         
     }
-    var type = RelationUtils.getRelationTypeByRelation(address[0]);   
+    var type = ContactUtils.getRelationTypeByRelation(address[0]);   
 
     var names = db.array(db.ROW, SqlCondition.begin()
                                              .andPrepare("CONTACT.CONTACTID", address[0])
diff --git a/process/Product_lib/process.js b/process/Product_lib/process.js
index 1d51b694be88511c165cc9ccfd30e80e16657cdf..99a29735c11b6866fa20079f8846c6fcaeded0d3 100644
--- a/process/Product_lib/process.js
+++ b/process/Product_lib/process.js
@@ -27,7 +27,7 @@ function ProductUtils() {}
  * 
  * @example productUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "PP")
  * 
- * @return {String} currently valid product price
+ * @return {Array[]} currently valid product price with currency: [price, "CURRENCY"] or [] if no price found
  */
 ProductUtils.getCurrentProductPrice = function(pid, buySell) {
     if (pid != undefined && pid != "" && buySell != undefined && buySell != "")
@@ -36,20 +36,19 @@ ProductUtils.getCurrentProductPrice = function(pid, buySell) {
         var actualPriceCondition = SqlCondition.begin()
                     .andPrepare("PRODUCTPRICE.BUYSELL", buySell)
                     .andPrepare("PRODUCTPRICE.PRODUCT_ID", pid)
-                    .andPrepare("PRODUCTPRICE.CURRENCY", 1) // TODO: warum ist Currency hardgecoded auf 1?? --> Einheitliche Währungen einbauen (auch zeichen vor oder nach der zahel, etc.) 1034949
                     .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"));
-        
+
         if (productPriceData[0] && productPriceData[1])
-            return  productPriceData[0] + " " + KeywordUtils.getViewValue($KeywordRegistry.currency(), productPriceData[1]);
+            return  [productPriceData[0], KeywordUtils.getViewValue($KeywordRegistry.currency(), productPriceData[1])];
         else
-            return "";
+            return [];
     } else {
-        return "";
+        return [];
     }
 }
 
diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js
index bfe2e05841546c263bffe7c908bec33834ff44f7..e677069ded29df17642361879c8b9d2fa146cd85 100644
--- a/process/Sql_lib/process.js
+++ b/process/Sql_lib/process.js
@@ -859,7 +859,10 @@ SqlMaskingUtils.prototype.concat = function(fields, separatorCharacter, autoTrim
             retSql += " case when " + _isNotEmpty(fields[i + 1]) + " then " + _trimIfAutoTrimEnabled(fields[i]) + separatorSql + " else " + _trimIfAutoTrimEnabled(fields[i]) + " end "; 
         else
             retSql += _trimIfAutoTrimEnabled(fields[i]);
-        retSql += " else '' end ";
+        //this blank is used just as in the old concat function which means this concat function has the same (wrong) behaviour
+        //TODO: find way to fix the case when separator is not a whitepsace (e.g. space)
+        //this concat-function does not work properly if you concat [<<value>>, <<null>>, <<value>>] by comma
+        retSql += " else ' ' end ";
     }
     return retSql;
 }
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index b27d5d9c3c802b1d8449e4b6e2f3e15f6520cdd9..3b5cc6b09496cf7cfb89ccafdaafcf635dc62bc4 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -14,6 +14,31 @@ import("system.datetime");
 import("Offer_lib");
 import("Date_lib");
 
+/**
+ * Class containing static utility functions for string-actions
+ * Do not create an instance of this
+ * 
+ * @class
+ */
+function StringUtils(){}
+
+/**
+ * concats severel elements by a separator; the separator is only applied if a element is not null and not an empty string "";
+ *
+ * @param {String} pSeparator specifies how the not empty elements shall be concatenated
+ * @param {String[]} pElements elements that shall be joined by the separator 
+ *
+ * @return {String} concatenated string; if all elements are empty an emtpy string is returned
+ * 
+ */
+StringUtils.concat = function(pSeparator, pElements)
+{
+   var res = pElements.filter(function(e){
+       return e != null && e != "";
+   }).join(pSeparator);
+   return res;
+};
+
 /**
  * Class containing static utility functions for use with arrays
  * Do not create an instance of this!
@@ -348,6 +373,33 @@ JSONUtils.customStringify = function(obj) {
     return stringify(obj);
 }
 
+/**
+ * Class containing functions for Javascript-Objects
+ * Do not create an instance of this
+ * 
+ * @class
+ */
+function ObjectUtils(){}
+
+/**
+ * checks if a value exists in the object
+ * mostly usefull for primitve datatypes
+ * 
+ * @param pObject {Object} the object where the value is searched
+ * @param pValue  {Boolean|Number|String} the value that is searched
+ * 
+ * @return {Boolean} true if the value was found, false if not
+ */
+ObjectUtils.existsValue = function(pObject, pValue)
+{
+    for (var key in pObject)
+    {
+        if (pObject[key] === pValue)
+            return true;
+    }
+    return false;
+};
+
 /**
  * Class containing functions for sequential numbers
  * Do not create an instance of this!