Posts

Showing posts from August, 2025

Key Insights from the Unified Routing Partner Workshop – Routing Emails & Cases in Dynamics 365

  In the world of modern customer service, getting the right case to the right agent at the right time is critical. Microsoft’s Unified Routing in Dynamics 365 Customer Service takes this challenge head-on by blending automation, AI-driven intelligence, and flexible rules to deliver optimal routing for cases and emails. Here’s a breakdown of the key takeaways from the recent workshop on how Unified Routing works and why it matters. What is Unified Routing? Unified Routing automates how work items —such as cases, chats, or emails—are assigned to agents. Using a combination of machine learning, configurable rules, and real-time agent data , the system factors in: Agent skills Availability Customer urgency & sentiment The result? A smarter, more efficient distribution of work that aligns with business goals and customer expectations . Configuration & Workforce Management Unified Routing is controlled from a centralized management hub , giving admins th...

Azure Retry Pattern: Build Resilient, Fault-Tolerant Systems

  Transient errors—like network timeouts, brief service interruptions, or temporary throttling—are inevitable in cloud environments. Rather than failing immediately and disrupting your workflow, the Retry Pattern enables your system to gracefully retry operations and increase resilience. When to Use the Retry Pattern Use this pattern when interacting with remote services or resources , where faults are: Temporary and short-lived (e.g., brief network hiccups, brief API downtime) Likely to succeed with a subsequent attempt However, avoid this approach when: Faults are likely long-lasting—retrying might waste time and resources Failures stem from business logic errors (e.g., invalid input) You're incorrectly using retries to mask scalability issues—it's better to scale the service instead Microsoft Learn Implementing Retry in Azure Functions & Durable Workflows Durable Functions Use built-in support for retry logic with RetryOptions , especially f...

🧩 Why Azure Function Is Required in Dataverse Concurrency Handling

  In scenarios where multiple users or systems try to update the same Dataverse record simultaneously (like updating loyalty points), concurrency conflicts are common. A proven pattern to handle this is by combining Azure Service Bus Queues with Azure Functions . But why is an Azure Function required — and how does Session ID make it even more powerful? 💡 The Role of Azure Function Azure Function acts as an asynchronous worker that is automatically triggered when a new message arrives in the Service Bus Queue. Key responsibilities: Listen to Service Bus Queue When a plugin in Dataverse detects a record update, it sends a message to a queue. The Azure Function listens to that queue. Process Messages One at a Time (With Session Support) By enabling Session IDs , Azure Functions can group related messages (e.g., for the same Contact, Account, or Loyalty ID) and process them sequentially . Update Dataverse Data Safely The Azure Function connects back to Datavers...

💳 Automating Invoice Payment in Dataverse with Azure Durable Functions

Image
  In enterprise solutions, payment workflows often involve complex steps, third-party interactions, and the need for robust orchestration. In a recent article, Temmy Raharjo illustrates how Azure Durable Functions can streamline a Dataverse-integrated payment process , using a well-structured invoice payment scenario. 🎯 Problem Statement When dealing with external systems (like payment gateways), we often rely on plugins or Power Automate flows within Dynamics 365 or Dataverse. However, these come with limitations: Plugin timeouts (maximum 2 minutes) Complex retry and exception handling Limited orchestration capabilities ✅ The Solution: Azure Durable Functions Durable Functions are an extension of Azure Functions that enable stateful orchestrations . Temmy breaks down how this model can be used to coordinate a multistep invoice payment process triggered from Dataverse. 👇 Key Steps Involved: User clicks "Send Payment" in Dynamics (Dataverse model-driven...

🚀 Power Automate Tip: Accessing Specific Items in JSON Without “Apply to Each

  One of the most common frustrations in Power Automate is dealing with the “Apply to each” loop when you only want a single item from an array (for example, the 4th item). Loops add unnecessary complexity, slow down your flow, and make debugging harder. Luckily, you can avoid them with simple array indexing expressions . ✅ The Scenario Let’s say you’re using the SharePoint “Get items” action to pull Paid Time Off (PTO) requests. The output looks like this: json [ { "Title" : "Vacation" } , { "Title" : "Sick Leave" } , { "Title" : "Work from Home" } , { "Title" : "Maternity Leave" } ] You only need the 4th item (Maternity Leave) — but without looping through everything. 🔍 Two Easy Solutions 1️⃣ Direct Index Reference Power Automate arrays are zero-based , so the 4th item is at index [3] . Expression: powerfx body('Get_items')?['value'][3]?['Title']...

🎯 Dynamics 365 Customer Service: Queues vs. Teams When Assigning Cases

  When working with cases in Dynamics 365 Customer Service , one common question is: 👉 Should we use a Queue or a Team for assigning cases? Both are powerful tools, but they serve very different purposes. Let’s break it down. 🚀 What is a Queue? Think of a Queue like a shared inbox or holding bucket for cases, emails, or activities. A queue is where cases “land” before being picked up by an agent. Queues can be public (open to all users) or private (restricted members). Routing rules can send incoming cases to the right queue automatically. Agents use the Pick action to take ownership of a case. Example: A company has two queues: Technical Support and Billing Support . A billing email comes in → auto-creates a case → routed to Billing Queue . Any billing agent can pick the case from the queue and start working on it. ✅ Best for: triaging and distributing work evenly across support agents. 👥 What is a Team? A Team is a group of users wit...