diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 9285b2f33d2c873188ff01b8271c3cf865f116fb..eb36678450e7550f612c3cf0867070a321743b10 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -4416,8 +4416,8 @@
                 <name>TYPE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="100" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
@@ -4430,8 +4430,8 @@
                 <name>NAME</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="12" />
+                <size v="100" />
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
diff --git a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod
index e9462ab5b45dfe3f192ff3b568efb142da122d52..ea8395fd376909b957807de6386534876710fa23 100644
--- a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod
+++ b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod
@@ -89,6 +89,7 @@
       <documentation>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/documentation.adoc</documentation>
       <title>Value</title>
       <contentTypeProcess>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/contentTypeProcess.js</contentTypeProcess>
+      <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/valueProcess.js</valueProcess>
       <onValueChange>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/onValueChange.js</onValueChange>
     </entityField>
diff --git a/entity/KeywordAttributeRelation_entity/entityfields/ab_keyword_attribute_id/onValueChange.js b/entity/KeywordAttributeRelation_entity/entityfields/ab_keyword_attribute_id/onValueChange.js
index a26f98d31481d3a3bfa76a0473c1d40e34c42437..15f4a12ff870ec196506053e91dd9034275dade5 100644
--- a/entity/KeywordAttributeRelation_entity/entityfields/ab_keyword_attribute_id/onValueChange.js
+++ b/entity/KeywordAttributeRelation_entity/entityfields/ab_keyword_attribute_id/onValueChange.js
@@ -1,5 +1,10 @@
 import("system.vars");
+import("system.neon");
 
-vars.set("$field.CHAR_VALUE", "");
-vars.set("$field.BOOL_VALUE", "");
-vars.set("$field.NUMBER_VALUE", "");
\ No newline at end of file
+var recordState = vars.get("$sys.recordstate");
+if (recordState == neon.OPERATINGSTATE_NEW || recordState == neon.OPERATINGSTATE_EDIT)
+{
+    vars.set("$field.CHAR_VALUE", null);
+    vars.set("$field.BOOL_VALUE", null);
+    vars.set("$field.NUMBER_VALUE", null);
+}
\ No newline at end of file
diff --git a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod
index 4061a215b27e5eeefbc5529ab48ed631eb1a2f09..e0ef67c5527d6993a282b9cc4e4fe6f7b264fe88 100644
--- a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod
+++ b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod
@@ -13,6 +13,7 @@
     </entityProvider>
     <entityField>
       <name>AB_KEYWORD_ATTRIBUTEID</name>
+      <searchable v="false" />
       <valueProcess>%aditoprj%/entity/KeywordAttribute_entity/entityfields/ab_keyword_attributeid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index 0c83ef04ae1fc24984ad89752fd56cb99288aee3..0956d55dd069ab00e2eb860698f67a8da90576d8 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -25,6 +25,7 @@
     </entityField>
     <entityField>
       <name>AB_KEYWORD_ENTRYID</name>
+      <searchable v="false" />
       <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/ab_keyword_entryid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -238,6 +239,12 @@
           <fieldName>KeywordAttributeType</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>718fe5a2-c75f-49ed-b67e-fc4fbf63ff1d</name>
+          <entityName>Salesproject_entity</entityName>
+          <fieldName>KeywordProbabilties</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index d37f3e61bf2d109b8c4bfdb6a614d502f53956c2..3d5f6662a121b81d6deef04ee02063e863ed8567 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -107,7 +107,7 @@
     <entityField>
       <name>PROBABILITY</name>
       <title>Probability</title>
-      <possibleItemsProcess>%aditoprj%/entity/Salesproject_entity/entityfields/probability/possibleItemsProcess.js</possibleItemsProcess>
+      <consumer>KeywordProbabilties</consumer>
     </entityField>
     <entityConsumer>
       <name>SalesprojectSources</name>
@@ -372,6 +372,21 @@
       <description>Opens the time tracking context in new-mode for the selected salesproject</description>
       <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newtimetracking/onActionProcess.js</onActionProcess>
     </entityActionField>
+    <entityConsumer>
+      <name>KeywordProbabilties</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>containerName_param</name>
+          <code>%aditoprj%/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -458,6 +473,10 @@
           <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>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/code.js b/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..4eecf47c8cf65b769844277ca6d404f996267724
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/code.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Keyword_lib");
+
+result.string($KeywordRegistry.get.SalesprojectProbability);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/probability/possibleItemsProcess.js b/entity/Salesproject_entity/entityfields/probability/possibleItemsProcess.js
deleted file mode 100644
index bea9f367e4a778352426678a9ef9ad69ced0ed5a..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/entityfields/probability/possibleItemsProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-
-result.object(LegacyKeywordUtils.getStandardArray("SALESPROJECT.PROBABILITY"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..a5769eccec40249640f8612dacb4ecede39106f4
--- /dev/null
+++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.get.SalesprojectProbability, "SALESPROJECT.PROBABILITY");
+result.string(sql);
diff --git a/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute.xml b/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute.xml
index c3c086c020b41f4e785473ae0de007836a4eb020..f16b870ba5123e70c249b87a3bf09309f50897fb 100644
--- a/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute.xml
+++ b/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute.xml
@@ -1,4 +1,4 @@
 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-    <include relativeToChangelogFile="true" file="ab_keyword_attribute/init_SalesprojectProbability_points.xml"/>
+    <include relativeToChangelogFile="true" file="ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml"/>
 </databaseChangeLog>
diff --git a/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml b/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e7425b24dcd38e28003820d50f3e5f846c0e7b66
--- /dev/null
+++ b/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml
@@ -0,0 +1,41 @@
+<?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="a2375d469a-1eda-4b40-802b-312323d9f2e7">
+        <insert tableName="AB_KEYWORD_ATTRIBUTE">
+            <column name="AB_KEYWORD_ATTRIBUTEID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/>
+            <column name="NAME" value="percentValue"/>
+            <column name="TYPE" value="NUMBER_VALUE"/>
+            <column name="CONTAINER" value="SalesprojectProbability"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="8b719177-b9a1-44f8-bfba-34b678d84daa"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="ab44bd2c-dffa-4731-8a24-fad31f069c46"/>
+            <column name="NUMBER_VALUE" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="1a233346-a284-49a8-ac51-c3a214474e88"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="e59169d3-c0d9-4718-b8b6-e315857948a0"/>
+            <column name="NUMBER_VALUE" valueNumeric="25"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="2d8b8da4-1241-4094-abf5-54d8cacadcaf"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="415f1cf0-8c5b-4b6e-9900-0d0d6d72381c"/>
+            <column name="NUMBER_VALUE" valueNumeric="50"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="d02adcf4-fdc0-4614-ad44-88fa9de77a37"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="6182cc48-df2b-4ba9-893a-bcedfd0e1e4b"/>
+            <column name="NUMBER_VALUE" valueNumeric="75"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="f25f0406-998b-4b29-9432-4dafa378f1eb"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="f5b601a5-451b-4ab6-9167-b95077e90c62"/>
+            <column name="NUMBER_VALUE" valueNumeric="100"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_points.xml b/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_points.xml
deleted file mode 100644
index 4f026375759b21e39e16f06cda5e53d3a0a3cb18..0000000000000000000000000000000000000000
--- a/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_points.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.1" encoding="UTF-8" standalone="no"?>
-<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-    <changeSet author="j.goderbauer" id="a2375d469a-1eda-4b40-802b-312323d9f2e7">
-        <insert tableName="AB_KEYWORD_ATTRIBUTE">
-            <column name="AB_KEYWORD_ATTRIBUTEID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/>
-            <column name="NAME" value="points"/>
-            <column name="TYPE" value="NUMBER_VALUE"/>
-            <column name="CONTAINER" value="SalesprojectProbability"/>
-        </insert>
-    </changeSet>
-</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_gfk.xml b/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_gfk.xml
index d179bd56810c914a513c101078839a56e856335d..f2451e2af273e0ecb6136ddebee72b1344331a3d 100644
--- a/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_gfk.xml
+++ b/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_gfk.xml
@@ -1,4 +1,4 @@
-<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<?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.hoermanns" id="76912d9-ced7-4626-a031-d7138dfc948e">
     <insert tableName="SALESPROJECT">
@@ -15,7 +15,7 @@
         <column name="ENDDATE" valueDate="2017-10-14T09:03:43"/>
         <column name="ESTIMATION" value="; 2; 4; 11; "/>
         <column name="ESTIMATIONVALUE" valueNumeric="2"/>
-        <column name="PROBABILITY" valueNumeric="30"/>
+        <column name="PROBABILITY" value="b981a107-7e20-42a6-baf4-3fc09a939cd7"/>
     </insert>
     <insert tableName="AB_OBJECTRELATION">
         <column name="AB_OBJECTRELATIONID" value="6dd516b2-7887-4a17-930a-d39607c8b626"/>
diff --git a/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_jkl.xml b/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_jkl.xml
index 6f5ae0997e577053bab1b6aa43677db3c86324d8..530eacad2339a51bb508c32ce79e65f0b7ecff18 100644
--- a/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_jkl.xml
+++ b/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_jkl.xml
@@ -15,7 +15,7 @@
         <column name="ENDDATE" valueDate="2017-10-14T09:03:43"/>
         <column name="ESTIMATION" value="; 2; 4; 11; "/>
         <column name="ESTIMATIONVALUE" valueNumeric="2"/>
-        <column name="PROBABILITY" valueNumeric="30"/>
+        <column name="PROBABILITY" value="b981a107-7e20-42a6-baf4-3fc09a939cd7"/>
     </insert>
 
     <rollback>			
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
index baffb14652f6ea01e9601b911a457f939c0ebbdc..a39bf989d429478b93618c47e518fe3f908f768b 100644
--- 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
@@ -6,10 +6,10 @@
                 <constraints primaryKey="true" primaryKeyName="PK_AB_KEYWORD_ATTRIBUTEID"/>
             </column>
 
-            <column name="NAME" type="CHAR(36)">
+            <column name="NAME" type="VARCHAR(100)">
                 <constraints nullable="false"/>
             </column>
-            <column name="TYPE" type="NVARCHAR(100)">
+            <column name="TYPE" type="CHAR(36)">
                 <constraints nullable="false"/>
             </column>
             <column name="CONTAINER" type="VARCHAR(80)">
diff --git a/others/db_changes/data_alias/struct/create_salesproject.xml b/others/db_changes/data_alias/struct/create_salesproject.xml
index 6fc8e7ce27a514f8f526cc9dcf7529eaac15263d..1a18e814008c98a7093a6ed5648f0f19ae3d4db4 100644
--- a/others/db_changes/data_alias/struct/create_salesproject.xml
+++ b/others/db_changes/data_alias/struct/create_salesproject.xml
@@ -18,7 +18,7 @@
             <column name="ENDDATE" type="DATETIME"/>
             <column name="ESTIMATION" type="NVARCHAR(50)"/>
             <column name="ESTIMATIONVALUE" type="INTEGER"/>
-            <column name="PROBABILITY" type="INTEGER"/>
+            <column name="PROBABILITY" type="CHAR(36)"/>
 
             <column name="SALESPROJECTID" type="CHAR(36)">
                 <constraints primaryKey="true" primaryKeyName="PK_SALESPROJECT_SALESPROJECTID"/>
diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js
index b043f2597c2b12691d9244da8c4597c7c72455e4..4827e4fa1a0045c62aea4b40cd915402337df88e 100644
--- a/process/Keyword_lib/process.js
+++ b/process/Keyword_lib/process.js
@@ -77,7 +77,7 @@ KeywordUtils.getResolvedTitleSqlPart = function(pContainerName, pDbFieldName, pL
 /**
  * returns a specific name (translated) - this is normally the view-value - of a given keyword;
  * <br/>if the key could not be found an empty string "" is returned 
- * @param {String} keywordType specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY"
+ * @param {String} keywordContainer specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY"
  * @param {String} key id value of the keyword where the view-value shall be searched
  * @return {String} representation of the translated name of the keyword-key
  * @example
@@ -87,13 +87,10 @@ KeywordUtils.getResolvedTitleSqlPart = function(pContainerName, pDbFieldName, pL
  *     result.string(vars.get("$field.SUBJECT") + " (" + LegacyKeywordUtils.getViewValue("ACTIVITY.MEDIUM", histMedium) + ")");
  * }
  */
-KeywordUtils.getViewValue = function(keywordType, key)
+KeywordUtils.getViewValue = function(keywordContainer, key)
 {
-    if (!$KeywordRegistry.get[keywordType])
-        return "";
-
     var sql = SqlCondition.begin()
-                          .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", keywordType)
+                          .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", keywordContainer)
                           .andPrepare("AB_KEYWORD_ENTRY.KEYID", key)
                           .buildSql("select AB_KEYWORD_ENTRY.TITLE from AB_KEYWORD_ENTRY");
     var originalTitle = db.cell(sql);
@@ -101,7 +98,55 @@ KeywordUtils.getViewValue = function(keywordType, key)
         return "";
     var translatedTitle = translate.text(originalTitle);
     return translatedTitle;
-}
+};
+
+/**
+ * collects possible and defined keyword-attributes per keyword entry and returns them
+ * 
+ * @param {String} pEntryId id that identifies the keyword-entry whoes attributes are collected
+ * @return {Object} key-value-pair of the keyword-attributes; contains all attribute-keys for the keywords-entries container; 
+ *                                  if there is no value set for a key the null-value is given
+ */
+KeywordUtils.getKeywordAttributeRelations = function (pEntryId)
+{
+    var sql = SqlCondition.begin()
+        .andPrepare("AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", pEntryId)
+        .buildSql("select AB_KEYWORD_ATTRIBUTE.NAME, AB_KEYWORD_ATTRIBUTE.TYPE, \n\
+                AB_KEYWORD_ATTRIBUTERELATION.CHAR_VALUE, AB_KEYWORD_ATTRIBUTERELATION.NUMBER_VALUE, AB_KEYWORD_ATTRIBUTERELATION.BOOL_VALUE \n\
+                from AB_KEYWORD_ENTRY \n\
+                left join AB_KEYWORD_ATTRIBUTE on (AB_KEYWORD_ATTRIBUTE.CONTAINER = AB_KEYWORD_ENTRY.CONTAINER) \n\
+                left join AB_KEYWORD_ATTRIBUTERELATION \n\
+                    on (AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID = AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID\n\
+                        and AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID = AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID)");
+
+    var data = db.table(sql);
+    var res = {};
+    var name, type, charVal, numVal, boolVal;
+    
+    for (var i = 0, l = data.length; i < l; i++)
+    {
+        [name, type, charVal, numVal, boolVal] = data[i];
+        name = name.trim();
+        type = type.trim();
+        var parsedValue = null;
+        switch(type)
+        {
+            case "NUMBER_VALUE":
+                parsedValue = numVal == "" ? null : Number(numVal);
+                break;
+            case "BOOL_VALUE":
+                parsedValue = boolVal == "" ? null : (boolVal == "1");
+                break;
+            case "CHAR_VALUE":
+                parsedValue = charVal == "" ? null : charVal;
+                break;
+        }
+
+        res[name] = parsedValue;
+    }
+    return res;
+};
+
 
 /**
 * provides a distinctive list of all keyword-container-names in the system
@@ -347,15 +392,6 @@ function LegacyKeywordUtils(){}
                      })
                 ]);
                 break;
-            case "SALESPROJECT.PROBABILITY":
-                valueContainer = _createKeywordEntriesContainer([
-                     _createKeywordEntry("1", translate.text("0 %", locale), null, {percentValue: 0})
-                    ,_createKeywordEntry("2", translate.text("25 %", locale), null, {percentValue: 25})
-                    ,_createKeywordEntry("3", translate.text("50 %", locale), null, {percentValue: 50})
-                    ,_createKeywordEntry("4", translate.text("75 %", locale), null, {percentValue: 75})
-                    ,_createKeywordEntry("5", translate.text("100 %", locale), null, {percentValue: 100})
-                ]);
-                break;
             case "CLASS.BRANCHE":
                 valueContainer = _createKeywordEntriesContainer([
                      _createKeywordEntry("1", translate.text("Industry 1", locale), null, {points: 50})