Edited on: March 19th 2021.
Project for the web was released in October 2019. It runs on Common Data Service, which opens up loads of possibilities for customizing and extending Project. Out-of-the-box, Project offers two different user experiences: An Office UI experience as well as a Model-driven Power Apps experience, based on Unified Interface. Custom Canvas Power Apps can naturally also be built, as long as certain limitations around creating, updating and deleting records are taken into consideration. More on limitations later on this post.
The Office UI experience is what I would call a go-to experience for the majority of Project users from project team members to project managers. The Office UI experience is extremely simple and fast to use. Comparing Project’s grid and timeline to D365 PSA’s custom control based WBS, the difference is immense. The Project Task Scheduling Engine is also super fast.
From a customization point of view the story of Project’s Office UI is, at the moment, short and bitter. Customizing the OOTB UI isn’t supported. Office UI Fabric React opens up possibilities for custom development but before you get your hopes up, you might want to read on to know how the current in-market, Minimum Viable Product version of Project, is locked down.
As Project for the web runs on Common Data Service, one basic customization scenario would be to use some of the views and fields in CDS on the Office UI. It remains to be seen what the product team will eventually let us do on the Office side. In the meantime, be sure to vote up an idea on UserVoice for custom fields in Project.
Model-driven apps on Unified Interface
Project for the web comes with a Model-driven app that runs on Unified Interface. OOTB, its sitemap is kept very simple and the majority of entities we’ve seen in D365 PSA are not visible. The good thing is that as everything is on CDS, the sitemap can be customized. New Model-driven or Canvas apps can also be created if you want to leave the OOTB app alone.
Customizing and extending Project
Let’s look at what’s good, what’s restricting and what’s worrying when it comes to customizing and extending Project for the web. As I’m from the world of Dynamics 365 and Power Platform, there’s little to no advice I can offer when it comes to Office UI Fabric React. That’s why my approach is CDS and Power Platform centric. As you’re customizing Project, remember that solutions should be used for all customizations.
Customizing and extending Project – What’s good
Project can be customized just like any other app in a CDS environment. The whole backbone of CDS is available to us. There are many possibilities to extend Project to cover custom entities like RAID logs, Trainings or event Inspections, if that’s something your company needs Project for the web for. Use cases and scenarios are pretty much endless. The customization experience is the same as with any other native CDS or Dynamics 365 environment.
CDS offers a ton of features and a ton of security, in addition to the Office 365 Groups concept used in Project for the web. Customizing and extending Project for the web is possible with all the tools that are available on Power Platform:
- Power Apps
- Power Automate (Flow)
- Power BI
- Power Virtual Agents
Customizing and extending Project – What’s restricting
As you customize Project for the web, you will eventually run into error messages that prevent you from creating/updating/deleting records on some entities, when using Project’s Model-driven app. This is currently by design. As the error messages suggest, these restrictions will most likely be lifted down the line, as Microsoft’s Project+Dynamics 365 Better Together story becomes a reality. Not being able to (easily) customize or extend Project is nevertheless a bit of a blow, as some of the biggest value propositions with CDS are the extensibility and customization possibilities it offers.
The table below has a list of entities for which create, update and/or delete operations are not allowed in the Project Model-driven app. Create/update/delete operations are possible from Project’s Office UI experience. I’ve also listed some plugins for create/update/delete events in the table. Note that the table is only for entities and plugins I’ve experimented with so it’s most likely not all inclusive.
As you’re customizing Project, remember that out-of-the-box plugins should never be deactivated for good, unless you have specific instructions from Microsoft to do so.
|Entity||Plugin||Create / Update / Delete|
|Project||Project Service Core – Pre validate of dates on update of msdyn_project||Update|
|Project Bucket||Project Service Core – Pre Validate Create of msdyn_projectbucket||Create|
|Project Bucket||Project Service Core – Pre Validate Update of msdyn_projectbucket||Update|
|Project Bucket||Project Service Core – Pre Validate Delete of msdyn_projectbucket||Delete|
|Project Task||Project Service Core – Pre Validate Create of msdyn_projecttask||Create|
|Project Task||Project Service Core – Pre Validate Update of msdyn_projecttask||Update|
|Project Task||Project Service Core – Pre Validate Delete of msdyn_projecttask||Delete|
|Resource Assignment||Project Service Core – Pre Validate Create of msdyn_resourceassignment||Create|
|Resource Assignment||Project Service Core – Pre Validate Update of msdyn_resourceassignment||Update|
|Resource Assignment||Project Service Core – Pre Validate Delete of msdyn_resourceassignment||Delete|
Being bad – forcing customizations
What can we do if we want to see how our customizations or extensions play along with Project for the web, if the basic entities around project management are locked down? There’s a way around all the locks but it’s something that should not be tried in a production environment. I suggest opening a new tenant with a trial of Project for the web, if you want to try customizations that bypass the OOTB plugins. Why a trial tenant? Read on to understand about ALM in Project for the web.
If you want to be bad and force your customizations, you can enable what’s called Test Mode. This essentially bypasses the OOTB pre-validation plugins and lets you play with Project more freely. As I’m writing this blog post, there’s no documentation or official word from Microsoft about what flicking the Test Mode switch to Yes actually disables.
Edit: Test Mode bypasses pre-validation plugins so that create, update and delete operations to schedulable tables are made directly to Dataverse, without the Project Scheduling Service accepting and persisting changes. Test Mode should NOT be used in any production scenario.
Customizing and extending Project – What’s worrying
Before I jump in the worrying bits and pieces, I want to say that I think Project for the web is a good Minimum Viable Product. It offers just enough to get started and considering that Microsoft’s story for modern project management feels pretty robust, the future of Project and project management with Microsoft’s tools looks promising.
There’s really only a single issue that’s worrying and it’s the fact that Project for the web only installs in a tenant’s Default environment. Installing to a named environment will most likely be possible down the line but it doesn’t change the fact that the only option is to install Project in a tenant’s “junkyard”. Default is a personal productivity “junkyard”, while named environments are meant for production use.
What’s the big deal then? It’s Application Lifecycle Management. All customizations that are done to Project are done in production. There’s no possibility to respect ALM best practices of using a dev, test, prod pipeline for implementing customizations. This would be an unbearable situation in a Dynamics 365 implementation. If you customize Project for the web, test your customizations in a trial tenant.
All my blog posts reflect my personal opinions and findings unless otherwise stated.