How to prevent delegate himself from approving their own .
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
- Hi, How to block delegate from approving his own request, and allow the other delegates of the manager to approve or send it to the next level manager for approval. Can anyone please suggest on this?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Hi @Helan,
This can be achieved by using a Business Rule on the sysapproval_approver table. Since delegate approvals (UI or email) update the same approval record, this is the best place to control the behaviour.
There is already a community solution that explains how to block a delegate from approving their own request, while still allowing other delegates or the next-level manager to approve. It uses a Before Business Rule to detect when a user is acting as a delegate and prevents self-approval without affecting valid approvals.
Here is the relevant community thread that walks through the solution:
Solved: Prevent Delegate From Approving Their Own Requests - ServiceNow Community
If my response helped, please mark it as the accepted solution so others can benefit as well.
Muhammad Iftikhar
If my response helped, please mark it as the accepted solution so others can benefit as well.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
We've tried this BR as mentioned but didn't work:(
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Hi @Helan !!
Create a Before Update Business Rule on the sysapproval_approver table.
When:
State changes to approved
Script example (block self-approval)
var approvalRec = current.sysapproval.getRefRecord();
if (approvalRec && approvalRec.requested_for == gs.getUserID()) {
gs.addErrorMessage('You cannot approve your own request.');
current.setAbortAction(true);
}Route to next-level manager (optional)
If you want the request to go to the next-level manager instead of blocking:
Use an Approval Rule with condition:
Requested for = Approver
Set approver as:
Requested for → Manager → Manager
OR dynamically cancel the approval and create a new approval record for the next-level manager via script.
Mark this as Helpful if it clarifies the issue.
Accept the solution if this answers your question.
Regards,
Vaishnavi
Associate Technical Consultant
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Hi @Helan !!
If my solution helps you then mark it as helpful and accept as solution.
Regards,
Vaishnavi
Associate Technical Consultant
