From 18b565ca36845dc047f3349f394d12eff0cc024f Mon Sep 17 00:00:00 2001
From: "j.goderbauer" <j.goderbauer@adito.de>
Date: Wed, 13 Feb 2019 11:22:33 +0100
Subject: [PATCH] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20Neon][TicketNr.:?=
 =?UTF-8?q?=201034159][Komplexe=20Keywords=20=C3=BCber=20Keywordattribute]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 aliasDefinition/Data_alias/Data_alias.aod     | 164 ++++++++++++++++++
 entity/Activity_entity/Activity_entity.aod    |   2 +-
 entity/Contract_entity/Contract_entity.aod    |   6 +-
 .../KeywordEntry_entity.aod}                  |  42 ++---
 .../documentation.adoc                        |   0
 .../ab_keyword_entryid/valueProcess.js        |   0
 .../entityfields/container/documentation.adoc |   0
 .../container/possibleItemsProcess.js         |   0
 .../containername_param/documentation.adoc    |   0
 .../isactive/possibleItemsProcess.js          |   0
 .../entityfields/isactive/valueProcess.js     |   0
 .../isessential/documentation.adoc            |   0
 .../isessential/possibleItemsProcess.js       |   0
 .../entityfields/keyid/valueProcess.js        |   0
 .../entityfields/onlyactives/code.js          |   0
 .../entityfields/sorting/documentation.adoc   |   0
 .../children/onlyactives/code.js              |   0
 .../title_translated/valueProcess.js          |   0
 .../iconIdProcess.js                          |   0
 .../onValidation.js                           |   0
 .../recordcontainers/db/conditionProcess.js   |   0
 .../recordcontainers/db/onDBUpdate.js         |   0
 .../recordcontainers/db/orderClauseProcess.js |   0
 .../titleProcess.js                           |   0
 entity/Offer_entity/Offer_entity.aod          |   4 +-
 entity/Offeritem_entity/Offeritem_entity.aod  |   4 +-
 entity/Order_entity/Order_entity.aod          |   4 +-
 entity/Orderitem_entity/Orderitem_entity.aod  |   4 +-
 .../Organisation_entity.aod                   |   4 +-
 entity/Person_entity/Person_entity.aod        |   2 +-
 entity/Product_entity/Product_entity.aod      |   4 +-
 .../Productprice_entity.aod                   |   4 +-
 .../SalesprojectCompetition_entity.aod        |   2 +-
 .../SalesprojectForecast_entity.aod           |   2 +-
 .../SalesprojectMember_entity.aod             |   2 +-
 .../SalesprojectSource_entity.aod             |   2 +-
 entity/Stock_entity/Stock_entity.aod          |   2 +-
 entity/Task_entity/Task_entity.aod            |   4 +-
 .../Keyword_context/Keyword_context.aod       |   2 +-
 .../create_ab_keyword_attribute.xml           |  20 +++
 .../create_ab_keyword_attributerelation.xml   |  16 ++
 others/db_changes/masterChangelog.xml         |   2 +
 42 files changed, 250 insertions(+), 48 deletions(-)
 rename entity/{Keyword_entity/Keyword_entity.aod => KeywordEntry_entity/KeywordEntry_entity.aod} (82%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/documentation.adoc (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/ab_keyword_entryid/valueProcess.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/container/documentation.adoc (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/container/possibleItemsProcess.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/containername_param/documentation.adoc (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/isactive/possibleItemsProcess.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/isactive/valueProcess.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/isessential/documentation.adoc (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/isessential/possibleItemsProcess.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/keyid/valueProcess.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/onlyactives/code.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/sorting/documentation.adoc (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/specificcontainerkeywords/children/onlyactives/code.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/entityfields/title_translated/valueProcess.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/iconIdProcess.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/onValidation.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/recordcontainers/db/conditionProcess.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/recordcontainers/db/onDBUpdate.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/recordcontainers/db/orderClauseProcess.js (100%)
 rename entity/{Keyword_entity => KeywordEntry_entity}/titleProcess.js (100%)
 create mode 100644 others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attribute.xml
 create mode 100644 others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attributerelation.xml

diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 02c4894a77..d429d45a2d 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -4353,6 +4353,170 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
+          <entityDb>
+            <name>AB_KEYWORD_ATTRIBUTE</name>
+            <dbName></dbName>
+            <idColumn>AB_KEYWORD_ATTRIBUTEID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>AB_KEYWORD_ATTRIBUTEID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTAINER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="80" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="100" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NAME</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>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>AB_KEYWORD_ATTRIBUTERELATION</name>
+            <dbName></dbName>
+            <idColumn>AB_KEYWORD_ATTRIBUTERELATIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>CHAR_VALUE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>BOOL_VALUE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>AB_KEYWORD_ATTRIBUTERELATIONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NUMBER_VALUE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2" />
+                <size v="14" />
+                <scale v="2" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>AB_KEYWORD_ENTRY_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>
+            </entityFields>
+          </entityDb>
         </entities>
       </entityGroup>
     </aliasDefDb>
diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index f22dc2b0ba..02808074ac 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -198,7 +198,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod
index 4a8d32b152..a2fadd1323 100644
--- a/entity/Contract_entity/Contract_entity.aod
+++ b/entity/Contract_entity/Contract_entity.aod
@@ -207,7 +207,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -222,7 +222,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -237,7 +237,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Keyword_entity/Keyword_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
similarity index 82%
rename from entity/Keyword_entity/Keyword_entity.aod
rename to entity/KeywordEntry_entity/KeywordEntry_entity.aod
index 9e90604672..3a56ca85ee 100644
--- a/entity/Keyword_entity/Keyword_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -1,13 +1,13 @@
 <?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.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.2.0">
-  <name>Keyword_entity</name>
+  <name>KeywordEntry_entity</name>
   <title>Keyword</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <documentation>%aditoprj%/entity/Keyword_entity/documentation.adoc</documentation>
-  <onValidation>%aditoprj%/entity/Keyword_entity/onValidation.js</onValidation>
+  <documentation>%aditoprj%/entity/KeywordEntry_entity/documentation.adoc</documentation>
+  <onValidation>%aditoprj%/entity/KeywordEntry_entity/onValidation.js</onValidation>
   <iconId>VAADIN:KEY</iconId>
-  <iconIdProcess>%aditoprj%/entity/Keyword_entity/iconIdProcess.js</iconIdProcess>
-  <titleProcess>%aditoprj%/entity/Keyword_entity/titleProcess.js</titleProcess>
+  <iconIdProcess>%aditoprj%/entity/KeywordEntry_entity/iconIdProcess.js</iconIdProcess>
+  <titleProcess>%aditoprj%/entity/KeywordEntry_entity/titleProcess.js</titleProcess>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
@@ -17,21 +17,21 @@
     </entityProvider>
     <entityField>
       <name>CONTAINER</name>
-      <documentation>%aditoprj%/entity/Keyword_entity/entityfields/container/documentation.adoc</documentation>
+      <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/container/documentation.adoc</documentation>
       <title>Container</title>
       <mandatory v="true" />
-      <possibleItemsProcess>%aditoprj%/entity/Keyword_entity/entityfields/container/possibleItemsProcess.js</possibleItemsProcess>
+      <possibleItemsProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/container/possibleItemsProcess.js</possibleItemsProcess>
       <groupable v="true" />
     </entityField>
     <entityField>
       <name>AB_KEYWORD_ENTRYID</name>
-      <valueProcess>%aditoprj%/entity/Keyword_entity/entityfields/ab_keyword_entryid/valueProcess.js</valueProcess>
+      <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/ab_keyword_entryid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>KEYID</name>
       <title>Key</title>
       <state>READONLY</state>
-      <valueProcess>%aditoprj%/entity/Keyword_entity/entityfields/keyid/valueProcess.js</valueProcess>
+      <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/keyid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>TITLE</name>
@@ -40,7 +40,7 @@
     </entityField>
     <entityField>
       <name>SORTING</name>
-      <documentation>%aditoprj%/entity/Keyword_entity/entityfields/sorting/documentation.adoc</documentation>
+      <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/sorting/documentation.adoc</documentation>
       <title>Sorting</title>
       <state>READONLY</state>
     </entityField>
@@ -48,21 +48,21 @@
       <name>ISACTIVE</name>
       <title>Active</title>
       <contentType>BOOLEAN</contentType>
-      <possibleItemsProcess>%aditoprj%/entity/Keyword_entity/entityfields/isactive/possibleItemsProcess.js</possibleItemsProcess>
-      <valueProcess>%aditoprj%/entity/Keyword_entity/entityfields/isactive/valueProcess.js</valueProcess>
+      <possibleItemsProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/isactive/possibleItemsProcess.js</possibleItemsProcess>
+      <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/isactive/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>ISESSENTIAL</name>
-      <documentation>%aditoprj%/entity/Keyword_entity/entityfields/isessential/documentation.adoc</documentation>
+      <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/isessential/documentation.adoc</documentation>
       <title>Essential</title>
       <contentType>BOOLEAN</contentType>
-      <possibleItemsProcess>%aditoprj%/entity/Keyword_entity/entityfields/isessential/possibleItemsProcess.js</possibleItemsProcess>
+      <possibleItemsProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/isessential/possibleItemsProcess.js</possibleItemsProcess>
       <state>READONLY</state>
     </entityField>
     <entityParameter>
       <name>containerName_param</name>
       <expose v="true" />
-      <documentation>%aditoprj%/entity/Keyword_entity/entityfields/containername_param/documentation.adoc</documentation>
+      <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/containername_param/documentation.adoc</documentation>
     </entityParameter>
     <entityProvider>
       <name>SpecificContainerKeywords</name>
@@ -230,18 +230,18 @@
       <children>
         <entityParameter>
           <name>onlyActives</name>
-          <code>%aditoprj%/entity/Keyword_entity/entityfields/specificcontainerkeywords/children/onlyactives/code.js</code>
+          <code>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives/code.js</code>
           <expose v="true" />
         </entityParameter>
       </children>
     </entityProvider>
     <entityField>
       <name>TITLE_TRANSLATED</name>
-      <valueProcess>%aditoprj%/entity/Keyword_entity/entityfields/title_translated/valueProcess.js</valueProcess>
+      <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js</valueProcess>
     </entityField>
     <entityParameter>
       <name>onlyActives</name>
-      <code>%aditoprj%/entity/Keyword_entity/entityfields/onlyactives/code.js</code>
+      <code>%aditoprj%/entity/KeywordEntry_entity/entityfields/onlyactives/code.js</code>
       <expose v="true" />
       <triggerRecalculation v="true" />
       <description>PARAMETER</description>
@@ -251,9 +251,9 @@
     <dbRecordContainer>
       <name>db</name>
       <alias>Data_alias</alias>
-      <conditionProcess>%aditoprj%/entity/Keyword_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <orderClauseProcess>%aditoprj%/entity/Keyword_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <onDBUpdate>%aditoprj%/entity/Keyword_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
+      <conditionProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBUpdate>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <linkInformation>
         <linkInformation>
           <name>52acbfe0-57f4-4614-83af-9882e168f431</name>
diff --git a/entity/Keyword_entity/documentation.adoc b/entity/KeywordEntry_entity/documentation.adoc
similarity index 100%
rename from entity/Keyword_entity/documentation.adoc
rename to entity/KeywordEntry_entity/documentation.adoc
diff --git a/entity/Keyword_entity/entityfields/ab_keyword_entryid/valueProcess.js b/entity/KeywordEntry_entity/entityfields/ab_keyword_entryid/valueProcess.js
similarity index 100%
rename from entity/Keyword_entity/entityfields/ab_keyword_entryid/valueProcess.js
rename to entity/KeywordEntry_entity/entityfields/ab_keyword_entryid/valueProcess.js
diff --git a/entity/Keyword_entity/entityfields/container/documentation.adoc b/entity/KeywordEntry_entity/entityfields/container/documentation.adoc
similarity index 100%
rename from entity/Keyword_entity/entityfields/container/documentation.adoc
rename to entity/KeywordEntry_entity/entityfields/container/documentation.adoc
diff --git a/entity/Keyword_entity/entityfields/container/possibleItemsProcess.js b/entity/KeywordEntry_entity/entityfields/container/possibleItemsProcess.js
similarity index 100%
rename from entity/Keyword_entity/entityfields/container/possibleItemsProcess.js
rename to entity/KeywordEntry_entity/entityfields/container/possibleItemsProcess.js
diff --git a/entity/Keyword_entity/entityfields/containername_param/documentation.adoc b/entity/KeywordEntry_entity/entityfields/containername_param/documentation.adoc
similarity index 100%
rename from entity/Keyword_entity/entityfields/containername_param/documentation.adoc
rename to entity/KeywordEntry_entity/entityfields/containername_param/documentation.adoc
diff --git a/entity/Keyword_entity/entityfields/isactive/possibleItemsProcess.js b/entity/KeywordEntry_entity/entityfields/isactive/possibleItemsProcess.js
similarity index 100%
rename from entity/Keyword_entity/entityfields/isactive/possibleItemsProcess.js
rename to entity/KeywordEntry_entity/entityfields/isactive/possibleItemsProcess.js
diff --git a/entity/Keyword_entity/entityfields/isactive/valueProcess.js b/entity/KeywordEntry_entity/entityfields/isactive/valueProcess.js
similarity index 100%
rename from entity/Keyword_entity/entityfields/isactive/valueProcess.js
rename to entity/KeywordEntry_entity/entityfields/isactive/valueProcess.js
diff --git a/entity/Keyword_entity/entityfields/isessential/documentation.adoc b/entity/KeywordEntry_entity/entityfields/isessential/documentation.adoc
similarity index 100%
rename from entity/Keyword_entity/entityfields/isessential/documentation.adoc
rename to entity/KeywordEntry_entity/entityfields/isessential/documentation.adoc
diff --git a/entity/Keyword_entity/entityfields/isessential/possibleItemsProcess.js b/entity/KeywordEntry_entity/entityfields/isessential/possibleItemsProcess.js
similarity index 100%
rename from entity/Keyword_entity/entityfields/isessential/possibleItemsProcess.js
rename to entity/KeywordEntry_entity/entityfields/isessential/possibleItemsProcess.js
diff --git a/entity/Keyword_entity/entityfields/keyid/valueProcess.js b/entity/KeywordEntry_entity/entityfields/keyid/valueProcess.js
similarity index 100%
rename from entity/Keyword_entity/entityfields/keyid/valueProcess.js
rename to entity/KeywordEntry_entity/entityfields/keyid/valueProcess.js
diff --git a/entity/Keyword_entity/entityfields/onlyactives/code.js b/entity/KeywordEntry_entity/entityfields/onlyactives/code.js
similarity index 100%
rename from entity/Keyword_entity/entityfields/onlyactives/code.js
rename to entity/KeywordEntry_entity/entityfields/onlyactives/code.js
diff --git a/entity/Keyword_entity/entityfields/sorting/documentation.adoc b/entity/KeywordEntry_entity/entityfields/sorting/documentation.adoc
similarity index 100%
rename from entity/Keyword_entity/entityfields/sorting/documentation.adoc
rename to entity/KeywordEntry_entity/entityfields/sorting/documentation.adoc
diff --git a/entity/Keyword_entity/entityfields/specificcontainerkeywords/children/onlyactives/code.js b/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives/code.js
similarity index 100%
rename from entity/Keyword_entity/entityfields/specificcontainerkeywords/children/onlyactives/code.js
rename to entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives/code.js
diff --git a/entity/Keyword_entity/entityfields/title_translated/valueProcess.js b/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js
similarity index 100%
rename from entity/Keyword_entity/entityfields/title_translated/valueProcess.js
rename to entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js
diff --git a/entity/Keyword_entity/iconIdProcess.js b/entity/KeywordEntry_entity/iconIdProcess.js
similarity index 100%
rename from entity/Keyword_entity/iconIdProcess.js
rename to entity/KeywordEntry_entity/iconIdProcess.js
diff --git a/entity/Keyword_entity/onValidation.js b/entity/KeywordEntry_entity/onValidation.js
similarity index 100%
rename from entity/Keyword_entity/onValidation.js
rename to entity/KeywordEntry_entity/onValidation.js
diff --git a/entity/Keyword_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js
similarity index 100%
rename from entity/Keyword_entity/recordcontainers/db/conditionProcess.js
rename to entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js
diff --git a/entity/Keyword_entity/recordcontainers/db/onDBUpdate.js b/entity/KeywordEntry_entity/recordcontainers/db/onDBUpdate.js
similarity index 100%
rename from entity/Keyword_entity/recordcontainers/db/onDBUpdate.js
rename to entity/KeywordEntry_entity/recordcontainers/db/onDBUpdate.js
diff --git a/entity/Keyword_entity/recordcontainers/db/orderClauseProcess.js b/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js
similarity index 100%
rename from entity/Keyword_entity/recordcontainers/db/orderClauseProcess.js
rename to entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js
diff --git a/entity/Keyword_entity/titleProcess.js b/entity/KeywordEntry_entity/titleProcess.js
similarity index 100%
rename from entity/Keyword_entity/titleProcess.js
rename to entity/KeywordEntry_entity/titleProcess.js
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index 567fd37a4a..046af73d8b 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -318,7 +318,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -333,7 +333,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod
index 7978e285ae..691c6b9950 100644
--- a/entity/Offeritem_entity/Offeritem_entity.aod
+++ b/entity/Offeritem_entity/Offeritem_entity.aod
@@ -153,7 +153,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -168,7 +168,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index bcf6bfd730..27a1f310b0 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -288,7 +288,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -303,7 +303,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Orderitem_entity/Orderitem_entity.aod b/entity/Orderitem_entity/Orderitem_entity.aod
index e88dd43338..ae3ec52249 100644
--- a/entity/Orderitem_entity/Orderitem_entity.aod
+++ b/entity/Orderitem_entity/Orderitem_entity.aod
@@ -157,7 +157,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -172,7 +172,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index cc6a517a19..135db7bd85 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -432,7 +432,7 @@ Usually this is used for filtering COMMUNICATION-entires by a specified contact
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -447,7 +447,7 @@ Usually this is used for filtering COMMUNICATION-entires by a specified contact
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index ee2cf9231b..3e4d6b6bd8 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -460,7 +460,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod
index ce364ab30f..1bb3aa0cb1 100644
--- a/entity/Product_entity/Product_entity.aod
+++ b/entity/Product_entity/Product_entity.aod
@@ -237,7 +237,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -252,7 +252,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod
index 671068f90c..d2358a563f 100644
--- a/entity/Productprice_entity/Productprice_entity.aod
+++ b/entity/Productprice_entity/Productprice_entity.aod
@@ -150,7 +150,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -165,7 +165,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
index 4c96838ece..c16a7679c1 100644
--- a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
+++ b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
@@ -122,7 +122,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
index 9ccc4d770d..15345f79e2 100644
--- a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
+++ b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
@@ -67,7 +67,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod b/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
index 281d55b5ce..9b412db0ba 100644
--- a/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
+++ b/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
@@ -135,7 +135,7 @@ TODO: intuitive möglichkeit, auf dend Stand aus Relation zurückzusetzen... akt
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
index 4d23f20ff8..7c0cd7d8fd 100644
--- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
+++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
@@ -56,7 +56,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod
index baea0e3691..3affa9efa4 100644
--- a/entity/Stock_entity/Stock_entity.aod
+++ b/entity/Stock_entity/Stock_entity.aod
@@ -90,7 +90,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 36cf16b67b..94d2fb3ea2 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -145,7 +145,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -160,7 +160,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Keyword_entity</entityName>
+        <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
diff --git a/neonContext/Keyword_context/Keyword_context.aod b/neonContext/Keyword_context/Keyword_context.aod
index 916d515832..17b405b6d0 100644
--- a/neonContext/Keyword_context/Keyword_context.aod
+++ b/neonContext/Keyword_context/Keyword_context.aod
@@ -7,7 +7,7 @@
   <filterview>KeywordFilter_view</filterview>
   <editview>KeywordEdit_view</editview>
   <preview>KeywordPreview_view</preview>
-  <entity>Keyword_entity</entity>
+  <entity>KeywordEntry_entity</entity>
   <references>
     <neonViewReference>
       <name>75271eb0-8ddf-4b02-a943-01f589df1b20</name>
diff --git a/others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attribute.xml b/others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attribute.xml
new file mode 100644
index 0000000000..baffb14652
--- /dev/null
+++ b/others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attribute.xml
@@ -0,0 +1,20 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="j.goderbauer" id="6838de69-9165-45eb-981e-e720c1b3c582">
+        <createTable tableName="AB_KEYWORD_ATTRIBUTE">
+            <column name="AB_KEYWORD_ATTRIBUTEID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_AB_KEYWORD_ATTRIBUTEID"/>
+            </column>
+
+            <column name="NAME" type="CHAR(36)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="TYPE" type="NVARCHAR(100)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="CONTAINER" type="VARCHAR(80)">
+                <constraints nullable="false"/>
+            </column>
+        </createTable>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attributerelation.xml b/others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attributerelation.xml
new file mode 100644
index 0000000000..14ca84031b
--- /dev/null
+++ b/others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attributerelation.xml
@@ -0,0 +1,16 @@
+<?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="febc4192-4bfc-4401-837e-514574351ea8">
+        <createTable tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_AB_KEYWORD_ATTRIBUTERELATIONID"/>
+            </column>
+            <column name="AB_KEYWORD_ENTRY_ID" type="CHAR(36)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="CHAR_VALUE" type="NVARCHAR(63)"/>
+            <column name="NUMBER_VALUE" type="NUMERIC(14,2)"/>
+            <column name="BOOL_VALUE" type="TINYINT"/>
+        </createTable>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/masterChangelog.xml b/others/db_changes/masterChangelog.xml
index a6438b08fc..94cb020b23 100644
--- a/others/db_changes/masterChangelog.xml
+++ b/others/db_changes/masterChangelog.xml
@@ -5,6 +5,8 @@
     <include file="data_alias/struct/AditoBasic/create_ab_attributerelation.xml"/>
     <include file="data_alias/struct/AditoBasic/create_ab_attributeusage.xml"/>
     <include file="data_alias/struct/AditoBasic/create_ab_keyword_entry.xml"/>
+    <include file="data_alias/struct/AditoBasic/create_ab_keyword_attribute.xml"/>
+    <include file="data_alias/struct/AditoBasic/create_ab_keyword_attributerelation.xml"/>
     <include file="data_alias/struct/AditoBasic/create_ab_countryinfo.xml"/>
     <include file="data_alias/struct/AditoBasic/create_ab_language.xml"/>
     
-- 
GitLab