Scheduled JOB failed

Kamali Selvaras
Tera Contributor

I have created a schedule Job to auto close change request.

when all the change task(type = implementation) associated to the change request is closed successfull, within the end date, then it should auto close the change request after 5 days.

 

var change_request = new GlideRecord("change_request");
var pn = 5;
change_request.addEncodedQuery('type=Standard^sys_domain=93945d24134362006f37b6d96144b076');
change_request.addQuery('end_date', '<=', gs.daysAgo(pn));
change_request.addQuery('state', '6');
change_request.addQuery('approval', 'approved');
change_request.query();
while (change_request.next()) {
var change_task = new GlideRecord("change_task");
change_task.addQuery('change_request', change_request.sys_id);
change_task.addQuery('active', 'false');
change_task.addQuery('u_type', 'Implementation');
change_task.query();
var allTasksAreImplementation = true;
while (change_task.next()) {
if (change_task.closed_at < change_request.end_date) {
change_task.addQuery('state', '3');
gs.log('Kamali Auto closure 2' + change_request.number);
} else {
allTasksAreImplementation = false;
gs.log('Kamali Not Auto closure' + change_request.number);
break;
}
}
if (allTasksAreImplementation) {
change_request.state = '7';
change_request.u_sub_status = 'Successful';
change_request.comments = 'Change is automatically closed after 5 days.';
change_request.active = false;
change_request.update();
}
}

 

Which will run daily at 1am,

 

it looks like the intended output is failed, instead if closing the only the matching change request it has closed everything despited of what conditions it is.

 

Can someone look into it and check if this can be fixed.

1 REPLY 1

Brad59
Giga Guru

On this line
change_task.addQuery('change_request', change_request.sys_id);

Try
change_task.addQuery('change_request', change_request.sys_id.toString());

I have seen this fix issues several times in queries. 

 

And here
if (change_task.closed_at < change_request.end_date) {
try converting the dates to numeric values before comparing them in an if condition.
if (change_task.closed_at.getNumericValue() < change_request.end_date.getNumericValue()) {