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!

Enable OneNote Integration for Dynamics 365 Sales environment

Since collaboration tools like Teams, SharePoints are a norm, so is OneNote. Here’s how you can enable OneNote Integration in your Dynamics 365 CRM Instance –

Settings

Given that you are a Dynamics 365 Administrator, you can navigate to Power Platform Admin Center of your environment –

  1. Go to the Settings on the Environment you want to enable OneNote Integration on

  2. Once you are in Settings, you can expand Integration section and then click on Document management settings.

  3. Then, you’ll be redirected to the classic UI and there, you can select Enable OneNote Integration (provided that SharePoint Based Document Integration is already enabled).

  4. It’ll open up this dialog box and you’ll see the pre-enabled OneNote for the tables which you want to enable. You can choose the ones you want to enable OneNote Integration for and click Submit. This dialog box will then close.


  5. Also, double-check on the entity level if OneNote Integration is turned On or not.

  6. Once this is done, you can refresh the record on which the OneNote Integration is enabled and click on + on the Timeline to show the Activity options. You’ll see OneNote appear as well.

  7. Once you click on it, it’ll be redirected to SharePoint location where the OneNote notebook is created.

  8. Now, when you come back on the record and click on Related section and go to Documents. You’ll see the OneNote notebook appear there in the record.



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

Enable Copilot for Project Operations

Recently, you must have observed Copilot being introduced in every other Microsoft Business and M365 applications. Dynamics 365 Project Operations too being no exception! Here’s how you can get the same

Enable Copilot in Project Operations

Here’s how you can enable Copilot in Project Operations –

  1. In Project Operations app, Navigate to Settings in the SiteMap area –


  2. Then, Navigate to Parameters. Then, open the Parameter record itself (Avoid click on the Default Organization Unit as it’ll take you to the Org Unit record and not the intended Parameter record).

  3. Then, you can drop down from the Feature control and see that the Copilot option is available to enable for you.

  4. Once you click on it, it’ll ask you for confirmation. Click OK if everything looks good to you.


    It takes a few moments for Copilot to be enabled for Project Operations environment.

Disable Copilot

Here’s how you can disable Copilot if not needed –

  1. In case you don’t want to use Copilot and want to disable it, you can open the Parameter record in Project Operations’ Settings area and drop down from the Feature Control ribbon button to find that you can now Disable Copilot if it is in enabled state.

Hope this post was useful!

Thank you!

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!

Starting a Project Operations Lite Trial Environment

One of the first things you want to get done is to spin up a Project Operations Trial environment. Here’s how you do it!
Note that no Credit Card is required for a Project Operations trial environment.

Project Operations Trial Environment

Here’s how you start a Project Operations trial environment –

  1. Navigate to https://trials.dynamics.com/ which will be redirected to https://dynamics.microsoft.com/en-us/dynamics-365-free-trial/ and the page you’ll see will be something like this –

  2. Scroll down on the page till you see the option for Project Operations. Click on Try for free.

  3. Once you click on Try for free, you can enter a new email on which you want to start a trial. I’ve come up with a sample email which I haven’t used before. I prefer not to enter an email/username which I already use.

  4. Click Next and then you can select Setup my account.

  5. Then, you can validate/enter the details which would be something like this and click Next.

  6. Then, choose if you want to receive an OTP via Text or a Call. Text is my preferred way so I selected that and clicked on Send verification code.

  7. I received an OTP which I entered as asked on the next pane and clicked Verify.

  8. Further, I’ll be shown the login details of the trial environment I want to create. Once this is done and I save the information, I click on Next.

  9. Then, you’ll be shown the details of the environment you’ll be provisioning. Save this info before proceeding.
    Next, click on Start using Dynamics 365 Project Operations (CE) – Preview Trial. It’ll redirect you to the questionnaire page on a new tab where you’ll need to answer the questions before choosing the Deployment Type.

Deployment Type Questionnaire

As we left off from the Step #9 in the above section, you’ll be taken to a questionnaire Wizard in order to provision a Project Operations trial –

  1. Yes to managing Opportunities as they move through the process.

  2. Yes to requiring advance or extensible resource management.

  3. Yes to requirement of workflow for approval of Time and Expense.

  4. No to advanced Expense management.

  5. No to Non-Stocked Materials

  6. No to Stocked materials as well.

  7. Select the version here. Even if you would have answered the questions randomly, you would have still gotten to choose a different version than recommended. Hence, the answers above point to a recommendation of Project Operations Lite type of Deployment.
    Click Begin Setup once Lite Deployment is selected.

  8. Setup will start provisioning once you click on Start.

  9. And it’ll take a while and it’ll say that it will redirect you to the Power Platform Admin Center.

  10. And once you are redirected to Power Platform Admin Center and you’ll see that the environment is provisioning. This will take a few minutes before completion.

Set Name and URL for your environment

Provisioning a Project Operations trial will get set a predefined URL and name which you should update to be readable –

  1. Open the environment once the link is clickable and the State is set to Ready.
  2. Then, click on the Edit button

  3. Once you click Edit, you’ll get to update the Name and the URL. Set to something that is relevant to the purpose of the environment.

  4. Once you click on Save, you’ll see this loading page which will take a while to complete and finally, your Project Operations Lite environment setup will be ready!

Here’s Microsoft’s Documentation detailing which all Deployment Types have different Project Operations features available – https://learn.microsoft.com/en-us/dynamics365/project-operations/environment/determine-deployment-type?WT.mc_id=DX-MVP-5003911

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

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!

Getting Started with Microsoft Graph API

Microsoft Graph API is a superb way to leverage Microsoft 365 services as a developer. Before you start to wonder where all to get started from, this post is for you!

Microsoft Graph Explorer

Here’s how you can start using the Microsoft Graph API –

  1. Navigate to the Microsoft Graph Explorer (https://developer.microsoft.com/en-us/graph/graph-explorer), you’ll see the below –

  2. By default, if you run on Run Query, it’ll retrieve Sample Data already present.

  3. You can click on the Person icon in order to Authenticate to the environment you are already logged in.

  4. In case you are already logged in, select the environment or login from the start.


  5. You’ll also need to provide consent in order to proceed.

  6. Now that you are logged in, you can see the Tenant information being displayed and you can then also try to test run the same query and you’ll see your actual data being retrieved.

Important Notes

  1. In order to access a Users’ data, they have to consent this data for access.
  2. OData Queries are used to further query the data in order to access them.

Here’s the official link to the Microsoft Graph documentation and other resources: https://learn.microsoft.com/en-us/graph/?WT.mc_id=DX-MVP-5003911

Hope this was useful!

Thank you!

Permanently Delete users from Power Platform

Often times, as organizations have users enabled and disabled, over the course of time we see a lot of Disabled Users pile up in the system. Power Platform now lets you delete these Users permanently from the system.

Warning: Please note that this process will not get back the User you delete as you are going to permanently delete the User from Entra ID as well as Power Platform.

Enable Delete Users feature from Admin Center

First, you’ll need to enable this in the Power Platform Admin Center

  1. Select the environment you wish to enable this feature in and then click on Settings.

  2. Then, look for Features section.

  3. you’ll find the option for Delete Disabled Users which would be OFF by default. Switch it to ON.


    Zooming in a little bit, this is how the turned on feature should look –

  4. Once you turn this ON, be sure to scroll to the bottom of the page and click on Save to save the changes you just made.

Now that you have turned this on. You can now Delete the Disabled Users.

Pre-Requisite: Permanently Delete User

Now, let’s see how this process is to be carried out –

  1. Assuming the license of the User is now removed and if you Refresh the User in Power Platform Admin Center, you’ll see that the User will appear in the Disabled Users filtered list.

  2. Even if you delete the User in M365, you can refresh the Power Platform and see the User Name still present

  3. Now, if you open the User which you see with a different username in Power Platform Admin Center and click on it to open it in classic UI and see the Delete button to Delete the User

  4. Here’s the delete button.

  5. When you click on Delete and confirm it’ll throw the error message that this cannot be deleted.

Now, the next step is to permanently delete the User from Entra ID. Here’s a blog post to permanently delete the User from Entra ID: Permanently Delete a User in Entra ID

Delete in Power Platform

Now that the User is permanently deleted in Entra ID, you can re-attempt the delete the user in Power Platform.

  1. Now, retry the step from the User page in classic UI as you’ll see the button there.

  2. Now, you can click on the User in the Power Platform Admin Center and see that the user is showing that it has been deleted in the Environment

  3. And you can see the button to now Delete Permanently in the environment as well.

  4. And it’ll ask you if you want to really delete the User.

Hope this helps!

Thank you!