Project Contract Price List Defaulting Behavior in Project Operations

In Project Operations, if you are creating Project Contracts, you must be adding them explicitly to the created Project Contract. Also, the ways to create a Project Contract might be different in your case.

Let’s review some options on how you can configure Project Operations to create attach a Project Price List to a Project Contract in Project Operations –

Project Parameters for Price Lists Defaults

Here are some options on how you can set preferences for Project Price List Contract creation in Project Operations –

  1. If you navigate to Project Parameters in Project Operations, you’ll see the below section where you can set Defaults for setting Price Lists on the Project Contract.


  2. If you notice, the Price List Defaulting behavior applies to when the Project Contract is created as Project Contract controls the Pricing in project operations.

    Below are the two scenarios in which Project Contract can be created –
    1. Direct Project Contract Creation
    2. Project Contract Creation from Quote.

    And option on how Custom Pricing should apply is provided.

Default Behavior

Let’s look at the scenario of what happens when you create a Project Contract directly or through a Quote or without a Quote and create it directly –

  1. The Project Contract will be created without associating a Project Price List and you’ll see this notification on the Project Contract asking you to associate a Project Contract Price List to the Contract for Pricing to be calculated –

For Direct Project Contract Creation

Let’s see what options we have for direct Contract creation and implications of each –

  1. Below are the 2 options available when creating Project Contracts directly i.e. not going from a Quote being marked as Won.


  2. And if we select the first option i.e. to Associate existing applicable standard price lists to project contracts, we have to also set a Price List in the Project Parameter itself to be defaulted.


  3. You’ll see a Pricelist tab on the project parameter record itself and you can add a Price List which you want to be considered as default.

  4. Now, when you create a Project Contract, the same Price List will be defaulted to the Project Price List tab and you won’t see the notification.



  5. And when you choose to associate a “copy” of the Default Price List set in the Project Parameter.

  6. And when you now create a Project Contract directly, you’ll rather see a new Project Price List created by copying the one defaulted.

For Project Contract Created from Quote

Let’s see what options we have for Contract creation from Quote and implications of each option available –

  1. This is the parameter to configure for Project Contracts created from Quote.


  2. And below are the options available when creating Project Contracts from Quotes on what types of Price Lists should be associated/created for Contracts.


  3. When we choose the first option to associate the Quote Price List to Project Contract, as below –


    we’ll see in second screenshot how the Price List is associated to the created Contract.
    I have the below Quote Price List associated with the Quote


    Now when I mark the Quote as Won, this Price List will be associated with the created Contract, this Price List is associated with the Contract itself without creating a new copy of any other Price List.

  4. When I select the second option to associate quote price list to project contract with contract-specific price overrides for components estimated on the Quote.


  5. So what this does is, for example, I’ve quoted some hours for Supervisor on the Quote and overridden the Price of one of the Quote Line Details


    And when I create a Project Contract out of this Quote,

  6. For the next option, as it states, you can simply create a Copy of the Prict List associated on the Quote Price List to the Contract Price list so that the reference can be of the Quote’s Price List but the Contract will have it’s own copy and not reference the one on the Quote already.


    Now, let’s say I have this Price List on the Quote

Custom Pricing Options

Let’s look at some Custom Pricing Options –

  1. We have the below 2 options for how Custom Pricing should be calculated. If none is selected, the Custom Pricing button on the Quote Lines and Contract Lines won’t function.


  2. Now, when the Option 1 is selected i.e. Create full copy of the standard price lists – this will work how it used to in PSA. It’ll create a timestamped copy of the Project Price List which is already associated with the Contract.


    See below –
    It’ll create a new Price List and will retain all the Price List items which were part of the original Price List.


    And this is the timestamped copy of the Price List which includes full Price List Items included.


    And the items are included as well –


  3. Now, when you select the second option i.e. Create protected price overrides for price list components used on the quote or contract.


  4. It’ll create a copy but with only the items referenced in the Contract Line / Quote Line.


    It’ll create a Price Override record in the referenced Price List itself. So, if you open the Price List, you’ll find the Override as below –




Hope this was useful!

Thank you!

Rejection & Recall comments on Time Entries

In case you are wondering where are the Rejection Notes in case you need to run reporting on Rejected Time Entries and Approvals – and what you could potentially do with this – this short summary should help.

Rejecting Time Entries Notes

Let’s look at Rejecting the Time Entries Submitted by a Resource –

  1. When you see a Submitted Time Entry. You can choose to Reject a Time Entry.

  2. When you click on Reject, you’ll be asked to enter the Notes.

  3. And then you open the Time Entry record itself, it’ll be in the Notes of the Time Entry record on the Form.


    And that’s where it is which you can choose to send it out to the Resource i.e. upon creation of a Note where Regarding is set as Time Entry. But hang on! There’s another type of Notes that gets attached to the Time Entry as well. See next section –


Recalling Submitted Time Entry Notes

Let’s look at Rejecting the Time Entries Submitted by a Resource –

  1. When you have submitted a Time Entry and the same has been Approved, you can choose to Recall it using this button as shown below –

  2. And then you recall a Submitted Time Entry as opposed to recalling a Draft Time Entry, you’ll be asked to enter the Notes/Reason for recalling an Approved Time Entry as below –

  3. And these Notes too go on the Time Entry record itself.



So, the bottom line is – If you want to send out the Notes to different audience based on where the Note came from – do it alongside identifying the field “Entry Status” so that you know if the Note is supposed to be sent to the Approver or the Bookable Resource.

Thank you

Project Status Update Reports on Projects using Copilot in Project Operations

Now that you must have enabled Copilot for Project Operations [If not, you can refer this post to learn how you can enable Copilot for Project Operations – Enable Copilot for Project Operations]

Note: Please note that this is a Preview feature at the time of writing this post and hence, not recommended for Production usage.

Enable Copilot For Project Operations

First, you need to ensure that Copilot is enabled for your Project Operations environment – Enable Copilot for Project Operations

Once this is enabled, you’ll be able to see Copilot on the ribbon button on the Project. Let’s look at the same in the below section.

Project Status Update Report

Now that you have Copilot enabled for Project Operations, you can now create Task Plans for a Project in Project Operations –

  1. When you navigate to a Project, you’ll see Copilot appear on the Ribbon given that you have enabled it for your Project Operations instance.

  2. Once you select Status Report, it’ll give you option to generate either an Internal or an External Report. Then it runs in the background and takes a few minutes till Copilot will gather all the information for you and generate a report.




  3. External Report generated is as below –



  4. Internal Report generated is as below –



Here’s Microsoft’s Full Documentation on how Project Status Update Reports are generated in Project Operations’ Copilot (Preview) – https://learn.microsoft.com/en-us/dynamics365/release-plan/2023wave1/finance-operations/dynamics365-project-operations/generate-project-status-reports-using-project-manager-copilot?WT.mc_id=DX-MVP-5003911

Hope this was useful!

Thank you!

Risk Assessments on Projects using Copilot in Project Operations

Now that you must have enabled Copilot for Project Operations [If not, you can refer this post to learn how you can enable Copilot for Project Operations – Enable Copilot for Project Operations]

Note: Please note that this is a Preview feature at the time of writing this post and hence, not recommended for Production usage.

Enable Copilot For Project Operations

First, you need to ensure that Copilot is enabled for your Project Operations environment – Enable Copilot for Project Operations

Once this is enabled, you’ll be able to see Copilot on the ribbon button on the Project. Let’s look at the same in the below section.

Risk Assessment

Now that you have Copilot enabled for Project Operations, you can now create Task Plans for a Project in Project Operations –

  1. When you navigate to a Project, you’ll see Copilot appear on the Ribbon given that you have enabled it for your Project Operations instance.

  2. Once you select Risk Assessment, it runs in the background and takes a few minutes till Copilot will populate the Risks for you.



  3. Once this is generated in a few moments, it appears in the Risks tab on the Project itself.


  4. Additionally, you are free to use this in reporting as well

Here’s Microsoft’s Full Documentation on how Risk Assessments work in Project Operations’ Copilot (Preview) – https://learn.microsoft.com/en-us/dynamics365/release-plan/2023wave1/finance-operations/dynamics365-project-operations/assess-issues-risks-project-using-project-manager-copilot?WT.mc_id=DX-MVP-5003911

Hope this was useful!

Thank you!

Time and Materials Billing Backlog table in Project Operations

Even wondered what is Time and Materials Billing Backlog table in Project Operations which you see in the Sitemap but you might not be sure what records are in it –

Time and Materials Billing Backlog

Here’s the purpose of Time and Materials Billing Backlog entity –

  1. Given that you have 2 Time Entries Submitted for Approval to the Project Management / Account Manager.

  2. When the Time Entries are Submitted, the Approver receives them for Approval. The Project Approver can then Approve the Time Entries.

  3. Once they Approve the Time Entries, they are turned into Actuals (msdyn_actual) in Project Operations.
    Then, Actuals are then Supposed to be marked as Ready to Invoice.

  4. So, when the Actuals are the created and even when they are marked Ready to Invoice, that’s when they appear in Time and Materials Billing Backlog view.
    This table is in fact Actuals table itself! 😊 (There’s no Time and Entry Billing Backlog as a separate Table in Dataverse).

  5. In fact, Accounting managers or Project Managers can Ready the Actuals from the Time and Materials Billing Backlog table itself.

  6. Now, then the Invoice is created for the ready Actuals, they are added to Invoice Lines

  7. And then, they are removed from the Time and Materials Billing Backlog view.

Hope this was useful!

Thank you!

Create Project Plan using Copilot in Project Operations

Now that you must have enabled Copilot for Project Operations [If not, you can refer this post to learn how you can enable Copilot for Project Operations – Enable Copilot for Project Operations]

Note: Please note that this is a Preview feature at the time of writing this post and hence, not recommended for Production usage.

Enable Copilot For Project Operations

First, you need to ensure that Copilot is enabled for your Project Operations environment – Enable Copilot for Project Operations

Once this is enabled, you’ll be able to see Copilot on the ribbon button on the Project. Let’s look at the same in the below section.

Task Plan

Now that you have Copilot enabled for Project Operations, you can now create Task Plans for a Project in Project Operations –

  1. Before you proceed to trying to create a Task Plan, the Copilot in Project Operations will look for data on the Project record such as the Description of the Project, Start Dates, End Dates etc as reference point in order to understand what type of Tasks are to be created.


    The sample Description I put for this Project is – “This project will be a 3-month implementation for Microsoft Dynamics 365 Project Operations with integration to F&O system. This project will involve developers to design, architect, develop code, test and deploy the same.

  2. Once Project details are in place and the Project doesn’t have a Project Plan yet. It should look something like this and having Copilot button on the ribbon visible.

  3. If you expand the menu, you’ll see that it has an option called as Task Plan. Click on it and it’ll begin processing operations and show loading screen while it processes in the background.


    And the loading screen will keep showing messages like Computing, Collecting, analysing etc.

  4. In a few moments, it’ll process successfully and you’ll see Tasks being generated in the Tasks pane on the Project. Note that it’ll only segment into tasks and sub-tasks based on the Description and Start/End Dates – it won’t assign anyone or estimate any hours.

Here’s Microsoft Documentation on how the Task Plan feature works. Please note that this in Preview at the time of writing this post – https://learn.microsoft.com/en-us/dynamics365/release-plan/2023wave1/finance-operations/dynamics365-project-operations/generate-project-plans-using-project-manager-copilot?WT.mc_id=DX-MVP-5003911

Hope this post was useful!

Thank you!

Setting up Project Operations Lite | Blog Series

I felt that I should document steps to setup a Project Operations Lite Trial environment for everyone who’s trying to spin up a Project Operations Instance and trying to get the basic setup done as of January 2024.

Hopefully, this blog series will help you to quickly access and understand the info you need to setup your Project Operations Lite trial environment –

Provisioning a Project Operations Trial

BlogDescription
Starting a Project Operations Lite Trial EnvironmentDescribes how you can provision a new trial for Project Operations Lite and

Setting up Master Data in Project Operations Lite

BlogDescription
Setting Up Default Organizational Unit, Cost and Sales Price List in Project Operations LiteFind and rename a default Organizational Unit, attach a Cost Price List to the default Org Unit and also create a Sales Price List
(Roles, Prices will be added in preceding post)
Resource Roles and adding Role Prices to Cost and Sales Price List in Project OperationsReview and Create Resource Roles, Add Resource Roles to Sales and Cost Price Lists

Billing / Invoicing

BlogDescription
Time and Materials Billing Backlog table in Project OperationsExplains what Time and Materials Billing Backlog table in Dataverse in Project Operations is used for.

Copilot for Project Operations

BlogDescription
Enable Copilot for Project OperationsEnable / Disable Copilot as a feature for Project Operations
Create Project Plan using Copilot in Project OperationsCreate a Project Plan for your Project using Copilot based on the Description and other details on the Project record.

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Resource Roles and adding Role Prices to Cost and Sales Price List in Project Operations

Now that in the previous blog posts of this series, the Organization Units, Cost Price and Sales Prices were setup – Setting Up Default Organizational Unit, Cost and Sales Price List in Project Operations Lite, let’s look at what Roles (or Resource Roles) are and how you can add them to the Price Lists

Resource Roles

Let’s see how we can add Resource Roles –

  1. Navigate to Resources Area and then select Resources sub-area in Project Operations App.

  2. Now, navigate to Roles on the Sitemap and you’ll see some existing Roles already available out-of-the-box

  3. If you open any existing roles, you’ll see that Billing Types the type/behavior of the Role which we’ll discuss in further sections.

    Now, let’s add the Resource in both Cost and Sales Price Lists in the next section.

Add Role in Cost Price List

Now, lets assume we want to assign a Cost Price to the Consulting Lead role (which is of type Chargeable). Let’s see below on how we can do this –

  1. Navigate to the Organizational Units in Settings area in Project Operations since it’s easy to go than to find the Cost Price as you might not remember the exact name every time.
    Open the Organization Unit record which is your default Organization Unit for the PO environment.

  2. Now, since we had already associated a Cost Price in the previous sections, you can open the Price List.

  3. Now, once you open the Cost Price List, go to Role prices tab and click on + New Role Price to add the existing Role to this price list and define the Cost of the Role to the organization.

  4. Now, make sure you select the Role and also select the Organization Unit even if you have selected the Cost Price List from the Organization Unit. That’s because you can add multiple prices for the same role across different Organization Units.

    I’m keeping a sample Cost Price of $150

  5. Once you Save and Close, the Role Price will be defined in this Cost Price for this Org Unit.


    Alternatively, let’s also add the same Role in the Sales Price List as well from this series.

Add Role in Sales Price List

Let’s also add the same Consulting Lead role to the Sales Price List as well –

  1. Navigate to the Sales area and then look for Price Lists. Look for the Sales Price List you created for your organization.

  2. In the Sales Price list, go to Role Prices and click on Add New Role Price

  3. Now, as Sales Prices are supposed to be higher than Cost Prices, I’m using a Price of $240 for the Consulting Lead which was $150 in the Cost Price

  4. And once you Save and Close, it’ll be added to the Sales Price list as shown below.

Hope this post was useful!

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Setting Up Default Organizational Unit, Cost and Sales Price List in Project Operations Lite

One of the first things to do when starting a new Project Operations Lite environment is to start setting up organizational data for your environment and in that, setting up Organizational Units, Price Lists and Roles is one of the first things to start setting up –

Let’s see on how you can start the same!

Organizational Unit

One of the first things is to find the Default Org unit for your Project Operations Lite environment –

  1. Ensure that in your Project Operations environment, you are in Project Operations app. On the SiteMap, switch to the Projects area and then, Settings sub-area.

  2. Now, locate Parameters and there should be 1 record in the Parameters which is mapped to the Default Organization Unit. Select the same (click on the clickable Default Organization Unit lookup itself to directly go to the Organizational Unit [or referred to as Contracting Unit in further blogs])

  3. Once in the Org Unit record, update the name to what should be relevant based on your use case.

  4. I’ve renamed this to a more readable name based on my example. Now, it should be easy for you to deal with this Org Unit while referencing further.

Cost Price List in Organizational Unit

Now that the Org Unit is found and renamed correctly, let’s add a Cost Price List first –

  1. In your Org Unit record, click on Add Existing Price List.

  2. Then, click on New Record button upon clicking the Look for records lookup field.

  3. Select Price Lists as the record type and it should be the only option there.

  4. Then, it’ll open the Price List record creation form on the window and you can start filling in the details. Make sure the Context selected is of type Cost.
    Also, the Effective Start Date and Effective End Date should be relevant as all calculations will be successful only if the dates to be processed for transactions fall inside the intended Price List dates.

    Save and Close the record once completed.

  5. Then the saved record will be shows as selected on the lookup field and you can then click on Add button at the bottom.

  6. Once added, the sub-grid on the Org Unit will take a while to refresh and then show you the tagged Cost Price List correctly.

Now, you have tagged a Cost Price List successfully. Let’s quickly add a Sales Price List.

Sales Price List

Now that you have created and tagged a Cost Price List in the previous section, let’s quickly create a Sales Price List shell so that you have a corresponding Sales Price List to look at as well –

  1. Navigate to the Sales area and then select, Sales sub-area in the Sitemap.

  2. Here, click on the Price Lists table and then click to add a new Price List record.

  3. Note that the Context of the record should be Sales this time since we want to create a Sales Price List. Save & Close once the record looks satisfactory based on your relevant information to fill in.

  4. Now, you can see that the Sales and Cost Price Lists are ready in your environment.

Next Section here will cover adding Resource Roles, and then adding Role Prices to the Sales and Cost Price Lists.

In later parts of this series, we’ll continue to add more to the Price Lists, Roles etc.

Hope this post was useful!

Thank you!

Difference between Project Operations Deployment Types

Now, as you know that there are the following 3 types of Project Operations Deployments –

  1. Project Operations Lite (Deal to Proforma Invoicing).
  2. Project Operations for resource/non-stocked scenarios.
  3. Project Operations for production/stocked scenarios.

To keep the comparison understandable and simple, let’s review the below in a short summary.

Comparison

Project Operations LiteProject Operations for Resource/Non-stockedProject Operations for Production/Stocked
Finance & Operations module is not setupFinance & Operations setup is requiredFinance & Operations Setup is required
No Dual Write IntegrationDual Write Integration is required.Dual Write Integration is required.
Up to Pro-forma Invoicing is availablePro-forma Invoicing in PO and Customer-facing Invoicing in F&OFull Invoicing in F&O
Basic ExpenseBasic and Full Expense with Receipt OCRFull Expense with Receipt OCR

Hope this quick summary was useful. I’ll continue adding more to this article over time.

Here’s official Microsoft Documentation for full deployment guidance with questionnaire –

Thank you!