Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Users should not be able to approve their own requests

Aparna Gurav
Tera Contributor

Hello Team,

 

Can anyone suggest how to achieve this requirement?


If the approver = created by user(Requested for) then they should not be able to approve the request.

1 ACCEPTED SOLUTION

Here is a BR that I think will do the job.

 

Condition: current.source_table  ==  'sc_req_item' && current.sysapproval.opened_by ==  current.approver


Script:

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	
	current.approver = current.approver.manager;
	current.comments = 'Approver is also Requester - Moved to Manager';

})(current, previous);

 

It was modified from a BR that I've used to auto-approved if Requester is also Approver. I haven't tested it.

 

Regards,
Niklas

View solution in original post

10 REPLIES 10

Hi,

That would be a custom BR that needs to be built.

 

Regards,
Niklas

Here is a BR that I think will do the job.

 

Condition: current.source_table  ==  'sc_req_item' && current.sysapproval.opened_by ==  current.approver


Script:

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	
	current.approver = current.approver.manager;
	current.comments = 'Approver is also Requester - Moved to Manager';

})(current, previous);

 

It was modified from a BR that I've used to auto-approved if Requester is also Approver. I haven't tested it.

 

Regards,
Niklas

@Niklas Peterson :Which Table do need to use?

To run the BR on? The sysapproval_approver table.

 

Regards,
Niklas

Harish Bainsla
Kilo Patron
Kilo Patron

(function () {

var current = g_form.getTableName();


var currentUserID = g_user.userID;


var requestedForID = g_form.getValue('requested_for');

if (currentUserID == requestedForID) {

g_form.setReadOnly('approval', true);

g_form.addInfoMessage('Self-approval is not allowed.');
} else {

g_form.setReadOnly('approval', false);

g_form.clearMessages();
}
})();