Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Preventing Assignees from Approving Their Own Changes

Mohammed Kemal
Tera Guru

Preventing Assignees from Approving Their Own Changes (No Script Needed)

Here’s a simple way which i proved it works for me to prevent assignees from being added as approvers to their own change requests—using just a Business Rule, with no scripting required. This can be done in many way but in this method the BR has to be created in Approval (sysapproval_approver) table:

This technique is:

  • Easy to configure

  • You can limit the source table (e.g., only for Change Requests)

Steps:

  1. Create a Business Rule that runs on Insert and Update.

  2. Set the conditions so that it only applies to the source table you want (like change_request).

    •  

      MohammedKemal_0-1746723502374.png

       

  3. In the condition builder, ensure you check:

    • If the Assigned To is the same as the user creating the record.

    • If so, prevent them from being added as an approver in the Actions tab (see bellow)

  4. MohammedKemal_1-1746723591658.png

    Done!! 

That’s it—no need for code! Once set up, the rule will stop the assignee from becoming an approver on their own changes. 

3 REPLIES 3

Juhi Poddar
Kilo Patron

Hello @Mohammed Kemal 

Great use of a Business Rule to prevent self-approval without the need for any scripting.

 

Thank You

Juhi Poddar

ServiceNowServ
Tera Contributor

@Mohammed Kemal - thanks for sharing. Will the approver will be added into the approvers list or it just get rejected?

MattCD
Tera Contributor

A heads up to anyone implementing this, while it does work if you are using a Flow to generate the approvals, your flow will go into an error state with something like: 
CreateApprovalRecords: Approval record was not created correctly for user 'ef8034d147bb8214f2888e8b416d4312' under group '46dc2b5adb1d6300555a755a8c96194c'

 

A cleaner solution is to set the state to cancelled.
You can add a script to the business rule and set 2 values:

 
    current.state = 'cancelled';
    current.comments = 'approval canceled for change assignee';

This will result in:

  • The user's approval getting inserted as cancelled 
  • a message that makes it transparent explaining why the approval was nullified
  • A flow that does not go return an error state