Hello there, and welcome to our 21st Episode of the Project Operations Advent Calendar! đ đź
Literally throwback Thursday - today's topic was part of my very first time in-person event as a speaker back in 2018 at eXtreme365 in Dubrovnik
Golden Rules to Customize Dynamics 365 Project Operations
Back in the day, on a warm, rainy afternoon in Dubrovnik, we talked about Project Service Automation. Craig Bird, at this time the Global Black Belt for Project Service Automation at Microsoft, started with an introduction to PSA, followed by my colleague Daniel Bach and me, teaching about how to customize the system, what are common customer scenarios at this point and how to solve some pain points.
Luckily, 5 years later, a few of these golden rules can be transferred to today's Project Operations world.
Don't mess with Project Operations processes
In Episode 20 we talked about integrations and already covered the part that a Project Contract (salesorder) would be definitely required when any sales-related data is expected.
And this also symbolized the first rule - don't mess with the Project Operations business process.
As a customizer/maker, it's crucial to understand the data model and business processes of the product. With Project Operations the system will be extended with a various number of new tables - and most of them are not even visible to the end user, but necessary to drag business logic through the process.
To highlight some tables you certainly want to look into:
Resource Assignments The connection between Project Task and Employee, including Start and End Dates, Effort in hours, and Project.
Work Hours Actually, not a "real" table, but the calendar holds crucial information for availability evaluation and reporting of each Bookable Resource.
Journal Lines Even if the customer process does not contain Journal Lines or Journals: for every submitted Time Entry / Expense record in the environment that receives a Project Approval record for signing off, the system creates a Journal Line. This Journal Line brings in all financial data, while Time Entries never have any of this information available.
Transaction Connections / Transaction Origins Project Operations does not provide direct Relationships from Project Approvals or Time Entries to Actuals, which are fundamental for the invoicing process. Although these tables are connected from a business process perspective.
Create useful forms and views
I'm pretty sure I mentioned that earlier already - the data is always available in the system, you only need to make it visible.
Project Operations adds a lot of information which is visible on the table forms but also, as described, in the background. Sometimes this information is interesting for the end user or needs to be combined/related to other available data.
When planning to perform changes to the system forms, I always recommend copying the out-of-the-box form. The original form will remain as a backup and new functionality can be tested and controlled before being exposed after an update to the end user.
2018 we also pointed out the user experience and clunky forms, but, I'm happy to admit Microsoft invested and will continue investing more time in consistent, appealing form designs đ
Be aware of Project for the Web boundaries
When working with Project Operations, you also work with the Project for the Web integration (PexWeb). Purely based on the technology, the Project for the Web is naturally embedded into the business process.
While the technology is similar or even identical to Project for the Web, it wasn't intentionally developed for Project Operations, so some of the constraints and business decisions on both sides resulted in minor mismatches.
This leads to some restricted tables, which must be updated through Microsoft's Schedule API. That implies that usual plugin validations and updates cannot be performed on the following tables:
Project
Project Task
Project Task Dependency
Resource Assignment
Project Bucket
Project Team Member
Project Checklists
Project Label
Project Task to Label
Project Sprint
Create, Update, and delete operations with these Scheduling tables have to be performed via a so-called OperationSet.
The OperationSet table is our connection to the Scheduling API. Also, it's possible to trigger existing API calls with e.g. Cloud Flows (Power Automate).
Because this topic could cover a blog post alone, I'm for now only linking the documentation.
Let me know, if you're interested in how the API works and how it's possible to trigger available functions.
Besides those Scheduling tables, Project for the Web has certain boundaries for the Project context:
Maximum total tasks for a Project: 500* (1000 is currently in Preview)
Maximum total duration for a Project: 3650 days
Maximum total resources for a Project: 300
Limitations per Project Task:
Maximum checklist items per Task: 20
Maximum hierarchy level: 10 levels
Maximum Dependencies: 20
Maximum duration of a leaf Task: 1250 days
Maximum duration of a parent Task: 3650 days
Maximum resources per Task: 20 resources
Support date range: 1/1/2000 - 12/31/2149
Please be aware of these boundaries upfront - the full and latest list can be found in the Microsoft Learn Documentation.
Configure the environment parameters in advance
Microsoft Dynamics 365 Project Operations is not the type of product you install on a Monday afternoon and just use whatever feature you like from Tuesday morning on.
The goal is to set up the environment and parameters first, before pulling productive data into the system.
No matter if it's about price lists, settings, organizational units, or different categories for expenses. There is a rich set of features available, that also combines Project for the Web and Universal Scheduling (Schedule Board) capabilities.
Not even mentioning here the Dynamics 365 Finance features, with the integrated installation scenario.
Setting up master data and configuring the Parameter record should be the first step, including elaborating these settings with the client side and matching them with customer requirements.
I hope you enjoyed today's small throwback episode, many thanks from my side for stopping by đđ đź
I didn't want to miss the opportunity to share some good memories from eXtreme365 (2018) đ
from the left: Craig Bird (Microsoft), Daniel Bach (proMX), and me
Comments