RITM Group Approval – How to Send Approval Requests Only to Selected Members from a Custom 'Approver

ArupR
Tera Contributor

I'm working on RITM approvals and need to modify the default group approval behavior. I have a custom field 'approvers' (List of Users type) on the Group table that contains specific users who should receive approval requests.
approver_column_name.pnggroup record.png

My requirements:

  1. Use Group Approval (not User Approval) to preserve which groups were requested
  2. Only users in the custom 'approvers' field should get approval requests, not all group members
  3. Don't want to manually extract user sys_ids and use individual user approvals

Current challenge:
When I use standard group approval, it sends requests to ALL active group members, but I only want the subset defined in my custom 'approvers' field.

I've considered scripted group approvals but want to ensure:

· It still shows as a group approval in the system
· The group relationship is maintained for reporting
· Only my specified approvers receive the request

Has anyone implemented something similar? What's the best approach - workflow script, business rule, or some other method that maintains the group approval context while filtering the actual approvers?

1 ACCEPTED SOLUTION

@ArupR 

got it.

then do this

-> let the approval go to that group using OOTB Ask for Approval

-> use before insert business rule on sysapproval_approver table and see if this is generated due to Group approval i.e. Group field not empty

-> then grab the custom list field and see if the current approver is allowed or not

-> if not then use setAbortAction(true) and record won't be inserted

💡 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  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

21 REPLIES 21

@ArupR 

sysapproval_approver table is in global scope, so your BR should also be in global scope

Then only setAbortAction(true) works

Note: setAbortAction() will only work if you create BR/script in original scope as that of table

💡 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  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Ankur Bawiskar 
Thanks!!!
It works when I shifted the script to the global scope.

I have one more question. Currently, I am running the flow as an admin, so everything works. The Business Rule is in the global scope and is still able to access information from tables inside a scoped application.

Since the flow runs under the current user session, if this Business Rule is triggered, will it still be able to access information from the scoped application’s tables?



@ArupR 

Glad to know that my script worked.

Try running Flow as User Session and perform testing

💡 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  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@ArupR 

I believe I answered your question.

💡 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  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Ankur Bawiskar 

Yes, thank you again for providing the solution.

Please also consider commenting on the accepted solution that the script should be in the global scope, not in any specific application scope. This will help readers quickly understand the solution without having to go through other comments.