Toggle Auto Save for Dynamics 365 CRM environment | Power Platform Admin Center

There have been many changes over the years to the Features / Behaviors which previously used to sit in System Settings in classic Dynamics CRM. Now, that things have moved to the Power Platform Admin Center, here’s how you can change the Auto Save On / Off

Power Platform Admin Center

Let’s see how you can change the Auto Save feature for each Dynamics 365 instance

  1. Go to https://admin.powerplatform.microsoft.com/, in Environments, select the Environment whose Auto Save you want to change – click on Settings.

  2. Expand the Product tab and go to Behavior.

  3. In Behavior settings, you’ll see Auto save which could be On or Off based on the current setting which you can toggle.


  4. Finally, once you change simply click on Save and the bottom right corner which must’ve been highlighted to Save if you changed a Setting.


  5. And that’s it, the records won’t be saved until you deliberately Save upon updating data in the same.

Hope this helps!

Here are some more Dynamics 365 / Power Apps Admin Center posts you might want to check –

  1. Admin Center URLs under M365 – Power Platform, Teams, SharePoint, Power BI
  2. Turn Teams On / Off at Org Level, provisioning users | M365 Admin Center Tip
  3. Convert environments between Production and Sandbox | Power Platform Admin Center [Quick Tip]
  4. Create new Sandbox and copy Production over to it in PowerPlatform Admin Center
  5. New ‘Capacity’ analytics on PowerPlatform Admin Center
  6. Create new CDS Environment and Database quickly from PowerApps Admin Center

Thank you!

Co-presence in Power Automate | Multiple users working on a Flow

Here’s a cool feature that is just announced!

Now see who’s also Editing the Flow in parallel with you. Microsoft just announced this update is super-useful in teams working parallelly on a Flow – https://powerautomate.microsoft.com/en-us/blog/announcing-co-presence-in-power-automate/

Here’s a quick summary

Co-presence in Flow

Once a Flow is shared and if both the users happen to be on the same Flow in Edit mode at the same time, here’s how you identify

  1. Let’s say this Flow is being edited by CRM Admin and it’s shared with the user Priyesh Wagh too.
    And it appears like a usual Flow which you are editing


  2. Now, on the other hand, Priyesh Wagh also logged in and opened this Flow to Edit. And when CRM Admin too is already editing parallelly, both parties will see the other participants like so –




  3. Both parties can continue to Edit. However, when either of them saves First after both have entered, there will be no issue.
    Now, once any other party after that Saves their change i.e. 2nd save by other user than who first saved, they’ll see the below warning asking to choose an option to avoid the clash.


  4. Let’s say the user chooses to Save a copy, you’ll be asked to save this into a new Flow.



    The new Flow saved will not be shared with other users and hence, will continue to exist outside of the Shared with me section into Cloud flows section



Hope this was useful

Here are some more Power Automate / Flow posts you might want to check out –

  1. Retrieve Metadata of Global OptionSets from Dynamics 365 in Power Automate | HTTP with Azure AD action
  2. Primary Key of Activity type entity in a Dataverse connector in Power Automate | Quick Tip
  3. Split On in Power Automate in SharePoint trigger for Item updates
  4. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  5. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  6. Invalid XML issue in Dataverse connector for List Rows action | Fetch XML Query | Power Automate
  7. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  8. Invalid type. Expected Integer but got Number error in Parse JSON – Error at runtime after generating Schema | Power Automate
  9. Asynchronous HTTP Response from a Flow | Power Automate
  10. Setting Lookup in a Flow CDS Connector: Classic vs. Current Environment connector | Power Automate Quick Tip

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!

Join action in Data Operations in Power Automate

One of the commonly used connectors to perform operations in Flow is Data Operations

To describe this action in simpler terms, it is “Joining values in an array with a value”.

Join

Here’s how you can use the Join operation in Power Automate

  1. Look for Data Operations connector in Power Automate.

  2. In Join, you’ll see that you’ll need two fields that takes a source and by what character you want to Join into the String result this Action will output.

  3. Example – I want to Join numbers by a hyphen “-“. Here’s how it can be done.
    Here’s how my From and Join With fields will be populated.

  4. And this will return a String value by joining the items in the array by the value we entered in Join With.


    To be sure this is string, you can click on Show raw outputs and see the results


    Hope this was useful!

Here are some more Power Automate / Flow posts you might want to check out –

  1. Retrieve Metadata of Global OptionSets from Dynamics 365 in Power Automate | HTTP with Azure AD action
  2. Primary Key of Activity type entity in a Dataverse connector in Power Automate | Quick Tip
  3. Split On in Power Automate in SharePoint trigger for Item updates
  4. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  5. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  6. Invalid XML issue in Dataverse connector for List Rows action | Fetch XML Query | Power Automate
  7. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  8. Invalid type. Expected Integer but got Number error in Parse JSON – Error at runtime after generating Schema | Power Automate
  9. Asynchronous HTTP Response from a Flow | Power Automate
  10. Setting Lookup in a Flow CDS Connector: Classic vs. Current Environment connector | Power Automate Quick Tip

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!

Recommendation in Business Rules in Dynamics 365

Here’s a super-useful feature to describe a field in case the user is not sure if they should manipulate the field in any way or not.

In Dynamics 365 Business Rules, here’s how you can add Recommendations based on the condition selected in the Business Rules.

Scenario

Here’s the scenario we will use to demonstrate Recommendation –

  1. If my custom field called as “Context” on the Contact entity says – Customer, then, recommend the User to enter a US phone number in Business Phone field.
  2. Also, if the user choses to Apply the Recommendation, the Preferred Method of Contact will also be set to Phone.

Add Recommendation

Here’s how you can add a Recommendation post you condition in a Business Rule.

  1. In Business Rules, let’s say you will first set the condition.
    Here, I’m setting the value to check is Context = Customer


  2. If the Context field is set to Customer, then, show a recommendation. Here’s how you add a Recommendation


  3. Once you add a recommendation, you can set as to what it should point the recommendation to – In my case, I’m pointing to a Business Phone field.
    Now, the field I chose is Business Phone
    The Recommendation Title is the one that will be shown in bold when Recommendation bulb is clicked.
    The Recommendation Details will describe the Recommendation itself.
    Post this, expand the Details to add the Action to take under the Recommendation


  4. Once you apply the Recommendation Properties, it is also mandatory to add an Action – Else, the Business Rule won’t be enabled.
    In action, I want to set the value Email in the field Preferred Method of Contact.


    And the properties on the right hand side are –
    Preferred Method of Contact field to set to Phone


  5. Once all the changes are applied, you can simply Activate the Business Rule and test the same.

Working

Here’s an example –

  1. On Contact, notice the Business Phone field appears like a normal field.
    Notice the Context field says Marketing Only for now, I’ll update this in the next step.


  2. Now, I’ll select Customer

  3. When I do this, a Bulb appears next to Business Phone, click on it.


    When I click on it – The area will show the recommendation with the Title and the Recommendation I entered in the Business Rule step
    [Notice that the Preferred Method of Contact still says ‘Any’]. This will be changed when I click Apply.


  4. And when I click Apply, the Preferred Method of Contact will be set to Phone.


    Hope this was useful!

Here are some more posts on Dynamics 365 which you might want to check –

  1. Retrieve Metadata of Global OptionSets from Dynamics 365 in Power Automate | HTTP with Azure AD action
  2. Single record and multiple record auditing in Dynamics 365 to Audit record access | M365 Compliance
  3. Enable Plug-in Profiler in Settings area in SiteMap in Dynamics 365 | [Quick Tip]
  4. Disable Recent Records from Dynamics 365 Lookup Control | Model-Driven Apps [Quick Tip]
  5. Language format for Whole Number field in Dynamics 365 CE
  6. Custom Help Pages and Guided Tasks for Unified Interface in Dynamics 365
  7. Make Managed fields Required in Dynamics 365 – Managed Properties Error [Workaround] | D365 CE Quick Tip
  8. Sign up for a Dynamics 365 Project Operations (Lite Deployment) environment and provision a new instance | Power Platform
  9. Form Access Checker in new Power Apps Form Designer | Model-Driven Apps in Dynamics 365
  10. New App Designer for Model-Driven Apps | Power Platform

Thank you!

Wave 2 2021 Early Access is now available | Opt-in

As per MS Docs, the Key Dates for the Wave 2 Features are as below –

Reference Link: https://docs.microsoft.com/en-us/dynamics365-release-plan/2021wave2/?WT.mc_id=DX-MVP-5003911

Note: Since these are Early Access Features, not all features would necessarily make it to the final Wave 2 2021 release. Kindly try these features in a Sandbox environment only and test the same.

Microsoft Docs for details on Opt-in Features

Dynamics 365 Release Plan 2021 Wave 2 Early Access –
https://docs.microsoft.com/en-gb/dynamics365-release-plan/2021wave2/features-ready-early-access?WT.mc_id=DX-MVP-5003911

Power Platform Release Plan 2021 Wave 2 Early Access –
https://docs.microsoft.com/en-gb/power-platform-release-plan/2021wave2/features-ready-early-access?WT.mc_id=DX-MVP-5003911

Here’s how you can Opt-in

  1. Navigate to https://admin.powerplatform.microsoft.com/ in your tenant and go in one of the Sandbox environments you want to enable the Wave 2 2021 Features on.


  2. Click Update now as seen and enter the name of the Org in the prompt


  3. Once you confirm, the update will start applying. It’ll take about 20 mins to an hour based on how large your environment is.


Check updates

Once completed, you’ll see that the status is now On for Wave 2 2021 Updates Early Access.



Navigate to About in your App selection screen –



And you’ll see that the Updates have been applied



Here are some more Dynamics 365 Power Platform / Administrator related posts you might want to check out-

  1. Recover deleted D365 PowerApp environment using PowerShell
  2. Enable/Disable the need to Approve Email for Mailboxes in Dynamics 365 CRM CE
  3. Create a support Queue in Dynamics 365 CRM
  4. Create new Sandbox and copy Production over to it in PowerPlatform Admin Center
  5. Office 365 Admin: Quickly Enable Multi-factor authentication for users
  6. Turn Teams On / Off at Org Level, provisioning users | M365 Admin Center Tip
  7. Convert environments between Production and Sandbox | Power Platform Admin Center [Quick Tip]
  8. Make On-Demand Flow to show up in Dynamics 365 | Power Automate

Retrieve Metadata of Global OptionSets from Dynamics 365 in Power Automate | HTTP with Azure AD action

Not sure if you’ll ever need to retrieve the Metadata of Global OptionSets ever or if you’re just curious that this could be retrieved or not, probably this post might be able to help. 😊

Let’s look at how you can retrieve Global Option Set metadata from your Dynamics 365 instance in Power Automate using Invoke and HTTP Request using Azure AD connector.
I’ve mentioned some considerations along the way as well!

Flow

Let’s see how we can retrieve the Global Option Sets from your D365 instance –

  1. For simplicity, my Flow will run on-demand. Hence, the next step is to have HTTP with Azure AD connector to be used.
    Consideration: The reason we are not using Dataverse connector is because it doesn’t let you Retrieve / Retrieve Multiple on GlobalOptionSetDefinitions which is required in this case.
    And you’ll be using HTTP Request to retrieve resources from your current D365 environment and hence, will use Connection Reference based on who can access the APIs.



  2. Now, in the Invoke HTTP Request with Azure AD, use the below to query the GlobalOptionSetDefinitions


  3. Further, once this is executed, the Output of the request will be a JSON response which is tremendously huge and detailed.
    So, when I format it in an online formatter, it looks something like this –


  4. Consideration: $filter= is not supported in this type Request. Hence, it won’t work and you’ll get the below error. Below is an example when I tried –




  5. So, after referring to #3 above
    Now, once you have retrieved this data, we’ll use Filter array action in Power Automate to filter the OptionSet Metadata based on the the Name of the OptionSet and select that piece of JSON which contains the details of 1 single Option Set

  6. Now, in Select, we’ll select the Value part of the Body of the HTTP Request we’ve used above.
    body(‘Invoke_an_HTTP_request’)?[‘value’]
    And the reason we select value is because from the Body of the step above, we are selecting the Value array which is an Option Set record itself.
    Further, we’ll use a criteria to Filter the same.


    And if you Peek Code this and see


  7. Next, the criteria we’ll use to filter is based on the name of the Option Set itself which you can easily see in Dynamics 365.
    We’ll pick item()[‘Name’] to select the JSON attribute whose value we want to compare on the right hand side


    And if you Peek Code here

  8. Now, the reason we chose this is in #3 above, if you expand, you’ll see the Name JSON attribute that contains your Unique Name of the OptionSet.


  9. And now, when you Run the Flow and see the Result of the last Filter Array Step


    And if you take these Outputs and Beautify to see the structure, you’ll see that this is 1 Option Set’s Metadata. You can then see these values if you ever need to retrieve the Global Option Sets at any point.

Here are some more Power Automate / Flow posts you might want to check –

  1. Primary Key of Activity type entity in a Dataverse connector in Power Automate | Quick Tip
  2. Split On in Power Automate in SharePoint trigger for Item updates
  3. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  4. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  5. Invalid XML issue in Dataverse connector for List Rows action | Fetch XML Query | Power Automate
  6. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  7. Invalid type. Expected Integer but got Number error in Parse JSON – Error at runtime after generating Schema | Power Automate
  8. Asynchronous HTTP Response from a Flow | Power Automate
  9. Converting JSON to XML and XML to JSON in a Flow | Power Automate
  10. FormatDateTime function in a Flow | Power Automate

Thank you!

Performance Insights for Model-Driven Apps | [Preview]

One of the important aspects of ‘User Adoption’ is also ensure that the Model-Driven App you’ve designed for your Org’s Users stays optimized and ensures the users get the best of it.

Let’s see how we can utilize Performance Insights to help us optimize our Model-Driven App!

Performance (Preview)

Performance Insights is in Preview and here’s how you can access the same.

  1. Go to https://make.powerapps.com/

  2. Now, in your Apps below, select the Model-Driven App you want to view Performance metrics of.


  3. Now, once you open, you’ll see the metrics as below


    Let’s understand how you can read these metrics and take actionable actions on the same.


Understanding the Insights

These insights are categorized based on severity. Let’s see which needs your attention the most –

  1. The Insights can be narrowed based on the timeframe of 24 hours, Unfortunately, I have only 1 Date to show in my case.


  2. I recommend paying special attention to the ones with Warning on them


  3. Now, looking at the first one for example is PluginTraceLog which I left ON while I was working on Plugins on this environment in the App.
    So, if I select the first one


    The right hand pane will detail out what the issue is and what Area to focus on.



  4. Also, if you look at the How to improve part, it’ll point you to the Microsoft Docs for the suggested workaround/action.


    It’ll take you to the Microsoft Docs section of the particular issue in question –


  5. In case you have a new environment and didn’t work inside the App significantly for a particular time frame, you’ll see this message.



    Here’s the complete Microsoft Docs article on the detailed Performance Insights for Model-Driven Apps –
    https://docs.microsoft.com/en-us/powerapps/maker/common/performance-insights-overview?WT.mc_id=DX-MVP-5003911

Here are some more Model-Driven and Canvas Power Apps posts you might want to check out –

  1. HTML Text control in Canvas Power Apps | Power Platform
  2. Disable Recent Records from Dynamics 365 Lookup Control | Model-Driven Apps [Quick Tip]
  3. Advanced Lookup in Model-Driven Apps | Power Platform
  4. New App Designer for Model-Driven Apps | Power Platform
  5. Rich Text Control for Canvas and Model-Driven App | Quick Tip
  6. Form Access Checker in new Power Apps Form Designer | Model-Driven Apps in Dynamics 365
  7. How to add Rating Values to Rating Models in D365 Field Service and PSA
  8. Log Canvas Power App telemetry data in Azure Application Insights | Power Apps
  9. Transition effect on Gallery Items when hovered over in a Canvas Power App | [Quick Tip]
  10. Retrieve Hashtags from Text in a Canvas Power App | Power Platform

Thank you!

Primary Key of Activity type entity in a Dataverse connector in Power Automate | Quick Tip

In case it’s your first time creating a Cloud Flow using Dataverse connector and dealing with Primary Key of the Activity Type of entity, here’s a quick tip to keep in mind.

Normal Entity

As a creator for Flow, let’s say you have listed Records of an entity called as Accounts (out-of-the-box), you’ll notice that the name of the entity

Activity Entity

Now, if you try to search for the Name of the Activity entity, it won’t appear as it does for other entities, instead just search “Unique” and you’ll find an entry for Unique identifier of the activity entity –

  1. Name of my Activity entity is ‘Snapshot’, but it doesn’t show up when I search Snapshot.

  2. So instead, just search “Unique” or “Identifier”

  3. On the contrary, out-of-the-box entities have their own names named as Primary Keys

Here are some more Power Automate / Cloud Flow blogs you might want to check –

  1. Split On in Power Automate in SharePoint trigger for Item updates
  2. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  3. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  4. Invalid XML issue in Dataverse connector for List Rows action | Fetch XML Query | Power Automate
  5. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  6. Invalid type. Expected Integer but got Number error in Parse JSON – Error at runtime after generating Schema | Power Automate
  7. Asynchronous HTTP Response from a Flow | Power Automate
  8. Converting JSON to XML and XML to JSON in a Flow | Power Automate
  9. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  10. Tag a User in a Microsoft Teams post made using Power Automate

    Thank you!