Recent Discussions
Why Your Copilot Studio Agent Fails in Production (And How to Fix It)
Most Copilot Studio tutorials show you how to build a chatbot. This post is about something harder: building agents that actually work in production. I architect enterprise agents at a hospitality company — handling customer email triage, HR workflows, helpdesk automation, and reporting pipelines across multiple systems. One of those agents reduced human handling time per customer email from ~12 minutes to under 2 minutes (88% reduction) by orchestrating sentiment analysis, CRM lookups, SOP research via child agents, and response drafting — all before a human agent ever opens the email. Here is what I've learned building at that scale. The Four Layers Every Enterprise Agent Needs Most teams design only the top layer and treat everything else as "we'll figure it out later." By the time the other layers become urgent — usually after an incident — they're too expensive to retrofit. Layer Component Conversation Topics · Entities · Adaptive Cards · NLU Orchestration Agent routing · Context passing · State Integration Connectors · Power Automate · Azure Functions Governance DLP · Auth · ALM · Monitoring · Logging Build the governance layer first. Design the conversation layer last. The demo will be slightly less impressive. The production deployment will be significantly more stable. The Three Mistakes I See Most Often 1. Slot-filling designed for the happy path The default Copilot Studio pattern collects parameters one by one. It breaks the moment your flow has conditional branches — which every real enterprise workflow does. Use intent-first routing instead: identify what the user wants before collecting any parameters, then branch to a sub-flow that collects only what that variant needs. 2. Multi-agent context that gets dropped When you delegate from a router agent to a capability agent, the receiving agent needs to know who the user is and what conversation state to preserve. Native session variables don't cross agent boundaries. Build an explicit context envelope — a JSON object passed at delegation time — that carries user identity, security scope, origin topic, and return context. Your agents become stateless with respect to each other. Context travels with the conversation. 3. No async pattern for slow integrations A synchronous request that works for a REST API returning in 200ms will silently fail for a legacy system query that takes 45 seconds. Design async from day one: submit to an Azure Service Bus queue, return a correlation ID, acknowledge the user, and use proactive messaging to deliver the result when it's ready. This is the single biggest gap between demos and production deployments. A Note on Authentication — Chatbots vs. Autonomous Agents This is a distinction most articles get wrong, so it's worth being explicit. Chatbots have a human on the other end of the conversation. Authentication options here include Entra ID SSO (works in Teams and SharePoint channels where the user's identity is delegated to the agent) or client ID + secret (validates against AD but without user delegation — the agent authenticates as itself, not as the user). Autonomous agents are different in a fundamental way: there is no human in the authentication loop. The agent authenticates using the identity of the account that owns and runs it. There is no SSO because there is no interactive user session. This distinction matters because the security model shifts entirely — you are no longer protecting a user session, you are protecting a service identity. This gets more interesting when your autonomous agent connects to non-Microsoft systems. There is no universal pattern here — it depends entirely on what the external system supports: - API Key / Secret — the most common pattern for SaaS integrations. The external system issues a scoped key specifically for this integration. Store it in Azure Key Vault or encrypted Power Platform environment variables, never hardcoded in a flow. The scoping question is critical: is this a full-admin key or a least-privilege key issued only for what this agent needs? - OAuth 2.0 Client Credentials (machine-to-machine) — the agent authenticates as itself using client ID + secret against the external system's auth server and receives a bearer token. No user involved, fully automated. - Basic Auth on legacy systems — still common in enterprise environments. Credentials must live in Key Vault, not in flow variables or connector configuration in plain text. - Custom connector with encrypted connection — Power Platform manages the auth at the connector level; credentials are stored encrypted and scoped to the environment. The governing principle across all of these: the identity the agent uses to call an external system should be issued specifically for that integration, scoped to only the permissions that agent needs, stored securely (Key Vault or encrypted environment variables), and auditable — meaning the external system's logs show the agent's calls as a distinct identity, not a shared admin account that 12 other things also use. Before You Go to Production — Quick Checklist [ ] Autonomous agent's owning account/service principal is scoped to least-privilege — access only to systems the agent needs, nothing broader [ ] Non-Microsoft system credentials stored in Azure Key Vault or encrypted environment variables — never hardcoded in flows [ ] Each external system integration uses a dedicated, scoped credential — not a shared admin account [ ] External system audit logs show the agent as a distinct, identifiable caller [ ] DLP policies configured per environment — production is strict, dev is permissive [ ] Dataverse schema finalized before topic design begins [ ] Error handling designed for every integration point with user-readable failure messages [ ] Async pattern in place for any integration that may take > 10 seconds [ ] ALM pipeline configured: Dev → Test → UAT → Prod with automated solution checker [ ] Application Insights connected with custom events for key agent actions [ ] Escalation rate baseline established with alert threshold configured The One Question to Ask Before Building Anything "What does success look like in six months, and what data does the agent need access to in order to achieve it?" That answer determines your Dataverse schema, your integration architecture, your authentication model, and your DLP policy — before a single topic is created. Agents designed from that question forward are maintainable and trusted by the business. Agents designed from the conversation layer down spend their first year in retrofitting mode. Happy to go deeper on any of these layers in the comments — particularly multi-agent context passing and the async pattern, which I find generate the most questions in enterprise deployments.168Views0likes0CommentsStill Contributing, Still Supporting the Community — But Still Questioning the MVP Decision
I still don’t understand the reason behind my rejection from the Microsoft MVP Program. For years, I have been actively contributing to the tech community in Tunisia through free events, international conferences, training sessions, mentoring, and knowledge sharing around Microsoft technologies, Data, Power BI, Microsoft Fabric, and AI. I proudly represent my country in many community initiatives and continue supporting professionals and students with passion and dedication. What makes this decision difficult to understand is the lack of clear feedback or explanation regarding the refusal. Transparency is important, especially in a global program that values community impact and leadership. I will continue contributing to the community with the same energy and commitment, because community work is bigger than any title.98Views2likes0CommentsMVP profile still associated with previous employer
My old MVP profile is still associated with a previous employer’s work account. I no longer have access to that account. How can it be linked to my current account?44Views0likes0CommentsMVP Nomination form for filling in community activities did not save
Hi MVP team, I have been nominated by another MVP. I tried many times to create community activities, but the page didn't save my information. I started from scratch on a different computer with a private web browser. But it still does not work. Can anyone help me investigate it, or does anyone else face the same problem as I do? I also sent an email to mvpga I'm waiting for them to reply, but my submission deadline is 12 Feb 2026. I hope to fill out the form before the deadline. Thank you for any suggestions. Best regards, Piti128Views0likes0CommentsFeedback Request: Seamless Context Retention Between Voice and Text Modes in Copilot
בקשת שיפור: שימור הקשר בין מצב קולי לצ'אט כתוב ב־Copilot מאת: מיכאל, MS MVP (ישראל) נושא: שיחה רציפה והקשר נשמר בין קול לכתב תיוגים: Copilot, VoiceChat, ContextRetention, CrossModeSync, AI usability, Excel integration, MS MVP, User Experience, Productivity, Accessibility Feedback Request: Seamless Context Retention Between Voice and Text Modes in Copilot From: Michael, MS MVP (Israel) Topic: Improve continuity and preserve context when switching between voice and text conversations in Copilot Tags: Copilot, VoiceChat, ContextRetention, CrossModeSync, AI usability, Excel integration, MS MVP, User Experience, Productivity, Accessibility Description: Currently, when transitioning between voice and text modes in Copilot, the ongoing conversation context is lost, resulting in a fresh and disconnected session. This poses challenges for users engaged in technical workflows (e.g., Excel functions, coding steps, formula exploration), where discussion begins in voice and requires visual follow-up in text — yet the system fails to remember what was just discussed. Use Case: A user verbally asks for help creating a complex Excel formula. After several minutes of voice dialog, they switch to text mode to view and refine the formula — only to discover that Copilot no longer remembers the earlier voice interaction, forcing redundant explanation and a break in continuity. Suggested Improvements: Enable persistent conversation memory across modes Automatically bring recent voice summary into the next text session Introduce an intelligent switch that allows users to move from voice to text (and back) with full context preserved Support visual rendering (e.g., formulas, graphs) within voice sessions Value to Users: This improvement would dramatically boost workflow efficiency, reduce friction in technical tasks, and allow users to engage naturally — choosing the mode best suited to their needs without sacrificing consistency. תיאור: בעת מעבר בין שיחה קולית לצ'אט כתוב ב־Copilot, לא נשמר ההקשר הקודם. השיחה מתחילה מחדש, דבר שמפריע במיוחד בשיח טכני בו מבקשים תוכן חזותי (למשל נוסחה או קוד) אחרי שדנים בו בקול. מקרה שימוש: המשתמש שואל בקול איך ליצור נוסחה מורכבת באקסל. לאחר שיחה קולית ארוכה, הוא עובר לצ'אט כדי לראות אותה בכתב — אך מגלה ש־Copilot שכח את השיחה הקודמת. צריך לחזור על הכול מחדש. הצעות לשיפור: שימור הקשר מלא במעבר בין קול לכתב סיכום קולי אוטומטי שיופיע בצ'אט כתוב מעבר חכם בין המצבים תוך שמירת רצף אפשרות להציג תוכן טכני גם בשיחה קולית ערך למשתמשים: חוויית שימוש חכמה, טבעית ורציפה ללא הפרעות. מתאים במיוחד למשתמשים טכניים, אנשי מקצוע, תלמידים וכל מי שעובד באופן דינמי ומעמיק. Feel free to reach out if you'd like to explore this idea further. I’d be happy to help. Best regards, (micky) Avidan Michael Microsoft MVP – OFFICE 365 EXCEL Email: email address removed for privacy reasons Relevant tags: Copilot, VoiceChat, ContextRetention, Excel integration, MS MVP, User Experience, Productivity, Accessibility110Views0likes0Comments
Events
Recent Blogs
- How MVPs across Australia and New Zealand (ANZ) sustain connection, learning, and local community impact all year — through User Groups, informal networks, and continuous contribution — with Mic...Jul 16, 202659Views1like0Comments
- CollabDays is a global network of independent, non-profit, community-led events focused on Microsoft technologies. While attendees gather to learn about Microsoft products and platforms, each event i...Jul 14, 2026105Views3likes0Comments
Tags
No tags to show