Some PDIs are currently unavailable, and PDI actions are paused. View the latest updates here. Read More

I would like to know why users assigned the [approver_user] role can view the "sysapproval_approver"

bonsai
Mega Sage

I am checking the ACLs for the "sysapproval_approver" table, but I cannot find an ACL that grants read access when the "approver_user" role is assigned...

However, in reality, assigning the "approver_user" role allows access to the "sysapproval_approver" table.

Why is this happening? Is it not being controlled by an ACL?

2 ACCEPTED SOLUTIONS

Sandeep Rajput
Tera Patron

@bonsai The role check is applied at the Module level. Only the users with role approver_user can see this module.

 

Screenshot 2026-07-09 at 9.38.30 PM.png

View solution in original post

@bonsai 

I didn't deep dive in that script include but it should be there only

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

8 REPLIES 8

Tanushree Maiti
Tera Patron

Hi @bonsai 

 

Servicenow designed the tool in that way that to approve a request , one of the role required is approver user.

For that they have added condition / script include in OOB components.

e.g

Please Accept the solution if it assisted you with your question & Mark this response as Helpful.
Regards
Tanushree Maiti
ServiceNow Technical Architect
LinkedIn: https://www.linkedin.com/in/tanushreemaiti

ajmalmuhamm
Tera Contributor

 

  1. This is expected behavior. Access isn't always granted by a table ACL that explicitly lists the approver_user role. It may come from an inherited ACL, a wildcard ACL (*.* or table.*), a scripted ACL, or built-in security logic (such as query business rules or the approval framework). Enabling Debug Security Rules is the best way to identify which security rule is actually granting access.

bonsai
Mega Sage

I’ve solved it!

The answer lay in the ACL that calls `ApprovalDelegationUtil`.
I had assumed that requesters couldn't have access rights to `sysapproval_approver`, but it turns out that if an approval request is sent to the requester, they *can* access it by running `sysapproval_approver.list`.

However, since the module restricts access to users with the `approver_user` role, it simply isn't visible under normal circumstances.

I tested this by designating a user without the `approver_user` role as the approver;
after performing a delegated action and navigating to the record via `sysapproval_approver.list`, I was able to approve or reject it.
This likely constitutes a licensing violation, but I believe it successfully demonstrates that access isn't being fully controlled.

@bonsai As I mentioned in my previous response, access is usually governed by the access to the module and not via role. Any user in ServiceNow can be an approver. However, only users with approval_user role can actually see those approvals through the module. 

 

A way to bypass this is by creating a custom widget on the portal to show the list of approvals by making a GlideRecord query to sysapproval_approver or by processing the approvals via inbound email actions where a user can grant approvals via an email.