What is Shifts? | Good question, and a relatively simple one to answer. Shifts is a scheduling application for your firstline workers in collaboration with Microsoft Teams. Shifts is used to empower the firstline workers to collaborate using the capabilities of Microsoft Teams and the scheduling functionalities in Shifts. Our firstline workers can request open shifts, trade shifts with each other and/or offer their shift. And in the meantime, give us the tools we need to manage and distribute schedules to the firstline workers.
If you’re totally new to this solution you might not know that Microsoft previously had a similar solution called StaffHub. Microsoft StaffHub is by the time of me writing this, living on its final days, as it’s being retired on October 1st (2019) to make way for the new improved Microsoft Shifts.
Fair enough, what is the pricing?
If you’re currently paying for an Office 365 plan that includes Microsoft Teams, then you have access to use Shifts right now if you desire. This also includes educational and non-profit plans. The only plans that excludes Shifts is free versions of Microsoft Teams.
Sounds too good to be true.
You’re right, but it’s true!
How do we get started then?
I’m glad you asked! Let’s get into it.
Another post about the End user experience using Shifts.
This post will cover the following steps to get you started:
- Distributing the application
- Creating a team schedule
- Creating groups and assigning users
- Creating and assigning shifts
- Time clock feature
- Other functionalities
- Summary
*Prerequisite: A populated team in Microsoft Teams.
Distributing the application
If it’s your first time using Shifts, you might have a hard time finding it. It’s because it is hiding under the three dots in Teams. When you expand the mentioned three dots you will be able to see the application.

It can also be a good idea to edit the policies in the admin center for Teams to distribute Shifts and pin Shifts for the users.
In the Microsoft Teams admin center under Setup policies, we can see that there’s two default policies. We have the Global (Org-wide default) and we have the FirstLineWorker.

If we inspect the FirstLineWorker policy, we can see that Microsoft has prepared us with a policy to distribute.

We can create a new custom policy if we want, but for now I want to apply this policy. I’ll distribute the policy by using PowerShell, but you can apply them in the GUI if you’d like.
Now, lets create a team schedule.
Creating a team schedule
One thing to note is that you must be the owner of a team to be able to create a team schedule.
If you already have a team schedule created, you have to press the little “hamburger menu” at the top left corner, next to the schedule name. This is how you navigate between schedules and create new ones. Here we will get the option to create a new schedule. Note that there can only be one schedule per team.

After we have selected create on the team we’d like to create, we’ll have to set the time zone. The reason for this is basically because of the time reporting feature.


And that’s pretty much it! We have now created our own new scheduling team for Demo.
But now it’s time to populate the team schedule with people, groups and shifts.
Creating groups and assigning users
So now that we have created our team schedule it’s time to populate it.
In my example I will create two different groups which will be Warehouse and Shop. I simply press the add group button and write a suitable name.

But now when we have created our two schedule groups, we want to add some members to them. So, we press the people icon next to the group names.

Now we get the option to select people to add in this group.

As we can see we have the option to add people to this group. We also have the option to give this user owner. If we give my user Jack owner permission, he will then be able to create and update schedules for the whole team schedule. He will then also be an owner of the team. In this case, Jack will be managing shifts for his group, so we give him the owner status.
Now that we have populated our groups with the staff, we will have something like this.

That’s basically it, it’s not exactly rocket science. One thing to note here is the limitations to add multiple users to a group. In other words, you must add them one by one. At the time of writing this, there’s really no other way to add members in bulk. Which can be a pain if you must add a lot of users to a designated group.
(It’s possible to add multiple users to a schedule group with the Graph API, but for that to work the users must already exist in the schedule group. So, at the time of writing this, not very useful for adding totally new members)
Creating and assigning shifts
We have now come to one of the most vital parts of Shifts. Creating shifts.
Let’s begin with creating an open shift (the configuration of the shifts themselves don’t differ). We can do this in two ways in the GUI, either we select the day we want to create an open shift.

Or we select a random spot, create a shift, and toggle the little “Open shift” toggle inside of the shift.

We have a few customization options here, let’s break them down.
We can select what colors of the shift. Which can be useful for a lot of things, depending on how we use it. It can give us insight on what time frame the shift is, or maybe that this shift includes additional instructions for tasks. We can decide what type of color coding we want to use.
Because this is an open shift which means that users can request the shift, we can also define how many slots this shift has. Which means that the shift can be requested and added to more than one employee. This saves us a lot of time in that we don’t need to create multiple open shifts that are identical.
We then get the option to decide what date this shift will apply to, and what time frame the shift will cover.
We can then apply a custom label to our shift. Instead of having the time of the shift showing, maybe we want the shift to say what it is. In this scenario, maybe we want to shift to say, “Morning Shift”. This is more of a design, and preference option, like the color coding. But it can definitely be useful.
After that we have the option to select how much unpaid break time this shift has.
We can also add a custom note for our shifts, which can be useful for letting our shift-takers know additional information surrounding this shift.
Lastly, we have the shift activities. This enable us to add more information around the shift. And gives us the tools to specify what we want our worker to do under the shift. In my case I want my worker to begin his/her shift by sweeping the floor, then moving on to begin picking today’s orders, and so forth.

After we have created our shift, we have two options, either save it or share it. We’ll start by saving it.
After we have saved it, we can see that the shift has a little star or asterisk attached to it. That’s because we have not shared it with our team yet. This means that the team cannot see the shift until we share it. This simplifies things when we’re creating the shifts/schedules in the planning phase.

Let’s say that we feel ready to share our newly added open shift.
We then press the share with team button at the top right of the screen.

We will then get a new window.

Here we get some information about how many shifts we’re going to share, and we will be given the option to how we’re going to notify the users.
Here’s an important note when sharing. When you share open shifts with the option “Your entire team” all the users in the team schedule will get a notification and will be able to request the shift. That means that even the people in the Shop-group will be able to request this.
In this case om only going to notify affected team members. Which will give my users in the warehouse-group a notification that a new shift has been published, and they can request the shift if they wish.
Now that we have shared the shift, we can see that the star/asterisk has disappeared. Also, we can see that there’s 0 requests for this shift. And that this shift has 2 slots available to it.

Let’s see what happens when a user requests the shift.

We can handle our request in two ways. The first is that we press the clock icon with a question mark, called requests. Here’s the place where all our request will be stored e.g. if a user wants to swap a shift or request time off.
The second way is that we press directly on the request under the shift.

Here can we select a user and either approve or deny them the shift. We can also write them a message.

We can now see that the shift has now been assigned to Jack and there’s only one slot left on the open shift.
Let’s say we have a set of shifts that we want to apply to the rest of the week. We simply select the shifts with our mouse and use our good old friend CTRL-C + CTRL-V, and copy the shifts to any designated user or group.
Another way to copy schedules is by selecting the Copy schedule option on the top left.

Here we can select from what dates and to what dates. We can also include Shift notes, Time off, Activities and Open shifts. Pretty neat!
Time clock
Now that we have created and assigned our shifts, we want to be able to track that the users clock in for their shifts.
The time clock feature can be found under the settings blade.

Under settings we can also specify what time day is the start of the week. We can also manage the list of options for our time of requests and add our own custom requests.
And at the bottom of the settings we can find Time Clock.

We can decide if we want to add location detection to our time clock which will prompt the user to enable GPS when starting a shift. This feature is cool and all, but one small hiccup in my opinion is that you are still able to start your shift even if you’re not on location. Shifts will tell you that you’re not on location and the time report will say that the user did not start his/her shift on location. But we’ll get to that.

If we want to enable the location tracking, we must supply the time clock with coordinates. Microsoft gives us a link we can access to get a little help to set up coordinates.
After we enable time clock, our users will get a notification that time clock has now been enabled. The users will also get notifications when their shift is about to start and that it’s time to clock in.

We now get the options to export time reporting.
When we’re export the time reporting data, we can also specify the time frame.
Like I mentioned above, all the changes a user makes to his/hers shifts will be added in the excel export. The user can manually add shifts, delete shifts, edit shifts, and approve them.

Other functionalities
Daily Notes
We have a lot of other functionalities in Shifts like the option to add daily notes to the workers. All that’s needed is selecting the day we want to add the note and write something that’s suitable. Maybe someone from the head office is visiting, or daily goals, incoming shipments etc.

Requests, Copy, Print
Here we can view all requests that are ongoing or have been finished. We can also copy schedules, and if we desire print the schedule.

View Options
Day, Week, Month

Summary
Microsoft Shifts is a great product that is free to use if you have plans that cover Microsoft Teams (Not free plans). It gives us the capabilities we need to structure and plan schedules. And at the same time empower the workforce with tools like the ability to basically build your own schedule with open shift, swap and offer shifts, and set availability and request time off. And with Microsoft Teams as backbone also give us the collaboration tools with chat, calls, channels etc.
I would recommend anyone who has a subscription and needs a scheduling application to at least check out Microsoft Shifts. Because it’s worth it.
In the next post I’ll be covering the end user experience.