Project for the web “out of the box” contains a default calendar. When you create a new schedule through the website, https://project.microsoft.com, you will be presented with a default, but what does that default calendar contain? You may also be wondering if there any way to alter that default or provide your schedule with alternative calendars for specific purposes?
In Microsoft Project, any scheduler could alter the default calendar or create new calendars through the “Change Working Time” menu located on the Project tab of the ribbon.
Sadly, the location of the calendar and its settings in Project for the web (P4W) is more obscure. In this article, I would like to lift the veil and provide more insight into P4W’s calendar and what they can do for you.
Two Methods of Approaching Project for the web
The previously mentioned website is not the only way to start creating projects with Project for the web. This location is called Project Home and will contain projects from different sources within your organization. It can, for instance, present Project Online projects in addition to Project for the web schedules.
It’s important to understand that Project for the web is created with a Dataverse backend. More on the Dataverse later, but it is important to know that we can access Dataverse tables through the website, https://make.powerapps.com. This is our second entry point for Project for the web schedules, and this approach has a few added features that are not available through the Project Home method of entry.
One of the core features of this Project app is the ability to add more detailed information to the schedule and add additional calendars and resources for the organization.
How to Find the Default Work Template Calendar
In the Project app, we see a table of content to the left of the screen. This is the sitemap in the model driven Power App. Sitemaps contain areas, groups, and subareas. Navigating the different areas in an app can be done from the far bottom of the sitemap. The Project app contains three areas: Projects, Settings, and Training.
The default work template calendar, and any additional calendars, can be found in the Settings area. Inside the General group, go to the Calendar Templates subarea.
Calendars inside the app have a confusing alternative name, Work Hour Templates. The name does; however, describe the purpose of the calendars. The calendar needs to reflect the work hours we have available for a schedule or individual resources on allocations.
A Closer Look at the Default Work Template
Selecting the Default Work Template from the Settings menu opens the Dataverse record for our default calendar.
It doesn’t reveal a lot from its General tab. We can see a name and description (describing the template as Default and working time, 9 A.M. to 5 P.M.), but not much more. The related tab does; however, show us which Projects, Resources, and Requests are associated with the Calendar. This can be useful for a closer analysis of the organization, but we will have to look in a different place to see the actual calendar in more detail.
Navigate back to the Projects area and open the Resources subarea. Note that the only way to see calendars is through the resource records in Project for the web. For this article, I created a new generic resource called the “Default Work Template Resource.” I provided it with my time zone (GMT+01:00), which changed the time zone of the default unintentionally.
The resource record has two tabs: General and Work Hours. When viewing the Work Hours, we get a better understanding of the calendar as it is intended.
We are presented with a calendar page on month view. When selecting any of the blue “Working” items, we see a detailed card describing the item. We notice it’s an event and part of a series. In the card, there is also a description of the duration of each event and the option to either Edit or Delete the event and/or all its occurrences.
Creating an Alternative Calendar
Now that we know where to find the default calendar, we can start creating our own calendars. To do this, we first need to create a generic resource with the desired time zone. For his article, I also created the “MPUG Monday Non-Working Time” resource.
After creating and saving the resource, navigate to the Work Hours tab and start modifying the resources’ work schedule. The resource calendar change in this example is easy, we just remove the Monday value in the recurrence section of the “Working” event.
After saving the calendar recurring item, we are presented with a different view. Mondays don’t hold a “Working” item anymore:
We can now build the actual calendar, after saving the resource and navigating back to the Calendar Templates Subarea of the Settings area.
Create a new template by clicking the New button. If you don’t see a new button, this may be due to Dataverse permissions, which we will discuss this later in the article.
In the new template form, take a moment to notice the Template Resource value. This is a look up to the resources in your Project for the web solution. Below, we can find the recently created MPUG calendar resource.
After clicking save and close, the new template can be selected in schedules, both from the Project Home interface, as well as the make.powerapps website.
We can also see that the calendar has taken effect by looking at the end date of our schedule.
Now, just like the calendars in MS Project, we can select a specific calendar for specific resources. What we currently cannot do is select a calendar for an individual task. This feature isn’t available in Project for the web.
You may have some additional questions, as I did: What happens if I change the calendar on the generic resource record? Will it affect the associated calendar and the related schedules, as well?
Well, it’s complicated. I removed Tuesday as a workday and saved the calendar, but nothing seemed to have taken effect. After reaching out to my fellow MVP and Dynamics 365 specialist, Antti Pajunen, I was able to solve this issue.
The calendar template is a copy of the resource work hours. That means that there is no direct sync between the calendar and the resource work hours as there was in the Project desktop or online versions. To change the calendar template work hours, we need to save the calendar template. Not once, but twice. These are the steps I took to make this change:
On the MPUG Calendar template record, I went through the following steps:
- Removed the Template Resource
- Saved the record
- Added the “MPUG Monday Non-Working Time” resource again
- Saved the record again
For the calendar to take effect within my project, I needed to switch calendars here, as well! Back to default, and to the MPUG example again!
Be aware that the first (and second) save is crucial for the change to take effect. The first save clears the work hour values on the calendar, and the second re-populates the calendar with the change.
Here is the MPUG example result :
What About Permissions?
Now that we know that Project for the web stores records in the Dataverse, it should not come as a surprise that we require Dataverse permissions.
By default, there are three Project for the web related resource roles available. These are the Project User, Project System, and Project Team Member. In the default scenario; however, if you aren’t a system administrator you will not be able to create new calendars. This is because the default project related roles do not have the required permissions to create them.
What we are looking for is called the “Work Template” custom entity. To add the permission to create new calendars, you will need a IT administrator to edit Project for the web roles. The permissions that can be granted to roles are: Read, Write, Create, Delete, Append, Append to, Assign, and Share. For any user of the application I would advise adding the Read and Append to permissions (on organizational level). For any PMO or administrator of the system, I would advise the Read, Write, Create, Delete, and Append permissions.
Here is an example of a default user trying to access the calendar templates:
The screenshot tells us that the Project User and the Project Team Member roles both lack the option to create and write data on the Calendar Template entity.
None of the default Project for the web resource roles seem to have the required permissions. To solve this problem, I created a new role called the Project User (Calendar test). It has the following permissions for the Work Template custom entity, and as you can see below, grants the user the permission to create new calendars.
I hope that the above article helps you work with calendars in P4W. Calendars have been a topic of debate for quite some time, and there are some good sources of information available on the web pertaining to this topic. I didn’t find a comprehensive guide to the steps above, which is why I felt the need to write this article and share it with the broader MPUG community. Other useful resources you might want to check out; however, are:
- Calendars in Microsoft Project for the Web (YouTube video)
- Schedule modes and task and resource usage (Technical article)
For more on using Project for the web, I hope you’ll join me for a three-part course scheduled in January of 2023. The link to register for the first live event is here. Comments welcome below.