diff --git a/entity/KeywordEntry_entity/recordcontainers/jdito/contentProcess.js b/entity/KeywordEntry_entity/recordcontainers/jdito/contentProcess.js
index 7fa2f2e399d563df82aef2d74d90aa34ac3b7eb6..bd4a9e38d84665f44c06f299131ae95cdb5fe930 100644
--- a/entity/KeywordEntry_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/KeywordEntry_entity/recordcontainers/jdito/contentProcess.js
@@ -20,6 +20,24 @@ var keywordStatement = newSelect("AB_KEYWORD_ENTRY.KEYID, AB_KEYWORD_ENTRY.TITLE
                 .from("AB_KEYWORD_ENTRY")
                 .join("AB_KEYWORD_CATEGORY", "AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID = AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID")
                 .where();
+                
+var whitelist = JSON.parse(vars.get("$param.WhitelistIds_param"));
+var blacklist = JSON.parse(vars.get("$param.BlacklistIds_param"));
+if (whitelist)
+{
+    if (whitelist.length > 0)
+    {
+        keywordStatement.and("AB_KEYWORD_ENTRY.KEYID", whitelist, SqlBuilder.IN());
+    }
+    else
+    {
+        keywordStatement.noResult(); // force empty result if whitelist is empty
+    }
+}
+if (blacklist && blacklist.length > 0)
+{
+    keywordStatement.and("AB_KEYWORD_ENTRY.KEYID", blacklist, SqlBuilder.NOT_IN());
+}
             
 if (vars.get("$param.OnlyActives_param") == "true")
 {
diff --git a/entity/ObjectProxy_entity/ObjectProxy_entity.aod b/entity/ObjectProxy_entity/ObjectProxy_entity.aod
index de754623cf36e1b09bf1034ab63637df6592e614..1e633cfb90637ff024ff9356586b2a7a3a9cda52 100644
--- a/entity/ObjectProxy_entity/ObjectProxy_entity.aod
+++ b/entity/ObjectProxy_entity/ObjectProxy_entity.aod
@@ -156,8 +156,6 @@
       <name>DocumentTemplates</name>
       <dependency>
         <name>dependency</name>
-        <entityName>DocumentTemplate_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
       </dependency>
     </entityConsumer>
     <entityConsumer>
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index de9acec82189efcfea075993420736b72dd9932f..a16373ac50f999464e518d3eec6264dc9015b5f1 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -328,6 +328,10 @@
           <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/keywordofferstates/children/containername_param/valueProcess.js</valueProcess>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>WhitelistIds_param</name>
+          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/keywordofferstates/children/whitelistids_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityConsumer>
diff --git a/entity/Offer_entity/entityfields/keywordofferstates/children/whitelistids_param/valueProcess.js b/entity/Offer_entity/entityfields/keywordofferstates/children/whitelistids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..31c9a715e41135a13d978901f32297c3c8db8f5c
--- /dev/null
+++ b/entity/Offer_entity/entityfields/keywordofferstates/children/whitelistids_param/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.vars");
+import("system.result");
+import("KeywordRegistry_basic");
+
+if(vars.get("$field.STATUS") == $KeywordRegistry.offerStatus$sent())
+{
+    result.string(JSON.stringify([
+        $KeywordRegistry.offerStatus$sent(),
+        $KeywordRegistry.offerStatus$won(),
+        $KeywordRegistry.offerStatus$lost()
+    ]));
+}
diff --git a/entity/Offer_entity/grantUpdateProcess.js b/entity/Offer_entity/grantUpdateProcess.js
index dd8ad2ced390f8db78ba4b8eb638915cfdda25aa..1677ad01a5fab5626a4ae9c7b04b260f656e4754 100644
--- a/entity/Offer_entity/grantUpdateProcess.js
+++ b/entity/Offer_entity/grantUpdateProcess.js
@@ -7,8 +7,6 @@ import("KeywordRegistry_basic");
 // using the grant update would also disable the status field.
 
 var status = vars.get("$field.STATUS");
-var editable = status != $KeywordRegistry.offerStatus$sent()
-    && status != $KeywordRegistry.offerStatus$won()
-    && status != $KeywordRegistry.offerStatus$lost();
+var editable = status != $KeywordRegistry.offerStatus$won() && status != $KeywordRegistry.offerStatus$lost();
 
 result.string(editable || tools.hasRole(vars.get("$sys.user"), "INTERNAL_ADMINISTRATOR"));