Issue with Business Rule to Prevent Incident Resolution Without itil_admin Role

AlfonsoP
Tera Contributor

Hi everyone,

I'm trying to create a Business Rule in ServiceNow that prevents users without the itil_admin role from changing the state of an incident to "Resolved". I've written the following script, but I'm encountering the error message "Invalid update" and can't figure out what's wrong.

Here is the code I'm using:

 

function executeRule(current, previous /*null when async*/) {
    // Debug logs to check the current state and user roles
    gs.log('Current state: ' + current.state);
    gs.log('User roles: ' + gs.getUser().getRoles());

    if (!gs.hasRole('itil_admin') && current.state.changesTo(4)) {
        gs.addErrorMessage('You do not have the correct role to set the state to Resolved.');
        current.setAbortAction(true); // Block the update action
    }
})(current, previous);
 

My goal is to display an error message when a user without the itil_admin role attempts to set the incident state to "Resolved" and block the update action.

However, the user is still able to update the incident to "Resolved", and the requested error message appears along with another message saying "Invalid update".

Does anyone have suggestions on what might be causing the "Invalid update" error or how to improve this script?

Thanks in advance for your help!

2 REPLIES 2

Jordan Vignoni
Tera Guru

Have you tried changing "When" the business rule runs?  You could also try an onChange client script (i.e., when the state changes to "Resolved") with an alert popup.

Ankur Bawiskar
Tera Patron
Tera Patron

@AlfonsoP 

your business rule should be BEFORE Update

Also when you abort, it will show "Invalid update" message and you can't remove that as it comes from OOB platform.

If my response helped please mark it correct and close the thread so that it benefits future readers.

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