Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Update Incidents where the Assigned to is empty due to no On-Call person was Scheduled for the Assignment Group

Mark Lanning
Tera Guru

Issue -

Due to the On-Call Calendar Schedule being setup for 8 to 4:30 with someone scheduled to assign a person to an Incident

The only option for the On-Call Rota is when an incident is create outside a schedule with no Assigned To is to update the Assignment Group and leave the Assigned to empty.

The On-Call Rota will not rerun again the next business day to find those incidents that came in after hours

So we are looking to create a Scheduled Job to run at 8:00 am to find any Active Incidents with the Assigned to is empty then update the Assigned to with the Current On-Call Person for that Assignment Group

Would have to Query the Incident and the cmn_rota Tables

From the Incident table would have to guery any active is true and assigned_to is empty incidents - Would think we want to return Number and Assignment Group

From the Rota cmn_rota table would need to query the matching assignment group then return the current on-call rota member

Would then need to have the current on-call rota member placed in the incident assigned to field

This in turn would update Incidents where the Assigned to was empty with the current On-Call person for that Assignment Group on the next business day.

And to add even more twist - Can it be scheduled to only occur Monday thru Friday would want to exclude weekends

Is this something that can be done?

Mark

1 ACCEPTED SOLUTION

Anil,


You are awesome!


Thank You again for your Help.



Final Script that work great.



assinOnCall() ;



function assinOnCall() {


var query = 'assignment_groupISNOTEMPTY^assigned_toISEMPTY';


var grInc = new GlideRecord('incident');


grInc.addEncodedQuery(query);


grInc.query();


while (grInc.next()) {


var group = grInc.assignment_group.sys_id + '';


var assigned_to = getOnCall(group) + '';


if(assigned_to != '') {


grInc.assigned_to = assigned_to;


grInc.update();


}


}


}



function getOnCall(groupId) {


var returnAssignee = '';


var rota = new OnCallRotation() ;


var hasRota = rota.who(groupId) + '';


if(hasRota == 'true') {


returnAssignee = rota.getPrimaryUser();


}


return returnAssignee;


}


View solution in original post

23 REPLIES 23

Mark Lanning
Tera Guru

Sound Good - I created me a Slack Account - I'm CST so I will meet you around 2:00 CST


Thank you again for going well beyond on help me with this.


Dear Mark,



The correct script we used.



assinOnCall() ;




function assinOnCall() {


var query = 'assignment_groupISNOTEMPTY^assigned_toISEMPTY';


var grInc = new GlideRecord('incident');


grInc.addEncodedQuery(query);


grInc.query();


while (grInc.next()) {


var group = grInc.assignment_group.sys_id + '';


var assigned_to = getOnCall(group) + '';


if(assigned_to != '') {


grInc.assigned_to = assigned_to;


grInc.update();


}


}


}




function getOnCall(groupId) {


var returnAssignee = '';


var rota = new OnCallRotation() ;


var hasRota = rota.who(groupId) + '';


if(hasRota == 'true') {


returnAssignee = rota.getPrimaryUser();


}


return returnAssignee;


}


Anil,


You are awesome!


Thank You again for your Help.



Final Script that work great.



assinOnCall() ;



function assinOnCall() {


var query = 'assignment_groupISNOTEMPTY^assigned_toISEMPTY';


var grInc = new GlideRecord('incident');


grInc.addEncodedQuery(query);


grInc.query();


while (grInc.next()) {


var group = grInc.assignment_group.sys_id + '';


var assigned_to = getOnCall(group) + '';


if(assigned_to != '') {


grInc.assigned_to = assigned_to;


grInc.update();


}


}


}



function getOnCall(groupId) {


var returnAssignee = '';


var rota = new OnCallRotation() ;


var hasRota = rota.who(groupId) + '';


if(hasRota == 'true') {


returnAssignee = rota.getPrimaryUser();


}


return returnAssignee;


}