How to abort the action in Business rule

Santoshi5
Giga Guru

Hi SD,

I need  help in Business rule , My requirement is whenever Approver click on Approve button before approving the request current action date and Due date of RITM form should be check and condition is if current updating date  is greater than Due date) then its abort the approving action .

I have created business rule its showing error but request getting approve..

Business rule:before-Update

when to run: state is requested

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

// Add your code here

var now = new GlideDateTime();// current date time
gs.addInfoMessage('current updated date..'+now);
var duedate= new GlideDateTime(current.sysapproval.due_date);
gs.addInfoMessage('.due date is ....'+duedate);

if(now.getDate() > duedate.getDate()){
current.setAbortAction(true);
//gs.addErrorMessage('please select the future dates');

}

})(current, previous);

 

please help me in the script .

 

 

 

1 ACCEPTED SOLUTION

Thanks Ashutosh,

 

I have changed in Approval Ui Action and its working now hope this will help to other(i am applying this script only if Group SLA is 6 this field is available on RITM form )

UI Action -Approval, table- sysapproval_approver(OOB button)

script

if(current.sysapproval.u_group_sla=='6')
{
var now = new GlideDateTime();// current date time
gs.addInfoMessage('current updated date..'+now);
var duedate= new GlideDateTime(current.sysapproval.due_date);
gs.addInfoMessage('.due date is ....'+duedate);

if(now.getDate() > duedate.getDate()){

gs.addErrorMessage('please select the future dates');
current.setAbortAction(true);

}
else
{
current.state='approved';

current.update();
new ApprovalUserFeedback().approved(current);
}

}

else{
current.state='approved';

current.update();
new ApprovalUserFeedback().approved(current);
}

 

 

 

 

View solution in original post

13 REPLIES 13

Hi Anukar i tried with both option but no luck its not aborting to approve.

could you please confirm why we you have added condition when state is approved ?

 i have to run this BR when state is Requested only when approver trying to approve the request due date should be future dates only.

Hi Ankur it is working ,

But when i click on Approve its showing error but Approve button is disappearing and state changes to Approved on form when again i reload form request still showing requested and Approval Button .

please confirm why this is hiding while click on Approve button any suggestion would be helpfull.

 

Hi Santoshi,

That is the default behaviour

User clicks the button; it sets value as Approve and just before saving the before BR runs and stops user

User need to refresh the form to see the previous values

Regards
Ankur

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

Thanks Ankur for your info, Can we stop that behavior?

Hi Santoshi,

I don't think so because you cannot use gs.setRedirect() in combination with abort action

refer below

https://hi.service-now.com/kb_view.do?sysparm_article=KB0539962

Regards
Ankur

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