diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index de54de3a12ad1d2e1f098b0238204edfccb65a4d..c407f92b638a4758efc976de7c404503020b29de 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -453,274 +453,180 @@
         </entityDependency>
         <entityDependency>
           <name>d8c587cc-47db-4e08-a6ac-92ec1d91acb5</name>
-        <entityDependency>
-          <name>2694515c-eda4-44aa-9826-d430aa8a8089</name>
-          <entityName>Order_entity</entityName>
-          <fieldName>KeywordOrderTypes</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>72ae7a5c-acc9-4e59-8110-f5b544f47f15</name>
-          <entityName>Order_entity</entityName>
-          <fieldName>KeywordDunningLevels</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>ea9260e9-b5e8-457c-ae84-45c4692348ce</name>
-          <entityName>Order_entity</entityName>
-          <fieldName>KeywordPaymentTerms</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>5d296f68-0a8f-429c-b630-e3ca88874945</name>
-          <entityName>Order_entity</entityName>
-          <fieldName>KeywordDeliveryTerms</fieldName>
+          <entityName>BulkMail_entity</entityName>
+          <fieldName>StatusKeyword</fieldName>
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>2712e2b3-f17f-4a9c-9752-2383f62eb2b8</name>
-          <entityName>Contract_entity</entityName>
-          <fieldName>ContractStates</fieldName>
+          <name>41fd8fd4-7285-4493-9a56-cc0c44353057</name>
+          <entityName>DSGVOInfo_entity</entityName>
+          <fieldName>KeywordDeadline</fieldName>
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>bd68f269-457c-487d-a1b2-e045d98f74b7</name>
-          <entityName>Contract_entity</entityName>
-          <fieldName>ContractTypes</fieldName>
+          <name>1cbfe51f-43c3-4e99-895f-673097915249</name>
+          <entityName>DSGVOInfo_entity</entityName>
+          <fieldName>KeywordTransmission</fieldName>
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>b88b5cc8-c29e-4110-b86e-d1d0050460e5</name>
-          <entityName>Offer_entity</entityName>
-          <fieldName>KeywordCurrencies</fieldName>
+          <name>718da6a7-229b-4075-a8ff-b0458c770e7b</name>
+          <entityName>DSGVOInfo_entity</entityName>
+          <fieldName>KeywordGuarantee</fieldName>
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>57c746ee-a8c0-484a-8c73-6301609b76b1</name>
+          <name>2694515c-eda4-44aa-9826-d430aa8a8089</name>
           <entityName>Order_entity</entityName>
-          <fieldName>KeywordCurrencies</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>bf014596-954b-4c7d-9304-8283c9bcc7ae</name>
-          <entityName>Productprice_entity</entityName>
-          <fieldName>KeywordCurrencies</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>f5dcbf08-3765-4a9d-8b42-cb1219c87f57</name>
-          <entityName>Offeritem_entity</entityName>
-          <fieldName>KeywordProductGroupcodes</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>53bcaa07-94eb-4e81-9e9e-c5748156dad5</name>
-          <entityName>Orderitem_entity</entityName>
-          <fieldName>KeywordProductGroupcodes</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>c404b010-1634-4160-adca-7edf1535ee26</name>
-          <entityName>Product_entity</entityName>
-          <fieldName>KeywordProductGroupcodes</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>3575fdd7-3dd6-4318-b0d2-32d1df821076</name>
-          <entityName>Forecast_entity</entityName>
-          <fieldName>KeywordProductGroupcodes</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>5a21cbe2-4eb0-4968-80fa-b98a64599230</name>
-          <entityName>Offer_entity</entityName>
-          <fieldName>KeywordOfferStates</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>8696e561-b263-4c7c-b753-c5da44b48055</name>
-          <entityName>Organisation_entity</entityName>
-          <fieldName>KeywordOrganisationTypes</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>0d54d283-f158-4b91-8f6d-026954ed9c50</name>
-          <entityName>Person_entity</entityName>
-          <fieldName>KeywordGenders</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>8d28f08b-675d-4bcf-9318-a508d45ca69e</name>
-          <entityName>Task_entity</entityName>
-          <fieldName>KeywordStates</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>b069ef7d-07a0-460c-a8e7-cde5861c96c2</name>
-          <entityName>Productprice_entity</entityName>
-          <fieldName>KeywordPricelists</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>7f134ef1-cff5-4cf4-9d2a-e288c7904c28</name>
-          <entityName>Offeritem_entity</entityName>
-          <fieldName>KeywordQuantityUnits</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>c3c3b430-a14f-46b4-909a-9b53cef35413</name>
-          <entityName>Orderitem_entity</entityName>
-          <fieldName>KeywordQuantityUnits</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>a1983efd-92f9-4a6b-8805-d2977fcde0c8</name>
-          <entityName>Product_entity</entityName>
-          <fieldName>KeywordQuantityUnits</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>026021cd-cd64-400d-8bd5-f6d044af1ad8</name>
-          <entityName>Member_entity</entityName>
-          <fieldName>KeywordMemberRoles</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>356e23f9-eb05-4e18-b0b5-cbc7c8716dba</name>
-          <entityName>SalesprojectSource_entity</entityName>
-          <fieldName>KeywordSources</fieldName>
+          <fieldName>KeywordOrderTypes</fieldName>
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>36a72192-902f-431b-8f43-0bef311678f7</name>
+          <name>72ae7a5c-acc9-4e59-8110-f5b544f47f15</name>
           <entityName>Order_entity</entityName>
-          <fieldName>KeywordStates</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>e2041dea-8647-49e9-aacf-4481b75b76ff</name>
-          <entityName>Stock_entity</entityName>
-          <fieldName>KeywordWarehouses</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>403c40a4-f747-4e47-ad60-07334724d6fb</name>
-          <entityName>KeywordAttribute_entity</entityName>
-          <fieldName>KeywordAttributeTypes</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>078bbd52-87fa-44cc-9902-04af935b5fbc</name>
-          <entityName>Attribute_entity</entityName>
-          <fieldName>KeywordAttributeTypes</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>718fe5a2-c75f-49ed-b67e-fc4fbf63ff1d</name>
-          <entityName>Salesproject_entity</entityName>
-          <fieldName>KeywordProbabilties</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>a44375e9-917c-4db8-9aa8-de0625caf78f</name>
-          <entityName>Activity_entity</entityName>
-          <fieldName>KeywordCategories</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>f442a641-4dff-4860-bf4c-cfddc054e075</name>
-          <entityName>Offer_entity</entityName>
-          <fieldName>KeywordProbabilities</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>fa831dac-3287-422a-8f28-504fc525876a</name>
-          <entityName>Communication_entity</entityName>
-          <fieldName>KeywordMediums</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>04b28ce6-a144-4c19-ac2d-4cfbc3568700</name>
-          <entityName>Organisation_entity</entityName>
-          <fieldName>KeywordPricePolitics</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>f024df05-2faf-4447-9eed-ae31b329d542</name>
-          <entityName>Competition_entity</entityName>
-          <fieldName>KeywordPricePolitics</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>60840c28-9875-4e3e-8099-5ca208d58bbe</name>
-          <entityName>Organisation_entity</entityName>
-          <fieldName>KeywordWeaknesses</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>854148e2-2532-4562-b393-832819e8d462</name>
-          <entityName>Organisation_entity</entityName>
-          <fieldName>KeywordStrenghts</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>613d5861-0494-45f9-a839-a705347a68da</name>
-          <entityName>Competition_entity</entityName>
-          <fieldName>KeywordWeaknesses</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>119d79d0-9e04-4dd0-80bb-0bc32eaae775</name>
-          <entityName>Competition_entity</entityName>
-          <fieldName>KeywordStrenghts</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>6e2d164c-1ac7-4ed0-ad8f-7bfda1328493</name>
-          <entityName>Salesproject_entity</entityName>
-          <fieldName>KeywordStates</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>3ca6d3c7-83d2-4761-bab4-50d2baecdbd6</name>
-          <entityName>Competition_entity</entityName>
-          <fieldName>KeywordPhases</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>1053a90d-574a-4ca2-b41d-42b513db0fd2</name>
-          <entityName>Task_entity</entityName>
-          <fieldName>KeywordPriorities</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>bf9f7a07-dfb9-44d0-8f9b-d3814053683e</name>
-          <entityName>Competition_entity</entityName>
-          <fieldName>KeywordStates</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>ef8b9397-6292-42de-806e-5aaf3e3db5f3</name>
-          <entityName>Salesproject_entity</entityName>
-          <fieldName>KeywordWonLost</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>5d9e0e48-ece8-4b8e-ab72-beef77b5dcc3</name>
-          <entityName>Task_entity</entityName>
-          <fieldName>KeywordProgress</fieldName>
+          <fieldName>KeywordDunningLevels</fieldName>
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>36aa04c1-5361-4e40-a036-0546db596973</name>
-          <entityName>Offer_entity</entityName>
-          <fieldName>KeywordDeliveryTerm</fieldName>
+          <name>ea9260e9-b5e8-457c-ae84-45c4692348ce</name>
+          <entityName>Order_entity</entityName>
+          <fieldName>KeywordPaymentTerms</fieldName>
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>7e12cbd6-3a2c-4bd8-bc66-5001c282b690</name>
-          <entityName>Offer_entity</entityName>
-          <fieldName>KeywordPaymentTerm</fieldName>
+          <name>5d296f68-0a8f-429c-b630-e3ca88874945</name>
+          <entityName>Order_entity</entityName>
+          <fieldName>KeywordDeliveryTerms</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>OnlyActives_param</name>
+          <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <expose v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityField>
+      <name>TITLE_TRANSLATED</name>
+      <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>OnlyActives_param</name>
+      <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/onlyactives_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityConsumer>
+      <name>KeywordAttributeRelations</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordAttributeRelation_entity</entityName>
+        <fieldName>AttributesForKeywordEntry</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>KeywordEntryId_param</name>
+          <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelations/children/keywordentryid_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>KeywordAttributeRelationsReadOnly</name>
+      <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc</documentation>
+      <state>READONLY</state>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordAttributeRelation_entity</entityName>
+        <fieldName>AttributesForKeywordEntry</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>KeywordEntryId_param</name>
+          <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>ExcludedKeyIdsSubquery_param</name>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc</documentation>
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>WhitelistIds_param</name>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/whitelistids_param/documentation.adoc</documentation>
+    </entityParameter>
+    <entityField>
+      <name>expanded</name>
+      <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/expanded/valueProcess.js</valueProcess>
+    </entityField>
+    <entityActionField>
+      <name>openAdminView</name>
+      <title>Open admin view</title>
+      <onActionProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CURLY_BRACKETS</iconId>
+      <stateProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/openadminview/stateProcess.js</stateProcess>
+    </entityActionField>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <alias>Data_alias</alias>
+      <isPageable v="false" />
+      <conditionProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBDelete>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <linkInformation>
+        <linkInformation>
+          <name>52acbfe0-57f4-4614-83af-9882e168f431</name>
+          <tableName>AB_KEYWORD_ENTRY</tableName>
+          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>TITLE.value</name>
+          <recordfield>AB_KEYWORD_ENTRY.TITLE</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>SORTING.value</name>
+          <recordfield>AB_KEYWORD_ENTRY.SORTING</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ISESSENTIAL.value</name>
+          <recordfield>AB_KEYWORD_ENTRY.ISESSENTIAL</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ISACTIVE.value</name>
+          <recordfield>AB_KEYWORD_ENTRY.ISACTIVE</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <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>CONTAINER.value</name>
+          <recordfield>AB_KEYWORD_ENTRY.CONTAINER</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js b/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js
deleted file mode 100644
index e2a0b150abda4a70271483b6b64fcb4d937511bc..0000000000000000000000000000000000000000
--- a/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import("system.translate");
-import("system.result");
-import("system.vars");
-import("Sql_lib");
-import("system.db");
-
-if (!_areUnique())
-    result.string(translate.text("Attributes must be unique!"));
-
-function _areUnique ()
-{
-    var insertedRows = vars.get("$field.KeywordAttributeRelations.insertedRows");
-    var changedRows = vars.get("$field.KeywordAttributeRelations.changedRows");
-    var deletedRows = vars.get("$field.KeywordAttributeRelations.deletedRows");
-
-    var storedRows = db.table(SqlCondition.begin()
-        .andPrepare("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID", vars.get("$field.AB_KEYWORD_ENTRYID"))
-        .buildSql("select AB_KEYWORD_ATTRIBUTERELATIONID, AB_KEYWORD_ATTRIBUTE_ID from AB_KEYWORD_ATTRIBUTERELATION"));
-    
-    var attributeChanges = {};
-
-    if (deletedRows)
-        deletedRows.forEach(function (row)
-        {
-            this[row.AB_KEYWORD_ATTRIBUTERELATIONID] = "";
-        }, attributeChanges);
-    
-    if (changedRows)
-        changedRows.forEach(function (row)
-        {
-            this[row.AB_KEYWORD_ATTRIBUTERELATIONID] = row.AB_KEYWORD_ATTRIBUTE_ID;
-        }, attributeChanges);
-    
-    var countObj = {};
-
-    storedRows.forEach(function ([storedAttrRelationId, storedAttributeId]) {
-        var currentAttributeId = storedAttributeId;
-        //merging the data that is stored in the DB and the provided changes
-        if (attributeChanges && storedAttrRelationId in attributeChanges)
-            currentAttributeId = attributeChanges[storedAttrRelationId];
-        
-        // it doesn't matter if a row has been deleted or if the attribute has been set to "nothing"
-        if (currentAttributeId == "")
-            _decrCount(storedAttributeId);
-        else
-        {
-            _incrCount(currentAttributeId);
-            if (currentAttributeId != storedAttributeId)
-                _decrCount(storedAttributeId);
-        }
-    });
-    
-    if (insertedRows) //append the new rows
-    {
-        insertedRows.forEach(function (row)
-        {
-            this[row.AB_KEYWORD_ATTRIBUTE_ID] = (this[row.AB_KEYWORD_ATTRIBUTE_ID] || 0) + 1;
-        }, countObj);
-    }
-    
-    for (let id in countObj)
-        if (countObj[id] > 1)
-            return false;
-    
-    return true;
-
-    function _incrCount (pAttributeId)
-    {
-        if (countObj[pAttributeId])
-            countObj[pAttributeId]++;
-        else
-            countObj[pAttributeId] = 1;
-    }
-    
-    function _decrCount (pAttributeId)
-    {
-        if (countObj[pAttributeId])
-            countObj[pAttributeId]--;
-        else
-            countObj[pAttributeId] = 0;
-    }
-}
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..53afbdfbbfe9044ca0a5af0984365d6b2ee5bdba
--- /dev/null
+++ b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.AB_KEYWORD_ENTRYID"));
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..99874edc30d1b8340662c802a9b2b4ef1da0fcdd
--- /dev/null
+++ b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc
@@ -0,0 +1,2 @@
+Since it's not possible to limit the keywordAttributeRelation to a distinctive list (use a KeywordAttributeRelation "category" only once per keyowrd-entry) within the generic-multiple-template / titledList-template use this readonly consumer there.
+For editing use the not-read-only consumer in a list-template. In a list-template only one row can be changed (and stored) which means we can exlucde already stored entries.
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/onValidation.js b/entity/KeywordEntry_entity/onValidation.js
index c2eb1f2b7173988bef7fb4997a2853cfe5f2514b..f771dd784476b962438a1eafb789f0c145e5af3b 100644
--- a/entity/KeywordEntry_entity/onValidation.js
+++ b/entity/KeywordEntry_entity/onValidation.js
@@ -19,4 +19,4 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
             throw new TypeError(translate.text("The code number is not a valid number."));
         neon.setFieldValue("$field.SORTING", ++newCodeNumber);
     }
-}
+}
\ No newline at end of file