The Zurich release has arrived! Interested in new features and functionalities? Click here for more

Auto close a change request

Arifa1
Kilo Explorer

I have to auto close change requests if few conditions met. I have written a schedule job for the same as below. 

I have to query change requests which have work start and work end between planned start and planned end date. All these 4 fields are date/time fields. I have added a function chgwnd but it is not working as expected. Please assist.

autoclose();
function autoclose(){
var chg = new GlideRecord('change_request');
chg.addEncodedQuery('state=7^typeINNormal,standard,Vendor^priority=4^u_performance_rating=5^u_problem=NULL^short_descriptionNOT LIKEDecom^ORshort_descriptionNOT LIKEShut^ORshort_descriptionNOT LIKEunmount^ORshort_descriptionNOT LIKERemov^descriptionNOT LIKEDecom^ORdescriptionNOT LIKEShut^ORdescriptionNOT LIKEunmount^ORdescriptionNOT LIKERemov^u_state_reason=NULL^work_endRELATIVELT@dayofweek@ago@2');
chg.query();
while(chg.next()){
var df = causedbychange(chg.sys_id);
var dc = diffcheck(chg.start_date, chg.work_start);
var cw = chgwnd(chg.start_date, chg.end_date, chg.work_start, chg.work_end);
if(df == false && dc <=15 && cw == true){
chg.close_notes = 'Good to close, Auto Closed.';
chg.state = '8';
chg.update();
}
}
}

function causedbychange(chgnum){
var ans;
var inc = new GlideRecord('incident');
inc.addQuery('caused_by',chgnum);
inc.query();
if(inc.next()){
return true;
}
else{
return false;
}
}

function diffcheck(pd,ws){

var dateString1 = new GlideDateTime(pd);
var dateString2 = new GlideDateTime(ws);
var diffSeconds = gs.dateDiff(dateString1, dateString2, true);
diffMins = diffSeconds/60;
return Math.round(diffMins);
}

function chgwnd(ps,pe,ws,we){
var changeRequestStartDate = ps;
var changeRequestEndDate = pe;
var startDate = ws;
var endDate = we;
if (!areDatesWithinRange(ps, pe, [ws, we])){

return false;
}
else
{
return true;
}
}

2 REPLIES 2

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

you can form the query from the table list and use that as encoded query

Regards
Ankur

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

Hi Ankur,

 

I am unable to add condition as such. Please help.

 

Work start and work end date/time should be between planned start and planned end date/time.

 

Regards,

Arifa