Background Processing Flow for Approvals in Project Operations

If you have newly provisioned a Project Operations instance and if you’ve come across the below error message –

The error message says, “The background processing cloud flow is inactive. Approvals will be processed while you wait. Please report this to your administrator to enable background processing.

Background Flow for Approvals

Here’s what it means when you see the above notification –

  1. You can go to the Power Automate portal (https://make.powerautomate.com/) and then navigate to the Environment on which Project Operations is installed on.
    If you go to My Flows, you’ll see this Flow with the title “Project Service – Recurrently Schedule Project Approval Sets

  2. You just need to turn this Flow on.
  3. This Flow comes from the Project Operations Solution in your environment.

  4. And you’ll see the same Flow here as well. And you’ll notice that it will be Off by default if you are in a newly provisioned environment.

  5. Once this is turned on, you won’t see the notification in Approvals.


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

Thank you!

Project Approvals are stuck in Queued status | PSA / Project Operations Quick Tip

Let’s see if you recently experienced changes in the way you do Approvals in PSA/Project Operations and your Approvals are stuck in Pending/Queued state, here’s what you can do.

Scenario

Recently, if you noticed some changes in your existing PSA/Project Operations – Approval Sets feature has been introduced that needs tweaking for it to work correctly for you.

You might observe that the Approvals are stuck in Queued status for infinite time and you don’t know when they will be successfully approved.
And they appear something like this –

Approval Threshold in Project Parameters

Now, navigate to Project Parameters as below –

  1. Once in Project Service App, go to Administration area and look for Parameters.

  2. In the Project Parameters record, you’ll find this field called as threshold.

  3. Then, you can enter a Threshold number so that your Approvals are not stuck when you Approve them.


  4. Then, Approve the Time Entries again (from Project Approvals). And they should go through this time.

  5. You’ll see a message that it will denote that the Approvals have been queued for Approvals and that they will be Approved. Then, you can look at the My Past Approvals view to find the completed Approvals view in Approvals.

You can read official Microsoft Docs on Modern Approvals in Project Operations here – https://docs.microsoft.com/en-us/dynamics365/project-operations/psa/approval-set?WT.mc_id=DX-MVP-5003911

Hope this helped!

Here are some more Dynamics 365 Administrator related posts you might want to check –

  1. Enable Plug-in Profiler in Settings area in SiteMap in Dynamics 365 | [Quick Tip]
  2. Disable Recent Records from Dynamics 365 Lookup Control | Model-Driven Apps [Quick Tip]
  3. Language format for Whole Number field in Dynamics 365 CE
  4. Custom Help Pages and Guided Tasks for Unified Interface in Dynamics 365
  5. Make Managed fields Required in Dynamics 365 – Managed Properties Error [Workaround] | D365 CE Quick Tip
  6. Sign up for a Dynamics 365 Project Operations (Lite Deployment) environment and provision a new instance | Power Platform
  7. Show custom ribbon button based on Security Role of the logged in User in Dynamics 365 | Ribbon Workbench in XrmToolbox
  8. Filter records in a View owned by a Team you are a member of | Dynamics 365 CRM
  9. Duration field in Dynamics 365 converts Hours value to Days in Dynamics 365 | [Flow Workaround to convert in Hours and Mins]
  10. Form Access Checker in new Power Apps Form Designer | Model-Driven Apps in Dynamics 365

Thank you!

Create Teams Meeting invite from Power Automate

Here’s an example of several use cases which can let you create a Teams meeting from within Power Automate based on your business use case.

In my example, I’m using Power Automate to schedule a meeting from a Project in Project Operations inviting all Team Members for a follow up!

PS: Creating an Appointment in Outlook doesn’t set the Teams call. 😊

Scenario

For example, in Project Operations’ sample Project example – I want to simply put a Teams meeting to all the Project Team members of this sample Star Piping Project.

  1. Here are my Project Team Members whom I want to send the Teams invite to.


  2. And I should just be able to run a Flow from the Project itself to send an invite to all the Team Members.
    I’m calling my Flow as ‘Teams Roundtable Meeting’

  3. And my Flow is asking me when this meeting should be. So, I’ll mention the same.
    So, I want the meeting to be on 16th Sep 2021 and start at 10:30am


    And End it by 11:30am


  4. And once the values are accepted, the Meeting should be on the Teams of all the Team Members





    Let’s see how I built this Flow.

The Flow

Now, this is subjective – in your case, this could be anything we can imagine!!

  1. I’m accepting the important parameters in the form of Dataverse (Legacy) connector [Because, this connector let’s you Run the Flow in the context of the record, the new Dataverse green connector doesn’t allow this.]

    These are the values which we filled when we ran the Flow on the Project.


  2. Further, I have some steps to retrieve the Team Members, then eventually their Email addresses (In Project Operations, you need to retrieve the Email addresses from the Bookable Resources and further – see if User record has these email addresses or not)
    Next, I’ll create a variable of type Array to collect the Email Addresses which the meeting invite should go to.

  3. Now, I’ll append all the Email Addresses I retrieved from the Team Members in the array.

  4. Now, the Array is formed with all the Email addresses separated by commas. But, we are not done yet. We need to form a string.


    So, I use Join operation to join the email addresses into a string separated by semicolon (just like how you enter in the To field of emails)


    The result will be a string of Email addresses separated by semicolon


    Finally, once all the important data is collected, we can proceed towards creating the Teams invite.

Create a Teams meeting

Here’s how you can create a Teams meeting from Microsoft Teams connector in Power Automate

  1. Look for Microsoft Teams in Power Automate

  2. Now, in this Meeting, I can set the parameters based on how I want the meeting to be created.
    I’ll fill in the information which is required for the Invite to be created.
    The Start Time and End Time need to be set in the date-no-TZ format, hence, I’ve arranged the same accordingly
    Select Calendar Id as Calendar (Other options are Birthdays and United States Holidays)

  3. The Outputs are from the result of the Join operation we performed to form the string of Email addresses to be added as attendees.

  4. Finally, you can select these optional parameters to make sure the invite is created based on your preference.

    And that’s it!

Teams Invite vs Calendar Invite

Now, if you have a normal Calendar Appointment, it’ll look like below – It doesn’t have a Join button


Whereas, the Teams Calendar Invite has a Join button on it

Caveats

Some caveats worth mentioning –

  1. In case you are planning to have Appointments created in D365 and eventually either sync it to Outlook using Server-Side Sync, the invite will not be a Teams Invite.
  2. No option to later retrieve this Outlook Appointment in Flow and convert/update it to a Teams call.

Hope this was useful!

  1. Action.ShowCard vs Action.ToggleVisibility in Adaptive Cards | Microsoft Teams
  2. Admin Center URLs under M365 – Power Platform, Teams, SharePoint, Power BI
  3. Tag a User in a Microsoft Teams post made using Power Automate
  4. Visualize Adaptive Card for Teams user action within a Cloud Flow | Experimental Feature
  5. Create a Team, add Members in Microsoft Teams upon Project and Team Members creation in PSA / Project Operations | Power Automate
  6. Task Completion reminder using Flow Bot in Microsoft Teams | Power Automate
  7. Turn Teams On / Off at Org Level, provisioning users | M365 Admin Center Tip
  8. Adaptive Cards for Teams to collect data from users using Power Automate | SharePoint Lists

Thank you!

Refresh Invoice Line Transactions for Actuals in Project Operations Invoices | Project Operations [Quick Tip]

Here’s how you can add Missed Time Entries in Time and Material types of Invoices to be Included in the Invoice after it has been created

Scenario

Let’s consider this common scenario –

  1. Assume there is 1 Time Entry that have been Billed on the Invoice. The current state of the Invoice is Draft.


  2. If I zoom and show, this Time Entry is worth $170 for 2 hours.


    Which is based on this “Unbilled Sales Actual record on the T&M Project associated with this Invoice’s Project Contract


  3. Now, let’s consider this scenario where you realize 1 hour worth of Time Entry more needs to be also added to the already created Invoice.
    Here’s the Actual for the same.
    And, the Ready to Invoice on this Actual was performed “after” the Invoice is created.


    So, the Invoice is supposed to be $170 + $85 = $255.
    But the Invoice is already created, right?
    Let’s see what we can do here!

Refresh Invoice Lines on Draft Invoices

You’ll see this on a Draft Proforma Invoice on the Invoice record in Project Operations

  1. On your Draft Invoice, look for Refresh Invoice Line Transactions.


  2. It takes a few moments and your Invoice Transaction Lines included will be refreshed to show the reconsidered values.

  3. Now, here’s when this works –
    1. When any Actuals have been marked as Ready To Invoice after the Draft Invoice is generated. The Actuals must fall within the Invoice Schedule set on the Project Contract to which the Project is tied.
    2. When the Invoice is still in Draft state.

Here are some more Project Operations / Project Service Automation posts you might want to check –

  1. Sign up for a Dynamics 365 Project Operations (Lite Deployment) environment and provision a new instance | Power Platform
  2. Create a Team, add Members in Microsoft Teams upon Project and Team Members creation in PSA / Project Operations | Power Automate
  3. Cancelled Bookings Imported in Time Entries in Dynamics 365 PSA issue | [Quick Tip]
  4. Change Booking Status colors on Schedule Board for Field Service/PSA [Quick Tip]
  5. Modify Project tab’s view in Schedule Board in PSA v3 | Quick Tip
  6. Update Price feature in D365 PSA v3
  7. A manager is required for non-project time entries, absence, and vacation error in D365 PSA v3
  8. Import Time Entries in PSA from your Bookings in D365 PSA v3
  9. Time/Expense Entry Rejection comments in D365 PSA v3
  10. Booking Resources more than their capacity in D365 PSA v3

Thank you!