Customizing and extending Project for the web

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.

Office UI

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.

Project for the web’s Office UI.

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.

Project for the web’s Model-driven app with a customized sitemap and Project main form.

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
Common Data Service.

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.

Business Process Error when editing a Project record in the Project Model-driven app.

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.

EntityPluginCreate / Update / Delete
ProjectProject Service Core – Pre validate of dates on update of msdyn_projectUpdate
Project BucketProject Service Core – Pre Validate Create of msdyn_projectbucketCreate
Project BucketProject Service Core – Pre Validate Update of msdyn_projectbucketUpdate
Project BucketProject Service Core – Pre Validate Delete of msdyn_projectbucketDelete
Project TaskProject Service Core – Pre Validate Create of msdyn_projecttaskCreate
Project TaskProject Service Core – Pre Validate Update of msdyn_projecttaskUpdate
Project TaskProject Service Core – Pre Validate Delete of msdyn_projecttaskDelete
Resource AssignmentProject Service Core – Pre Validate Create of msdyn_resourceassignmentCreate
Resource AssignmentProject Service Core – Pre Validate Update of msdyn_resourceassignmentUpdate
Resource AssignmentProject Service Core – Pre Validate Delete of msdyn_resourceassignmentDelete
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.

Test Mode under Parameters. Use with caution and only in a trial tenant!

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.

Disclaimer:
All my blog posts reflect my personal opinions and findings unless otherwise stated.

Leave a Reply

Your email address will not be published. Required fields are marked *