Everything You Ever Wanted to Know About Teams Holidays

Can you believe that it’s already the last day of October and that so far, I’ve only published one article this month? And it wasn’t even…

Can you believe that it’s already the last day of October and that so far, I’ve only published one article this month? And it wasn’t even about Teams…

Let me change that. We’re almost at the end of the year already. You know what that means, right? Holidays! But before we can go on Holiday we need to add or update them on our Teams Auto Attendants. That’s exactly what I’m going to write about today.

Best Practices

Beware, these are not best practices which are documented anywhere officially. The recommendations outlined in this blog post are based on my learnings from working with Teams Auto Attendants in the past years.

When you start planning or configuring Holidays in Teams, the first question you should ask yourself is the following:

Do you want to treat every Holiday the same, or do you want to treat some holidays differently?

This applies to both actions and greetings. The greeting, of course, is the message which will be played back when somebody calls you on a Holiday. The action is what the Auto Attendant will do in terms of call routing on that Holiday. Examples are, disconnect, forward to voicemail, a person in your organization or to an external number.


Depending on the answer to our core question, you either need one generic greeting which applies to all Holidays, or you need a different greeting for each or at least for some Holidays.

A reason for an individual greeting per Holiday could be that you want to be very specific and include information when your company will resume business as usual.

If you opt for a generic greeting, I always tell my customers that their greeting should mention something like this.

Thank you for your call. Due to a Holiday, our office remains closed for today. Please try us again on the next working day.

The key take-away here is to use working day rather than tomorrow or the next day, since this could also be a Saturday or a Sunday.


An action is where you configure what should happen to inbound calls which are received on Holidays. These are configured inside a so-called holiday call handling.

In TAC, actions are called Call routing options. In PowerShell they’re referred to as Action.


Please note that the settings described in this article only apply to Auto Attendants. It’s currently not possible with Teams native features to configure a global schedule for all of your company’s numbers or to configure Holidays for Teams Users. To achieve something like this, you need to use Direct Routing and an SBC which offers time-based routing, like Anynode does for example.

Again, if you treat all your Holidays the same, for example play back a message and then forward to voicemail, your configuration will be much easier to build and maintain. You will only need to update the schedules once a year. There’s no need to touch the call handlings again with this approach.

Holiday Lists

The third thing we need is a Holiday list. The terminology might be a little confusing here. In TAC they’re simply called Holidays. In PowerShell they’re called Schedules.

If we add a new Holiday in TAC, it uses the singular form Holiday, even though this can have multiple entries. This essentially makes it a Holiday list from my point of view.

While Holidays can be created from inside the configuration menu of an Auto Attendant, these lists are actually stored outside of an Auto Attendant. You can find them in Teams Admin Center under Voice\Holidays.

A Holiday list can be linked to multiple Auto Attendants. Because of that, I recommend to always edit Holiday schedules under Voice\Holidays and not directly on the Attendant itself. This should minimize mistakes and confusion.

I don’t recommend including the year into the schedule’s name. The year is already included in each entry. Besides that, it’s also highly likely that you will have a Holiday for New Year’s Eve which overlaps into the next year which kind of messes with the naming scheme.


A Holiday list can have up to ten entries. And an Auto Attendant can have up to 20 Holiday call handlings. While I haven’t verified this, it means that in theory, you should be able to have a maximum of 200 Holidays per Auto Attendant, assuming that each entry only spans one day. Only having 165 working days, what a life that would be.

Understanding The Dates

A Holiday consists of a start and end date and a start and end time. This means that we can also configure partial Holidays which for example start at noon or later. Our Auto Attendant might have business hours which allow calls to get through until 5 p.m. If we configure a Holiday to start at 4 p.m. we can close the lines 1 hour earlier without touching our business hours.

The end date and time is usually 12:00 a.m. of the following day. So, if we want to close the Auto Attendant for the entire day on October 31st, we configure the Holiday like this:

Start: 31.10.2022 12:00 AM
End: 01.11.2022 12:00 AM

This is documented and recommended by Microsoft.

When the new day begins, the Auto Attendant will go back to evaluating business hours as usual.

It’s important to point out that Holiday lists do not store any information about time zones. Time zones are configured on Auto Attendants. Remember that the same list can be associated with multiple Auto Attendants. This allows you to have consolidated Holiday lists which automatically adjust to the relevant time zones based on the Auto Attendant configuration.

Configuring Holidays on an Auto Attendant

If you create a new call handling for an Auto Attendant, you need to select a Holiday (list/schedule) from your Holidays. This again means that if you want to have an individual greeting or action per Holiday, you can only have one Holiday per list. Thus, you need to take the limit of twenty call handlings per Attendant into consideration.

If you need to configure more than twenty call handlings, you will need to update the configuration sometime during the year. Without removing call handlings of past Holidays, you won’t be able to add new ones for the rest of the year.

When I built my first Auto Attendants many years ago, I used to include the year in the name of the call handling. This was an awfully bad idea, and I learned my lesson. I had to update all the schedules and all call handling names.

Because of the administrative overhead, I usually recommend my customers to have one list for dynamic Holidays and one for fixed Holidays. Since I came up with these terms on my own, I’m not sure if they’re popular. But they should be self-explanatory. Dynamic days are the ones which occur e.g., every third Monday of April. Fixed days are the ones which fall on the same day each year. E.g., Fourth of July. Because there are usually more than ten Holidays in a year, we need two lists anyway. Splitting between dynamic and fixed days seemed like the most obvious way to me.

If you have more than ten fixed or dynamic Holidays, you can just create a second list and add a call handling with the same settings for those days as well. There’s no way around that.

Editing a Holiday will open its own sub menu which has a Save button. Never forget to also click Submit on the Auto Attendant after you have saved a Holiday call handling. If you don’t save the Auto Attendant as well, changes to your Holidays won’t be saved.

Some Exceptions

If your company also has annual Holidays, which typically last one or two weeks, I suggest creating a separate list and call handling for these weeks.

You can create one entry for the entire timespan and configure a custom greeting because it isn’t obvious when the next working day will be.

Also, you can’t create multiple call handlings with the same start time on the same Auto Attendant. However, it is possible to create Holidays, where one Holiday occurs during another, multi-day Holiday. To test this, I’ve created the following Holidays.

The date 31.10.2022 is also in the range of the following Holiday which starts one day before, on 30.10.2022.

Next, I created another Holiday which wraps around both previous Holidays.

I then created a call handling for each of them.

To find out, which call handling is effective, I called my Auto Attendant. Because I’ve configured a different greeting for each of them, I was able to easily determine which one was active.

It turns out, that Teams is smart enough to always prioritize the one which is the most precise. In this case, it’s the one which only includes a single day.

To be absolutely sure, I even removed the other two call handlings and saved the Auto Attendant. I then added them again to see if the order in which they are configured makes a difference, but it doesn’t.

Im not sure if this will be a feature that anyone will ever need but it’s still good to know. In theory we could set up a Holiday for an entire week but still have a different greeting and/or action on e.g. Wednesday if we configure a separate Holiday for it.

Further Reading

If you’ve found these insights about Auto Attendants and Holidays useful, please also see this article, where I explain how the entire process of updating (not creating) schedules can be outsourced to users without granting them Teams Administrator rights.

And of course, Holiday Tables which are configured on an Auto Attendant can also be visually displayed using the M365 Call Flow Visualizer.

Based on feedback from the community, I’ve added the name of the call handling and the linked Holiday list to the diagram for more clarity.

You can see that there’s a name for both the Call Handling and the linked Holiday Schedule in the flow chart**.**

Final Note

In Teams Admin Center, Holidays are chronologically configured and displayed after the business hours have been configured. But in practice, any Holiday gets prioritized over business hours. The M365 Call Flow Visualizer correctly represents this in its diagram outputs.

I hope that this article helps you prepare for the Holidays so that you can leave for the Holidays with the peace of mind you need.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Hosted on GitHub Pages
Built with Hugo
Theme Stack designed by Jimmy