Approval Auto Rejection Script

Nikita50
Tera Expert

Per current setup all the requests are auto rejected with 8 days except for one group lets name is A.

Script is already in place of it.

New requirement is to set exception for three group, lets name them A,B,C

 

How to update existing script to add B, C also.

 

Current script:

var ca = new GlideRecord('sysapproval_approver');
ca.addQuery('state', 'requested');
ca.addQuery('sys_created_on', '<', gs.daysAgo(8));
    //Update: Adding condition 
var cancelOR = ca.addQuery('group.assignment_group.name', '!=', 'A');
cancelOR.addOrCondition('group', '');
1 ACCEPTED SOLUTION

SN_Learn
Kilo Patron
Kilo Patron

Hi @Nikita50 ,

 

Please replace the code as below and try

var ca = new GlideRecord('sysapproval_approver');
ca.addQuery('state', 'requested');
ca.addQuery('sys_created_on', '<', gs.daysAgo(8));
    //Update: Adding condition 
// **Update the below line to addEncodedQuery condition**
var cancelOR = ca.addQuery('group.assignment_group.name', '!=', 'A');
//Updated Query
var cancelOR = ca.addEncodedQuery("group.assignment_group.name!=AORgroup.assignment_group.name!=BORgroup.assignment_group.name!=C");
cancelOR.addOrCondition('group', '');

 

Please Mark Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.

----------------------------------------------------------------
Mark this as Helpful / Accept the Solution if this helps.

View solution in original post

8 REPLIES 8

Thanks for providing the code:
I believe you are missing the group.assignment_group.name here

var cancelOR = cancelApprovals.addEncodedQuery("assignment_group.name!=A^ORassignment_group.name!=B^ORassignment_group.name!=C");

 

Updated Code:

var cancelApprovals = new GlideRecord('sysapproval_approver');
cancelApprovals.addQuery('state', 'requested');
cancelApprovals.addQuery('sys_created_on', '<', gs.minutesAgo(2));
   

var cancelOR = cancelApprovals.addEncodedQuery("group.assignment_group.name!=A^ORgroup.assignment_group.name!=B^ORgroup.assignment_group.name!=C");
cancelOR.addOrCondition('group', '');
    //END Update
var caOR = cancelApprovals.addQuery('sysapproval.sys_class_name', 'sc_request');
caOR.addOrCondition('sysapproval.sys_class_name', 'sc_req_item');
caOR.addOrCondition('sysapproval.sys_class_name', 'sc_task');
cancelApprovals.query();
while(cancelApprovals.next()){
   cancelApprovals.state = 'rejected';
   cancelApprovals.comments = 'cancel.';
   cancelApprovals.update();
}
----------------------------------------------------------------
Mark this as Helpful / Accept the Solution if this helps.

A,B,C are replaced with group names in encoded query but it is not working.

 

i tried to use below syntax as well but it is working for first condition only.

 

var cancelOR = cancelApprovals.addQuery('group.assignment_group.name', '!=', 'A');
cancelOR.addOrCondition('group.assignment_group.name', '!=', 'B');
cancelOR.addOrCondition('group.assignment_group.name', '!=', 'C');
cancelOR.addOrCondition('group', '');

Hi @Nikita50 ,

 

Could you please try in the background script with below and check whether it is printing the log or not? This will help to understand where it is getting stuck

var cancelApprovals = new GlideRecord('sysapproval_approver');
cancelApprovals.addQuery('state', 'requested');
cancelApprovals.addQuery('sys_created_on', '<', gs.minutesAgo(2));
   

var cancelOR = cancelApprovals.addEncodedQuery("group.assignment_group.name!=A^ORgroup.assignment_group.name!=B^ORgroup.assignment_group.name!=C");
cancelOR.addOrCondition('group', '');
    //END Update
/*var caOR = cancelApprovals.addQuery('sysapproval.sys_class_name', 'sc_request');
caOR.addOrCondition('sysapproval.sys_class_name', 'sc_req_item');
caOR.addOrCondition('sysapproval.sys_class_name', 'sc_task');*/
cancelApprovals.query();
while(cancelApprovals.next()){
   gs.info('Printing1');
}

 

----------------------------------------------------------------
Mark this as Helpful / Accept the Solution if this helps.

Community Alums
Not applicable

Hi @Nikita50 ,

 Can you please try below script may be this will help you 

var ca = new GlideRecord('sysapproval_approver');
ca.addEncodedQuery("state=requested^sys_created_on<javascript&colon;gs.dateGenerate('2024-04-10','00:00:00')^group.assignment_group=8a4dde73c6112278017a6a4baf547aa7^ORgroup.assignment_groupISNOTEMPTY");

ca.query();
gs.print("CC = "+ ca.getRowCount());
while(ca.next()){
	ca.state = 'rejected';
	ca.update()
}

 

I'm using group as Software

 

Please mark my answer correct and helpful if this works for you

 

Thanks and Regards 

Sarthak