Posts

Showing posts from November, 2025

Key Vault Retrieve for Plugin in Dataverse

  ✅ 1. Client Secret (Azure AD App Secret) This is used for authentication . What it is A client secret belongs to an App Registration in Azure AD. Think of it as: “The password of an application.” Used for ✔ Proving the identity of your Azure AD Application ✔ Getting an access token from Azure AD ✔ Allowing your Dataverse plugin to say: “Hi Azure AD, I am App XYZ. Here’s my password. Please let me access Key Vault.” Without the client secret You cannot authenticate → You cannot access Key Vault → You get 401 Unauthorized . ✅ 2. Key Vault Secret (Stored Secret) This is the actual secret you want to retrieve from Key Vault. Examples API keys Database connection strings Access tokens Certificates Any sensitive data you stored in the vault Used for ✔ Being protected in Key Vault ✔ Retrieved only after authentication ✔ Not related to Azure AD login password This is what the Key Vault returns only if the caller is authorized . 🔥 Key Diff...

Best Practices for Calling Power Automate from Dataverse or Plugins

  Best Practices for Calling Power Automate from Dataverse or Plugins Avoid timeouts • Improve performance • Enable scalable async processing Integrating Dataverse (Dynamics 365 CRM) with Power Automate is common, but many implementations accidentally create slow forms, plugin timeouts, and reliability issues. The key is understanding how to call a flow safely and efficiently —without blocking CRM operations. Below are the recommended best practices used in enterprise-grade CRM systems. ✅ 1. Use “Fire-and-Forget” Calls Plugins and Custom APIs must remain fast. CRM has strict limits: Plugin timeout: 2 minutes HTTP calls: block CRM until response arrives Form commands need to return instantly Best practice: Call Power Automate in a non-blocking way by letting the flow return 202 Accepted immediately and continue its work in the background. Why it matters Power Automate may need time to: call Azure Functions write to Dataverse talk to external APIs ...

Power Automate Error Exception

 In Power Automate, the expression: actions ('Try')? [ 'error' ]? [ 'message' ] is used to retrieve the error message from a failed action—typically inside a Scope , Try/Catch pattern , or Configure run after setup. What This Expression Does actions('Try') → Refers to the action named Try (usually inside a Try scope). ?['error'] → Safely navigates to the error object (using ? prevents failure if it doesn't exist). ?['message'] → Retrieves the actual error message string. So effectively, this expression gives you the error message produced by the Try action . 🧩 Where You Use This Typically inside the Catch scope of a “Try → Catch → Finally” pattern in Power Automate: Create a Scope called Try Create a Scope called Catch Set Catch to run only when Try has failed Inside Catch , use the expression above to extract the error 📌 Example: Compose Action Inside Catch Add a Compose action and in...

Item vs Items in PowerAutomate

  💡 Meaning of items() in Power Automate In Power Automate, items() is a function that represents the current item being processed inside a loop , such as an Apply to each action. Think of it like this 👇 If you have a list of rows and Power Automate loops through them one by one — items() refers to the single row currently being processed. 🧩 Example Suppose: Your “List rows” ( List_rows_1 ) returns: { "body" : { "value" : [ { "fullname" : "John Doe" , "emailaddress1" : "john@contoso.com" } , { "fullname" : "Jane Smith" , "emailaddress1" : "jane@contoso.com" } ] } } You then add an Apply to each action: Apply to each: value = outputs ( 'List_rows_1' )?[ 'body/value' ] Inside this loop: On the first iteration , items() = { "fullname" : "John Doe" , "emailaddress1" : ...