On-Call Scheduling – Overlapping Shifts and Dynamic Escalation

RajeshNutha
Giga Contributor

Hi Team,

I have an On-Call Scheduling requirement in ServiceNow for Company XYZ.

We have 3 shifts in US Eastern Time:

  • 6 AM–2 PM
  • 2 PM–10 PM
  • 10 PM–6 AM

For each shift:

  • Person A: Sunday–Thursday
  • Person B: Tuesday–Saturday

So, Tue–Thu both people are on call, while Sun/Mon only A and Fri/Sat only B.

Initially, I created 3 shifts covering Sunday–Saturday with Primary and Secondary members. However, the Secondary member was treated as scheduled for the entire week.

So I changed the design to 6 separate shifts. For example:

  • 6 AM–2 PM → Person A → Sun–Thu
  • 6 AM–2 PM → Person B → Tue–Sat

I followed the same approach for the other two shifts. This fixed the calendar coverage and overlap, and I enabled Allow Shift Schedule Overlap.

The remaining issue is escalation. I need:

  • Non-overlap day → Person A → Manager
  • Overlap day → Person A → Person B → Manager

I tried manually adding Person B to the escalation path, but then Person B gets notified even on days when they are not scheduled. I also tested Rotate through member + Primary, but it did not give the expected result.

 

My question: Is the 6-shift approach correct? If yes, what is the recommended OOTB ServiceNow configuration to dynamically escalate to the other currently on-call person without hard-coding them, while ensuring off-day users are not notified?

Thank you.

1 REPLY 1

kmohammed
Tera Guru

Hi Rajesh,

 

Yes, the 6-shift design is the correct OOTB approach here. A roster/shift defines one repeating pattern, and a member added as Primary/Secondary in a single roster is treated as part of that roster for the whole pattern — which is exactly the problem you hit first. Different weekday coverage (A Sun-Thu, B Tue-Sat) needs separate shifts, and overlapping shifts are supported in one schedule when you enable Allow Shift Schedule Overlap, as you have done.

 

For escalation, the key rule is: make the escalation schedule-aware, not person-based.

 

1. Do not add Person B (or the Manager) as a named user in the escalation path. A named target is always notified, regardless of the calendar — that is why B was paged on days off.

 

2. Use the group's On-Call Escalation Policy and build the steps so each step escalates to whoever is on call for that roster at that moment, rather than to a fixed user. On an overlap day (Tue-Thu) the second roster has someone on duty, so the step resolves to B and B is notified. On a non-overlap day (Sun/Mon for B, Fri/Sat for A) that roster has nobody on duty at that time, so there is no static person to notify and the policy moves to the next step — the Manager.

 

3. Make the final step the group Manager by role/reference (group manager), not a named individual, so the chain still works when the manager changes.

 

4. Keep Rotate through members / Primary settings inside each individual shift only for ordering members within that shift — as you found, it does not make escalation dynamic across shifts.

 

Test it with the on-call calendar/escalation preview for both a Tuesday and a Sunday before going live: Tuesday should resolve A -> B -> Manager, Sunday should resolve A -> Manager with B absent from the chain. If a step ever resolves to a named off-duty user in the preview, that step is still person-based and needs to be changed to the roster/on-call target.