diff --git a/entity/Role_entity/Role_entity.aod b/entity/Role_entity/Role_entity.aod
index 023fd014ccb6b8ef5a39cc45578e2db06a052002..8e6196406f40514531865d2024fb067803b9d508 100644
--- a/entity/Role_entity/Role_entity.aod
+++ b/entity/Role_entity/Role_entity.aod
@@ -150,6 +150,7 @@
       <title>delete linked permissions and hierarchies</title>
       <onActionProcess>%aditoprj%/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/onActionProcess.js</onActionProcess>
       <iconId>VAADIN:CLOSE</iconId>
+      <stateProcess>%aditoprj%/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/stateProcess.js</stateProcess>
     </entityActionField>
     <entityConsumer>
       <name>RoleParents</name>
diff --git a/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/stateProcess.js b/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0b7b5d057edba98f018f8356f6928a5bd773e645
--- /dev/null
+++ b/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/stateProcess.js
@@ -0,0 +1,20 @@
+import("system.logging");
+import("system.neon");
+import("system.result");
+import("system.vars");
+import("Permission_lib");
+
+// action enabled if role has permissions or is part of hierarchy
+// if role is deletable -> disable action
+var roleName = vars.get("$field.ROLENAME");
+var roleType = vars.get("$field.ROLETYPE");
+
+if (roleType == "CUSTOM") {
+    if (PermissionUtil.roleIsDeletable(roleName)) {
+        result.string(neon.COMPONENTSTATE_DISABLED);
+    } else {
+        result.string(neon.COMPONENTSTATE_EDITABLE);
+    }
+} else {
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}