Time and Expense Agent [Production Ready Preview] – Part 1

In between all the AI conversations, you wouldn’t want to be kept wondering what Agents in Power Platform/Dynamics 365 Applications are capable of.

So, the name of the Agent itself suggests their capability and one such agent is Time and Expense Agent.

Enable Time and Expense Agent

Just like any other Project Operations features, you can enable the Time and Expense Entry Agent from the Settings area as shown below –

  1. Navigate to Settings and then to Parameters.


  2. Then, drop down from the Feature control menu and then look for the Enable Time and Expense Entry agent option.

  3. You’ll be asked to confirm and you can first read through the instructions.

  4. Once you click enable, it takes a few moments to complete loading and then you get to Download the policy document for Time and Expense entries.


  5. Once you click on Download, a Microsoft Doc it just opens in a new tab. Link: https://learn.microsoft.com/en-us/dynamics365/project-operations/approvals/approvals-agent-policy#policy-document-examplesnt-policy?WT.mc_id=DX-MVP-5003911

    Scroll down in this document, you’ll find Policy Document for each type of Entry.
    Click on the same and then you’ll be able to save a Doc file.


    Download what is exported when you click the above link.
    Here’s what the document looks like, it looks like an SOP designed for internal processes.

  6. While you are reviewing the document, also note that the Time Entry agent is now a new area in My Work in Projects in your Project Operations SiteMap.

Setup Approvals Agents as an Admin

Now, you need to first set the Approvals Agent up so that it can be used –

  1. Open Power Apps App Builder (https://make.powerapps.com/) and make sure to open the right environment.
    Then look for the solution Project Service Agent

  2. Then, open Objects and then Connection References. Look for the ones marked as Add to Solution as shown.

  3. Then select CDS solution (If you can remember it from a while ago 😊). Then click Save.

  4. Then open the CDS Default Solution as shown below –

  5. In the solution, go to Connection References and you should see the ones which you added in earlier steps. Edit the added connection and then on the right hand pane, select New Connection.

  6. Once you click on New Connection, it’ll open a New Tab and you’ll need to search Copilot Studio.

  7. Click on it, and it’ll ask you to create a new connection. Click Create.

  8. Then, you’ll be asked to login (most likely, you’ll want to use the logged in user)

  9. Then, the Connection will appear once logged in. After this, go back to the Connection in the CDS solution.

  10. You’ll now be able to select this connection.
    You’ll be asked to Save Changes.

  11. Then, once this is done, go back to Project Service Agent solution and go to Cloud Flows. Look for Approvals Agent trigger (Production-ready preview) and turn it on.

Watch out for Part 2 on this series to use the Approvals Agent! Coming Early Sep 2025.

Thank you!

Time Entry Calendar in Project Operations

If you have been used to doing Time Entries daily on the classic Time Entry grid and that has been a habit for quite some time, you might not realize that it is slower and inefficient to do, just because you got used to it now.
So, here’s Time Entry calendar view which is better way to visualize and do Time Entries! This is in Preview as of the day of writing this post.

Enable Time Entry Calendar View

Here’s how you can turn on your Time Entry Calendar from Project Operations’ Settings

  1. Navigate to Settings Area in Project Operations Model-Driven app.


  2. Then drop down form Features to find the Time Entry Calendar listed.


  3. Click on it to turn it on. It’ll ask for confirmation, it ask describes what it does.


How Time Entry Calendar works?

Here’s how Time Entry Calendar feature works when you want to do Time Entries.

  1. Now when you navigate to the Time Entries from My Work (or wherever you have put it), you’ll see this new option in My Work called as Time Entry Calendar, while you existing Time Entry section still exists as is.

  2. When it loads, you can see the Time Entries now appear like how allocations appear on your Schedule Board, gives you a better way to visualize Time Entries to be done and and most importantly, select the Time for the Time Entry.
    You can visualize Daily, Weekly and Monthly.


  3. You can even click on the Time you want to make Time Entry on and the window pane will let you drill down to the Task level on the Project which you want to make Time Entry on.

Hope this was useful!

Thank you!

Showing SharePoint Documents Grid on a Form Tab in Dynamics 365 CRM

While adding Tabs, Sections & Fields is fairly straight forward in Dynamics 365 CRM, showing the “Documents” tab which is accessible from Related section isn’t.

So, here’s how to do it when you need to.

Exporting customizations.xml with Form

Here’s what you need to first do in order to setup the Documents folder on the main form –

  1. Assuming “Docs” is the name of the tab you want to place your SharePoint library in. Add any field for reference which is not used on the form elsewhere. In my case, I’m choosing Address 2: Latitude for easy identification.

  2. Then, make sure you add the Form in a solution and export the solution.


    And then export it –


    And choose it to be Unmanaged to avoid any hassles in case you need to continue customizing this table further


  3. Then, extract the solution folder itself and open customizations.xml.
    Now when you extract the same, find the Docs tab and locate the Control you added.

  4. Now, copy the below code and replace it with the <control> which is highlighted in the screenshot above.
    <control id="DocumentSubGrid" classid="{E7A81278-8635-4d9e-8D4D-59480B391C5B}" indicationOfSubgrid="true" uniqueid="{9cd66b5c-8b7a-6433-c5a5-46a7245dd534}">
    <parameters>
    <ViewId>{0016F9F3-41CC-4276-9D11-04308D15858D}</ViewId>
    <IsUserView>false</IsUserView>
    <RelationshipName>Account_SharepointDocument</RelationshipName>
    <TargetEntityType>sharepointdocument</TargetEntityType>
    <AutoExpand>Fixed</AutoExpand>
    <EnableQuickFind>false</EnableQuickFind>
    <EnableViewPicker>true</EnableViewPicker>
    <ViewIds />
    <EnableJumpBar>false</EnableJumpBar>
    <ChartGridMode>Grid</ChartGridMode>
    <VisualizationId />
    <IsUserChart>false</IsUserChart>
    <EnableChartPicker>false</EnableChartPicker>
    <RecordsPerPage>10</RecordsPerPage>
    <HeaderColorCode>#F3F3F3</HeaderColorCode>
    </parameters>
    </control>

    And paste it in the customizations.xml file where you had the control added.
  5. Now, create a new GUID, you can do so online easily.


  6. Replace this GUID to the uniqueid parameter of the DocumentSubGrid control.


  7. Also, make sure the table which you are enabling this Document tab on the main form – has the correct SharePoint Document relationship entered. In this case, I’m keeping Account, so the RelationshipName is as below –



    And it’s as below –

  8. Now, save the file. Rebundle into a new zip file and import the solution again.
  9. When you refresh the Form, you’ll see that the Documents tab is now on the main form.

Thank you!

Deploy Copilot for Sales in your organization – Part 1 | Provisioning

Here’s how you can setup Copilot for Sales in your organization given that you have the correct privileges –

  1. Make sure Copilot for Sales license is assigned to the User who will be using it.

  2. Then, in the Admin Center, go to Integrated Apps under Settings and look for Get Apps.


  3. Search for Copilot for Search in the box on the top right and Copilot For Sales will show up as follows.

  4. Once you click Get it now, you’ll need to confirm the same.

  5. It’ll then continue to setup and show the App that is getting deployed which is part of the Apps setup in M365 itself.

  6. It’ll also let you either select the Entire Organization or select the Users whom you want to deploy this to.

  7. Finally, Accept the permissions listed in case of no objections based on your orgs’ policies.

  8. You’ll need to re-authenticate with the Admin User you are using to set this up with.

  9. Once done, you’ll see that the permissions are accepted.


  10. And finally you can Finish the deployment.

  11. This is when the Deployment is completed.

  12. And you can confirm that the App is now enabled for the said user.

In the next post [Releasing on 8th May 2025], we’ll see how you can setup Copilot for Sales under it’s own Settings through a Tenant Administrator!

Hope this was useful!

Thank you!

Project Task Progress Update in Project Operations & Mark Task as Completed

Up until now, you had to do Time Entries to mark a Project Task as completed. But, this makes difficult to gauge the progress of the project in actuality as some tasks might need to be marked as completed without having to do remaining Time Entries on them.

Here’s when marking Project Task as Completed comes in handy.

Default Behavior for Project Tasks in Project Operations

By default, you won’t be able to edit the % of the task in the Project Task Grid –

  1. Till now, you are able to directly mark a Task as complete by using the below option –

  2. And it’ll mark the task as Completed to 100%. But, when hover over the % completed, it’ll say that it’s a read-only and can’t be edited to put your custom % in there.

  3. So, let’s see how this feature will let you edit the % complete to your desired number.

Enable marking Project Tasks as completed

In Project Parameters, you can find the Feature to mark Project Task as completed –

  1. Drop down on the Feature Control and you’ll see that Task C

Mark Project Tasks as completed

When you enable this, you’ll see the below on the Project –

  1. The Project form will have the field to allow Project Tasks to have custom progress % option.

  2. Once you do this, you’ll then be able to hover over the Project Task and enter the % you desire.

Hope this was useful!

Thank you!

Cost Plus Billing in Project Operations

Here’s how your Project Contract can be setup for Cost Plus Billing in Project Operations –

So how does Cost Plus Pricing work? Simple Answer – Specify a Markup for the Sales price in terms of % based on what the Cost Price is.

So, when you enter the Sales Prices without having Cost Plus Pricing Enabled, you’ll see that you simply can enter the Sales Price of the Resource as shown below

Now, let’s see how you specify the Cost Plus pricing in Sales Price Lists so that it is driven off of the Markup of the % of the Cost Price.

Enable Cost Plus Pricing from Project Parameters

First, you need to enable Cost Plus Pricing in your Project Operations environment –

  1. Given you have the correct access, navigate to Project Parameters settings in your environment and look for the Feature Control where it says that you can enable Cost Plus Pricing –

  2. It’ll give you a warning that once this is enabled, you cannot disable it for the organization –


  3. Now, when you try to add Role Prices in the Sales Price List, you can select this option –

  4. And enter the % of the Markup you want to setup for Cost Plus Pricing.

  5. In this case, my Markup is 25% of the Cost Price.

  6. Now, my Cost Price for the Marketing Manager Role is $200.

  7. Now, given that my Project Contract has Project Contract Line is this Role, the Amount will be determined based on this Markup. Here, I’ve quoted 100 hours for the Marketing Manager Role which makes the Cost Price as $20,000 and the Sale Price as $25,000.

  8. Now, when the Unbilled Actuals is created, it’ll consider the 25% Markup for the Marketing Manager role and calculate the Billing Amount i.e. $250 which is a Markup of 25% on top of $200.


Hope this was useful!

Thank you!

Multi-currency Cost Price List in Project Operations Lite

Here’s how you can have a Global Price List under an Org Unit without tying it to the currency of the base Org Unit which is the Default use case.

Currently, here’s how the default behavior is without having the multi-currency cost price list disabled –

Now, let’s see how this will change when we have the Multi-currency cost price list enabled for your environment.

Multi-currency Cost Price List

This can be enabled from Project Parameters. Here’s how you do this provided you have the correct access –

  1. Go to Project Parameter record in PO Lite, you’ll see this – which you can select Yes and save to enable it.



  2. When you enable, it’ll show this message before you confirm –
    You are changing the way a Cost Price List is selected by system. The setting you are choosing indicates that the system will no longer select a cost price by matching the currency of the price list with the currency of the contracting unit. Any cost price list irrespective of currency could be selected as long as it is applicable for the date. Please ensure that you understand the impact before making this change. Please note that this will impact cost price list defaulting for ongoing projects as well.


  3. Now, when you have the same enabled, you’ll be able to add a Cost Price list of different currency than that of the Organization Unit.


  4. If you see above, the different currencies can exist for the Organization which has a certain currency.

Behavior

Here’s a caveat when you select a multi-currency Cost Price List still

  1. You cannot have the Start and End Dates overlap each other even when you have different currencies. When you try to do this, it’ll give you the below error.

  2. When Time Entries are made, the Inter-Organizational Sales Actuals are also created based on the Cost Price from that Price List.





Being able to schedule for Resources across multiple geographies

Thank you!

Deploy Custom Copilot to Teams as an App

Here’s how you can deploy a Custom Copilot to a Teams Chat given that your Custom Copilot is ready and Published.

In case you are also looking to create your first Copilot, this post might help you [although it has a different use case: Create your first custom Copilot for Customer Service Hub – Part 1 | Create Copilot]

Let’s see how you can now deploy your Copilot to Teams chat. One of the first ways to deploy your Copilot!

Custom Copilot in Copilot Studio

Here’s your custom copilot and here’s how you can publish it to Teams chat –

  1. Go to the Channels section in the Custom Copilot. Make sure it is already Published.

  2. When Copilot for Teams is yet not enabled, you’ll see a button to enabled for Teams called as “Turn On Teams” as shown below.


  3. When you turn it on, it takes a few moments and the Bot is then ready to be opened in Teams.
    You also have preferences to set around it’s access and whom do you want to share it with.


  4. First, you can click Open agent and make sure it’s letting you add to your own Teams as an App.

  5. When you click on Open agent, it’ll redirect you to your Teams asking you to confirm if you want to add it to Teams as an App.

  6. Once you click Add, you can see it appear in the chat as well as an App which you can pin.
    And that’s how the interaction with your Bot will be.

  7. In my Use Case, I’m simply mentioning the name of the Project and who the new PMO should be for that project.
    So, based on the above chat, I’m setting Abhishek Kumar as the new PM for the BH Road Project and I can see it reflect in Project Operations. Behind the scenes, my Custom Copilot is using Flow to update the Project Manager on the Project, simple!

  8. Coming back to settings on availability of the bot, you can click on Availability Options and see the below settings.



    and then, you can either share a link, share it with the org or download and manually upload to Teams.

Hope this was useful!

Thank you!

Project Estimate updates feature in Project Operations parameters

If you’ve worked on Project Operations for a while and are used to managing a Project and adding Expense and Material Estimates to a Project, you might have gotten used to putting things into the Materials and Expense Estimates tab – but this is now further simplified using Project estimate updates feature.

Let’s look at how this works!

Default Layout of Estimates on a Project

Let’s see below how the default Estimates appear on a project before the feature is enabled –

  1. If you open a Project, you’ll find your Estimates tab here. It shows the distribution of time-phased estimates and this is non-editable

  2. And the Material Estimates and Expense Estimates are their own separate tabs.

    Expense Estimates


    Material Estimates

  3. Now, let’s go ahead and enable the Project estimate updates feature and look at the changes thereon.


    You’ll be asked for confirmation before proceeding as this feature cannot be turned off.

Project estimate updates

Now, let’s look at how the Project estimate updates will appear –

  1. The original Estimates tab which was static is now renamed as Time phased estimates

  2. And the Material Estimates and Expense Estimates are consolidated under the Estimates tab.
    Expense Estimates are seen as below


    And there’s a way to switch between Expenses and Materials


    And the Material Estimates are as below –

Hope this was useful!

Thank you!

Allocate Storage Capacity for Dataverse environments | Power Platform Admin Center

As Dynamics 365 storage capacity is expensive and need to meticulously manage the same is of prime importance, Microsoft is providing a way to allocate the storage capacity amongst the Dataverse environments.

So, here’s a way to allocate capacity between Database, File and Log types for each Dataverse environment and get take corrective actions when the capacity is reached.

Manage Capacity

Given you have correct rights in the Power Platform Admin Center, you’ll be able to see the Capacity under Resources –

  1. On the left hand menu in Power Platform Admin Center, look for Resources as shown below –



  2. When you see the list of all the environments, select any one to see the option to go to the Storage Allocation page as shown below.

  3. Once you are in this page, you’ll see the total consumption of Database, Log and File types across all environments – and you’ll see the button to manage this capacity amongst the environments.

  4. Now, when I click the Manage Capacity button, I’ll see a list of the environments and whether they are already within capacity or not. I can then select the environment which want to allocate/review the allocated capacity for –

  5. When I select the environment here, I’ll see that by default nothing has been allocated under this new model – but I can then enter thresholds for each type within the available space and not less than what is already consumed.

    By default, the values are blank.

  6. Now, since I have some numbers and made sure to draw from the available capacity if the thresholds are exceeded, I’ll click save for the consumption meters to show up indicating that the allocation is now saved.

This way, you can keep the environment consumption in check and make other environments take up the unallocated space and take corrective actions.

Best is to keep less used sandbox environments consume lesser space.

Hope this was useful!

Thank you!