diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index e9b6d88e97cd8245072219e1d925a9e5b1a985f3..a4019577b352d5e47375b810a68e59c7ebce9c02 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -5,6 +5,8 @@
   <documentation>%aditoprj%/entity/KeywordEntry_entity/documentation.adoc</documentation>
   <title>Keyword</title>
   <siblings />
+  <grantDelete v="false" />
+  <grantDeleteProcess>%aditoprj%/entity/KeywordEntry_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/KeywordEntry_entity/contentTitleProcess.js</contentTitleProcess>
   <onValidation>%aditoprj%/entity/KeywordEntry_entity/onValidation.js</onValidation>
   <iconId>VAADIN:KEY</iconId>
diff --git a/entity/KeywordEntry_entity/grantDeleteProcess.js b/entity/KeywordEntry_entity/grantDeleteProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..92ad10574babfedba2f70446fec73ad4c3f76684
--- /dev/null
+++ b/entity/KeywordEntry_entity/grantDeleteProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+
+var isEssential = vars.get("$field.ISESSENTIAL");
+
+var granted = true;
+if (isEssential == "1")
+    granted = false;
+    
+result.string(granted)
\ No newline at end of file