Some PDIs are currently unavailable, and PDI actions are paused. View the latest updates here. Read More

On-Call Schedule an absence and the Catch-all

Travis Michigan
Mega Sage

We are using ServiceNow On-call schedule for receiving calls and most of it functions as expected.  However when we have someone schedule an absence it does bypass them during the rotation through on-call members, but when it gets to the end we have a catch-all to notify everyone at once again.  During this portion it seems to ignore if someone has an absence scheduled.  Is there a way to bypass this without discontinuing use of the catch-all at the end that I'm missing?  We want to keep the catch-all but just have it bypass those who have scheduled at absence like the rotation through members does and I'm not seeing how/if we can set that.

1 REPLY 1

Vikram Reddy
Tera Guru

Hi @Travis Michigan ,

 

I've run into this exact behavior on a few On-Call Scheduling implementations, so it's worth separating two things that look like one bug.

 

The rotation walk (Level 1, Level 2, etc. through your roster) is schedule-aware: it checks each member's on-call schedule, including any excluded time, before deciding who to notify at that level. The Catch-all step in the escalation settings (Notify Individual, Notify Group Manager, or Notify All) is a different mechanism. Notify All is designed as a last-resort broadcast to everyone in the roster/group, not a schedule computation, so it doesn't automatically re-check each person's availability the way the rotation levels do. That's why you see absences respected during the rotation but ignored once it falls through to the catch-all.

Before assuming that's simply "by design" in your instance, check how the absence was actually entered. There's a documented known error where the on-call rota ignores a schedule entry (cmn_schedule_span) when it's typed as Time off, but honors it correctly when the entry is typed as Excluded: KB0552555. If your absences are being created through the "schedule time off" flow, some on-call code paths (capacity, notifications, catch-all) may not be reading them the same way the rotation logic does. It's worth checking the "Fixed In" field on that KB against your instance version, and testing whether re-entering the absence as an Excluded schedule entry instead of Time off changes the catch-all behavior.

If your absences are already typed as Excluded and the catch-all still blasts everyone, there isn't a native setting that makes Notify All schedule-aware while keeping it as a single "everyone" step. In that case the practical workaround is to stop relying on static group membership for that step: run a small scheduled flow or script that temporarily removes a member from the on-call group/roster used for the catch-all while their absence span is active, then adds them back once it ends. Since Notify All sends to whoever is currently in that group, this keeps them out of the blast without touching your rotation configuration or discontinuing the catch-all itself. If you want to compute who's actually eligible instead of managing membership directly, the OnCallRotation API (including the whoisoncall endpoint) can be used from a script to pull current on-call/available members and drive a custom notification action instead of the out-of-box Notify All.

 

Thank you,
Vikram Karety
Octigo Solutions INC