Auto close a change request
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2022 12:05 AM
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;
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2022 12:25 AM
Hi,
you can form the query from the table list and use that as encoded query
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2022 12:33 AM
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