
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-02-2018 01:19 PM
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
Solved! Go to Solution.
- Labels:
-
Best Practices
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-08-2018 02:24 PM
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;
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-02-2018 02:27 PM
Yes, it is,. let me know if any help with scripting is needed.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-02-2018 02:40 PM
Yes Please !!!!!
And Thank You for your scripting help - still weak in this area, getting better, but weak lol
How close was I on finding the correct criteria on the issue?
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-02-2018 03:08 PM
The table name to fetch the oncall member is cmn_rota_member
How to schedule a scheduled job only on weekdays?
Following would be the scheduled job
Condition script
answer = script();
function script() {
returnFlag = false;
var gdt = new GlideDateTime();
var dow = gdt.getDayOfWeekLocalTime();
if (dow < 6) {
returnFlag = true;
}
return returnFlag;
}
Run this script:
assinOnCall() ;
function assinOnCall() {
var query = 'assigned_to=NULL';
var grInc = new GlideRecord('incident');
grInc.addEncodedQuery(query);
grInc.query();
while (grInc.next()) {
var group = grInc.assignment_group;
grInc.assigned_to = getOnCall(group);
grInc.update();
}
function getOnCall(groupId) {
var returnAssignee = '';
var query = 'roster.rota.group=' + groupId +'^roster.active=true^memberISNOTEMPTY';
var grRota = new GlideRecord('cmn_rota_member');
grRota.addEncodedQuery(query);
grRota.query();
if(grRota.next()) {
returnAssignee = grRota.member + '';
}
return returnAssignee;
}
}
Assumptions made, there would be only one active ROTA per group.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-05-2018 07:37 AM
Anil,
In Testing the only Issue is it's not pulling the current on-call person - it is pulling a person and updating the Incident just not the correct person.
Any idea's?
Love the script this is going to help us greatly.
Thank You again
Mark