<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Holger Imbery</title>
    <description>The latest articles on DEV Community by Holger Imbery (@holgerimbery).</description>
    <link>https://dev.to/holgerimbery</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2736716%2Fa3ddf62e-8581-4eea-b140-b3fc2121c057.png</url>
      <title>DEV Community: Holger Imbery</title>
      <link>https://dev.to/holgerimbery</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/holgerimbery"/>
    <language>en</language>
    <item>
      <title>Creating Skills for Copilot Studio Agents: How to use the SKILL.md and Behavior-as-Code</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/holgerimbery/creating-skills-for-copilot-studio-agents-how-to-use-the-skillmd-and-behavior-as-code-4emn</link>
      <guid>https://dev.to/holgerimbery/creating-skills-for-copilot-studio-agents-how-to-use-the-skillmd-and-behavior-as-code-4emn</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Summary Lede&lt;/strong&gt; : In the latest Copilot Studio agent experience, a Skill is the place where you include the detailed knowledge of how your organization carries out a task—information that a model cannot work out on its own. Each Skill is a compact unit consisting of a name, a description, and Markdown instructions that the orchestrator loads only when the task matches. If the instructions alone are not sufficient, a Skill may also contain scripts, templates, and reference files.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We explore what a Skill is, how to write a SKILL.md file, how to bundle code and resources, how the orchestrator chooses a Skill, and how Skills should be authored, managed, and governed. It deals exclusively with the new Markdown-based Skills; the earlier Bot Framework ‘skill’ is merely given the same name, with the differences being explained in section 11.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Why read this&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want to write your first SKILL.md and get it right the first time.&lt;/li&gt;
&lt;li&gt;You have a lot of procedural guidance in one big instruction block and want a better, modular way to organize it.&lt;/li&gt;
&lt;li&gt;You need to bundle scripts and resources with your Skill and want to understand what runs and where.&lt;/li&gt;
&lt;li&gt;The word ‘skill’ is confusing because of the old Bot Framework skill—section 11 explains the difference.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What a Skill is and what it isn’t
&lt;/h2&gt;

&lt;p&gt;A skill shows the agent how to deal with a group of tasks; it is defined by three things: a name, a description, and Markdown instructions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flhwwmbur0l6dslrr4vjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flhwwmbur0l6dslrr4vjw.png" alt="Where a Skill fits in an agent: Knowledge, Tools and Skills as three roles the orchestrator combines" width="800" height="450"&gt;&lt;/a&gt;&lt;em&gt;Figure 1 — Where a Skill fits. Knowledge supplies the facts, Tools carry out the actions, and a Skill provides the know-how needed to carry out a task. The orchestrator then brings these together when required.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It helps to compare Skills to the other components inside an agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A tool connects to an external service. A Skill doesn’t.&lt;/li&gt;
&lt;li&gt;Knowledge supplies reference facts. A Skill doesn’t.&lt;/li&gt;
&lt;li&gt;A Skill provides the procedure—the step-by-step way your organization does something that the model can’t figure out on its own.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Knowledge -&amp;gt; facts the agent can look up
Tools -&amp;gt; actions the agent can take
Skills -&amp;gt; the know-how to use both well

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are two important things to know. First, the format is not unique to Copilot Studio: Skills use the Agent Skills open format, which started with Anthropic and is now also used by GitHub Copilot and Claude Code. Second, a Skill guides the agent instead of forcing it. The model still looks at the situation and decides whether to follow the Skill exactly or adjust. The Skill just makes sure the right procedure is available when needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why factor behavior into a Skill
&lt;/h2&gt;

&lt;p&gt;A Skill is just a set of instructions, so you might wonder why separate them at all. There are four reasons: two apply almost everywhere, and two depend on your situation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Manageability.&lt;/strong&gt; Each Skill is a focused unit you can review and version on its own, instead of one instruction blob that keeps growing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context management.&lt;/strong&gt; Skills load only when needed. By default, the agent keeps just the names and descriptions, and brings in the full instructions when a task matches. This means that having ten Skills only adds ten short descriptions per turn, not ten full sets of instructions, so the context window stays small.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accuracy.&lt;/strong&gt; A Skill can include detailed guidance on using tools—such as which tool to use, which parameters are important, how to write a query, what to check before calling, and what to do if a tool returns nothing. This guidance loads only when it’s relevant. With large or overlapping toolsets, this can make tool calls more reliable. However, it depends on your use case, so please test it rather than assuming it will work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed and cost.&lt;/strong&gt; When you guide the agent to the right approach, it does fewer searches, tool calls, and reasoning steps before answering. This also depends on your use case, so be sure to measure it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Anatomy of a SKILL.md
&lt;/h2&gt;

&lt;p&gt;Every Skill is the same shape: YAML front matter (name and description) followed by a Markdown body (the instructions).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architecture-review&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Reviews solution designs for compliance with enterprise&lt;/span&gt;
  &lt;span class="s"&gt;architecture standards. Use when the user asks for architecture&lt;/span&gt;
  &lt;span class="s"&gt;validation, design critique, platform fit, or governance review.&lt;/span&gt;
  &lt;span class="s"&gt;Do not use for cost estimation or licensing questions.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="c1"&gt;# Objective&lt;/span&gt;
&lt;span class="s"&gt;Review a solution architecture and identify risks, gaps, and recommendations.&lt;/span&gt;

&lt;span class="c1"&gt;# Process&lt;/span&gt;
&lt;span class="s"&gt;1. Identify the business goal.&lt;/span&gt;
&lt;span class="s"&gt;2. Extract the proposed architecture.&lt;/span&gt;
&lt;span class="s"&gt;3. Check integration, security, data, and governance concerns.&lt;/span&gt;
&lt;span class="s"&gt;4. Identify missing decisions.&lt;/span&gt;
&lt;span class="s"&gt;5. Produce a concise review with risks and recommendations.&lt;/span&gt;

&lt;span class="c1"&gt;# Rules&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Do not assume undocumented requirements.&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Separate facts from recommendations.&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Highlight open questions.&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Prefer enterprise platform standards where applicable.&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxy3o8sxyhce3fx2tta8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxy3o8sxyhce3fx2tta8g.png" alt="Anatomy of a SKILL.md file: YAML front matter as routing metadata, Markdown body as behavior" width="800" height="450"&gt;&lt;/a&gt;&lt;em&gt;Figure 2 — Anatomy of a SKILL.md file. The YAML front matter acts as routing metadata, and the Markdown body contains the behavior. The front matter (name and description) is what the runtime reads to decide when the Skill applies. The Markdown body is the behavior, and it loads only when the Skill is activated.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Naming.&lt;/strong&gt; Use only lowercase letters, numbers, and hyphens, with no hyphen at the start or end (for example: customer-support-escalation). Choose a clear, descriptive kebab-case name. When you download a Skill, the file uses this name, so a good name makes for a good filename. The open format limits names to 64 characters and descriptions to 1024.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The description is important.&lt;/strong&gt; It acts as routing metadata for the runtime, not just a comment for people. The orchestrator reads it to decide if the Skill fits a request. For example, ‘Helps with architecture’ is too vague and may activate at the wrong times. A good description explains what the Skill does, when to use it, and when not to use it. This helps the orchestrator choose the right Skill at the right time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding code: bundling scripts and resources
&lt;/h2&gt;

&lt;p&gt;For many Skills, instructions alone are enough. If you need to include more than just text, package everything as a ZIP file with SKILL.md at the root and any supporting files you need. The open format uses this folder structure, and Copilot Studio supports it now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-skill/
├── SKILL.md # required: metadata + instructions
├── scripts/ # optional executable code (e.g. Python)
├── references/ # optional documentation the Skill can consult
└── assets/ # optional templates and other resources

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two things to know about the code part:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bundled scripts run in the agent’s sandbox when needed.&lt;/strong&gt; A Skill can include a Python script and reference it in its instructions; the script loads when the Skill is selected. For example, the CAT gallery’s PowerPoint Deck Designer builds decks from a JSON spec using python-pptx in the agent’s Python container, without needing an external Azure Function. Microsoft’s CAT team plans to release a detailed guide on scripts and resources, so check runtime details in Preview as they may change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills can also point to the agent’s own tools, not just bundled scripts.&lt;/strong&gt; Instructions can say ‘use the order-lookup action here,’ referring to actions, flows, connectors, or MCP servers the agent already has. This is a soft pointer: the Skill names the capability but does not bind to it or grant access. If the agent does not have that tool, the step cannot be completed. Even if the tool exists, the orchestrator still decides whether to use it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the orchestrator finds and runs your Skill
&lt;/h2&gt;

&lt;p&gt;You don’t call a Skill directly. The orchestrator selects it from its name and description when the conversation matches, then follows the instructions step by step, including reaching for the right tool at the right moment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiup58dbrjfd8xnlv456z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiup58dbrjfd8xnlv456z.png" alt="Progressive disclosure: only skill metadata stays in context; full instructions load on a matching prompt" width="800" height="450"&gt;&lt;/a&gt;&lt;em&gt;Figure 3 — Progressive disclosure. Only names and descriptions sit in context by default; on a matching prompt, the orchestrator loads that Skill’s full instructions (and any bundled scripts or resources), then the agent acts on its general instructions plus the Skill plus the knowledge and tools it needs.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This works because Copilot Studio registers knowledge, tools, and Skills in the same way: only their metadata is kept in context by default, and the full content loads on demand when a prompt matches. The agent’s top-level instructions are the exception—they are always loaded in full. This approach is called progressive disclosure, or dynamic loading, and it helps keep large agents manageable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent context (always): general instructions
In view by default: metadata for Knowledge A,B,C · Tools A,B,C · Skills A,B,C
User prompt -&amp;gt; orchestrator evaluates: which Skill matches?
Match: Skill B -&amp;gt; load Skill B's full instructions (+ optional scripts/resources)
Agent acts on: general instructions + Skill B + the knowledge/tools it needs

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The reasoning view is your main place for debugging.&lt;/strong&gt; You can watch the orchestrator load a matching Skill and see how it follows the instructions. Use this view to adjust when Skills activate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fires too often → the description is too broad.&lt;/li&gt;
&lt;li&gt;Never fires → too narrow, or it doesn’t match the words your users actually use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Creating a Skill in Copilot Studio: three ways
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prerequisite for all three:&lt;/strong&gt; an agent created in the new experience. Skills live in the &lt;strong&gt;Skills&lt;/strong&gt; area of the agent’s &lt;strong&gt;Build&lt;/strong&gt; tab.&lt;/p&gt;

&lt;h3&gt;
  
  
  Path A — create from blank
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open your agent and select the &lt;strong&gt;Build&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;In the components panel, select &lt;strong&gt;Skills&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Add skill&lt;/strong&gt; , select &lt;strong&gt;Create from blank&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Fill in the three pieces that matter: &lt;strong&gt;Name&lt;/strong&gt; (kebab-case), &lt;strong&gt;Description&lt;/strong&gt; (what it does, when to activate, and when not to), and &lt;strong&gt;Instructions&lt;/strong&gt; (Markdown: steps, response formats, constraints, edge cases).&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Create&lt;/strong&gt;. The Skill appears in the components panel.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Next, test it in the &lt;strong&gt;Preview&lt;/strong&gt; tab to make sure it activates and works as expected. Skills you create from blank remain editable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Path B — with chat assistance
&lt;/h3&gt;

&lt;p&gt;You can also create a Skill by drafting it in a chat, instead of starting from scratch. The result is the same portable Skill, but the chat helps you shape the name, description, and instructions. You can refine it later in the configuration panel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Path C — author externally and upload
&lt;/h3&gt;

&lt;p&gt;If you prefer your own editor and source control, you can write the Skill as a file and upload it. In the components panel, select &lt;strong&gt;Skills&lt;/strong&gt; , then &lt;strong&gt;Add skill&lt;/strong&gt; and choose &lt;strong&gt;Upload a skill&lt;/strong&gt;. Drag and drop the file onto the upload box or browse to it. The system will check the file and add the Skill.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Accepted upload format&lt;/th&gt;
&lt;th&gt;Contents&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Markdown file (&lt;code&gt;.md&lt;/code&gt;)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Skill name and description in YAML front matter, plus Markdown instructions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ZIP package (&lt;code&gt;.zip&lt;/code&gt;)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Must include a SKILL.md (front matter + instructions). May optionally include supporting files: scripts, templates, reference documents.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Current scope.&lt;/strong&gt; Once you add a Skill, it belongs to that agent. If you add the agent to a Power Platform solution, the Skill moves through your ALM lifecycle with it. As of mid-2026, there is no shared, cross-product catalog—distribution is per agent—but a better way to share Skills is being developed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing instructions that actually work
&lt;/h2&gt;

&lt;p&gt;Write the body in Markdown and cover at least five things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The task&lt;/strong&gt; the Skill handles, stated up front.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step-by-step guidance&lt;/strong&gt; for how the agent should respond.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formatting&lt;/strong&gt; for the response — length, structure, what to emphasize.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edge cases&lt;/strong&gt; and how to handle them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool references&lt;/strong&gt; , where they apply.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Write the description as routing metadata.&lt;/strong&gt; This is the part that makers most often get wrong.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name specifically:&lt;/strong&gt; HR Leave Eligibility Triage, not HR Help.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Say when to use it — and when not:&lt;/strong&gt; &lt;em&gt;“Use for leave eligibility and required documentation. Do not use for payroll or benefits enrollment.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;A good test: if two reasonable makers would disagree about when the Skill applies, the description is not specific enough yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pick the shape the job needs.&lt;/strong&gt; A Skill can take whatever form fits the task. This menu helps when you’re deciding what to write:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Think of a Skill as a…&lt;/th&gt;
&lt;th&gt;Useful when the job is…&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reference manual&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Understanding a proprietary data model or schema the model doesn’t know&lt;/td&gt;
&lt;td&gt;Documenting your data model so a data tool returns the right thing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Specialist you call in&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A narrow area of expertise needed only occasionally&lt;/td&gt;
&lt;td&gt;Region-specific tax rules, applied only when that region comes up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Playbook&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;There’s a known set of plays for a recurring situation&lt;/td&gt;
&lt;td&gt;Triaging a support request: classify, then route by category&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Standard operating procedure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A task must be done the same, compliant way every time&lt;/td&gt;
&lt;td&gt;Handling a refund within policy windows and approval limits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Briefing pack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The agent needs background before it can act well&lt;/td&gt;
&lt;td&gt;Onboarding context read before answering HR questions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Checklist&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Certain validations must not be skipped&lt;/td&gt;
&lt;td&gt;Pre-submission validation before a record is created&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Protocol&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;There are firm rules for a sensitive case&lt;/td&gt;
&lt;td&gt;What to do when a user reports a suspected security incident&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Runbook&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;An operational task has defined steps and failure handling&lt;/td&gt;
&lt;td&gt;Run a pipeline: discover, analyze, add an ROI pre-scan, format the result&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Template&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Output must follow a fixed structure or house style&lt;/td&gt;
&lt;td&gt;Generating a standardized report to a fixed format&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Start simple and improve your Skill based on Preview testing. It’s better to have a small, correct Skill than a large, vague one. You can add edge cases after the main process works.&lt;/p&gt;

&lt;h2&gt;
  
  
  A worked example, end to end (illustrative)
&lt;/h2&gt;

&lt;p&gt;This is an example package that follows the documented format. Use it as a pattern, not as official sample text.&lt;/p&gt;

&lt;p&gt;SKILL.md:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;customer-support-escalation&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;&amp;gt;-&lt;/span&gt;
  &lt;span class="s"&gt;Use when a customer reports an issue a previous reply did not resolve,&lt;/span&gt;
  &lt;span class="s"&gt;requests a refund or credit above the standard threshold, or explicitly&lt;/span&gt;
  &lt;span class="s"&gt;asks for a supervisor, manager, or human agent. Do not use for general&lt;/span&gt;
  &lt;span class="s"&gt;product questions or order-status lookups.&lt;/span&gt;
&lt;span class="s"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Customer support escalation&lt;/span&gt;

&lt;span class="gu"&gt;## When to use this skill&lt;/span&gt;
Activate when the user:
&lt;span class="p"&gt;-&lt;/span&gt; Reports an issue a prior response did not resolve
&lt;span class="p"&gt;-&lt;/span&gt; Requests a refund or credit above the standard threshold
&lt;span class="p"&gt;-&lt;/span&gt; Explicitly asks for a supervisor, manager, or human agent

&lt;span class="gu"&gt;## Steps&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Acknowledge the concern and apologize briefly.
&lt;span class="p"&gt;2.&lt;/span&gt; Collect the order or case number, a one-line summary, and the desired outcome.
&lt;span class="p"&gt;3.&lt;/span&gt; Use the &lt;span class="gs"&gt;**Create Ticket**&lt;/span&gt; action to open a ticket with priority = High.
&lt;span class="p"&gt;4.&lt;/span&gt; Confirm the ticket number and the expected response window.

&lt;span class="gu"&gt;## Response format&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Keep responses under 120 words.
&lt;span class="p"&gt;-&lt;/span&gt; End every response with the ticket number in &lt;span class="gs"&gt;**bold**&lt;/span&gt;.

&lt;span class="gu"&gt;## Edge cases&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; If no order number is available, ask once, then proceed with the email on file.
&lt;span class="p"&gt;-&lt;/span&gt; Never promise a specific refund amount; state that a specialist will confirm.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Package it as a ZIP with SKILL.md at the root and any resources the instructions refer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;customer-support-escalation.zip
├── SKILL.md
├── scripts/
│ └── format_ticket.py # optional helper the instructions can reference
├── assets/
│ └── escalation_reply.md # optional response template
└── references/
    └── refund_policy.md # optional reference document

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are two code mechanisms here: step 3 points to the agent’s Create Ticket action (a tool the agent must already have), while scripts/format_ticket.py is a bundled script that the Skill includes and references directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Managing Skills across their lifecycle
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Skills&lt;/strong&gt; section of the &lt;strong&gt;Build&lt;/strong&gt; tab lists every Skill on the agent. From there:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;View&lt;/strong&gt; — the section shows everything you’ve added.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edit&lt;/strong&gt; (blank-created Skills) — select it, update &lt;strong&gt;Name&lt;/strong&gt; , &lt;strong&gt;Description&lt;/strong&gt; , or &lt;strong&gt;Instructions&lt;/strong&gt; , then &lt;strong&gt;Save&lt;/strong&gt; and re-test in Preview.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download&lt;/strong&gt; — open the Skill’s panel. For a Skill you created from blank, use the &lt;strong&gt;Download&lt;/strong&gt; icon. For an uploaded Skill, use the menu and select &lt;strong&gt;Download&lt;/strong&gt;. The file downloads as Markdown (with name and description in the front matter, plus instructions), and the filename matches the Skill’s name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replace&lt;/strong&gt; (uploaded Skills) — edit the file in your editor, then &lt;strong&gt;… → Replace&lt;/strong&gt; and browse to it. You can also swap in a different Skill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delete&lt;/strong&gt; — select the &lt;strong&gt;X&lt;/strong&gt; and confirm. Deletion is permanent for that agent, so download the Skill first if you might want to keep it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Should it be a Skill, an instruction, or a new agent?
&lt;/h2&gt;

&lt;p&gt;Two decisions come up constantly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsdyhd4vvpowrm02582d2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsdyhd4vvpowrm02582d2.png" alt="Decision flow: can the agent infer it? is it always true? leave it, put it in instructions, or make it a Skill" width="800" height="450"&gt;&lt;/a&gt;&lt;em&gt;Figure 4 — Where a piece of guidance belongs. If the agent can infer it from a good tool or knowledge description, leave it out. If it’s true in every conversation, put it in instructions. If it’s only needed sometimes, make it a Skill.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instruction, or a Skill?&lt;/strong&gt; By the time you’re weighing this, one thing is settled: the agent can’t infer this on its own. The only question is where it goes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Is it something the agent can infer from tool/knowledge descriptions?
        └─ Yes -&amp;gt; leave it to the agent; don't write it down
        └─ No -&amp;gt; Is it true in EVERY conversation, for every scenario?
                     └─ Yes -&amp;gt; put it in the agent's INSTRUCTIONS
                     └─ No -&amp;gt; make it a SKILL (situational, loaded on demand)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tone, the agent’s role, and always-on guardrails are always true, so they go in instructions. Anything that applies only in certain situations should go in a Skill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skill, or a new agent?&lt;/strong&gt; Before Skills, the instinct for every distinct task was another specialized agent. But three tasks that share the same audience and knowledge boundary are often one agent with three Skills, not three agents. Two things still point to a separate agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It would stand on its own.&lt;/strong&gt; An HR assistant and an IT support agent serve different audiences behind different security boundaries — build the agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If one agent has too many tools,&lt;/strong&gt; its accuracy can drop as the context gets crowded, and adding more Skills won’t fix it. When this happens, split the work into a separate agent and let it handle that part. Test this with your own agent to see what works best.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The naming trap: this is NOT a Bot Framework skill
&lt;/h2&gt;

&lt;p&gt;Keep this one clean. Copilot Studio has used the word &lt;strong&gt;skill&lt;/strong&gt; before, and the two meanings are unrelated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5adj97lyodw6axmb70a9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5adj97lyodw6axmb70a9.png" alt="Two different things called Skill: the new SKILL.md skill versus the legacy Bot Framework skill" width="800" height="450"&gt;&lt;/a&gt;&lt;em&gt;Figure 5 — The naming trap. There are two different things called Skill: the new SKILL.md Skill and the legacy Bot Framework skill. They only share a name; the format, runtime, and how you use them are different. In this article, ‘Skill’ always means the new Markdown format.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;Legacy (classic) meaning&lt;/th&gt;
&lt;th&gt;New-experience meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Skill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;An externally registered bot capability (Bot Framework / Microsoft 365 Agents SDK), added via a &lt;strong&gt;manifest URL&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;A &lt;strong&gt;Markdown-based&lt;/strong&gt; reusable instruction module (SKILL.md)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Format&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manifest / registration-based; hosted bot endpoint&lt;/td&gt;
&lt;td&gt;SKILL.md — YAML front matter + Markdown package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Where it runs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;An external Azure Bot Service bot&lt;/td&gt;
&lt;td&gt;Inside the Copilot Studio agent (new experience)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;How it’s invoked&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Trigger phrases + an allow-listed skill call&lt;/td&gt;
&lt;td&gt;The orchestrator matches the Skill’s description&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Integration with external, pro-code bot logic&lt;/td&gt;
&lt;td&gt;Modular, reusable behavior and instruction reuse&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The classic sense is still real and still documented: you can convert a bot into a skill and register it via a &lt;strong&gt;manifest&lt;/strong&gt; , and Copilot Studio supports skills built on &lt;strong&gt;Bot Framework SDK 4.12.0+&lt;/strong&gt; and &lt;strong&gt;Microsoft 365 Agents SDK v1.0.0+&lt;/strong&gt;. Microsoft’s guidance on using a &lt;em&gt;classic chatbot as a skill&lt;/em&gt; is explicit that it applies to classic chatbots only and isn’t available for Copilot Studio agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to tell which one a document means:&lt;/strong&gt; a SKILL.md, YAML front matter, or a ZIP package means the new model. A &lt;strong&gt;skill manifest&lt;/strong&gt; , an allow list, an &lt;strong&gt;Azure Bot Service&lt;/strong&gt; bot, or “classic chatbot” means the legacy model — and it doesn’t apply to the agents here. Throughout this article, **skilSkilleans the new Markdown format.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat Skills as a trust surface — and a governed asset
&lt;/h2&gt;

&lt;p&gt;A Skill affects how the agent behaves, and since it can now include scripts, it is a trust surface. Treat any Skill you did not write—whether it comes from the community, is generated by AI, or reused from another environment—like untrusted code: review it before adding it. Check for prompt injection, instructions that misuse tools, or anything that does not match what the SkilSkillsupposed to do.&lt;/p&gt;

&lt;p&gt;Reuse has pros and cons: one SkilSkill improve many agents, but a bad Skill can spread problems just as widely. Governance needs to keep up with this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store shared Skills in &lt;strong&gt;version-controlled repositories&lt;/strong&gt; ; use &lt;strong&gt;pull requests&lt;/strong&gt; for changes to the important ones.&lt;/li&gt;
&lt;li&gt;Give each Skill an &lt;strong&gt;owner&lt;/strong&gt; , and keep a &lt;strong&gt;changelog&lt;/strong&gt; for production ones.&lt;/li&gt;
&lt;li&gt;Keep descriptions &lt;strong&gt;precise and testable&lt;/strong&gt; —they are routing metadata (see sections 3 and 7).&lt;/li&gt;
&lt;li&gt;Avoid &lt;strong&gt;broad, overlapping&lt;/strong&gt; Skills that compete for activation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separate policy knowledge&lt;/strong&gt; (→ Knowledge) from procedure (→ Skill).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test&lt;/strong&gt; with realistic user requests, and review high-impact Skills with &lt;strong&gt;security, compliance, legal, or architecture&lt;/strong&gt; stakeholders.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because Skills are just Markdown files, they can be version-controlled, used with Git, reviewed through pull requests, and moved between agents. This keeps behavior as a long-lived, inspectable asset. Many call this &lt;strong&gt;Behavior as Code&lt;/strong&gt; : a Center of Excellence maintains approved Skills, an architecture board owns review Skills, legal publishes controlled guidance, and delivery teams own documentation Skills—all reviewed and versioned.&lt;/p&gt;

&lt;h2&gt;
  
  
  You don’t have to start from scratch — the CAT Agent Skills gallery
&lt;/h2&gt;

&lt;p&gt;You don’t have to write every SkilSkillm scratch. Microsoft’s Customer Advisory Team (CAT) publishes &lt;a href="https://microsoft.github.io/cat-agent-skills/" rel="noopener noreferrer"&gt;CAT Agent Skills&lt;/a&gt;, a gallery of skills for your AI agents. These are community-contributed instruction and script bundles you can download as Markdown (and scripts) and add to &lt;strong&gt;Cowork, Copilot Studio, or Scout&lt;/strong&gt;. The gallery lets you filter by platform (Copilot Studio has about 42 entries at the time of writing) and by type—Skills, Plugins, Automations—with tags like &lt;em&gt;productivity, documents, automation, governance,&lt;/em&gt; and &lt;em&gt;presentations&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;A few entries teach authoring as much as they do a job:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Why it’s a good example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Skill Authoring Coach&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Helps makers design concise, reusable Skills with clear triggers, instructions, resources, and packaging&lt;/td&gt;
&lt;td&gt;A meta-skill — use it to write better Skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PowerPoint Deck Designer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Builds decks from a JSON spec with python-pptx, running natively in the agent’s Python container&lt;/td&gt;
&lt;td&gt;Shows a Skill that &lt;strong&gt;bundles a script and runs code in the sandbox&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge Source Router&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Routes searches to the right region-specific source so answers stay locally accurate&lt;/td&gt;
&lt;td&gt;A pure &lt;strong&gt;procedural&lt;/strong&gt; Skill — behavior, not data or actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Iterative File Editing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Version-numbers each edited file so every update actually lands&lt;/td&gt;
&lt;td&gt;A tiny Skill fixing one specific behavior — the ideal narrow scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Universal Document Converter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Converts between Markdown, HTML, PDF, Word, PowerPoint, and Excel offline with sandbox libraries&lt;/td&gt;
&lt;td&gt;Self-contained, no-external-dependency packaging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Brand Voice Pass&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rewrites drafts to a house style&lt;/td&gt;
&lt;td&gt;A classic Center-of-Excellence governance Skill, reused across agents&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The main idea is not any single entry, but the operating model. Because these are Markdown packages using the open Agent Skills format, a gallery like this works like a &lt;strong&gt;package registry for behavior&lt;/strong&gt; : you can browse, download, add, and adapt them. Treat any imported Skill like a third-party dependency: read it, test it, and version it before using it in production (see section 12).&lt;/p&gt;

&lt;h2&gt;
  
  
  A creating-skills checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Agent created in the &lt;strong&gt;new experience&lt;/strong&gt; ; you’re working in &lt;strong&gt;Build → Skills&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Name is &lt;strong&gt;kebab-case&lt;/strong&gt; , no leading/trailing hyphen, ≤64 characters.&lt;/li&gt;
&lt;li&gt;Description reads as an &lt;strong&gt;activation contract&lt;/strong&gt; — what it does, when to use it, and when not to (≤1024 characters).&lt;/li&gt;
&lt;li&gt;Instructions cover &lt;strong&gt;task, steps, formatting, edge cases, and tool references&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Any &lt;strong&gt;scripts/templates/reference files&lt;/strong&gt; are bundled in a ZIP with SKILL.md at the root; the body references them explicitly.&lt;/li&gt;
&lt;li&gt;Tool usage is via &lt;strong&gt;soft-pointers&lt;/strong&gt; to capabilities the agent actually has.&lt;/li&gt;
&lt;li&gt;Validated in &lt;strong&gt;Preview&lt;/strong&gt; , and checked in the &lt;strong&gt;reasoning view&lt;/strong&gt; for correct activation (not too broad, not too narrow).&lt;/li&gt;
&lt;li&gt;A copy kept in &lt;strong&gt;source control&lt;/strong&gt; for versioning, review, and reuse.&lt;/li&gt;
&lt;li&gt;Confirmed you’re building a &lt;strong&gt;SKILL.md skill&lt;/strong&gt; , not a legacy Bot Framework skill manifest.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Creating a Skill is meant to be simple: write a SKILL.md file, describe when it applies as if you were programming a router, add scripts or resources only if needed, upload it, and watch it work in the reasoning view. The key is to focus on the description and scope—a precise trigger, a narrow job—and to treat each Skill as a reviewable, versioned asset, not just a quick prompt.&lt;/p&gt;

&lt;p&gt;If you follow this approach, you get what the model is designed for: instructions stay lean because situational behavior is kept in modules that the orchestrator loads only when needed. Since Skills use the &lt;strong&gt;open Agent Skills format&lt;/strong&gt; shared with Claude and GitHub Copilot, behavior you write once can be reused elsewhere. That’s why SKILL.md is becoming a building block beyond Copilot Studio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/skills-overview" rel="noopener noreferrer"&gt;Skills overview for agents (preview)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/skills-create" rel="noopener noreferrer"&gt;Create a skill for an agent (preview)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/skills-add-existing" rel="noopener noreferrer"&gt;Add an existing skill to an agent (preview)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/skills-manage" rel="noopener noreferrer"&gt;Manage and delete skills in an agent (preview)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Custom Engine (Microsoft CAT) — &lt;a href="https://microsoft.github.io/mcscatblog/posts/modern-mcs-agent-skills/" rel="noopener noreferrer"&gt;Modern Agents Have Skills Now — Here’s How They Work in Copilot Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft CAT — &lt;a href="https://microsoft.github.io/cat-agent-skills/" rel="noopener noreferrer"&gt;CAT Agent Skills gallery&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/advanced-use-pva-as-a-skill" rel="noopener noreferrer"&gt;Use a classic chatbot as a skill in a Bot Service bot (legacy Bot Framework skills — classic only)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Anthropic — &lt;a href="https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview" rel="noopener noreferrer"&gt;Agent Skills overview (SKILL.md, YAML front matter, progressive disclosure)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agents</category>
      <category>agentskills</category>
      <category>behaviorascode</category>
      <category>copilotstudio</category>
    </item>
    <item>
      <title>Copilot Studio Reimagined: The New Agent Experience, the Agentic Orchestrator, and the SKILL.md Revolution</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/holgerimbery/copilot-studio-reimagined-the-new-agent-experience-the-agentic-orchestrator-and-the-skillmd-5do3</link>
      <guid>https://dev.to/holgerimbery/copilot-studio-reimagined-the-new-agent-experience-the-agentic-orchestrator-and-the-skillmd-5do3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Summary lede&lt;/strong&gt; Microsoft’s 2026 rebuild of Copilot Studio is far more than a coat of paint. Beneath the reduced tab count and the natural-language authoring surface sits a fundamental shift in how agents are designed, orchestrated, and maintained.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The classic model centered on &lt;strong&gt;topics, triggers, and conversation paths&lt;/strong&gt;. The rebuilt experience introduces a &lt;strong&gt;new agentic orchestrator&lt;/strong&gt; , reusable &lt;strong&gt;Skills authored in Markdown&lt;/strong&gt; , &lt;strong&gt;Memory&lt;/strong&gt; as a first-class capability, a redesigned workflow experience, and tighter alignment with &lt;strong&gt;Microsoft IQ&lt;/strong&gt; and &lt;strong&gt;Microsoft Foundry&lt;/strong&gt; (formerly Azure AI Foundry).&lt;/p&gt;

&lt;p&gt;The result is a platform that increasingly resembles an &lt;em&gt;agent engineering environment&lt;/em&gt; rather than a chatbot builder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgosp3bfytlbzlo21ytwj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgosp3bfytlbzlo21ytwj.png" alt="From designing conversations to designing agents" width="799" height="456"&gt;&lt;/a&gt;&lt;em&gt;Figure 1 — The core shift: from predicting every conversation path to describing an agent’s capabilities and letting the orchestrator decide how to combine them.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Why read this&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read this if you opened Copilot Studio after &lt;strong&gt;Build 2026&lt;/strong&gt; and wondered where the familiar tabs, topics, and configuration surfaces went.&lt;/li&gt;
&lt;li&gt;Read it if you spent the last year designing agents around generative orchestration, child agents, and topic structures, and want to understand Microsoft’s new direction.&lt;/li&gt;
&lt;li&gt;And read it if the phrase &lt;strong&gt;SKILL.md&lt;/strong&gt; keeps appearing in discussions about Copilot Studio, GitHub Copilot, Claude, and modern agent architectures — because it is now the same idea in all of them.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;This article examines the architecture behind the new experience, explains what the orchestrator changes in practice, and explores why reusable Markdown-based skills may become one of the most important design patterns for enterprise AI agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed, in one paragraph
&lt;/h2&gt;

&lt;p&gt;The rebuilt Copilot Studio replaces the classic, conversation-centric architecture with an agent-centric model. Instead of authoring explicit topics, flows, and branching logic, you &lt;strong&gt;describe the agent in natural language&lt;/strong&gt; and the system generates the underlying configuration. The agent is assembled from a small set of capability components — &lt;strong&gt;Skills, Tools, Knowledge, and Connected Agents&lt;/strong&gt; , complemented by &lt;strong&gt;Memory&lt;/strong&gt; (preview) — and a &lt;strong&gt;new agentic orchestrator&lt;/strong&gt; decides at runtime how to combine them. Reusable &lt;strong&gt;SKILL.md&lt;/strong&gt; files let behavior be modularized and shared across many agents.&lt;/p&gt;

&lt;p&gt;The short version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Old Copilot Studio: Design the conversation.
New Copilot Studio: Design the agent's capabilities.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One important nuance the marketing sometimes blurs: the new agent experience runs &lt;strong&gt;alongside&lt;/strong&gt; the classic experience, and the two are &lt;strong&gt;not convertible&lt;/strong&gt; in either direction. This is a parallel platform, not an in-place upgrade.&lt;/p&gt;

&lt;h2&gt;
  
  
  From conversation design to agent design
&lt;/h2&gt;

&lt;p&gt;For years, Copilot Studio inherited concepts from its chatbot origins. A typical implementation included topics, triggers, branching logic, topic transitions, explicit conversation paths, and deterministic fallback behavior. Designing an agent often meant &lt;strong&gt;predicting every possible user journey&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That model worked well for structured support bots, FAQ scenarios, guided intake flows, and transactional assistants. But it became hard to maintain when agents needed to do more complex work — interpret ambiguous goals, work across multiple systems, select tools dynamically, call specialized agents, handle large documents, recover from partial failure, or execute multi-step tasks without a hand-authored branch for every path.&lt;/p&gt;

&lt;p&gt;The new model moves responsibility away from hand-authored conversation paths and toward the orchestrator. Instead of modeling every branch, makers define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what the agent &lt;strong&gt;knows&lt;/strong&gt; ,&lt;/li&gt;
&lt;li&gt;what &lt;strong&gt;actions&lt;/strong&gt; it can perform,&lt;/li&gt;
&lt;li&gt;what &lt;strong&gt;expertise&lt;/strong&gt; it should apply,&lt;/li&gt;
&lt;li&gt;which &lt;strong&gt;agents&lt;/strong&gt; it can collaborate with,&lt;/li&gt;
&lt;li&gt;and what &lt;strong&gt;constraints&lt;/strong&gt; it must obey.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The orchestrator determines how these components combine to accomplish the user’s objective. This is a different engineering mindset. In the classic model, the maker designs the &lt;strong&gt;dialog&lt;/strong&gt;. In the new model, the maker designs the &lt;strong&gt;operating environment&lt;/strong&gt; of the agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  The new authoring experience
&lt;/h2&gt;

&lt;p&gt;One of the most visible changes is the simplified authoring surface. Microsoft reduced the workspace from &lt;strong&gt;nine configuration tabs to four&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build · Preview · Evaluate · Monitor

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s worth being precise here, because it is easy to conflate two different things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;four tabs&lt;/strong&gt; above are the &lt;em&gt;workspace&lt;/em&gt; — where you build, test, evaluate, and monitor an agent.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;five capability components&lt;/strong&gt; below are what you actually assemble &lt;em&gt;inside&lt;/em&gt; the Build tab.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcq2algv0lorykdniq81a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcq2algv0lorykdniq81a.png" alt="Five components, one orchestrated agent" width="800" height="484"&gt;&lt;/a&gt;&lt;em&gt;Figure 2 — The four workspace tabs are distinct from the five capability components. Behavior maps to Skills, actions to Tools, context to Knowledge, delegation to Connected Agents, and continuity to Memory.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Skills — reusable behavior
&lt;/h3&gt;

&lt;p&gt;Skills define &lt;strong&gt;how&lt;/strong&gt; an agent should approach a specific type of task. They are self-contained sets of instructions written in &lt;strong&gt;Markdown&lt;/strong&gt; , and they can be created, uploaded, reused, exported, and shared across agents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tools — external actions
&lt;/h3&gt;

&lt;p&gt;Tools let the agent do something outside the language model itself: Power Automate flows, connectors, APIs, &lt;strong&gt;MCP servers&lt;/strong&gt; , and Microsoft 365 or business-system actions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Knowledge — grounding
&lt;/h3&gt;

&lt;p&gt;Knowledge gives the agent trusted context: SharePoint, Dataverse, uploaded files, enterprise data, and organizational data through &lt;strong&gt;Microsoft IQ&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connected Agents — delegation
&lt;/h3&gt;

&lt;p&gt;Specialized agents that can be delegated work. This enables multi-agent patterns where one agent acts as a front door, router, supervisor, or coordinator while others provide domain-specific capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Memory (preview) — continuity
&lt;/h3&gt;

&lt;p&gt;Persistent, per-user context that survives across sessions. Memory is a maker-toggled capability that lets an agent remember details from prior interactions and apply them later. It does not replace durable business state in systems such as Dataverse — more on that distinction in §14.&lt;/p&gt;

&lt;p&gt;The most important architectural consequence: behavior is no longer trapped inside one giant instruction block or hidden across many conversation branches. It can be &lt;strong&gt;factored into reusable, named capabilities&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Behavior -&amp;gt; Skills
Actions -&amp;gt; Tools
Context -&amp;gt; Knowledge
Delegation -&amp;gt; Connected Agents
Continuity -&amp;gt; Memory

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The agentic orchestrator: the real innovation
&lt;/h2&gt;

&lt;p&gt;The interface redesign is visible. The &lt;strong&gt;orchestrator redesign is transformative.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microsoft describes the new experience as being built on a &lt;strong&gt;new agentic orchestrator&lt;/strong&gt; — its words: built on &lt;em&gt;“a new coding harness and CLI layer,”&lt;/em&gt; with &lt;em&gt;“stronger instruction adherence and long-horizon task execution.”&lt;/em&gt; It supports &lt;strong&gt;recursive task execution&lt;/strong&gt; , can &lt;em&gt;“process large volumes of content,”&lt;/em&gt; and can &lt;em&gt;“produce rich file outputs.”&lt;/em&gt; Microsoft Learn frames it as an &lt;strong&gt;enhanced orchestration runtime&lt;/strong&gt; that improves reasoning quality and response quality, &lt;em&gt;particularly over Microsoft 365 data&lt;/em&gt; — and, unlike the classic experience, this enhanced model is &lt;strong&gt;not configurable&lt;/strong&gt; ; every agent in the new experience uses it.&lt;/p&gt;

&lt;p&gt;Unlike earlier models that leaned on predefined flows, the new orchestrator behaves like a modern AI agent runtime. Its responsibilities include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;interpreting user intent,&lt;/li&gt;
&lt;li&gt;selecting relevant skills,&lt;/li&gt;
&lt;li&gt;choosing appropriate tools,&lt;/li&gt;
&lt;li&gt;combining grounding sources,&lt;/li&gt;
&lt;li&gt;delegating work to connected agents,&lt;/li&gt;
&lt;li&gt;validating intermediate results,&lt;/li&gt;
&lt;li&gt;and generating the final answer or artifact.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This matters because modern enterprise agents rarely operate as simple question-answering bots. They need to &lt;strong&gt;perform work&lt;/strong&gt; , &lt;strong&gt;plan&lt;/strong&gt; , and decide &lt;em&gt;when&lt;/em&gt; to retrieve information, call a tool, delegate, or ask for what’s missing. The orchestrator is the layer where that decision-making happens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A note on the model.&lt;/strong&gt; Copilot Studio’s model picker surfaces multiple frontier models (including Claude models). You will see community posts describing the orchestrator as &lt;em&gt;powered by Claude&lt;/em&gt; but there is &lt;strong&gt;no official orchestrator product name&lt;/strong&gt; beyond “the agentic orchestrator”, and the model is &lt;strong&gt;selectable&lt;/strong&gt; rather than a fixed brand. Treat “powered by Claude” as shorthand for &lt;em&gt;Claude models are available&lt;/em&gt; not as an official label.&lt;/p&gt;

&lt;h2&gt;
  
  
  Planning instead of branching
&lt;/h2&gt;

&lt;p&gt;The difference is easiest to see side by side.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5omcj8396qtkf39sttgw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5omcj8396qtkf39sttgw.png" alt="Classic linear flow versus agentic orchestration" width="800" height="512"&gt;&lt;/a&gt;&lt;em&gt;Figure 3 — The classic model walks a predefined path (User → Topic → Branch → Action → Response). The agentic model hands a user goal to an orchestrator that reasons, plans, and assembles the work at runtime.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This seemingly subtle change introduces a completely different way of thinking. The agent is no longer navigating a predefined conversation — &lt;strong&gt;it is executing a plan.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That does not mean deterministic workflows disappear. They remain essential for approvals, state transitions, compliance checks, and business-critical processes. But their &lt;strong&gt;role&lt;/strong&gt; changes. In the classic model, deterministic logic often &lt;em&gt;carried&lt;/em&gt; the conversation. In the new model, deterministic logic becomes the &lt;strong&gt;guardrail, workflow backbone, or execution layer&lt;/strong&gt; around an agentic core.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmzbc8x8jdf4r7wb9c54v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmzbc8x8jdf4r7wb9c54v.png" alt="Agentic core, deterministic guardrails" width="799" height="394"&gt;&lt;/a&gt;&lt;em&gt;Figure 4 — A practical enterprise pattern: an agentic core reasons and adapts, while a deterministic layer (workflows, connected agents, validation) provides the guardrails and executes the controlled steps.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is much closer to how modern agent systems are being built across the wider AI ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skills: the most important new capability
&lt;/h2&gt;

&lt;p&gt;Among all the new features, &lt;strong&gt;Skills&lt;/strong&gt; may prove the most strategically important.&lt;/p&gt;

&lt;p&gt;Microsoft defines skills as &lt;em&gt;reusable capabilities that extend what an agent can do&lt;/em&gt;. Crucially:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unlike &lt;strong&gt;tools&lt;/strong&gt; , they do not connect to external services.&lt;/li&gt;
&lt;li&gt;Unlike &lt;strong&gt;knowledge&lt;/strong&gt; , they do not provide reference material.&lt;/li&gt;
&lt;li&gt;Skills provide &lt;strong&gt;procedural expertise and reusable behavior&lt;/strong&gt; — they tell the agent &lt;em&gt;how&lt;/em&gt; to approach a class of tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how to review an enterprise architecture proposal,&lt;/li&gt;
&lt;li&gt;how to classify an incoming support request,&lt;/li&gt;
&lt;li&gt;how to write a customer-facing incident summary,&lt;/li&gt;
&lt;li&gt;how to create a governance-compliant project document,&lt;/li&gt;
&lt;li&gt;how to evaluate whether a process should be automated,&lt;/li&gt;
&lt;li&gt;how to prepare a Power Platform solution review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Previously, this kind of procedural guidance lived in one of three places: the main instruction block, topic-specific prompts, or undocumented maker knowledge. &lt;strong&gt;Skills give it a dedicated, reusable home.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a SKILL.md?
&lt;/h2&gt;

&lt;p&gt;At its simplest, a skill contains a &lt;strong&gt;name&lt;/strong&gt; , a &lt;strong&gt;description&lt;/strong&gt; , and a set of &lt;strong&gt;instructions&lt;/strong&gt; written in Markdown. Copilot Studio’s format is deliberately standard: &lt;strong&gt;YAML front matter (name, description) plus a Markdown body&lt;/strong&gt;, packaged — when you need to ship more than instructions — as a ZIP that contains a &lt;code&gt;SKILL.md&lt;/code&gt; file and optional supporting files such as scripts, templates, and reference documents.&lt;/p&gt;

&lt;p&gt;The orchestrator examines the &lt;strong&gt;description&lt;/strong&gt; to decide whether the skill is relevant to a request. If it is, the instructions are loaded into context. If it is not, they stay out of the active context window. This solves one of the most persistent problems in enterprise agent design: &lt;strong&gt;instruction bloat.&lt;/strong&gt; Instead of thousands of lines of always-active instructions, behavior is separated into focused, reusable modules.&lt;/p&gt;

&lt;p&gt;A typical &lt;code&gt;SKILL.md&lt;/code&gt; looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architecture-review&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Reviews solution designs for compliance with enterprise&lt;/span&gt;
  &lt;span class="s"&gt;architecture standards. Use this skill when the user asks for architecture&lt;/span&gt;
  &lt;span class="s"&gt;validation, design critique, platform fit, or governance review.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Objective&lt;/span&gt;
Review a solution architecture and identify risks, gaps, and recommendations.

&lt;span class="gh"&gt;# Process&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Identify the business goal.
&lt;span class="p"&gt;2.&lt;/span&gt; Extract the proposed architecture.
&lt;span class="p"&gt;3.&lt;/span&gt; Check integration, security, data, and governance concerns.
&lt;span class="p"&gt;4.&lt;/span&gt; Identify missing decisions.
&lt;span class="p"&gt;5.&lt;/span&gt; Produce a concise review with risks and recommendations.

&lt;span class="gh"&gt;# Rules&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Do not assume undocumented requirements.
&lt;span class="p"&gt;-&lt;/span&gt; Separate facts from recommendations.
&lt;span class="p"&gt;-&lt;/span&gt; Highlight open questions.
&lt;span class="p"&gt;-&lt;/span&gt; Prefer enterprise platform standards where applicable.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F66oe8stps72sbktxncp3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F66oe8stps72sbktxncp3.png" alt="Anatomy of a SKILL.md file" width="800" height="470"&gt;&lt;/a&gt;&lt;em&gt;Figure 5 — The front matter is not documentation for humans; it is routing metadata for the runtime. The body is the task behavior, loaded only when the skill activates.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The consequence is important: &lt;strong&gt;the description is routing metadata for the agent runtime&lt;/strong&gt; , not a human-facing comment. A vague description produces unpredictable activation. A precise one — stating &lt;em&gt;what&lt;/em&gt; the skill does &lt;em&gt;and when&lt;/em&gt; to use it — helps the orchestrator select the right capability at the right time. (In the wider open format, the practical limits are a &lt;code&gt;name&lt;/code&gt; of ≤64 characters and a &lt;code&gt;description&lt;/code&gt; of ≤1024 characters.)&lt;/p&gt;

&lt;h2&gt;
  
  
  How the orchestrator loads behavior
&lt;/h2&gt;

&lt;p&gt;Skills are only half the story. The other half is &lt;em&gt;how&lt;/em&gt; they reach the model — and this is where the design earns its keep.&lt;/p&gt;

&lt;p&gt;Copilot Studio registers knowledge, tools, and skills the same way: &lt;strong&gt;only their metadata — names and descriptions — sits in context by default.&lt;/strong&gt; The full content is pulled in &lt;strong&gt;on demand&lt;/strong&gt; , when a prompt matches. The agent’s own top-level instructions are the exception: those are always loaded in full.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffc6m2m80zxi9m47o1h2f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffc6m2m80zxi9m47o1h2f.png" alt="Progressive disclosure keeps the context window lean" width="800" height="441"&gt;&lt;/a&gt;&lt;em&gt;Figure 6 — Progressive disclosure: the orchestrator keeps only names and descriptions in view, then loads a skill’s full instructions (and any bundled resources) when its description matches the request.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This pattern — often called &lt;strong&gt;progressive disclosure&lt;/strong&gt; or &lt;strong&gt;dynamic loading&lt;/strong&gt; — is what keeps large agents manageable. As one Microsoft community write-up puts it, &lt;em&gt;ten skills cost you ten short descriptions, not ten full sets of instructions&lt;/em&gt;, in every turn. The practical benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Manageability&lt;/strong&gt; — each skill is a focused unit you can review and version on its own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context economy&lt;/strong&gt; — the context window stays lean no matter how many skills exist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accuracy&lt;/strong&gt; — a skill can carry precise tool-use guidance, brought into context only when relevant (validate this per agent rather than assuming it).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed and cost&lt;/strong&gt; — nudging the agent toward the right approach cuts round-trips (again, measure it).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why SKILL.md changes enterprise architecture
&lt;/h2&gt;

&lt;p&gt;The significance of the format extends beyond Copilot Studio. Because skills are Markdown files, they become &lt;strong&gt;version-controlled, Git-native, reviewable through pull requests, shareable across teams, portable between agents, and maintainable as long-lived enterprise assets.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is what some now call &lt;strong&gt;Behavior as Code.&lt;/strong&gt; Instead of embedding organizational know-how inside prompts, teams maintain curated repositories of reusable capabilities:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/skills
  /architecture-review SKILL.md
  /power-platform-governance SKILL.md
  /customer-incident-summary SKILL.md
  /proposal-quality-check SKILL.md
  /brand-voice SKILL.md

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3i8h4dnfsgixqymctm69.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3i8h4dnfsgixqymctm69.png" alt="Skills as a governed asset" width="800" height="441"&gt;&lt;/a&gt;&lt;em&gt;Figure 7 — A new operating model: a Center of Excellence maintains approved skills, an architecture board owns review skills, legal publishes controlled guidance, marketing owns brand voice, and delivery teams own project-documentation skills — all version-controlled and reviewed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This enables a new operating model. A Center of Excellence can maintain approved skills. Architecture boards can define review skills. Legal and compliance can publish controlled guidance. Marketing can own brand and tone. Delivery teams can create reusable documentation skills. Once authored, these capabilities are reused across many agents — turning agent behavior into a &lt;strong&gt;governed, reusable, inspectable asset.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  One open format, many runtimes
&lt;/h2&gt;

&lt;p&gt;Here is the part that makes SKILL.md more than a Copilot Studio feature: &lt;strong&gt;it is not a Microsoft invention.&lt;/strong&gt; Microsoft states plainly that Copilot Studio skills are &lt;em&gt;“based on the Agent Skills open format, an open standard originally developed by Anthropic,”&lt;/em&gt; and that you can &lt;em&gt;“import skills you already have, including existing GitHub Copilot or Claude Code skills.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That means the same anatomy now appears across vendors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic Claude&lt;/strong&gt; — &lt;em&gt;Agent Skills&lt;/em&gt;: a &lt;code&gt;SKILL.md&lt;/code&gt; with YAML front matter (&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;) and a Markdown body, plus optional bundled resources, loaded via three-level progressive disclosure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Copilot / Visual Studio 2026&lt;/strong&gt; — skills follow the &lt;code&gt;agentskills.io&lt;/code&gt; specification: a directory containing a &lt;code&gt;SKILL.md&lt;/code&gt; with the same required front matter, discovered from paths such as &lt;code&gt;.github/skills/&lt;/code&gt;, &lt;code&gt;.claude/skills/&lt;/code&gt;, and &lt;code&gt;.agents/skills/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Copilot Studio&lt;/strong&gt; — the new-experience Skills described throughout this article.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1eblt18n91ci1gqokibq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1eblt18n91ci1gqokibq.png" alt="SKILL.md convergence across vendors" width="800" height="428"&gt;&lt;/a&gt;&lt;em&gt;Figure 8 — The same open format across three runtimes: a directory plus SKILL.md, YAML front matter (name + description), a Markdown body, optional resources, and progressive disclosure. Behavior written once can travel between agents and vendors.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The strategic implication is large. For the first time, a piece of &lt;em&gt;behavior&lt;/em&gt; — not code, not a model, but the procedural know-how of how your organization does something — can be &lt;strong&gt;written once and run across multiple agent runtimes.&lt;/strong&gt; Skills become portable enterprise assets in the same way that container images or OpenAPI specs are.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reality check.&lt;/strong&gt; Convergence is real, but maturity varies. Visual Studio 2026 ships built-in Microsoft skills but keeps them &lt;strong&gt;off by default&lt;/strong&gt; while it measures whether their token cost is justified — a reminder that “portable” does not mean “free,” and that every skill you load has a context window and cost footprint worth evaluating.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Skills versus tools versus knowledge
&lt;/h2&gt;

&lt;p&gt;The distinction is worth internalizing, because clean separation is one of the most important architecture disciplines in the new model.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Instructions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Overall identity and behavior&lt;/td&gt;
&lt;td&gt;“You are a procurement support agent.”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Information retrieval and grounding&lt;/td&gt;
&lt;td&gt;SharePoint policies, Dataverse records, product docs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tools&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Performing actions&lt;/td&gt;
&lt;td&gt;Create ticket, update CRM, send approval request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Skills&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Task-specific expertise&lt;/td&gt;
&lt;td&gt;“How to review a vendor onboarding request”&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A &lt;strong&gt;tool&lt;/strong&gt; might create a SharePoint document. A &lt;strong&gt;skill&lt;/strong&gt; explains how that document should be created according to organizational standards. &lt;strong&gt;Knowledge&lt;/strong&gt; provides the policy that should be referenced. &lt;strong&gt;Instructions&lt;/strong&gt; define the agent’s overall role. The &lt;strong&gt;orchestrator&lt;/strong&gt; combines all of these at runtime.&lt;/p&gt;

&lt;p&gt;A mature design therefore does not ask, “Should this be a prompt, a tool, or a knowledge source?” It asks a more precise question:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;General behavior? → &lt;strong&gt;Instructions&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Task-specific procedure? → &lt;strong&gt;Skill&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Reference information? → &lt;strong&gt;Knowledge&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;External action? → &lt;strong&gt;Tool&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Specialist ownership? → &lt;strong&gt;Connected agent&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The naming trap: two different meanings of “skills”
&lt;/h2&gt;

&lt;p&gt;There is one real source of confusion. Copilot Studio has used the word &lt;strong&gt;skills&lt;/strong&gt; before, and the two meanings are unrelated.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;Classic meaning&lt;/th&gt;
&lt;th&gt;New-experience meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Skill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;An externally registered bot capability (Bot Framework / Microsoft 365 Agents SDK), added via a &lt;strong&gt;manifest URL&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;A &lt;strong&gt;Markdown-based&lt;/strong&gt; reusable instruction module (&lt;code&gt;SKILL.md&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Connect to a pro-code bot capability&lt;/td&gt;
&lt;td&gt;Provide task-specific behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Format&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manifest / registration-based&lt;/td&gt;
&lt;td&gt;SKILL.md / Markdown package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Integration with external bot logic&lt;/td&gt;
&lt;td&gt;Modular behavior and instruction reuse&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The classic sense is still documented: you can &lt;em&gt;“convert those bots into a skill and register that skill”&lt;/em&gt; via a manifest, and Copilot Studio supports skills built on &lt;strong&gt;Bot Framework SDK 4.12.0+&lt;/strong&gt; and &lt;strong&gt;Microsoft 365 Agents SDK v1.0.0+&lt;/strong&gt;. When reading documentation or community posts, check which meaning is intended. In this article, &lt;strong&gt;skill&lt;/strong&gt; means the new Markdown-based format unless stated otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connected agents and agent specialization
&lt;/h2&gt;

&lt;p&gt;The new experience also strengthens &lt;strong&gt;agent collaboration.&lt;/strong&gt; An orchestrator can understand a request, select relevant skills, use appropriate tools, and &lt;strong&gt;delegate to connected agents.&lt;/strong&gt; (Support for connecting to other agents — via the open &lt;strong&gt;A2A / Agent2Agent&lt;/strong&gt; protocol, Microsoft Foundry agents, and the Microsoft 365 Agents SDK — actually predates the Build 2026 rebuild, arriving around Ignite in late 2025, and now folds cleanly into the new model.)&lt;/p&gt;

&lt;p&gt;This creates a natural architecture for enterprises with specialized agents: HR, finance, procurement, architecture, IT support, governance, and customer-operations agents. &lt;strong&gt;Skills become the reusable expertise layer shared across those ecosystems.&lt;/strong&gt; Multiple agents might use the same &lt;strong&gt;Executive Summary&lt;/strong&gt; skill, the same &lt;strong&gt;Risk Classification&lt;/strong&gt; skill, or the same &lt;strong&gt;Policy Compliance Review&lt;/strong&gt; skill.&lt;/p&gt;

&lt;p&gt;The separation is clean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Connected agents&lt;/strong&gt; define ownership boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; define reusable behavioral patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools&lt;/strong&gt; define system actions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge&lt;/strong&gt; defines grounding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That separation makes multi-agent architectures easier to reason about and to govern.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory and Microsoft IQ
&lt;/h2&gt;

&lt;p&gt;Memory adds another dimension. Classic agents required makers to explicitly persist every piece of state that needed to survive a conversation. For &lt;strong&gt;business state&lt;/strong&gt; , that is still the right approach: a case status, approval decision, contract value, or onboarding step should live in a durable business system such as &lt;strong&gt;Dataverse&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But not every form of continuity is business state. Some context is about &lt;strong&gt;preferences, patterns, and how work tends to happen.&lt;/strong&gt; That is where Memory becomes interesting. Microsoft’s Memory (preview) maintains a &lt;strong&gt;separate memory store for each user&lt;/strong&gt; , per agent, in a &lt;strong&gt;tenant-scoped&lt;/strong&gt; store; it captures useful signals, saves them, and applies them on future interactions. (Notably, a user’s memories for an agent are &lt;strong&gt;deleted after 28 days of inactivity&lt;/strong&gt; — Memory is a continuity aid, not a system of record.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcd7uihtelp27470368fo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcd7uihtelp27470368fo.png" alt="Where should continuity live?" width="800" height="415"&gt;&lt;/a&gt;&lt;em&gt;Figure 9 — A simple routing rule: durable business records belong in Dataverse or a business system; learned, contextual continuity belongs in Memory (per-user, per-agent, tenant-scoped).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A useful rule of thumb:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Structured process state -&amp;gt; Dataverse or business system
Learned contextual continuity -&amp;gt; Memory

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Accuracy note.&lt;/strong&gt; The official Memory documentation describes a &lt;strong&gt;per-user, per-agent, tenant-scoped file store&lt;/strong&gt;. It does &lt;strong&gt;not&lt;/strong&gt; describe Memory as being backed by Dataverse. Dataverse remains the place for durable business records and is reachable as a knowledge/tool source — but it is &lt;em&gt;not&lt;/em&gt; the Memory backing store. Keep the two mentally separate.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Microsoft IQ&lt;/strong&gt; then provides the broader grounding layer. It is best understood as an &lt;strong&gt;umbrella&lt;/strong&gt; : a set of capabilities — &lt;strong&gt;Work IQ&lt;/strong&gt; (how people work), &lt;strong&gt;Foundry IQ&lt;/strong&gt; (an organization’s policies and authoritative documents), &lt;strong&gt;Web IQ&lt;/strong&gt; (context from the web), and &lt;strong&gt;Fabric IQ&lt;/strong&gt; (business entities and data) — that form the enterprise intelligence layer of the Microsoft stack. Copilot Studio consumes Microsoft IQ as a grounding source. The design center moves from individual bots to &lt;strong&gt;shared agent infrastructure&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;From: One bot with its own topics and data
To: Many agents · shared governance · shared knowledge ·
       shared tools · shared skills · shared protocols

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Convergence with Microsoft IQ and Microsoft Foundry
&lt;/h2&gt;

&lt;p&gt;Perhaps the most strategic development is neither the orchestrator nor the UI. &lt;strong&gt;It is platform convergence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microsoft is aligning Copilot Studio, &lt;strong&gt;Microsoft Foundry&lt;/strong&gt; (the rebranded Azure AI Foundry, positioned at Build 2026 as &lt;em&gt;“the platform for building, hosting, and governing long-running AI agents”&lt;/em&gt;), &lt;strong&gt;Microsoft IQ&lt;/strong&gt; , &lt;strong&gt;MCP&lt;/strong&gt; , &lt;strong&gt;A2A&lt;/strong&gt; , &lt;strong&gt;Microsoft 365 Copilot&lt;/strong&gt; , and multi-agent architectures around a common foundation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhg72azsxwdouawk17hxo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhg72azsxwdouawk17hxo.png" alt="Standardize on the architecture, not the authoring tool" width="800" height="481"&gt;&lt;/a&gt;&lt;em&gt;Figure 10 — Low-code and pro-code remain distinct entry points, but they increasingly share a runtime (orchestration, tools, skills, MCP, A2A), a grounding layer (Microsoft IQ), and a governance layer (Microsoft 365, Entra, Purview, Defender, Agent 365).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This does not mean low-code and pro-code become the same thing. They remain different entry points for different audiences. But the gap narrows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Low-code makers -&amp;gt; Copilot Studio
Pro-code teams -&amp;gt; Microsoft Foundry
Shared runtime -&amp;gt; Orchestration, tools, skills, MCP, A2A
Shared grounding -&amp;gt; Microsoft IQ (Work / Foundry / Web / Fabric IQ)
Shared governance -&amp;gt; Microsoft 365, Entra, Purview, Defender, Agent 365

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On governance, the pieces are real and named. &lt;strong&gt;Microsoft Defender, Entra, and Intune&lt;/strong&gt; provide visibility and runtime protection for agents; &lt;strong&gt;Microsoft Purview&lt;/strong&gt; logs agent activity for traceability; and &lt;strong&gt;Agent 365&lt;/strong&gt; introduces agent-management capabilities — including an agent registry that surfaces unmanaged local agents. (Precision matters: the &lt;strong&gt;Agent 365 SDK is generally available&lt;/strong&gt; , but several surrounding capabilities are still in preview — don’t blanket-label all of Agent 365 as GA.)&lt;/p&gt;

&lt;p&gt;The instruction for platform teams is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Do not standardize only on the authoring tool. Standardize on the architecture.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Organizations don’t have to choose between low-code and pro-code. They can pick the most appropriate authoring environment while sharing common principles: governed access, reusable skills, clear ownership, connected agents, auditable tool use, and enterprise grounding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Governance implications
&lt;/h2&gt;

&lt;p&gt;The new model increases flexibility — which increases the need for discipline. &lt;strong&gt;Skills especially need governance.&lt;/strong&gt; If a skill can define how an agent behaves, it should be treated as an enterprise asset.&lt;/p&gt;

&lt;p&gt;Recommended practices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store shared skills in &lt;strong&gt;version-controlled repositories.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;pull requests&lt;/strong&gt; for changes to important skills.&lt;/li&gt;
&lt;li&gt;Define &lt;strong&gt;owners&lt;/strong&gt; for each skill.&lt;/li&gt;
&lt;li&gt;Keep skill &lt;strong&gt;descriptions precise and testable&lt;/strong&gt; (they are routing metadata — see §7).&lt;/li&gt;
&lt;li&gt;Avoid broad, overlapping skills that &lt;strong&gt;compete for activation.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separate policy knowledge&lt;/strong&gt; from procedural skill guidance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test skills&lt;/strong&gt; with realistic user requests.&lt;/li&gt;
&lt;li&gt;Maintain a &lt;strong&gt;changelog&lt;/strong&gt; for production-relevant skills.&lt;/li&gt;
&lt;li&gt;Review high-impact skills with &lt;strong&gt;security, compliance, legal, or architecture&lt;/strong&gt; stakeholders.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same skill may influence many agents. That makes reuse powerful — but it also means a &lt;strong&gt;poorly written skill can propagate flawed behavior across many agents.&lt;/strong&gt; In the classic world, bad logic was often trapped inside one topic or one bot. In the new world, reusable behavior scales quickly — so review and governance must scale with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What architects should do now
&lt;/h2&gt;

&lt;p&gt;The rebuild does not mean every classic agent should migrate immediately. A more nuanced approach:&lt;/p&gt;

&lt;h3&gt;
  
  
  For new agents
&lt;/h3&gt;

&lt;p&gt;Start with the new experience where the required capabilities are available. Design around &lt;strong&gt;Skills&lt;/strong&gt; (task-specific behavior), &lt;strong&gt;Tools&lt;/strong&gt; (actions), &lt;strong&gt;Knowledge&lt;/strong&gt; (grounding), &lt;strong&gt;Connected Agents&lt;/strong&gt; (delegation), &lt;strong&gt;Memory&lt;/strong&gt; (continuity), and &lt;strong&gt;Workflows&lt;/strong&gt; (deterministic process control). Remember that agents built here &lt;strong&gt;cannot be converted back&lt;/strong&gt; to the classic experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  For existing classic agents
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Do not migrate reflexively.&lt;/strong&gt; Classic agents still matter, especially where topic structures are stable, tested, and operationally reliable. Consider migration when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the agent needs a significant redesign,&lt;/li&gt;
&lt;li&gt;instruction complexity has grown too large,&lt;/li&gt;
&lt;li&gt;topic branching has become hard to maintain,&lt;/li&gt;
&lt;li&gt;multi-agent delegation is required,&lt;/li&gt;
&lt;li&gt;or reusable skills would clearly simplify the design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For platform teams
&lt;/h3&gt;

&lt;p&gt;Begin building a &lt;strong&gt;skills strategy&lt;/strong&gt; now. Ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which procedural behaviors are repeated across agents?&lt;/li&gt;
&lt;li&gt;Which review processes should be standardized?&lt;/li&gt;
&lt;li&gt;Which skills require central ownership, and which can be team-owned?&lt;/li&gt;
&lt;li&gt;How should skills be tested?&lt;/li&gt;
&lt;li&gt;Where should &lt;code&gt;SKILL.md&lt;/code&gt; files live, and how are they versioned and released?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The earlier this discipline is established, the easier it will be to scale agent development responsibly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing between the new experience and classic — a decision guide
&lt;/h2&gt;

&lt;p&gt;Because the two experiences run in parallel and are &lt;strong&gt;not convertible&lt;/strong&gt; , the practical question isn’t “when do I migrate everything?” — it’s “which experience fits &lt;em&gt;this&lt;/em&gt; workload?” Here is a concrete way to decide.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff5xi04q1ndy68muq3y8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff5xi04q1ndy68muq3y8c.png" alt="New agent experience (preview) versus Classic — when to use which" width="800" height="495"&gt;&lt;/a&gt;&lt;em&gt;Figure 11 — A side-by-side decision guide: choose the new experience when the value comes from reasoning and adaptivity; keep classic when it comes from predictability and a fixed script.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reach for the new agent experience (production-ready preview) when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You are building a &lt;strong&gt;brand-new agent&lt;/strong&gt; and can design it natively.&lt;/li&gt;
&lt;li&gt;The work is &lt;strong&gt;open-ended and multi-step&lt;/strong&gt; — the agent must reason, plan, and adapt rather than follow a script.&lt;/li&gt;
&lt;li&gt;You want &lt;strong&gt;reusable Skills&lt;/strong&gt; shared across several agents.&lt;/li&gt;
&lt;li&gt;You need &lt;strong&gt;multi-agent delegation&lt;/strong&gt; to specialists (connected agents).&lt;/li&gt;
&lt;li&gt;A single agent’s &lt;strong&gt;instructions have grown large and tangled&lt;/strong&gt; , and modular Skills would simplify it.&lt;/li&gt;
&lt;li&gt;You need &lt;strong&gt;Memory&lt;/strong&gt; , large-content processing, or &lt;strong&gt;rich file outputs&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Good fits:&lt;/em&gt; a cross-system service agent that triages a request and acts across CRM, ticketing, and SharePoint; a document-heavy analysis-and-drafting agent; a front-door agent that orchestrates HR, finance, and procurement specialists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay on (or keep building in) the classic experience when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Existing &lt;strong&gt;topic structures are stable, tested, and operationally reliable&lt;/strong&gt; — don’t fix what isn’t broken.&lt;/li&gt;
&lt;li&gt;The interaction is &lt;strong&gt;deterministic, transactional, and single-turn&lt;/strong&gt; (place an order, check status).&lt;/li&gt;
&lt;li&gt;You need &lt;strong&gt;strict, auditable, compliance-locked dialog&lt;/strong&gt; where every path is scripted on purpose.&lt;/li&gt;
&lt;li&gt;A capability you depend on &lt;strong&gt;isn’t available in the new experience yet&lt;/strong&gt; — some classic features haven’t carried over.&lt;/li&gt;
&lt;li&gt;You have &lt;strong&gt;no appetite to re-test&lt;/strong&gt; a working production agent right now.&lt;/li&gt;
&lt;li&gt;You need &lt;strong&gt;workflows in production today&lt;/strong&gt; — the new &lt;em&gt;workflows&lt;/em&gt; experience is &lt;strong&gt;public preview&lt;/strong&gt; , which Microsoft says is &lt;em&gt;not&lt;/em&gt; for production, even though the new &lt;em&gt;agent&lt;/em&gt; experience is a production-ready preview.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Good fits:&lt;/em&gt; an FAQ or guided-intake bot; a regulated, scripted process where deviation is a defect; a simple order-status lookup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The rule of thumb:&lt;/strong&gt; choose the new experience when the value comes from &lt;strong&gt;reasoning and adaptivity&lt;/strong&gt; ; keep classic when it comes from &lt;strong&gt;predictability and a fixed script&lt;/strong&gt;. And when you do move an agent, &lt;strong&gt;plan the redesign — don’t port&lt;/strong&gt; the old topic tree one-for-one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready-made behavior — the CAT Agent Skills gallery
&lt;/h2&gt;

&lt;p&gt;You don’t have to author every skill from scratch. Microsoft’s Customer Advisory Team (CAT) publishes &lt;strong&gt;&lt;a href="https://microsoft.github.io/cat-agent-skills/" rel="noopener noreferrer"&gt;CAT Agent Skills&lt;/a&gt;&lt;/strong&gt;, described as &lt;em&gt;“the gallery of skills for your AI agents”&lt;/em&gt;: community-contributed, drop-in instruction and script bundles you can &lt;strong&gt;download as Markdown (and scripts) and add to Cowork, Copilot Studio, or Scout.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The gallery filters by platform (Copilot Studio, Cowork, Scout) and by content type (Skills, Plugins, Automations), with tags such as &lt;em&gt;productivity, content, documents, automation,&lt;/em&gt; and &lt;em&gt;marketing&lt;/em&gt;. A few representative entries — useful both as ready-made building blocks and as &lt;strong&gt;worked examples for authoring your own&lt;/strong&gt; :&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Why it’s a useful example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Iterative File Editing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gives each edited file a version-numbered name (&lt;code&gt;report_v1.docx&lt;/code&gt;, &lt;code&gt;report_v2.docx&lt;/code&gt;…) so every update actually lands in the chat&lt;/td&gt;
&lt;td&gt;A tiny skill that fixes one specific, real Copilot Studio behavior — the ideal narrow scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PowerPoint Deck Designer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Builds polished decks from a JSON spec with &lt;code&gt;python-pptx&lt;/code&gt;, running natively in the agent’s Python container (no Azure Function needed)&lt;/td&gt;
&lt;td&gt;Shows a skill that bundles a script and runs code in the sandbox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge Source Router&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Routes knowledge searches to the right region-specific source (Americas, EMEA, APAC, Global) so answers stay locally accurate&lt;/td&gt;
&lt;td&gt;A pure &lt;em&gt;procedural&lt;/em&gt; skill — behavior, not data or actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Brand Voice Pass&lt;/strong&gt; / &lt;strong&gt;Brand Template Enforcer&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Rewrites drafts to a house style; ensures decks and docs start from the approved brand template&lt;/td&gt;
&lt;td&gt;Classic center-of-excellence governance skills, reused across agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Meeting Analyzer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Extracts decisions, action items, persona profiles, and &lt;em&gt;hidden&lt;/em&gt; insights (unspoken tensions, implicit risks) from a transcript&lt;/td&gt;
&lt;td&gt;A rich, opinionated skill with a clear output contract&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Universal Document Converter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Converts between Markdown, HTML, PDF, Word, PowerPoint, Excel/CSV, and text — fully offline, using only sandbox libraries&lt;/td&gt;
&lt;td&gt;Demonstrates self-contained, no-external-dependency packaging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Microsoft AI Platform Advisor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Interviews a customer and recommends the right platform (M365 Copilot, Agent Builder, Copilot Studio, Foundry, or Agent 365 as the governance layer)&lt;/td&gt;
&lt;td&gt;A decision-framework skill — a good template for advisory agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Skill Authoring Coach&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Helps makers design concise, reusable skills with clear triggers, instructions, resources, and packaging&lt;/td&gt;
&lt;td&gt;A meta-skill: use it to write better skills&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The point isn’t the individual entries — it’s the &lt;strong&gt;operating model.&lt;/strong&gt; Because these are just Markdown packages on the open Agent Skills format (§7, §10), a gallery like this behaves like a &lt;strong&gt;package registry for behavior&lt;/strong&gt; : browse, download, drop in, and adapt. Treat an imported skill the way you’d treat any third-party dependency — read it, test it, and version it before trusting it in production (§16).&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started — CAT’s three on-ramps
&lt;/h2&gt;

&lt;p&gt;Moving to modern agents is &lt;em&gt;“a different mental model, not just a new UI,”&lt;/em&gt; and Microsoft’s CAT team packaged the on-ramp into three resources, each answering a different question.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fis84mx7wkvsndkh6szxu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fis84mx7wkvsndkh6szxu.png" alt="Three on-ramps to modern agents: understand, see it run, upgrade" width="799" height="394"&gt;&lt;/a&gt;&lt;em&gt;Figure 12 — CAT’s three resources: a deep-dive deck to grasp the concepts, a deployable mini-site to see them run, and a migration plugin to try them on a real agent.&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Understand it — the Technical Deep Dive deck.&lt;/strong&gt; Built for builders and architects as a &lt;strong&gt;decision framework, not a feature tour.&lt;/strong&gt; It covers &lt;em&gt;where to build what&lt;/em&gt; (agent vs. workflow, and which piece belongs where), how to build modern agents and workflows, how to &lt;strong&gt;upgrade without simply porting the old design&lt;/strong&gt; , and an honest read on &lt;em&gt;what’s improved and what isn’t supported yet.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;See it run — the mini-site and sample.&lt;/strong&gt; A &lt;strong&gt;real, deployable&lt;/strong&gt; Power Platform solution (not screenshots with a story), built around &lt;strong&gt;BlastBox Omega&lt;/strong&gt; , a retro-future game store “run by agents.” Two scenarios make it concrete: 

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-Serve Card Reissue&lt;/strong&gt; — an agent handles a member request end to end, &lt;strong&gt;gating a real write action behind an identity check&lt;/strong&gt; and handing back a generated file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Block Party Trade-Up&lt;/strong&gt; — the flagship, where a &lt;strong&gt;parent agent coordinates specialist agents&lt;/strong&gt; to untangle a messy, multi-part request and settle it with a downloadable document.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it — the migration plugin.&lt;/strong&gt; Install the Copilot Studio plugin for AI coding agents and send &lt;code&gt;/migrate&lt;/code&gt; with your agent’s environment, tenant, and URL. It &lt;strong&gt;pulls the classic agent, analyzes its structure, proposes a modern architecture, and builds an upgraded agent to test:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/mcs-assistant:migrate Upgrade this agent to modern orchestration:
https://copilotstudio.microsoft.com/environments/&amp;lt;ENV_ID&amp;gt;/bots/&amp;lt;BOT_ID&amp;gt;
from tenant &amp;lt;TENANT_ID&amp;gt;. Use a capable AI model.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The guiding principle behind all three&lt;/strong&gt; is worth pinning above your desk:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Every behavior belongs in the smallest component that makes it reliable and inspectable.&lt;/strong&gt; Instructions carry what’s always true, Knowledge the searchable facts, Tools the system actions, Memory the persistent context, Skills the situational procedures, and connected agents the real specialist domains.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or, as the CAT team puts it more bluntly: &lt;em&gt;“a modern agent shouldn’t be one instruction blob with 43 tools and a prayer.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On migration, mind the word &lt;em&gt;propose&lt;/em&gt;.&lt;/strong&gt; The plugin is &lt;em&gt;“a fast assistant, not a ‘make my architecture correct’ button.”&lt;/em&gt; The anti-pattern to avoid is turning &lt;em&gt;“every topic into a Skill and every variable into memory just because they existed — that’s archaeology with YAML.”&lt;/em&gt; Instead: understand the task, keep the outcomes that must work, map each responsibility to the smallest right component, then &lt;strong&gt;run evals against the core journeys&lt;/strong&gt; and treat the generated agent as a &lt;strong&gt;first draft&lt;/strong&gt; to inspect and compare against your old tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The new Copilot Studio is not simply a modernized interface. It represents a transition &lt;strong&gt;from conversation design to agent engineering.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The combination of an &lt;strong&gt;agentic orchestrator&lt;/strong&gt; , &lt;strong&gt;modular Skills&lt;/strong&gt; , &lt;strong&gt;SKILL.md portability&lt;/strong&gt; , &lt;strong&gt;Connected Agents&lt;/strong&gt; , &lt;strong&gt;Memory&lt;/strong&gt; , &lt;strong&gt;Microsoft IQ&lt;/strong&gt; , and stronger alignment with &lt;strong&gt;Microsoft Foundry&lt;/strong&gt; creates a fundamentally different development model than the one that defined Copilot Studio for the last several years.&lt;/p&gt;

&lt;p&gt;For architects, the most important takeaway is not the reduced tab count. It is the emergence of &lt;strong&gt;reusable behavioral assets&lt;/strong&gt; — versioned, shared, governed, and loaded dynamically by an increasingly capable orchestrator. The long-term significance of Build 2026 may be summarized in a single sentence:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Microsoft is transforming Copilot Studio from a chatbot builder into an enterprise agent engineering platform.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And because it rests on an &lt;strong&gt;open&lt;/strong&gt; Agent Skills format shared with Claude and GitHub Copilot, &lt;strong&gt;SKILL.md&lt;/strong&gt; may become one of the key building blocks of that transition — not just inside Copilot Studio, but across the industry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/overview" rel="noopener noreferrer"&gt;Agents overview (preview): Microsoft Copilot Studio (new experience)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/skills-overview" rel="noopener noreferrer"&gt;Skills overview for agents (preview)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/memory-overview" rel="noopener noreferrer"&gt;Memory (preview) for agents&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/configuration-add-skills" rel="noopener noreferrer"&gt;Configure skills for use in Copilot Studio agents (classic Bot Framework / M365 Agents SDK skills)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/add-agent-agent-to-agent" rel="noopener noreferrer"&gt;Connect to another agent over A2A&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-add-other-agents" rel="noopener noreferrer"&gt;Add other agents to an agent (overview)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/fabric/iq/overview" rel="noopener noreferrer"&gt;Fabric IQ overview (Microsoft IQ: Work IQ, Foundry IQ, Web IQ, Fabric IQ)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/visualstudio/ide/copilot-agent-skills?view=visualstudio" rel="noopener noreferrer"&gt;Agent Skills in Visual Studio (agentskills.io spec)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Copilot Studio Blog — &lt;a href="https://techcommunity.microsoft.com/blog/copilot-studio-blog/meet-the-new-copilot-studio-rebuilt-for-more-complex-multi-step-work/4526488" rel="noopener noreferrer"&gt;Meet the new Copilot Studio: rebuilt for more complex, multi-step work&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Custom Engine (Microsoft) — &lt;a href="https://microsoft.github.io/mcscatblog/posts/modern-mcs-agent-skills/" rel="noopener noreferrer"&gt;Modern Agents Have Skills Now — How They Work in Copilot Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Custom Engine (Microsoft) — &lt;a href="https://microsoft.github.io/mcscatblog/posts/new-orchestrator-resources/" rel="noopener noreferrer"&gt;New Orchestrator, New Rules? CAT’s Got You (migration, samples, deep-dive deck)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft CAT — &lt;a href="https://microsoft.github.io/cat-agent-skills/" rel="noopener noreferrer"&gt;CAT Agent Skills gallery&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Security Blog — &lt;a href="https://www.microsoft.com/en-us/security/blog/2026/06/02/microsoft-build-2026-securing-code-agents-and-models-across-the-development-lifecycle/" rel="noopener noreferrer"&gt;Microsoft Build 2026: securing code, agents, and models (Agent 365, Entra, Purview, Defender)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Anthropic — &lt;a href="https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview" rel="noopener noreferrer"&gt;Agent Skills overview (SKILL.md, YAML frontmatter, progressive disclosure)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub Docs — &lt;a href="https://docs.github.com/en/copilot/how-tos/copilot-sdk/features/skills" rel="noopener noreferrer"&gt;Custom skills in the Copilot SDK&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Build 2026 — &lt;a href="https://build.microsoft.com/en-US/home" rel="noopener noreferrer"&gt;Event dates (June 2–3, 2026)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agents</category>
      <category>agentskills</category>
      <category>build2026</category>
      <category>copilotstudio</category>
    </item>
    <item>
      <title>Multi-Agent Orchestration with Copilot Studio — Part 3: The Build 2026 Rebuild</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 18 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/holgerimbery/multi-agent-orchestration-with-copilot-studio-part-3-the-build-2026-rebuild-3pad</link>
      <guid>https://dev.to/holgerimbery/multi-agent-orchestration-with-copilot-studio-part-3-the-build-2026-rebuild-3pad</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Summary lede.&lt;/strong&gt; This is the third of three articles in the multi-agent orchestration series. Where Parts 1 and 2 cover the released, generally available Copilot Studio — the classic model built on generative orchestration — Part 3 turns to the rebuilt experience Microsoft introduced at Build 2026. At Build 2026 (June 2–3) and in the &lt;em&gt;“Meet the new Copilot Studio”&lt;/em&gt; post that followed on June 9, Microsoft shipped a rebuilt Copilot Studio: a streamlined four-surface agent model (Skills, Tools, Knowledge, Connected agents) plus a Memory surface, a new agentic orchestrator built on a coding-harness and CLI layer, a redesigned workflow designer, and a deeper convergence with Microsoft Foundry under a shared knowledge layer called Microsoft IQ. Parts 1 and 2 describe the &lt;em&gt;classic&lt;/em&gt; model — the five surfaces, child agents, the four patterns — which still ships and is fully supported. Part 3 describes what replaces it as the default forward path, what is genuinely new, and what carries over unchanged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About this series.&lt;/strong&gt; This is Part 3 of three. &lt;strong&gt;Part 1 — Foundations&lt;/strong&gt; establishes the vocabulary, when to split a single agent, the five configuration surfaces, the four orchestration patterns, and how MCP and A2A are configured. &lt;strong&gt;Part 2 — In Practice&lt;/strong&gt; turns those decisions into four end-to-end scenarios, a starter MCP server inventory, and ten production anti-patterns. Parts 1 and 2 describe the &lt;strong&gt;released, generally available feature set&lt;/strong&gt; — the “classic” Copilot Studio experience, built on &lt;strong&gt;generative orchestration&lt;/strong&gt; , which is GA and fully supported. &lt;strong&gt;Part 3 — The Build 2026 Rebuild&lt;/strong&gt; (this article) describes the new four-surface model (Skills, Memory, a new orchestrator); those features are &lt;strong&gt;in public preview and subject to change&lt;/strong&gt; before general availability. Read Part 3 as forward-looking: surface names, behaviors, and availability may be adjusted before GA, so verify the current status before committing a production design to it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Status, stated plainly.&lt;/strong&gt; The new experience is in &lt;strong&gt;public preview&lt;/strong&gt;. It is available in production environments worldwide, and Microsoft’s own post says it is “ready to create agents for production use.” Still, the same post includes an explicit correction: the features are in public preview, not generally available. The new and classic experiences &lt;strong&gt;coexist&lt;/strong&gt; — you opt into the new one with “Try now” on the Copilot Studio homepage, and your classic agents keep working. Treat everything in this article as a preview unless noted, and re-check the status before committing a production design to it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update since Parts 1 &amp;amp; 2 were published.&lt;/strong&gt; A few developments since those articles went out, re-verified against Microsoft Learn as of mid-July 2026. The &lt;strong&gt;Windows 365 for Agents MCP server&lt;/strong&gt; is now &lt;strong&gt;generally available&lt;/strong&gt; , giving an agent full operational control over a Windows 365 cloud PC — desktop interaction, browser automation, and semantic UI inspection — extending the Computer Use / computer-using-agent thread from Part 2’s IT-triage scenario. The &lt;strong&gt;classic experience remains fully supported, and nothing in the rebuild is deprecated&lt;/strong&gt; , so Parts 1 and 2 remain the accurate reference for classic agents. And the two time-sensitive facts those articles turn on still hold: &lt;strong&gt;A2A reached general availability in April 2026&lt;/strong&gt; , and &lt;strong&gt;CVE-2026-21520 (“ShareLeak,” CVSS 7.5)&lt;/strong&gt; remains the relevant indirect-prompt-injection disclosure — patched in January 2026, publicly disclosed in April 2026 — with no newer CVE superseding it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why read this&lt;/strong&gt; Read this if you read Parts 1 and 2, opened Copilot Studio, and found a different product than the one those articles described — four tabs instead of nine, “Skills” where you expected child agents, a “Memory” surface that wasn’t there before, and a chat that references Markdown files. Nothing in Parts 1 and 2 is wrong for the classic experience, but the vocabulary has moved. This article reconciles the two: it maps the classic five surfaces onto the new four-plus-Memory model, explains what “Skills” now means (and the naming trap that comes with it), and shows that the four orchestration patterns survive the change intact. Read it before you start a new build in the new experience, so you pick the right surface for each piece from the start.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. What changed, in one paragraph
&lt;/h2&gt;

&lt;p&gt;Copilot Studio used to present an agent as nine configuration tabs and a mental model of five surfaces — Instructions, Knowledge, Tools, Topics, Triggers — with child agents and connected agents as the two ways to compose with it. The rebuilt experience collapses that to &lt;strong&gt;four surfaces — Skills, Tools, Knowledge, Connected agents — plus a Memory surface in preview&lt;/strong&gt; , driven by a new orchestrator that behaves much more like a coding agent than a dialog engine. “Skills” is the headline change: agent behavior is now authored as &lt;strong&gt;reusable Markdown that loads on demand&lt;/strong&gt; , in the same &lt;code&gt;SKILL.md&lt;/code&gt; style used by GitHub Copilot and Claude Code — and Copilot Studio can import those existing skills directly. Child agents, as a distinct surface, are absent from the new model; their two jobs are absorbed by Skills (factoring behavior into a single agent) and Connected agents (collaboration across agents). Underneath, Copilot Studio and Microsoft Foundry are converging on a single runtime and knowledge layer (Microsoft IQ), so a low-code Copilot Studio agent and a pro-code Foundry agent can act as peers.&lt;/p&gt;

&lt;p&gt;The rest of this article unpacks each of those, with the classic-to-new mapping made explicit.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. From nine tabs to four surfaces
&lt;/h2&gt;

&lt;p&gt;The most visible change is the reduction from nine configuration tabs to four, with the essential configuration brought to the front. The new agent surfaces are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; — define behaviors through structured instructions, authored as Markdown and loaded on demand. (This is new; see §3.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools&lt;/strong&gt; — connect the agent to external systems and actions: connectors, Power Automate flows, MCP servers, and now Work IQ MCP tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge&lt;/strong&gt; — provide trusted context to guide decisions: SharePoint, Dataverse, files, Graph connectors, and so on. In the new experience, &lt;strong&gt;Microsoft IQ&lt;/strong&gt; sources plug in here too — &lt;strong&gt;Work IQ&lt;/strong&gt; (Microsoft 365 org data), &lt;strong&gt;Fabric IQ&lt;/strong&gt; (Fabric business data and analytics), and &lt;strong&gt;Foundry IQ&lt;/strong&gt; &lt;em&gt;(preview)&lt;/em&gt;, which ground the agent on enterprise knowledge bases indexed by Azure AI Search in Azure AI Foundry. (See §5.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connected agents&lt;/strong&gt; — collaborate across agents to complete work (Copilot Studio agents, plus external agents over A2A, and Microsoft Foundry / Fabric / M365 Agents SDK agents in preview).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Plus, in preview, a fifth surface:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Memory (preview)&lt;/strong&gt; — remember interactions, workflows, and context for improved results across sessions. (See §5.)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mapping this back to the classic five surfaces from Part 1:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Classic surface (Parts 1–2)&lt;/th&gt;
&lt;th&gt;Where it lives in the new model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Instructions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Largely subsumed by &lt;strong&gt;Skills&lt;/strong&gt; — base instructions remain, but reusable behavior moves into load-on-demand markdown skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Knowledge&lt;/strong&gt; — unchanged in concept&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tools&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Tools&lt;/strong&gt; — unchanged in concept, now including Work IQ MCP tools&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Topics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;De-emphasized — the new orchestrator reduces the need for hand-authored topic trees; deterministic logic moves into &lt;strong&gt;workflows&lt;/strong&gt; (see §6). Topics remain in the classic experience&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Triggers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Still present for autonomous/event-driven runs; less prominent in the streamlined surface set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Child agents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Removed as a surface&lt;/strong&gt; — folded into Skills (in-agent behavior) and Connected agents (cross-agent)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Connected agents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Connected agents&lt;/strong&gt; — unchanged in concept&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;(new)&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Memory (preview)&lt;/strong&gt; — persistent cross-session understanding&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The practical effect is that the new model pushes you toward two clean compositional choices — &lt;strong&gt;Skills&lt;/strong&gt; for what one agent should know how to do, and &lt;strong&gt;Connected agents&lt;/strong&gt; for handing work to another agent — instead of the older three-way split that included child agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Skills: behavior as load-on-demand markdown
&lt;/h2&gt;

&lt;p&gt;In the rebuilt experience, &lt;strong&gt;Skills&lt;/strong&gt; are &lt;em&gt;“reusable instructions in Markdown that can load on demand for completing specific tasks,”&lt;/em&gt; and — importantly — you can &lt;em&gt;“import skills you already have, including existing GitHub Copilot or Claude Code skills.”&lt;/em&gt; That single sentence is the most consequential change in the release.&lt;/p&gt;

&lt;h3&gt;
  
  
  What this actually is
&lt;/h3&gt;

&lt;p&gt;A skill in this sense is the &lt;strong&gt;&lt;code&gt;SKILL.md&lt;/code&gt; pattern&lt;/strong&gt; : a Markdown file with light frontmatter (a &lt;code&gt;name&lt;/code&gt; and a &lt;code&gt;description&lt;/code&gt; of when to use it) and a Markdown body of instructions, examples, and guidelines. The orchestrator reads the descriptions and &lt;strong&gt;loads the full skill body only when a task needs it&lt;/strong&gt; — progressive disclosure, rather than stuffing every rule into one always-on instruction block. This is the same convention that GitHub Copilot and Claude Code use for agent skills, and Copilot Studio now supports it natively, including the ability to import skills authored for those tools. You author a skill once, add it to multiple agents, and can export it as a Markdown file or package to share — the reusable-library model those coding tools already use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why it matters for everything in Parts 1 and 2
&lt;/h3&gt;

&lt;p&gt;Two of the recurring lessons in the earlier articles were “keep the instruction block small” (Part 1’s 8,000-character limit) and “factor complexity into child agents.” Skills address both more directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The instruction-bloat problem.&lt;/strong&gt; Instead of one monolithic instruction block bumping the 8,000-character ceiling, behavior is split into focused skills that load only when relevant. The “god agent” anti-pattern (Part 2, anti-pattern 1) gets a native remedy at the instruction layer, not only at the agent layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The child-agent use case.&lt;/strong&gt; Part 1 used child agents to “factor complexity inside one parent.” That job is now a &lt;strong&gt;skill&lt;/strong&gt; , not a sub-agent. You no longer create a child agent named “Validate Expense Code”; you write a &lt;code&gt;validate-expense-code&lt;/code&gt; skill that loads when needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The naming trap — two different “skills”
&lt;/h3&gt;

&lt;p&gt;Be careful: Copilot Studio now has &lt;strong&gt;two unrelated things called “skills.” ** **&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Classic skills&lt;/strong&gt; (still on Microsoft Learn) — a deployed Bot Framework / Microsoft 365 Agents SDK &lt;em&gt;bot&lt;/em&gt;, registered as an agent via a &lt;strong&gt;manifest URL&lt;/strong&gt; , used for complex multi-turn server-side scenarios. Pro-code, registered under Settings → Skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New skills&lt;/strong&gt; (the rebuilt experience) — ** Markdown instruction modules** (&lt;code&gt;SKILL.md&lt;/code&gt; style) that load on demand—Low-code, authored or imported as files.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are different concepts with the same name. When you read “skills” in the documentation, check whether it means a manifest-registered bot or a Markdown behavior module. This article uses the &lt;strong&gt;new markdown&lt;/strong&gt; format unless it says otherwise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Design guidance for skills
&lt;/h3&gt;

&lt;p&gt;The Part 1 guidance about tool descriptions transfers almost verbatim to skill descriptions: the &lt;strong&gt;description is what the orchestrator routes on&lt;/strong&gt;. A skill described as “Expense logic” will be loaded unpredictably; a skill described as “Validates an expense code against the FY26 policy matrix; use when the user submits or questions an expense line” will load when it should. Keep each skill narrow, name it for one job, and write the description for the router, not for a human reader.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The new agentic orchestrator
&lt;/h2&gt;

&lt;p&gt;The surface changes sit atop a new engine. Microsoft describes a &lt;strong&gt;new agentic orchestrator&lt;/strong&gt; &lt;em&gt;“built on a new coding harness and CLI layer,”&lt;/em&gt; with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stronger instruction adherence&lt;/strong&gt; — agents follow their instructions and skills more reliably.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long-horizon task execution&lt;/strong&gt; and &lt;strong&gt;recursive task execution&lt;/strong&gt; — the orchestrator can work through multi-step, dynamic problems that decompose into sub-tasks, rather than a single planning pass.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Large-content handling&lt;/strong&gt; and &lt;strong&gt;rich file outputs&lt;/strong&gt; — it can process large volumes of content and produce documents and data files, opening up document-generation and data scenarios that were awkward before.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For readers of Part 2, this matters in two concrete ways. First, the &lt;strong&gt;sequential pipeline&lt;/strong&gt; and &lt;strong&gt;hierarchical&lt;/strong&gt; patterns get easier, because the orchestrator itself now does long-horizon, recursive decomposition — some of what you previously assembled out of multiple agents and a Dataverse state table, the orchestrator can carry within a single agent’s run. Second, the &lt;strong&gt;“specialists are boring”&lt;/strong&gt; principle still holds, but the threshold for when you &lt;em&gt;need&lt;/em&gt; to split shifts: a single new-orchestrator agent can reliably do more before it hits the limits that forced decomposition in the classic model. The Part 1 signals for splitting (tool count, owners, conflicting knowledge, divergent SLAs) remain the right criteria; the tool-count number is just less likely to be the first wall you hit.&lt;/p&gt;

&lt;p&gt;The harness-and-CLI framing is deliberate. It is the same shape as a modern coding agent — which is also why importing GitHub Copilot and Claude Code skills works at all: the runtime is built to consume that ecosystem’s conventions.&lt;/p&gt;

&lt;p&gt;On the model side, the new experience lets you pick the orchestrator’s primary model directly: &lt;strong&gt;Claude Sonnet 5&lt;/strong&gt; and &lt;strong&gt;GPT-5.5 Chat&lt;/strong&gt; are now generally available choices. Hence, the instruction-adherence gains come from both the new harness and a current-generation model underneath it.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Memory and Microsoft IQ
&lt;/h2&gt;

&lt;p&gt;The new &lt;strong&gt;Memory&lt;/strong&gt; surface (preview) — &lt;em&gt;“remember interactions, workflows and context for improved results”&lt;/em&gt; — is the agent-facing edge of a larger platform layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Work IQ and its three layers
&lt;/h3&gt;

&lt;p&gt;On Microsoft Learn, &lt;strong&gt;Work IQ (preview)&lt;/strong&gt; is described as &lt;em&gt;“the intelligence layer that grounds Microsoft 365 Copilot and your agents in real-time, shared context across your organization.”&lt;/em&gt; It is built on three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data&lt;/strong&gt; — unifies signals from files, emails, meetings, chats, and business systems across Microsoft 365 to capture how work actually happens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory&lt;/strong&gt; — &lt;em&gt;“builds persistent understanding of how people and teams work, enabling Agent 365–managed agents to stay aligned to priorities and remain consistent across tasks, apps, and sessions.”&lt;/em&gt; This is the layer behind the agent &lt;strong&gt;Memory&lt;/strong&gt; surface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference&lt;/strong&gt; — brings together models, skills, and tools so agents can reason and act, using Work IQ MCP tools, under the Agent 365 control plane.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You add Work IQ to an agent as &lt;strong&gt;Work IQ MCP tools&lt;/strong&gt; (Tools → Add tool → Model Context Protocol → e.g., &lt;em&gt;Work IQ Mail&lt;/em&gt;, &lt;em&gt;Work IQ Calendar&lt;/em&gt;, &lt;em&gt;Work IQ Teams&lt;/em&gt;). It requires a Microsoft 365 Copilot license. Work IQ in Copilot Studio is &lt;strong&gt;preview-only today, with general availability “coming soon”&lt;/strong&gt; ; Microsoft’s documentation states that once Work IQ reaches GA, the &lt;strong&gt;Work IQ API transitions to a usage-based (consumptive) billing model&lt;/strong&gt; — so that billing is not yet in effect. Governance runs through Agent 365 and the Microsoft 365 admin center (admins allow or block servers tenant-wide), with tool-call tracing in Microsoft Defender Advanced Hunting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Microsoft IQ — the umbrella
&lt;/h3&gt;

&lt;p&gt;Work IQ is one of three “IQ” layers under the broader &lt;strong&gt;Microsoft IQ&lt;/strong&gt; banner introduced around Build 2026. In the new Copilot Studio experience, Microsoft Learn documents Microsoft IQ as a context layer with &lt;strong&gt;three sources&lt;/strong&gt; : &lt;strong&gt;Work IQ&lt;/strong&gt; (Microsoft 365 org data — emails, chats, files, calendar, people — routed through the Agent 365 MCP gateway), &lt;strong&gt;Fabric IQ&lt;/strong&gt; (business data and analytics in Microsoft Fabric), and &lt;strong&gt;Foundry IQ&lt;/strong&gt; &lt;em&gt;(preview)&lt;/em&gt;, which grounds the agent on enterprise knowledge bases indexed by Azure AI Search in Azure AI Foundry. Turning on a Microsoft IQ source gives the agent both read access (knowledge) and actions (tools), always within the signed-in user’s permissions. Both Copilot Studio and Foundry draw on the same Microsoft IQ layer, which is part of what enables the convergence in §7. (Some Build 2026 community write-ups group the family differently — e.g., Work IQ / Foundry IQ / Web IQ; the Copilot Studio documentation itself lists Work IQ / Fabric IQ / Foundry IQ.)&lt;/p&gt;

&lt;h3&gt;
  
  
  How Memory changes the hierarchical pattern
&lt;/h3&gt;

&lt;p&gt;Part 2’s employee-onboarding scenario leaned on a Dataverse &lt;code&gt;OnboardingCase&lt;/code&gt; table because “if the process outlives the conversation, so should the state.” Memory does not replace that — durable, queryable business state still belongs in Dataverse — but it changes what you have to encode by hand. Memory carries &lt;em&gt;understanding of how people and teams work&lt;/em&gt; across sessions, so the agent retains continuity (priorities, prior interactions) without you modeling every bit of it as a table column. The rule of thumb: &lt;strong&gt;structured process state → Dataverse; learned context and continuity → Memory.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The new workflow designer
&lt;/h2&gt;

&lt;p&gt;Part 2 built its pipeline and fan-out scenarios on &lt;strong&gt;agent flows&lt;/strong&gt;. The rebuilt experience replaces that with a &lt;strong&gt;new workflow designer&lt;/strong&gt; : a single, unified visual canvas with &lt;strong&gt;node-by-node testing&lt;/strong&gt; and &lt;strong&gt;robust versioning&lt;/strong&gt; , intended to combine deterministic steps with agent intelligence in one place.&lt;/p&gt;

&lt;p&gt;The pieces that matter for the orchestration patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent nodes&lt;/strong&gt; — call an existing agent directly inside a workflow, so you get deterministic workflow execution for the predictable parts and hand off to an agent for the open-ended parts. This is the cleanest expression yet of Part 2’s “structured where needed, adaptive where valuable.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP servers in workflows (preview)&lt;/strong&gt; — workflows can call MCP-server tools directly, staying within Microsoft security, permission, and compliance boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-powered actions&lt;/strong&gt; — classification, content generation, and decision-support actions drop into a workflow as nodes, alongside a &lt;strong&gt;Microsoft 365 Copilot action node&lt;/strong&gt; (send a prompt to Microsoft 365 Copilot or a specific agent) and &lt;strong&gt;human review/approval&lt;/strong&gt; actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practice, the four patterns from Part 2 now have a more direct home:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Router-worker&lt;/strong&gt; → a workflow that classifies (classification action) and routes to agent nodes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sequential pipeline&lt;/strong&gt; → a workflow with ordered nodes, each an agent node or AI action, with human-review nodes at decision points.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parallel fan-out / fan-in&lt;/strong&gt; → parallel branches of agent nodes joined by an aggregation step.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hierarchical&lt;/strong&gt; → a supervisor workflow that invokes agent nodes and persists durable state in Dataverse, now with Memory carrying cross-session continuity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The patterns did not change. The surface you build them on did.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Foundry and Copilot Studio converge
&lt;/h2&gt;

&lt;p&gt;The strategic frame from Build 2026 is that &lt;strong&gt;Microsoft Foundry and Copilot Studio are two front doors over one agent runtime&lt;/strong&gt; — Foundry, the pro-code platform (Python/.NET, SDKs, managed runtime); Copilot Studio, the low-code platform (visual designer, same governance and protocols underneath). They share three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The A2A protocol&lt;/strong&gt; , so a Foundry agent and a Copilot Studio agent can talk to each other as peers (exactly the cross-platform case Part 1 introduced A2A for).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Microsoft IQ knowledge layer&lt;/strong&gt; (Work IQ, Foundry IQ, Web IQ).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Microsoft Agent Framework (MAF)&lt;/strong&gt; — the unification of Semantic Kernel and AutoGen into one agent harness — which can host agents that either front door builds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a platform team, the takeaway is the one Part 1 hinted at and this release makes literal: &lt;strong&gt;standardize on the protocol and the knowledge layer, not the build tool.&lt;/strong&gt; Let pro-code teams use Foundry and low-code teams use Copilot Studio, knowing the agents interoperate over A2A and share Microsoft IQ. The multi-agent architecture you designed in Parts 1 and 2 does not need to be re-decided for each tool; it is decided once at the protocol and knowledge layers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A sourcing note: The new-experience surfaces, Skills-as-markdown, the new orchestrator, the workflow designer, and Work IQ/Memory are documented on first-party Microsoft sources (the Copilot Studio Blog and Microsoft Learn). The broader Foundry⇄Copilot Studio convergence details — Foundry IQ, Web IQ, and the Microsoft Agent Framework’s role — are drawn from Build 2026 engineering analysis, citing Microsoft DevBlogs and Learn; treat the specific convergence mechanics as directionally confirmed and verify the parts that matter to your design. Since first drafting, two of those pieces firmed up: &lt;strong&gt;Microsoft IQ and Foundry IQ now have their own Microsoft Learn pages&lt;/strong&gt; (&lt;em&gt;Microsoft IQ overview for agents (preview)&lt;/em&gt; and &lt;em&gt;Connect to Foundry IQ from an agent (preview)&lt;/em&gt;), which document Microsoft IQ’s sources as &lt;strong&gt;Work IQ, Fabric IQ, and Foundry IQ&lt;/strong&gt; — so the &lt;strong&gt;Web IQ&lt;/strong&gt; grouping and the &lt;strong&gt;Microsoft Agent Framework’s&lt;/strong&gt; exact role are the parts that still rest on the community analysis.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  8. What to do now
&lt;/h2&gt;

&lt;p&gt;The new experience is a preview and coexists with the classic, which makes the right posture straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;New builds you intend to keep:&lt;/strong&gt; start in the new experience and the four-surface model. Author behavior as &lt;strong&gt;Skills&lt;/strong&gt; (narrow, well-described markdown), use &lt;strong&gt;Connected agents&lt;/strong&gt; for cross-agent work, reserve &lt;strong&gt;Tools/Knowledge&lt;/strong&gt; for actions and context, and turn on &lt;strong&gt;Memory&lt;/strong&gt; where cross-session continuity helps. Build orchestration in the &lt;strong&gt;new workflow designer&lt;/strong&gt; with agent nodes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Existing classic agents:&lt;/strong&gt; leave them. They keep working, and Parts 1 and 2 remain the accurate reference for them. Migrate when you have a reason — a redesign, a new requirement, or the new orchestrator’s reliability gains — not reflexively.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills you already have&lt;/strong&gt; for GitHub Copilot or Claude Code: you can import them, which makes the new model a low-friction on-ramp if your teams already author &lt;code&gt;SKILL.md&lt;/code&gt; files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Governance:&lt;/strong&gt; the Part 2 disciplines do not change — Entra Agent ID per agent, least privilege, audit through Purview/Defender, idempotency on writes, structured contracts. Work IQ and the new tools route through Agent 365 governance in the Microsoft 365 admin center; fold that into the same review process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the status.&lt;/strong&gt; This is preview. Reconfirm GA timing and any surface renames before you bet on a production rollout on the new model, and keep classic as the fallback until the new experience reaches GA for the capabilities you depend on.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Parts 1 and 2 settled the architecture of multi-agent systems in Copilot Studio and showed it in execution. Part 3 is the reminder that the platform underneath an architecture moves, and that the durable parts are the ideas, not the tabs. The Build 2026 rebuild changes the surfaces — &lt;strong&gt;Skills&lt;/strong&gt; instead of sprawling instructions and child agents, a &lt;strong&gt;Memory&lt;/strong&gt; surface, a new orchestrator, a new workflow designer — but it does not change the load-bearing decisions: narrow agents with clear ownership, behavior factored into small, well-described units, structured contracts between components, state that outlives the conversation, and least-privilege governance. Skills are the new home for “factor the complexity”; Connected agents and A2A are still how agents collaborate; the four patterns still cover the work. The names on the tabs changed. The discipline did not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft Copilot Studio Blog — &lt;a href="https://techcommunity.microsoft.com/blog/copilot-studio-blog/meet-the-new-copilot-studio-rebuilt-for-more-complex-multi-step-work/4526488" rel="noopener noreferrer"&gt;Meet the new Copilot Studio: rebuilt for more complex, multi-step work&lt;/a&gt; (June 9, 2026) — four-surface model, nine-to-four tabs, new agentic orchestrator, Skills as markdown (import GitHub Copilot / Claude Code skills), new workflow designer with agent nodes and MCP servers; &lt;strong&gt;public preview&lt;/strong&gt; , coexisting with classic&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/use-work-iq" rel="noopener noreferrer"&gt;Work IQ MCP overview (preview)&lt;/a&gt; — Work IQ’s Data / Memory / Inference layers, Work IQ MCP tools, Agent 365 governance; Work IQ is in preview with GA “coming soon” and usage-based Work IQ API billing taking effect at GA&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/use-microsoft-iq" rel="noopener noreferrer"&gt;Microsoft IQ overview for agents (preview)&lt;/a&gt; — Microsoft IQ as a context layer with three sources (Work IQ, Fabric IQ, Foundry IQ &lt;em&gt;(preview)&lt;/em&gt;); see also &lt;em&gt;Connect to Foundry IQ from an agent (preview)&lt;/em&gt; and &lt;em&gt;Turn on Microsoft IQ for an agent (preview)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/whats-new" rel="noopener noreferrer"&gt;What’s new in Copilot Studio&lt;/a&gt; — the new agent experience as “Production-ready preview” (June 2026); &lt;strong&gt;Windows 365 for Agents MCP server (GA)&lt;/strong&gt;; &lt;strong&gt;Foundry IQ&lt;/strong&gt; knowledge source &lt;em&gt;(preview)&lt;/em&gt;; &lt;strong&gt;Claude Sonnet 5&lt;/strong&gt; / &lt;strong&gt;GPT-5.5 Chat&lt;/strong&gt; primary models (GA); workflow nodes (Microsoft 365 Copilot node, prompt node, classification); Computer Use GA (May 2026); A2A GA (April 2026)&lt;/li&gt;
&lt;li&gt;Microsoft Copilot Studio Blog — &lt;a href="https://www.microsoft.com/en-us/microsoft-copilot/blog/copilot-studio/new-and-improved-computer-using-agents-a-new-workflows-experience-and-real-time-voice-experiences/" rel="noopener noreferrer"&gt;What’s new in Copilot Studio: May 2026&lt;/a&gt; — redesigned workflows experience, agent nodes, AI-powered actions&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/advanced-use-skills" rel="noopener noreferrer"&gt;Use skills in Copilot Studio&lt;/a&gt; and &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/configuration-add-skills" rel="noopener noreferrer"&gt;Configure skills&lt;/a&gt; — the &lt;em&gt;classic&lt;/em&gt; (manifest-registered) meaning of “skills,” for disambiguation&lt;/li&gt;
&lt;li&gt;GitHub Docs — &lt;a href="https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/add-skills" rel="noopener noreferrer"&gt;Adding agent skills for GitHub Copilot&lt;/a&gt; and &lt;a href="https://docs.github.com/en/copilot/how-tos/copilot-sdk/features/skills" rel="noopener noreferrer"&gt;Custom skills (Copilot SDK)&lt;/a&gt; — the &lt;code&gt;SKILL.md&lt;/code&gt; Markdown skill format Copilot Studio now imports&lt;/li&gt;
&lt;li&gt;Redmond Magazine — &lt;a href="https://redmondmag.com/blogs/redmond-dispatch/2026/06/microsoft-unveils-redesigned-copilot-studio.aspx" rel="noopener noreferrer"&gt;Microsoft Unveils Redesigned Copilot Studio for Complex AI Agent Workflows&lt;/a&gt; (June 9, 2026) — independent coverage of the rebuild&lt;/li&gt;
&lt;li&gt;Build 2026 engineering analysis (community, citing Microsoft DevBlogs/Learn) — &lt;a href="https://www.linkedin.com/pulse/microsoft-foundry-copilot-studio-build-2026-satyanarayana-padidapu-2djfc" rel="noopener noreferrer"&gt;Microsoft Foundry &amp;amp; Copilot Studio at Build 2026&lt;/a&gt; — one-runtime / two-front-doors convergence, Microsoft IQ (Work IQ / Foundry IQ / Web IQ), Microsoft Agent Framework; treat convergence mechanics as directionally confirmed&lt;/li&gt;
&lt;li&gt;Parts 1 and 2 of this series — the classic five-surface model and the four orchestration patterns this article maps forward&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agents</category>
      <category>copilotstudio</category>
      <category>multiagent</category>
      <category>orchestration</category>
    </item>
    <item>
      <title>Multi-Agent Orchestration with Copilot Studio — Part 2: In Practice</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/holgerimbery/multi-agent-orchestration-with-copilot-studio-part-2-in-practice-33p1</link>
      <guid>https://dev.to/holgerimbery/multi-agent-orchestration-with-copilot-studio-part-2-in-practice-33p1</guid>
      <description>&lt;p&gt;Four end-to-end scenarios on different orchestration patterns, a starter MCP server inventory, and the ten anti-patterns that recur in production Copilot Studio deployments.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Summary lede.&lt;/strong&gt; This is the second of three articles on multi-agent orchestration in Microsoft Copilot Studio. Part 1 settled the architecture: when to split a single agent, what a Copilot Studio agent is composed of, which orchestration patterns exist, and how the Model Context Protocol (MCP) and Agent2Agent (A2A) protocol keep the system composable. Part 2 — In Practice — takes those decisions and works through what they look like in production. Four end-to-end scenarios, each built on a different orchestration pattern, show how the architectural pieces fit together. A starter MCP server inventory makes the platform team’s role explicit. The article closes with ten anti-patterns from real deployments and the corrections that teams have actually applied.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About this series.&lt;/strong&gt; This is Part 2 of three. &lt;strong&gt;Part 1 — Foundations&lt;/strong&gt; establishes the vocabulary, when to split a single agent, the five configuration surfaces, the four orchestration patterns, and how MCP and A2A are configured. &lt;strong&gt;Part 2 — In Practice&lt;/strong&gt; (this article) turns those decisions into four end-to-end scenarios, a starter MCP server inventory, and ten production anti-patterns. Parts 1 and 2 describe the &lt;strong&gt;released, generally available feature set&lt;/strong&gt; — the “classic” Copilot Studio experience, built on &lt;strong&gt;generative orchestration&lt;/strong&gt; , which is GA and fully supported. &lt;strong&gt;Part 3 — The Build 2026 Rebuild&lt;/strong&gt; describes the new four-surface model (Skills, Memory, a new orchestrator); those features are &lt;strong&gt;in public preview and subject to change&lt;/strong&gt; before general availability, so treat Part 3 as forward-looking and re-check status before relying on it.  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every scenario uses features documented on Microsoft Learn and either generally available or in public preview as of mid-2026: connected agents, autonomous triggers, agent flows with parallel branches and approval gates, Dataverse as a state store, MCP integration with Streamable transport, and Purview audit logging. Where a capability is in preview (for example, connecting to Microsoft Foundry, Fabric, or Microsoft 365 Agents SDK agents), this article says so. The scenarios pair with named, published case studies — T-Mobile, Nexi Group, Dunaway, Holland America Line, Signetic, Singapore Civil Defense Force, La Trobe University — whose architectural shape matches the patterns described.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Capability status at publication&lt;/strong&gt; Two capabilities directly reinforce these scenarios. &lt;strong&gt;A2A connections are generally available&lt;/strong&gt; , so cross-platform delegation is not a preview dependency. &lt;strong&gt;Computer Use (computer-using agents) is generally available&lt;/strong&gt; — the CUA extension mentioned in Scenario 1 is a shipping capability, with embedding into multi-step workflows in preview. A &lt;strong&gt;redesigned Workflows experience&lt;/strong&gt; (early release) introduces a unified visual canvas with &lt;strong&gt;agent nodes&lt;/strong&gt; that drop existing agents into a flow, plus AI-powered actions for classification and content generation; &lt;strong&gt;asynchronous responses&lt;/strong&gt; &lt;em&gt;(preview)&lt;/em&gt; let agent-flow steps exceed the two-minute limit, which the onboarding scenario benefits from. And &lt;strong&gt;per-agent Microsoft Entra agent identities&lt;/strong&gt; can be auto-created &lt;em&gt;(preview)&lt;/em&gt;, which is the concrete mechanism behind the “Entra Agent ID per agent” recommendation in the anti-patterns section.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why read this&lt;/strong&gt; Read this if Part 1 left you convinced that multi-agent orchestration is the right response to scope drift, and you now need to see four working shapes. The four scenarios — IT incident triage, contract review, field service dispatch, employee onboarding — are not picked for variety; they are picked because they map cleanly onto the four orchestration patterns introduced in Part 1, and because each exposes a different production failure mode that teams are most likely to encounter. Read it if you have ever drawn a multi-agent architecture on a whiteboard, sent it to a senior maker, and watched them rebuild it in a way you did not expect. The MCP inventory section exists to answer the most common follow-up question — “okay, but who owns what?” — with a starting catalog. The anti-patterns section exists to answer the second-most-common follow-up — “what is most likely to bite us first?” — with ten patterns that recur often enough to be predictable.  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Read Part 1 if you need the vocabulary; read Part 2 if you have the vocabulary and need the working examples. Each scenario is small enough to read in one sitting and concrete enough to reproduce in your own tenant. The point is not that any of these scenarios is the right one for your organization — the point is that the patterns underneath them are.  &lt;/p&gt;




&lt;h2&gt;
  
  
  1. The four scenarios and what they exercise
&lt;/h2&gt;

&lt;p&gt;Four scenarios appear below. They are deliberately ordered by complexity, from the simplest pattern (router-worker) to the most demanding (hierarchical with persistent state). Each builds on the surfaces introduced in Part 1 — instructions, knowledge, tools, topics, triggers — and uses one of the four orchestration patterns.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Pattern&lt;/th&gt;
&lt;th&gt;What it exercises&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IT incident triage&lt;/td&gt;
&lt;td&gt;Router-worker&lt;/td&gt;
&lt;td&gt;Classification, delegation, structured outputs between agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contract review&lt;/td&gt;
&lt;td&gt;Parallel fan-out / fan-in&lt;/td&gt;
&lt;td&gt;Concurrent specialists, scoped knowledge, merged outputs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Field service dispatch&lt;/td&gt;
&lt;td&gt;Router-worker with autonomous trigger&lt;/td&gt;
&lt;td&gt;Event-driven autonomy, bounded decision trees, no user in the loop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Employee onboarding&lt;/td&gt;
&lt;td&gt;Hierarchical with persistent state&lt;/td&gt;
&lt;td&gt;Long-running supervision, Dataverse as state store, SLA monitoring&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The scenarios are sized to be read end to end. Each one names the agents, provides instructions, walks through the expected runtime behavior, and points to a published case study whose architectural shape matches. The published shape — not the exact numbers — is the part to import.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Scenario one — IT incident triage (router-worker)
&lt;/h2&gt;

&lt;p&gt;The first scenario takes a concrete, widespread problem — tier-one IT service desk volume — and shows how a multi-agent design resolves it using only features available in Copilot Studio today.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;A large share of tier-one service desk tickets are mechanical: password resets, VPN issues, access requests, known application errors. In many IT organizations, this mechanical work accounts for a substantial fraction of the total ticket volume. Each of these tickets, when routed to a human analyst, consumes several minutes — read the ticket, look up the user, open the runbook, apply the fix, update the record.&lt;/p&gt;

&lt;p&gt;The pattern is tedious for analysts and slow for users. It is also unnecessary: the runbooks already exist, the ticketing system already has APIs, and the retrieval work is well inside the capability of current language models.&lt;/p&gt;

&lt;h3&gt;
  
  
  The design
&lt;/h3&gt;

&lt;p&gt;Three agents, with clear responsibilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Triage Orchestrator (user-facing).&lt;/strong&gt; Classifies the incoming ticket into one of a small set of categories, delegates to the appropriate specialist, and returns the response to the user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Runbook Specialist (connected agent).&lt;/strong&gt; Retrieves the matching runbook from the IT knowledge base (SharePoint) and returns resolution steps or a “not found” result.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ticket Writer (connected agent).&lt;/strong&gt; Writes outcomes back to the ticketing system (ServiceNow, via the existing connector). Idempotent — retries do not create duplicates.&lt;/p&gt;

&lt;p&gt;The split is deliberate. The Runbook Specialist is read-only; it never writes. The Ticket Writer writes but does not reason about runbooks. The Orchestrator owns the conversation and the classification but has no direct access to connectors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agent configurations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Triage Orchestrator — instructions:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are the IT service desk triage agent. When a user
describes a technical problem; your job is to classify it
And route it to the correct specialist.

Classify the request into exactly one of:
  password_reset, vpn, hardware, application, other

Then:
  1. Call RunbookSpecialist with the classification and the
     user's original message.
  2. If RunbookSpecialist returns resolution_steps, present
     the steps to the user in a numbered list and ask if
     they want the ticket closed as resolved.
  3. If the user confirms, call TicketWriter with
     status="resolved" and the applied steps.
  4. If RunbookSpecialist returns no match, call
     TicketWriter with status="routed" and
     assignment_group derived from classification.

Never attempt to resolve a problem yourself.
Never write to the ticketing system directly.
Never mention specialist agents to the user.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Runbook Specialist — instructions:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;look&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;up&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;runbooks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;internal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;IT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;knowledge&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;base&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;resolution&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;steps.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Inputs:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;classification&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(string)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;problem_statement&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(string)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Behavior:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;Search&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;IT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;knowledge&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;base&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;scoped&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;given&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;classification.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;single&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;best-matching&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;runbook.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Output&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(structured):&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;runbook_id:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;resolution_steps:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;confidence:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;number&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;create,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;update,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;delete&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;tickets.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;reason&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;about&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;user&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;intent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;beyond&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;runbook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;matching.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Knowledge source: a specific SharePoint library, &lt;code&gt;IT Knowledge Base / Runbooks&lt;/code&gt;. Nothing else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ticket Writer — instructions:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;write&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;outcomes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ticketing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;system.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Inputs:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;ticket_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(string)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;status&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(enum:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"resolved"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"routed"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"escalated"&lt;/span&gt;&lt;span class="err"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;applied_steps&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;optional)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;assignment_group&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(string,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;optional)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;idempotency_key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(string)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Behavior:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;Call&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ServiceNow&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Update&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Incident&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;action&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;mapped&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;fields.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Use&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;idempotency_key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;deduplicate.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Output&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(structured):&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ok:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ticket_url:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;reason&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;about&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;whether&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;status&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;correct.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;retrieve&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;runbooks.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tools: the ServiceNow connector’s &lt;code&gt;Update Incident&lt;/code&gt; action. Nothing else.&lt;/p&gt;

&lt;h3&gt;
  
  
  Orchestration pattern
&lt;/h3&gt;

&lt;p&gt;Router-worker. The Orchestrator routes; specialists execute. No parallelism, no hierarchy, no callbacks from specialists to the Orchestrator.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expected runtime behavior
&lt;/h3&gt;

&lt;p&gt;A user writes: “I can’t connect to the VPN from home since this morning.”&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Orchestrator classifies the request as &lt;code&gt;vpn&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It calls the Runbook Specialist with &lt;code&gt;{classification: "vpn", problem_statement: "..."}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The Runbook Specialist searches the runbook library, finds a match, returns &lt;code&gt;{runbook_id: "RB-0187", resolution_steps: ["Verify your network...", "Re-register the VPN client...", ...], confidence: 0.91}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The Orchestrator presents the steps to the user.&lt;/li&gt;
&lt;li&gt;The user replies that the steps worked.&lt;/li&gt;
&lt;li&gt;The Orchestrator calls the Ticket Writer with &lt;code&gt;status: "resolved"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The Ticket Writer updates ServiceNow and returns &lt;code&gt;{ok: true, ticket_url: "..."}&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the Runbook Specialist had returned no match, the Orchestrator would have called the Ticket Writer with &lt;code&gt;status: "routed"&lt;/code&gt; and an assignment group derived from the classification.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expected outcomes
&lt;/h3&gt;

&lt;p&gt;The scenario mirrors the shape of several published Copilot Studio case studies. T-Mobile equipped customer service representatives with a Power Apps + Copilot Studio agent that provides accurate device information and improves customer experiences. Nexi Group modernized card-service customer support with Copilot Studio, with the explicit outcome of reduced contact-center workload. A1 Inteligência em Viagens used Power Automate and Copilot Studio to boost team efficiency and customer experience.&lt;/p&gt;

&lt;p&gt;The exact numbers depend on ticket mix and runbook quality, but the shape is consistent across published reports: a meaningful share of tier-one volume auto-resolves, a larger share auto-routes with enriched context, and escalation volume drops.&lt;/p&gt;

&lt;h3&gt;
  
  
  What this scenario makes obvious
&lt;/h3&gt;

&lt;p&gt;The value of the split is not the number of agents. It is the clarity of ownership. When the knowledge base team updates a runbook, only the Runbook Specialist is affected. When the ticketing team rotates a credential, only the Ticket Writer is affected. When the user experience changes, only the Orchestrator is affected. Each change is small and independent, which is what allows the overall system to be maintained over time.&lt;/p&gt;

&lt;p&gt;The extensions to consider once the base is working: add an autonomous trigger (a Dataverse row-change event that fires when a new ticket is written to a queue table) so the Orchestrator runs on new tickets, not only when a user chats. Replace the ServiceNow connector with an MCP server to share ticketing tools across multiple agents in your tenant. Add a Computer-Using Agent (CUA) specialist — now generally available in Copilot Studio (May 2026) — for the narrow set of cases where the fix requires clicking through a legacy admin UI without an API.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Scenario two — Contract review pipeline (parallel fan-out)
&lt;/h2&gt;

&lt;p&gt;The second scenario exercises a different orchestration pattern — parallel fan-out — and a different kind of specialist agent. Contract review is a good test because the work splits cleanly across independent review domains, each domain has its own policy library, and the outcome is a merged memo rather than a single-agent response.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;Inbound vendor contracts typically pass through three gates before signature: legal review (indemnity, liability cap, governing law, dispute resolution), finance review (payment terms, auto-renewal clauses, price escalators), and risk review (data processing, subprocessors, breach notification, subcontracting). Each review is conducted by email serially, and the combined cycle frequently spans two weeks for contracts that are not particularly complex.&lt;/p&gt;

&lt;p&gt;The serial nature is the problem. Each reviewer waits for the previous one. Each reviewer reads the full contract, even though their concerns are narrow. The end state — signature — is delayed by the sum of the waits, not the sum of the work.&lt;/p&gt;

&lt;h3&gt;
  
  
  The design
&lt;/h3&gt;

&lt;p&gt;Five agents, one parallel step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intake Orchestrator (user-facing).&lt;/strong&gt; Receives the contract PDF, extracts clauses into a structured clause map, triggers the review fan-out, composes the final memo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clause Extractor (tool, not a separate agent).&lt;/strong&gt; A PDF extraction action backed by an MCP server or Power Automate flow. Returns clauses as a structured list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Legal Reviewer (connected agent).&lt;/strong&gt; Reviews the clause map against a legal policy library. Returns legal issues with severity and citations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finance Reviewer (connected agent).&lt;/strong&gt; Reviews the clause map against finance policy. Returns finance issues with severity and citations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risk Reviewer (connected agent).&lt;/strong&gt; Reviews the clause map against risk and data-protection policy. Returns risk issues with severity and citations.&lt;/p&gt;

&lt;p&gt;The three Reviewers run in parallel. Each has a narrow, owned knowledge source. None of them depends on the others’ output.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agent configurations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Intake Orchestrator — instructions:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You own the contract review process.

When a user uploads a contract:
  1. Call the Clause Extractor to get a structured clause
     map from the document.
  2. In parallel, call LegalReviewer, FinanceReviewer, and
     RiskReviewer with the full clause map.
  3. When all three return, aggregate findings into a single
     review memo organized by severity.
  4. Present the memo to the user with the contract
     reference, the number of issues found, and a link to
     the full findings.

Do not perform legal, financial, or risk analysis yourself.
Do not reformulate reviewer findings; present them verbatim.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Legal Reviewer — instructions:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;review&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;contracts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;legal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;risk.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Inputs:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;clause_map&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(structured&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;clauses&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;type)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Behavior:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;Check&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;each&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;clause&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;against&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Legal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Policy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;library.&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;Flag&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;issues&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;only&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;clause&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;conflicts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;policy&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;missing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;required&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;category.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Output&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(structured):&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;issues:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;clause_type:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
               &lt;/span&gt;&lt;span class="err"&gt;severity:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"medium"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
               &lt;/span&gt;&lt;span class="err"&gt;citation:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
               &lt;/span&gt;&lt;span class="err"&gt;suggested_redline:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Knowledge&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;source:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;SharePoint&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Legal Policy Library"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;only.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;review&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;payment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;terms,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;pricing,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;data&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;processing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;—&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;those&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;belong&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Finance&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Risk&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Reviewers.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finance Reviewer and Risk Reviewer follow the same shape, each scoped to its own policy library.&lt;/p&gt;

&lt;h3&gt;
  
  
  Orchestration pattern
&lt;/h3&gt;

&lt;p&gt;Parallel fan-out / fan-in. The Intake Orchestrator fires three calls at once and joins when all three return. In Copilot Studio, this is typically built as an agent flow with parallel branches — one branch per reviewer — followed by an aggregation step. (In the redesigned Workflows experience now in early release, those reviewer agents can be dropped onto the canvas as agent nodes.)&lt;/p&gt;

&lt;h3&gt;
  
  
  Human-in-the-loop
&lt;/h3&gt;

&lt;p&gt;Copilot Studio agent flows support approval gates. In this design, the memo is delivered to a human reviewer (usually the deal owner or general counsel) who decides what to act on. The system does not automatically redline the contract; it surfaces issues and suggests redlines for human judgment.&lt;/p&gt;

&lt;p&gt;This is the right default for regulated workflows. The published case study from Dunaway — a firm that uses Copilot Studio for city-code research — is explicit that the value of the agent is surfacing accurate information quickly, with the compliance professional retaining decision authority.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expected runtime behavior
&lt;/h3&gt;

&lt;p&gt;A user uploads a vendor agreement to the Intake Orchestrator.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Orchestrator calls the Clause Extractor, which returns &lt;code&gt;{clauses: [{type: "indemnity", text: "..."}, {type: "payment_terms", text: "..."}, ...]}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The Orchestrator triggers three parallel branches: 

&lt;ul&gt;
&lt;li&gt;Legal Reviewer returns two issues (one high, one medium).&lt;/li&gt;
&lt;li&gt;Finance Reviewer returns one issue (medium: auto-renewal without notification).&lt;/li&gt;
&lt;li&gt;Risk Reviewer returns three issues (one high: subprocessor not listed; two medium).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The Orchestrator aggregates the six issues into a memo organized by severity.&lt;/li&gt;
&lt;li&gt;The user receives the memo and decides what to negotiate.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The time from upload to memo is effectively the slowest of the three parallel branches plus the extractor and the aggregator — in practice, single-digit minutes, versus single-digit business days in the serial model.&lt;/p&gt;

&lt;h3&gt;
  
  
  What makes this work reliably
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scoped knowledge.&lt;/strong&gt; Each Reviewer’s knowledge source is its own policy library and nothing else. Cross-contamination — a Legal Reviewer surfacing finance concerns — produces noisy memos and erodes trust. The narrower the library, the sharper the output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structured outputs.&lt;/strong&gt; Every reviewer returns the same issue shape. The aggregator does not have to parse three different prose styles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Citations.&lt;/strong&gt; Every issue includes a citation back to the policy passage that grounds it. Reviewers without citations are not trusted by their human counterparts, and correctly so. (Bear in mind Part 1’s caveat: citations are not always preserved when outputs pass back from a connected agent, so carry the citation explicitly as a field in the structured output rather than relying on the platform to thread it through.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explicit severity.&lt;/strong&gt; Three levels (high, medium, low), defined in each reviewer’s instructions. The aggregator can sort consistently across reviewers.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to watch out for
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Partial failure.&lt;/strong&gt; If the Finance Reviewer times out, what does the memo say? Decide before you build: a “partial review” memo that notes the missing section is more useful than a failed run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Policy drift.&lt;/strong&gt; The quality of the reviewers depends on the currency of the policy. Assign ownership of each policy library to a named team and review quarterly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scope creep.&lt;/strong&gt; It is tempting, once the Legal Reviewer works, to add “intellectual property” and “export control” to its scope. Resist. New domains are new reviewers.&lt;/p&gt;

&lt;p&gt;Two published case studies anchor this shape. Dunaway transformed compliance workflows with a conversational agent that delivers instant, accurate regulatory answers from scoped knowledge — the scoping makes the answers trustworthy. Signetic uses Power Platform and Copilot Studio across healthcare operational workflows, including review-style patterns that merge multiple specialist inputs into operational decisions. Neither describes this pipeline exactly, but the architectural pattern — bounded specialists over scoped knowledge, merged by an orchestrator — is what both rely on.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Scenario three — Field service dispatch (autonomous trigger)
&lt;/h2&gt;

&lt;p&gt;The third scenario exercises an autonomous trigger — the system reacts to an event from the field, not to a user typing into a chat window. This is where Copilot Studio’s March 2025 autonomous-agents GA materially changes what is buildable.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;A field technician arrives at a customer site to service equipment and finds that a required part is missing from the van stock. The resolution today is a phone call. The technician calls dispatch. Dispatch puts the customer call on hold, checks inventory in SAP, calls a nearby warehouse, reschedules the appointment in Dynamics 365 Field Service, calls the customer back, and notifies the technician. The technician waits through all of it — often 30 to 45 minutes of paid idle time, per incident, multiplied by however many incidents happen that day.&lt;/p&gt;

&lt;p&gt;The problem has obvious parts that should be automatic: inventory lookup, rescheduling, and customer notification. None of it is novel; the delay is the cost of humans doing mechanical work.&lt;/p&gt;

&lt;h3&gt;
  
  
  The design
&lt;/h3&gt;

&lt;p&gt;Four agents. Three are called on-demand; one is autonomous.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dispatch Orchestrator (autonomous).&lt;/strong&gt; Triggered by an event from the field app — “technician reports missing part.” Drives the resolution. In Copilot Studio, this is implemented as a Dataverse row-change trigger: the field app writes a row to a &lt;code&gt;FieldIncident&lt;/code&gt; table, and the trigger wakes the agent. Where the source system does not write directly to Dataverse, a Power Automate cloud flow subscribes to the source and writes to Dataverse on its behalf.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inventory Specialist (connected agent).&lt;/strong&gt; Queries SAP for part availability at the current site and at nearby warehouses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scheduler Specialist (connected agent).&lt;/strong&gt; Proposes and books appointment slots in Dynamics 365 Field Service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notification Specialist (connected agent).&lt;/strong&gt; Sends an SMS and an email to the customer and a Teams message to the technician.&lt;/p&gt;

&lt;p&gt;The Dispatch Orchestrator does almost no reasoning about parts, scheduling, or customer preference. Its job is to call the three specialists in the correct order and handle the cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agent configurations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Dispatch Orchestrator — instructions (autonomous):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You run automatically when the field app emits a
"missing_part" event (written to the FieldIncident table).

Event payload includes:
  technician_id, customer_site_id, part_number,
  appointment_id, current_time

Behavior:
  1. Call InventorySpecialist with part_number and
     customer_site_id. You get back either:
     - available_locally: true, eta_minutes
     - available_nearby: true, warehouse_id,
       eta_minutes
     - available: false, earliest_date

  2. If available_locally within 30 minutes:
       Call NotificationSpecialist with mode="wait" and
       eta_minutes. Exit.

  3. If available_nearby and eta_minutes &amp;lt;= 120:
       Call NotificationSpecialist with mode="delay".
       Exit.

  4. Otherwise:
       Call SchedulerSpecialist to propose a new
       appointment at or after earliest_date.
       Call NotificationSpecialist with mode="reschedule"
       and the new appointment.
       Exit.

You never book inventory or rearrange stock yourself.
You never modify appointments directly.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Inventory Specialist — instructions:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;check&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;SAP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;inventory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;parts.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Inputs:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;part_number&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(string)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;site_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(string)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Behavior:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;Query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;SAP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;connector&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;stock&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;given&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;site&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;warehouses&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;within&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;configured&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;proximity&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;radius.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Output&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(structured):&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;available_locally:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;eta_minutes:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;number?&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;available_nearby:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;warehouse_id:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;string?&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;available:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;earliest_date:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;date?&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;reserve&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;parts.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;reschedule.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scheduler Specialist and Notification Specialist follow the same shape, each with its own scoped tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Orchestration pattern
&lt;/h3&gt;

&lt;p&gt;Router-worker with an autonomous trigger. The Orchestrator is event-driven, not user-driven. The specialists are standard connected agents. Microsoft Learn’s &lt;em&gt;Event trigger overview&lt;/em&gt; documents Dataverse row-change, SharePoint, OneDrive, Planner, and Recurrence triggers — exactly the surfaces an event-driven agent runs on (an HTTP request trigger and Power Automate flows extend the catalog where a native trigger does not exist).&lt;/p&gt;

&lt;h3&gt;
  
  
  Expected runtime behavior
&lt;/h3&gt;

&lt;p&gt;The field app emits a &lt;code&gt;missing_part&lt;/code&gt; event at 10:15 AM, written as a row to the &lt;code&gt;FieldIncident&lt;/code&gt; table.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The row-change trigger wakes the Orchestrator. It calls the Inventory Specialist.&lt;/li&gt;
&lt;li&gt;Inventory returns &lt;code&gt;{available_locally: false, available_nearby: true, warehouse_id: "WH-17", eta_minutes: 75}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The Orchestrator calls the Notification Specialist with &lt;code&gt;mode: "delay", eta_minutes: 75&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The technician receives a Teams message; the customer receives an SMS and an email: “Your technician has been delayed 75 minutes to retrieve a part. New estimated arrival: 11:30 AM.”&lt;/li&gt;
&lt;li&gt;Everything above happens in under a minute.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If inventory had been unavailable for two days, step three would have called the Scheduler Specialist instead, who would have proposed a slot and booked it in Dynamics 365 Field Service, followed by the notifications.&lt;/p&gt;

&lt;h3&gt;
  
  
  What makes the autonomous trigger the right shape
&lt;/h3&gt;

&lt;p&gt;Three properties justify autonomy here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The signal is clean.&lt;/strong&gt; The field app writes a well-defined row with a known schema. There is no ambiguity to clarify with a human.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The reasoning is bounded.&lt;/strong&gt; The decision tree is small. Nothing about the workflow requires open-ended judgment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The latency matters.&lt;/strong&gt; A human-in-the-loop step would defeat the point. The whole value is in removing the 30-minute phone call.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Where any of those is not true, a conversational trigger with a human in the loop is in a better shape.&lt;/p&gt;

&lt;h3&gt;
  
  
  A trigger-security note
&lt;/h3&gt;

&lt;p&gt;Autonomous triggers run with the agent maker’s credentials, and the payload that wakes the agent is untrusted input that is then added to the agent’s context. This is precisely the surface that CVE-2026-21520 exploited: an indirect prompt injection inserted into a SharePoint form field was concatenated into a Copilot Studio agent’s instructions, which then exfiltrated data via a legitimate Outlook action (Microsoft patched it in January 2026; it was publicly disclosed in April 2026). For a &lt;code&gt;FieldIncident&lt;/code&gt; row, the practical lessons are the same as Microsoft’s autonomous-agent guidance: validate required fields before acting, narrow the conditions that trigger the action, and never let free-text payload fields override the agent’s instructions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real anchor points
&lt;/h3&gt;

&lt;p&gt;Several published Copilot Studio case studies touch adjacent patterns. The Holland America Line virtual concierge uses Copilot Studio to resolve customer requests with backend integrations without requiring a human operator for standard cases. Signetic uses Power Platform and Copilot Studio to automate healthcare operational workflows that would otherwise require coordination calls between departments. Singapore Civil Defence Force reports automating manual processes that previously required significant staff time, with savings described as multi-million-dollar in the published case study. Field service dispatch fits the same mold: a bounded workflow with clear inputs and a clear success state.&lt;/p&gt;

&lt;h3&gt;
  
  
  Safeguards for autonomous agents
&lt;/h3&gt;

&lt;p&gt;Microsoft’s guidance on autonomous agents is explicit about the safeguards that matter, and they apply directly here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Least-privileged access.&lt;/strong&gt; The Inventory Specialist should have read-only access to SAP. The Scheduler Specialist should have write access only to the specific entities it books. Neither has broader scope. Per-agent Entra agent identities — now auto-creatable in Copilot Studio &lt;em&gt;(preview)&lt;/em&gt; — make this scoping concrete.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Input validation.&lt;/strong&gt; The field app’s row write is authenticated; the Orchestrator validates required fields before acting, and treats free-text fields as data, not instructions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logging.&lt;/strong&gt; Every decision and every action is logged to Purview. Field Service dispatch is a regulated area in some industries (medical device servicing, for example), and auditable logs are non-negotiable there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human escalation path.&lt;/strong&gt; If the Orchestrator cannot resolve the event — for example, the customer has no contact method on file — it escalates to a human dispatcher rather than failing silently.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Scenario four — Employee onboarding (hierarchical with persistent state)
&lt;/h2&gt;

&lt;p&gt;The fourth and final scenario exercises the hierarchical pattern: a long-running process that spans departments, persists state over days, and requires coordination across multiple specialist agents. Employee onboarding is a good example because the work is well-defined, the owners are clear, and the measurable outcome — day-one readiness — is something every HR organization already tracks.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;Between a candidate accepting an offer and their first day, a long list of things must happen: HR creates the employment record, legal sends contracts for signature, IT provisions the Entra account and assigns licenses, procurement orders hardware, facilities allocates a desk and issues a badge request, the hiring manager drafts a 30-day plan and sets up 1:1s, the new hire is added to Teams channels and mailing lists.&lt;/p&gt;

&lt;p&gt;None of this is intellectually hard. It is coordination work across four or five systems and three or four departments, and it often fails. In many organizations, a meaningful share of new hires arrive on day one with at least one blocker — a missing laptop, no email account, no desk assignment. Each blocker creates friction that is remembered long after it is resolved.&lt;/p&gt;

&lt;h3&gt;
  
  
  The design
&lt;/h3&gt;

&lt;p&gt;One supervisor agent, four specialists, and one shared state store. All live in Copilot Studio, using connected agents and autonomous triggers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Onboarding Supervisor (autonomous).&lt;/strong&gt; Owns the case from offer acceptance to day 30. Orchestrates the specialists. Escalates when any step is overdue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HR Specialist (connected agent).&lt;/strong&gt; Creates the Workday record and sends the contract through DocuSign.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IT Specialist (connected agent).&lt;/strong&gt; Provisions the Entra ID account, assigns licenses, orders hardware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Facilities Specialist (connected agent).&lt;/strong&gt; Allocates a desk and issues a badge request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manager Specialist (connected agent).&lt;/strong&gt; Drafts the 30-day plan from a template, schedules 1:1s, and adds the new hire to Teams channels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shared state.&lt;/strong&gt; A Dataverse table, &lt;code&gt;OnboardingCase&lt;/code&gt;, with one row per new hire and columns for each step’s status, timestamps, and artifact links.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Dataverse and not conversation history
&lt;/h3&gt;

&lt;p&gt;The process spans days or weeks. Conversation history in Copilot Studio is not the right place for state that must outlive a session. The durable design principle is the same: persistent state for a long-running process belongs in Dataverse, not in conversation history, which truncates.&lt;/p&gt;

&lt;p&gt;Every specialist updates its own step’s status in the &lt;code&gt;OnboardingCase&lt;/code&gt; row when it completes. The Supervisor reads the row periodically (or reacts to Dataverse row-change events) to decide what to do next. Where a specialist step legitimately runs long, asynchronous responses for agent flows &lt;em&gt;(preview)&lt;/em&gt; let it exceed the two-minute limit and return its result when it finishes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agent configurations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Onboarding Supervisor — instructions (autonomous):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You run when a new row is created in the OnboardingCase
table (status = "offer_accepted") or when a row is updated
(status changes).

For each case:
  1. If no HR step has started, call HRSpecialist.
  2. When HR step completes, call IT and Facilities in
     parallel.
  3. When IT step completes, call ManagerSpecialist to
     draft the 30-day plan and schedule 1:1s.
  4. If any step exceeds its SLA (HR: 1 business day, IT:
     3 business days, Facilities: 2 business days,
     Manager: 5 business days), post a Teams message to
     the HR coordinator channel with the overdue step
     and the case ID.

Update OnboardingCase.overall_status after every change.

Never perform steps yourself. Always delegate.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;IT Specialist — instructions:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;handle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;IT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;provisioning&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;hire.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Inputs:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;case_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(string)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;first_name,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;last_name,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;start_date,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;job_title,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;cost_center&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Behavior:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Entra&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ID&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;user&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;via&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Microsoft&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Graph&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="err"&gt;connector.&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Assign&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;licenses&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;based&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;job_title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;via&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;configured&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="err"&gt;license-mapping&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;table.&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Order&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;standard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;hardware&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;via&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;IT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;procurement&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="err"&gt;connector&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;specific&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;determined&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;by&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="err"&gt;job_title).&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Update&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;OnboardingCase.it_status&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"complete"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;when&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="err"&gt;all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;three&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;succeed.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Output&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(structured):&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ok:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;entra_user_id:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;hardware_order_id:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;HR&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;records.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;draft&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="err"&gt;-day&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;plan.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Other specialists follow the same shape — each scoped to its own domain, each writing only to its own columns in &lt;code&gt;OnboardingCase&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Orchestration pattern
&lt;/h3&gt;

&lt;p&gt;Hierarchical. The Supervisor runs autonomously, triggered by changes to Dataverse rows. It invokes specialists in a documented order with some parallelism (IT and Facilities can happen concurrently). Each specialist’s work is bounded, owned, and auditable. Agent flows provide the mechanism for the Supervisor. Triggers on Dataverse table changes are a first-class feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expected runtime behavior
&lt;/h3&gt;

&lt;p&gt;Day 0: HR enters a new row in &lt;code&gt;OnboardingCase&lt;/code&gt; with &lt;code&gt;status = "offer_accepted"&lt;/code&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Supervisor wakes and calls the HR Specialist. HR Specialist creates the Workday record and initiates the DocuSign flow. &lt;code&gt;hr_status&lt;/code&gt; moves to &lt;code&gt;in_progress&lt;/code&gt;, then to &lt;code&gt;complete&lt;/code&gt; when the contract is signed.&lt;/li&gt;
&lt;li&gt;On HR completion, the Supervisor calls IT and Facilities in parallel. IT provisions Entra, licenses, and hardware. Facilities allocates a desk and issues a badge request.&lt;/li&gt;
&lt;li&gt;On IT completion, the Supervisor calls the Manager Specialist, who schedules 1:1s in the hiring manager’s calendar, generates a 30-day plan draft in Word, saves it to the manager’s OneDrive, and adds the new hire to the appropriate Teams channels.&lt;/li&gt;
&lt;li&gt;On day 1, the &lt;code&gt;overall_status&lt;/code&gt; column reflects the readiness of the new hire. If any step is overdue, the HR coordinator’s Teams channel has been notified.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Expected outcomes
&lt;/h3&gt;

&lt;p&gt;Publicly available data on Copilot Studio onboarding use cases points in a consistent direction. Pragmatiq’s published use-case list identifies “Guiding employee onboarding” as one of the top Copilot Studio patterns: “HR teams use Copilot Studio to guide new hires through IT setup, policies, and training materials, helping them get up to speed faster.” La Trobe University’s published case study describes academic onboarding and student-facing processes handled with Copilot Studio; the pattern generalizes to employee onboarding in its coordination shape.&lt;/p&gt;

&lt;p&gt;Organizations measuring before-and-after on this pattern commonly report day-one readiness improving substantially, with the remaining gap being cases with unusual requirements that still need human routing. The gains come from the coordination being mechanical, not from any single step being faster. (Treat any specific percentage as illustrative unless your own baseline supports it — the published case studies describe the shape of the improvement, not a universal number.)&lt;/p&gt;

&lt;h3&gt;
  
  
  What this scenario makes obvious
&lt;/h3&gt;

&lt;p&gt;Three things stand out in the hierarchical pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State is the architecture.&lt;/strong&gt; The &lt;code&gt;OnboardingCase&lt;/code&gt; Dataverse table is not an implementation detail; it is the source of truth. Every decision the Supervisor makes depends on the state it reads. Every specialist writes back to it. If that table is modeled carelessly, the whole system is fragile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specialists are boring.&lt;/strong&gt; None of the specialists does anything clever. They do one thing each, reliably. That is the point. Cleverness in the wrong place is a reliability problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Supervisor is small.&lt;/strong&gt; The instruction block is short. The logic is explicit. There is no “decide the best onboarding strategy” reasoning — there is a process, and the Supervisor executes it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where the pattern commonly goes wrong
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Treating the Supervisor as a chatbot.&lt;/strong&gt; Someone wants to “ask the onboarding agent how things are going.” Don’t. Build a report on top of the Dataverse table instead. The Supervisor’s job is execution, not Q&amp;amp;A.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overloading &lt;code&gt;OnboardingCase&lt;/code&gt;.&lt;/strong&gt; Adding every possible detail to the row makes it slower and harder to change. Keep it to status, timestamps, and references; put the details in the relevant specialist’s own storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing the SLA side of the Supervisor.&lt;/strong&gt; Without the overdue logic, the system looks like it is working until someone realizes a specific step has been stuck for a week. The SLA rule is not optional.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  6. A practical MCP inventory for enterprise Copilot Studio deployments
&lt;/h2&gt;

&lt;p&gt;The four scenarios above all assume the existence of well-described tools. In Part 1, MCP was introduced as the standard that lets those tools be defined once and consumed by many agents. This section proposes a starter catalog of MCP servers and tools that most enterprises need. Everything listed here is either a real, shipping MCP server from Microsoft or a major vendor, or a thin wrapper around an existing, documented enterprise API that any team can build using the official MCP SDK.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why start from an inventory
&lt;/h3&gt;

&lt;p&gt;Makers tend to build MCP servers reactively — one per immediate need — and end up with an ecosystem that overlaps, duplicates, and ages unevenly. An inventory, maintained by the platform team, makes the design choices explicit: what domains exist, who owns each, and where a new capability should go.&lt;/p&gt;

&lt;p&gt;A practical inventory answers three questions for every proposed tool:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Which domain does it belong to? (Only one.)&lt;/li&gt;
&lt;li&gt;Who owns the server that hosts it?&lt;/li&gt;
&lt;li&gt;Is it read-only or does it write, and if it writes, is it idempotent?&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Microsoft-published MCP servers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Learn MCP server.&lt;/strong&gt; Exposes Microsoft documentation as searchable tools. Useful for internal developer agents and customer support agents who need up-to-date Microsoft product guidance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Dataverse MCP&lt;/strong&gt; — platform-level surfaces that expose Dataverse queries to agents, documented in the Microsoft Copilot Studio sample repositories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure MCP servers&lt;/strong&gt; from the Microsoft Azure organization on GitHub, exposing administrative surfaces for Azure resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Microsoft Copilot Acceleration Team publishes working samples in the CopilotStudioSamples repository on GitHub, including the dynamic MCP routing sample referenced in Part 1. Remember that Copilot Studio also supports registering an existing MCP server as a bring-your-own asset through Agents 365, for organizations that want central governance of servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Third-party MCP servers with public presence
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub MCP server&lt;/strong&gt; — official server from GitHub for repository, issue, and pull-request operations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atlassian MCP servers&lt;/strong&gt; — for Jira and Confluence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notion, Linear, Asana&lt;/strong&gt; — community- and vendor-provided servers for common SaaS work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For many enterprises, these third-party servers are the starting point because the backend APIs are stable and the servers are maintained by the vendors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enterprise-internal domains that typically need an MCP server
&lt;/h3&gt;

&lt;p&gt;The categories below are ones most enterprises either build themselves or expect to. Each can be implemented as a thin MCP wrapper over the existing backend’s REST API using the official MCP SDKs (available in TypeScript, Python, C#, and others).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;th&gt;Typical tools exposed&lt;/th&gt;
&lt;th&gt;Owner&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IT service management&lt;/td&gt;
&lt;td&gt;search_incidents, get_incident, create_incident, update_incident, search_knowledge&lt;/td&gt;
&lt;td&gt;IT Operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inventory / ERP&lt;/td&gt;
&lt;td&gt;check_stock, list_warehouses, get_material&lt;/td&gt;
&lt;td&gt;Supply Chain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HR / workforce&lt;/td&gt;
&lt;td&gt;get_employee, list_open_requisitions, create_hire_record&lt;/td&gt;
&lt;td&gt;HR Tech&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Field service&lt;/td&gt;
&lt;td&gt;list_slots, book_appointment, cancel_appointment&lt;/td&gt;
&lt;td&gt;Field Service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Policy / knowledge&lt;/td&gt;
&lt;td&gt;search_policy, get_policy, list_policy_versions&lt;/td&gt;
&lt;td&gt;Legal / Compliance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identity&lt;/td&gt;
&lt;td&gt;create_user, assign_license, add_to_group&lt;/td&gt;
&lt;td&gt;IT Security&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Procurement&lt;/td&gt;
&lt;td&gt;order_hardware, get_order_status, list_catalog&lt;/td&gt;
&lt;td&gt;IT Procurement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Digital signature&lt;/td&gt;
&lt;td&gt;send_envelope, get_envelope_status&lt;/td&gt;
&lt;td&gt;Legal Operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Document operations&lt;/td&gt;
&lt;td&gt;extract_text, extract_tables, split, merge&lt;/td&gt;
&lt;td&gt;Shared Services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Collaboration&lt;/td&gt;
&lt;td&gt;create_channel, add_member, post_message&lt;/td&gt;
&lt;td&gt;Collaboration / M365&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each row is a server, not a tool. The reason is ownership: when the ServiceNow team rotates credentials, they do it once in the ITSM server, and every agent continues to work.&lt;/p&gt;

&lt;p&gt;For domains that already have excellent Power Platform connectors (many of these do — ServiceNow, SAP, Workday, Dynamics 365 Field Service, DocuSign, Microsoft Graph), the decision between “use the connector directly” and “wrap it in an MCP server” comes down to reuse. If only one agent needs these tools, the connector is simpler. If three or more agents need them, an MCP server is usually the right investment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-cutting concerns
&lt;/h3&gt;

&lt;p&gt;A few principles apply to every server in the inventory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read-only versus write separation.&lt;/strong&gt; When a single server mixes read and write tools, a broader scope of credentials is required to use it. A cleaner pattern is to split — &lt;code&gt;itsm-read&lt;/code&gt; and &lt;code&gt;itsm-write&lt;/code&gt; — and to grant the write server’s credentials only to agents that actually need them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Idempotency on every write.&lt;/strong&gt; Retries happen. Every write tool should accept an idempotency key and use it on the backend to deduplicate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structured outputs.&lt;/strong&gt; Tools should return structured data with explicit schemas. The MCP protocol supports this natively; use it. An agent parsing prose is a fragile agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool descriptions as products.&lt;/strong&gt; The description is what the orchestrator reads to decide whether to call a tool. Treat tool descriptions like API documentation — specific, accurate, and up to date. Include: what the tool does, when to use it, what it returns, and any side effects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication.&lt;/strong&gt; OAuth 2.0 with Entra ID is the default for enterprise tenants. API keys are acceptable for internal network-scoped servers; the connection manager in Copilot Studio encrypts them at rest. Unauthenticated MCP endpoints should not exist in a business tenant. (Because MCP connectivity rides on Power Platform connectors, connector-level data policies also govern MCP access.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audit and observability.&lt;/strong&gt; Every MCP server should log every call with the calling agent identity, the tool name, the inputs, the outputs, and the latency. Emit these logs to Sentinel or your SIEM of choice. Purview already captures the agent-side record.&lt;/p&gt;

&lt;h3&gt;
  
  
  Governance at the tenant level
&lt;/h3&gt;

&lt;p&gt;The Power Platform Admin Center’s &lt;strong&gt;Copilot Hub&lt;/strong&gt; and the &lt;strong&gt;agent inventory&lt;/strong&gt; (now queryable as a schema from the admin center, API, or Azure Resource Graph &lt;em&gt;(preview)&lt;/em&gt;) provide the tenant-level surface for seeing which agents use which MCP servers; &lt;strong&gt;Microsoft Agent 365&lt;/strong&gt; with the &lt;strong&gt;Entra agent registry&lt;/strong&gt; (Ignite 2025) extends that view across platforms. Combine that with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Environment strategy.&lt;/strong&gt; Development, test, and production environments for MCP servers and their consuming agents. Pipelines promote both together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DLP policies.&lt;/strong&gt; Apply Data Loss Prevention policies to the connectors backing MCP servers. A write-capable MCP server is business data; treat it that way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Entra Agent ID.&lt;/strong&gt; Each agent gets a first-class identity, and permissions are scoped per identity (auto-creatable per agent in Copilot Studio &lt;em&gt;(preview)&lt;/em&gt;). An IT triage agent does not need credentials to create employment records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global Secure Access for agent traffic.&lt;/strong&gt; Where available, routing agent outbound calls through Microsoft’s network security enforcement layer is worth considering for regulated tenants.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A starter prioritization
&lt;/h3&gt;

&lt;p&gt;If an organization is beginning from zero, the order that tends to work:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Stand up one read-only domain MCP server first — usually policy or knowledge. Let agents consume it. Prove the integration pattern works.&lt;/li&gt;
&lt;li&gt;Add one write-capable server (ITSM or HR). Impose idempotency and audit discipline from day one.&lt;/li&gt;
&lt;li&gt;Adopt the vendor-provided servers (GitHub, Atlassian, etc.) for domains you already use.&lt;/li&gt;
&lt;li&gt;Expand to the rest of the inventory as agent demand justifies.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Trying to build all 10 servers at once results in an inventory with no consumers. Each server should exist because a specific agent needs it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to resist
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Mega-servers that expose everything.&lt;/strong&gt; A single MCP server with 200 tools recreates the god-agent problem at the tool layer. Split by domain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Servers that replicate connector logic that already exists.&lt;/strong&gt; If the Power Platform connector is already good and only one agent needs it, skip the MCP wrapper. MCP is a sharing mechanism; sharing is only worth it when there is something to share.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom protocols on top of MCP.&lt;/strong&gt; If a team is tempted to add their own message shapes or non-standard tool conventions, they have probably drifted from the standard. MCP-compliant clients will not understand them, and the portability value is lost.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Ten anti-patterns that recur in production
&lt;/h2&gt;

&lt;p&gt;The previous sections have covered the architecture, the scenarios, and the inventory. This last section collects what does not fit neatly into any of those categories: the patterns that look reasonable on paper and fail in production, and the corresponding lessons that stick. Each anti-pattern reflects a failure mode teams report in real Copilot Studio deployments, and the corrections are the ones teams have actually applied.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-pattern 1 — The god agent
&lt;/h3&gt;

&lt;p&gt;A single agent acquires, over months, fifty tools, nine knowledge sources, and an instruction block that bumps up against the 8,000-character limit and that nobody can fully read in one sitting. Orchestration quality degrades: the agent selects the wrong tools, cites the wrong documents, and occasionally rejects valid requests. The team adds more rules to the instructions to patch the symptoms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it happens.&lt;/strong&gt; Each addition seemed small at the time. Ownership was never explicit. Nobody had the authority to say no.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction.&lt;/strong&gt; Split by domain into specialists. Apply the criteria in Part 1: tool count approaching 30-40, instruction length relative to the 8,000-character ceiling, number of owners, and SLA variance. The first split is the hardest; subsequent ones are routine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson.&lt;/strong&gt; One agent, one domain, one owner. Enforce it at design review.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-pattern 2 — Prose contracts between agents
&lt;/h3&gt;

&lt;p&gt;The Orchestrator calls the Ticket Writer, which returns “I created ticket INC-12345 for you.” The Orchestrator then tries to extract the ticket ID with string matching. For six months, it works. Then someone rewrites the Ticket Writer’s output to be more conversational, and every downstream integration breaks quietly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction.&lt;/strong&gt; Every called agent returns structured data. Copilot Studio supports this natively; both connected and A2A agents allow structured outputs. Make this mandatory at the design-review stage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson.&lt;/strong&gt; Structured in, structured out. Prose is for users, not for agents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-pattern 3 — Silent retries
&lt;/h3&gt;

&lt;p&gt;The calling agent retries a failed call after a timeout. The called agent had actually succeeded; the failure was a network blip. The result: two tickets, two emails, two meeting invitations. Over a quarter, thousands of duplicate issues accumulate, and nobody notices until the project management tool begins to degrade under the volume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction.&lt;/strong&gt; Every write-capable tool accepts an idempotency key, and the backend uses it to deduplicate. The calling agent generates a stable key per logical operation (typically based on the conversation ID and the step name) and passes it on retries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson.&lt;/strong&gt; Retries are a first-class design concern. Idempotency is not optional for writes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-pattern 4 — Unscoped credentials
&lt;/h3&gt;

&lt;p&gt;Every MCP server, every connector, and every agent uses the same service principal. First breach compromises everything. Rotation is impossible without downtime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction.&lt;/strong&gt; Entra Agent ID (introduced May 2025; expanded to public preview at Ignite 2025) gives each agent a first-class identity, and Copilot Studio can now auto-create one per agent &lt;em&gt;(preview)&lt;/em&gt;. Grant permissions per agent, scoped to exactly what that agent needs. Use managed identities where supported. Rotate credentials per connection, not per tenant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson.&lt;/strong&gt; Least privilege is a design input, not a post-deployment cleanup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-pattern 5 — No state store
&lt;/h3&gt;

&lt;p&gt;A multi-step orchestration relies on conversation history to remember where it is. Conversation history truncates. The orchestration loses its place, and the Orchestrator either restarts the process (producing duplicates) or abandons it (producing incomplete work).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction.&lt;/strong&gt; Persist state in Dataverse. The &lt;code&gt;OnboardingCase&lt;/code&gt; pattern from scenario four is the generalization: one row per case, columns for each step’s status, with row-change events driving the Supervisor. Every specialist writes in their own columns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson.&lt;/strong&gt; If the process outlives the conversation, so should the state.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-pattern 6 — Knowledge source overload
&lt;/h3&gt;

&lt;p&gt;An agent is attached to 12 SharePoint sites, 6 uploaded files, 2 website URLs, and a Graph connector. Retrieval produces irrelevant passages. Cited answers are confidently wrong. Adding more sources makes it worse, not better. (Generative orchestration also caps SharePoint knowledge at 25 site URLs per agent, which is a hard reminder that more is not better.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction.&lt;/strong&gt; Scope knowledge tightly. One domain, one library. The case studies that cite retrieval quality as the winning factor — Dunaway, ABN AMRO, La Trobe University — all scoped narrowly. Where a second domain matters, that is usually a second specialist with their own knowledge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson.&lt;/strong&gt; Retrieval quality is a function of signal-to-noise, not of source count.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-pattern 7 — Circular delegation
&lt;/h3&gt;

&lt;p&gt;Agent A calls Agent B, who calls Agent A, who calls Agent B. The orchestrator executes until a timeout or token exhaustion. The bill arrives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction.&lt;/strong&gt; Specialists never call their parents back. If a specialist appears to need something the parent has, the parent should pass it down as an input. (Copilot Studio’s one-level nesting rule — an agent with connected agents can’t itself be a connected agent — limits but does not eliminate the risk.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson.&lt;/strong&gt; Delegation is a tree, not a graph. Trees have no cycles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-pattern 8 — Conversational autonomy
&lt;/h3&gt;

&lt;p&gt;An autonomous agent is built as a chatbot that also runs on a schedule. The chatbot surface and the autonomous surface have different failure modes, and the team maintains both. When a user interrupts the autonomous run through chat, the state becomes inconsistent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction.&lt;/strong&gt; Autonomous agents have no chat surface. If users want visibility, build a report on top of the state store. Chat is a separate agent if it is needed at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson.&lt;/strong&gt; Autonomy is a different product shape from conversation. Do not combine them in one agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-pattern 9 — Ignoring the security posture of inputs and called agents
&lt;/h3&gt;

&lt;p&gt;Two failure modes share one root cause: trusting content the agent did not author. In the first, an A2A agent from a partner is added to the tool list; six months later, a vulnerability in the partner’s agent lets its conversation context leak through its outputs. In the second — the one Microsoft assigned a CVE to — an attacker placed instructions in a SharePoint form field that an autonomous agent ingested as authoritative context. Microsoft assigned &lt;strong&gt;CVE-2026-21520&lt;/strong&gt; (CVSS 7.5) to that indirect prompt-injection issue, patched it in January 2026, and publicly disclosed it in April 2026. Notably, the injected instruction exfiltrated data through a &lt;em&gt;legitimate&lt;/em&gt; Outlook action, so DLP never fired. Both cases prove the same point: every input an agent trusts — a partner agent’s output, a form field, a retrieved document — expands the attack surface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction.&lt;/strong&gt; Treat external agents as supply chain dependencies: review their security posture, scope their access narrowly, log their calls, and rotate credentials. Treat trigger and retrieval inputs as untrusted: validate payloads, and never let free-text content override the agent’s instructions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson:&lt;/strong&gt; Defense-in-depth is necessary; agent composition is not safe by default. The LLM cannot reliably tell trusted instructions from untrusted data — so the boundary has to be enforced around it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-pattern 10 — Measuring the wrong thing
&lt;/h3&gt;

&lt;p&gt;A team reports “the agent answered 10,000 questions this month.” That is a count, not an outcome. The team does not know how many answers were correct, how many resolved the user’s underlying need, or how many caused follow-up work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction.&lt;/strong&gt; Measure outcomes: auto-resolution rate, user confirmation of correctness, downstream ticket creation, time-to-resolution. Copilot Studio’s analytics surface, combined with data in the relevant business systems, supports these measurements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson.&lt;/strong&gt; Volume is not value.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recommendations that follow
&lt;/h3&gt;

&lt;p&gt;Pulling the corrections together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architecture.&lt;/strong&gt; One agent per domain. Separate read from write. Tree, not graph.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contracts.&lt;/strong&gt; Structured inputs and outputs. Explicit error contracts. Idempotency keys on writes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security.&lt;/strong&gt; Scoped credentials. Entra Agent ID per agent. Validate untrusted inputs. Audit everything. Review external agents like you review external vendors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operations.&lt;/strong&gt; State in Dataverse. Outcome metrics, not volume metrics. Ownership per agent, reviewed quarterly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standards.&lt;/strong&gt; MCP for tools. A2A for agents across platforms (GA since April 2026). Connected agents for Copilot Studio–native specialists. Child agents for subroutines inside a parent.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. What Copilot Studio gives you today, one more time
&lt;/h2&gt;

&lt;p&gt;Every capability used across Parts 1 and 2 of this series is available now, with preview status noted where it applies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generative orchestration with tool selection.&lt;/li&gt;
&lt;li&gt;Child, connected, and A2A agents (A2A generally available since April 2026; connections to Microsoft Foundry, Fabric, and M365 Agents SDK agents in public preview).&lt;/li&gt;
&lt;li&gt;MCP server integration with Streamable transport (SSE no longer supported after August 2025).&lt;/li&gt;
&lt;li&gt;Autonomous agents with documented Dataverse, SharePoint, OneDrive, Planner, and Recurrence triggers; an HTTP request trigger and cloud flows extend the catalog where a native trigger does not yet exist.&lt;/li&gt;
&lt;li&gt;Agent flows with parallel branches and approval gates — and a redesigned Workflows experience in early release, with agent nodes and asynchronous responses &lt;em&gt;(preview)&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Computer Use (computer-using agents), generally available since May 2026.&lt;/li&gt;
&lt;li&gt;Dataverse as a governed state store.&lt;/li&gt;
&lt;li&gt;Entra Agent ID (per-agent auto-creation in preview), Copilot Hub, the agent inventory schema &lt;em&gt;(preview)&lt;/em&gt;, Microsoft Agent 365, and the Copilot Control System for governance.&lt;/li&gt;
&lt;li&gt;Purview audit across agent activity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing in this series required features that do not exist. The gap between “possible today” and “in production somewhere” is smaller than the marketing noise suggests. The gap between “possible” and “in production well” is larger — and the anti-patterns above are the ones that close it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If you take five things away from this article, they are these.&lt;/p&gt;

&lt;p&gt;First, &lt;strong&gt;the four patterns are not abstractions; they have concrete shapes you can copy&lt;/strong&gt;. Router-worker is the IT triage scenario: classification, delegation, structured returns. Parallel fan-out is the contract review scenario: independent specialists with scoped knowledge, merged outputs. Router-worker with an autonomous trigger is the field service scenario: a clean event, a bounded decision tree, no human in the loop. Hierarchical with persistent state is the employee onboarding scenario: a supervisor that reads from a Dataverse table, specialists that update their own columns, and SLA monitoring that escalates when work is stuck.&lt;/p&gt;

&lt;p&gt;Second, &lt;strong&gt;state is the architecture for anything long-running&lt;/strong&gt;. Dataverse is the right place for it. Conversation history is not. Every hierarchical and event-driven design in this article depends on a state table whose columns are the contract between the agents. Model it carelessly, and the whole system is fragile; model it well, and the supervisor becomes trivial.&lt;/p&gt;

&lt;p&gt;Third, &lt;strong&gt;MCP is a platform decision, not an agent decision&lt;/strong&gt;. The inventory in section 6 is a starting point because the question of which server owns which domain must be answered once by the platform team, with the consuming agents in mind. Mega-servers and one-off wrappers both recreate the problems MCP exists to solve. Domain ownership and read/write separation are the load-bearing rules.&lt;/p&gt;

&lt;p&gt;Fourth, &lt;strong&gt;the ten anti-patterns are observations, not predictions&lt;/strong&gt;. Each reflects a failure mode teams hit in shipping deployments. The god agent, prose contracts, silent retries, unscoped credentials, no state store, knowledge overload, circular delegation, conversational autonomy, ignored security posture, and measuring volume instead of outcomes — these are the failure modes a design review should explicitly check for.&lt;/p&gt;

&lt;p&gt;Fifth, &lt;strong&gt;the measure of a multi-agent system is not how clever any single agent is — it is how boring each agent can become&lt;/strong&gt;. Boring agents — narrow, owned, tested, well-described — compose into systems that deliver outcomes reliably. The four scenarios above each succeed because their specialists do one thing, do it well, and stop. The inventory and the anti-patterns exist to keep them that way.&lt;/p&gt;

&lt;p&gt;Multi-agent orchestration is not a novelty. It is the shape enterprise AI takes when it grows beyond a single use case. Copilot Studio is one of the platforms where that shape is now routine to build, with two open standards (MCP and A2A) that keep it composable and a governance surface that keeps it safe to operate. Part 1 settled the architectural decisions; Part 2 worked through what they look like when executed. The rest is the discipline of doing it well — and that, as it turns out, is the part that takes practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/multi-agent-patterns" rel="noopener noreferrer"&gt;Explore multi-agent orchestration patterns&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-add-other-agents" rel="noopener noreferrer"&gt;Add other agents (overview)&lt;/a&gt; — child vs connected agents; preview status of Foundry/Fabric/M365 Agents SDK connections&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/requirements-quotas" rel="noopener noreferrer"&gt;Quotas and limits&lt;/a&gt; — 8,000-character instruction limit; 25 SharePoint sites under generative orchestration&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/autonomous-agents" rel="noopener noreferrer"&gt;Design autonomous agent capabilities&lt;/a&gt; — autonomous agents GA, March 2025&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-triggers-about" rel="noopener noreferrer"&gt;Event trigger overview&lt;/a&gt; — documented event triggers (SharePoint, OneDrive, Planner, Recurrence, Dataverse row-change)&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/whats-new" rel="noopener noreferrer"&gt;What’s new in Copilot Studio&lt;/a&gt; — A2A GA (April 2026), Computer Use GA (May 2026), new Workflows experience, async agent-flow responses (preview), per-agent Entra identities (preview), agent inventory schema (preview)&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-add-existing-server-to-agent" rel="noopener noreferrer"&gt;Connect your agent to an existing Model Context Protocol (MCP) server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/add-agent-agent-to-agent" rel="noopener noreferrer"&gt;Connect an agent available over the Agent2Agent (A2A) protocol&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/adoption-case-studies" rel="noopener noreferrer"&gt;Copilot Studio real-world transformation stories&lt;/a&gt; — T-Mobile, Nexi Group, A1 Inteligência em Viagens, Dunaway, Signetic, Holland America Line, Singapore Civil Defence Force, La Trobe University, ABN AMRO, Rabobank&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/connectors/service-now/" rel="noopener noreferrer"&gt;ServiceNow connector reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/connectors/connector-reference/" rel="noopener noreferrer"&gt;Power Platform connectors reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/power-platform/admin/copilot/copilot-hub" rel="noopener noreferrer"&gt;Copilot Hub in the Power Platform Admin Center&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-365/copilot/copilot-control-system/overview" rel="noopener noreferrer"&gt;Copilot Control System overview&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft CopilotStudioSamples — &lt;a href="https://microsoft.github.io/mcscatblog/posts/dynamic-mcp-routing-copilot-studio/" rel="noopener noreferrer"&gt;Dynamic MCP Routing in Copilot Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Model Context Protocol — &lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;Official specification and SDKs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Agent2Agent protocol — &lt;a href="https://a2aproject.github.io/A2A/" rel="noopener noreferrer"&gt;Open specification&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;VentureBeat — &lt;a href="https://venturebeat.com/security/microsoft-salesforce-copilot-agentforce-prompt-injection-cve-agent-remediation-playbook" rel="noopener noreferrer"&gt;Microsoft patched a Copilot Studio prompt injection. The data exfiltrated anyway.&lt;/a&gt; — CVE-2026-21520 (CVSS 7.5, “ShareLeak”), patched January 2026, disclosed April 2026&lt;/li&gt;
&lt;li&gt;Pragmatiq — &lt;a href="https://www.pragmatiq.co.uk/12-practical-use-cases-for-microsoft-copilot-studio/" rel="noopener noreferrer"&gt;12 Practical Use Cases for Microsoft Copilot Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Holger Imbery — &lt;a href="https://holgerimbery.blog/multi-agent-orchestration" rel="noopener noreferrer"&gt;Copilot Studio Multi-Agent Orchestration (original 14-part series)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agents</category>
      <category>copilotstudio</category>
      <category>multiagentorchestration</category>
    </item>
    <item>
      <title>Multi-Agent Orchestration with Copilot Studio — Part 1: Foundations</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/holgerimbery/multi-agent-orchestration-with-copilot-studio-part-1-foundations-413k</link>
      <guid>https://dev.to/holgerimbery/multi-agent-orchestration-with-copilot-studio-part-1-foundations-413k</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Summary lede.&lt;/strong&gt; This is the first of three articles on multi-agent orchestration in Microsoft Copilot Studio. Part 1 — Foundations — establishes the vocabulary, the decision criteria, and the configuration mechanics that every team needs before it touches a production design. It walks through five questions in order: why split a single agent into several, what a Copilot Studio agent is actually composed of, which orchestration patterns exist, how the Model Context Protocol (MCP) lets agents share tools, and how the Agent2Agent (A2A) protocol lets agents talk to other agents across platforms. The article closes with the concrete configuration steps for both standards as they exist in the product today, with the correct UI paths.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About this series.&lt;/strong&gt; This is Part 1 of three. &lt;strong&gt;Part 1 — Foundations&lt;/strong&gt; (this article) covers the vocabulary, when to split a single agent, the five configuration surfaces, the four orchestration patterns, and how MCP and A2A are configured. &lt;strong&gt;Part 2 — In Practice&lt;/strong&gt; turns those decisions into four end-to-end scenarios, a starter MCP server inventory, and ten production anti-patterns. Parts 1 and 2 describe the &lt;strong&gt;released, generally available feature set&lt;/strong&gt; — the “classic” Copilot Studio experience, built on &lt;strong&gt;generative orchestration&lt;/strong&gt; , which is GA and fully supported. &lt;strong&gt;Part 3 — The Build 2026 Rebuild&lt;/strong&gt; describes the new four-surface model (Skills, Memory, a new orchestrator); those features are &lt;strong&gt;in public preview and subject to change&lt;/strong&gt; before general availability, so treat Part 3 as forward-looking and re-check status before relying on it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every capability described in this article — connected agents, child agents, MCP integration with Streamable transport, A2A integration, autonomous triggers, Entra Agent ID, Copilot Hub, the Microsoft Foundry Agent Service — is documented on Microsoft Learn and is either generally available or in public preview, with the status called out where it matters. Three of the connected-agent types (Microsoft Foundry agents, Fabric Data agents, and agents built with the Microsoft 365 Agents SDK) are &lt;strong&gt;public preview&lt;/strong&gt; at the time of writing; connected Copilot Studio agents, MCP, and A2A are generally available. Where a feature is preview, this article says so.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Capability status at publication&lt;/strong&gt; Copilot Studio moves quickly, so the architecture below is anchored to current capability status. As of publication: &lt;strong&gt;A2A connections are generally available&lt;/strong&gt; ; &lt;strong&gt;Computer Use (computer-using agents) is generally available&lt;/strong&gt;, with embedding into workflows in preview; a &lt;strong&gt;redesigned Workflows experience&lt;/strong&gt; is in early release; &lt;strong&gt;per-agent Microsoft Entra agent identities&lt;/strong&gt; can be auto-created (preview); and an &lt;strong&gt;agent inventory schema&lt;/strong&gt; (preview) exposes every agent to the admin center, API, and Azure Resource Graph. These capabilities support the architecture in this article — they are noted inline where relevant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why read this&lt;/strong&gt; Read this if you are responsible for the shape of an AI build that has either started to misbehave or is about to. The single-agent-with-everything pattern looks fine for the first quarter of a project and fails predictably in the second. The terms in this article are the ones a solution architect, platform owner, or senior maker needs to discuss the failure with the team and pick a better shape. Read it if you have heard “we will just add another tool” three times in the same week, if your instruction block now scrolls, or if two different teams are editing the same agent without coordinating. Read it especially if a vendor or an article elsewhere has promised that MCP or A2A will “solve” multi-agent work — they will not, but they do remove enough integration duplication that the architectural decisions become the bottleneck again, which is where this article picks up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Foundations article is also where the corrections from the original series are applied: the correct UI path for adding A2A agents (the Agents page, not the Tools page), the current name and preview status of the connected-agent types, and the actual list of autonomous trigger types supported on Microsoft Learn. If you have been following the series and want the canonical version, this is it.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The drift that produces multi-agent work
&lt;/h2&gt;

&lt;p&gt;Most enterprise AI projects start with a single agent and end with a support ticket. The agent grows, picks up more tools, more instructions, more knowledge sources, and eventually starts choosing the wrong action, citing the wrong document, or refusing perfectly valid requests. Teams add prompt fragments to patch individual failures, the instruction block runs up against Copilot Studio’s documented &lt;strong&gt;8,000-character limit&lt;/strong&gt; for agent instructions, and nobody on the team can say with confidence why a specific response came out the way it did.&lt;/p&gt;

&lt;p&gt;Multi-agent orchestration is the architectural response to that drift. Instead of one general-purpose agent, the work is split across a small set of narrow agents, each with a clear scope, its own knowledge, and its own tools. An orchestrator chooses which specialist to call. This pattern is not new in distributed systems, but the tooling to apply it cleanly to conversational AI is new — and Microsoft Copilot Studio now provides it as a first-class capability.&lt;/p&gt;

&lt;p&gt;Five capabilities make multi-agent orchestration practical in Copilot Studio today:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Connected agents&lt;/strong&gt; — a separately published agent added to another agent as a callable capability. This can be another Copilot Studio agent in the same environment (generally available), or an external agent: an agent on the Microsoft Foundry Agent Service &lt;em&gt;(preview)&lt;/em&gt;, a Fabric Data Agent &lt;em&gt;(preview)&lt;/em&gt;, an agent built with the Microsoft 365 Agents SDK &lt;em&gt;(preview)&lt;/em&gt;, or any agent that speaks the A2A protocol. Each connected agent has its own lifecycle, authentication, owner, and can be reused across multiple calling agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Child agents&lt;/strong&gt; — lightweight sub-agents that live inside a parent agent and share its environment, tools, and knowledge. They are not independently published and are not intended for reuse outside the parent. (Earlier drafts of this series called these “inline agents”; Microsoft’s term is &lt;strong&gt;child agents&lt;/strong&gt; , and that is what this article uses.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP integration&lt;/strong&gt; — since 2025, Copilot Studio exposes a “Tools → Add a tool → New tool → Model Context Protocol” flow that takes a server URL, authentication settings, and automatically discovers the tools the server publishes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A2A protocol support&lt;/strong&gt; — Copilot Studio can connect to any agent that speaks the open Agent2Agent protocol, enabling orchestration with agents hosted on other frameworks. A2A connections went generally available in April 2026.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous agents&lt;/strong&gt; — event-triggered agents that act without a user turn, generally available since March 2025.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These capabilities are documented, configurable, and in production use at organizations including ABN AMRO, Rabobank, Holland America Line, T-Mobile, the City of Montréal, La Trobe University, Nexi Group, and Singapore Civil Defence Force.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. When to split a single agent
&lt;/h2&gt;

&lt;p&gt;The question is not whether multi-agent systems are better. The question is at what point a single agent stops being the right shape for the work.&lt;/p&gt;

&lt;p&gt;Copilot Studio gives makers a lot of room before that point is reached. A single agent can hold a substantial instruction block (up to the 8,000-character limit), hundreds of knowledge sources, and a growing list of actions. For many use cases — an FAQ bot over a policy library, a contained IT assistant with five connectors — one agent is the correct answer and will stay the correct answer for the life of the deployment.&lt;/p&gt;

&lt;p&gt;The problems begin when the agent’s scope expands informally. A new department asks if the existing agent can “also” handle their intake. A manager attaches another SharePoint site “for context.” An action is added because it was convenient. Each change is small; the cumulative effect is an agent with blurred responsibilities, inconsistent tone, and orchestration quality that degrades in ways that are hard to diagnose.&lt;/p&gt;

&lt;h3&gt;
  
  
  Signals an agent has outgrown itself
&lt;/h3&gt;

&lt;p&gt;Microsoft’s guidance on multi-agent orchestration is explicit about the thresholds where quality starts to slip. The clearest signal is &lt;strong&gt;tool count&lt;/strong&gt;. The orchestrator ranks candidate tools at each turn; as the list grows, the probability of selecting the right one falls. Microsoft Learn’s &lt;em&gt;Add other agents overview&lt;/em&gt; states this directly: “this degradation in performance can happen when your main agent has more than 30-40 choices of action (tools, topics, and other agents).” Other signals are softer but equally real:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The instruction block contains rules that contradict each other because different requirements were bolted on over time.&lt;/li&gt;
&lt;li&gt;Knowledge sources cover unrelated domains, and retrieval surfaces HR articles to IT questions.&lt;/li&gt;
&lt;li&gt;Response latency varies wildly because one path calls a millisecond lookup and another generates a multi-page report.&lt;/li&gt;
&lt;li&gt;Multiple owners now edit the same agent, each with different mental models.&lt;/li&gt;
&lt;li&gt;Testing one change risks regressing a behavior owned by a different team.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When three or more of these are true, the agent is doing the work of what should be multiple agents.&lt;/p&gt;

&lt;h3&gt;
  
  
  What splitting actually buys you
&lt;/h3&gt;

&lt;p&gt;Decomposing an agent is not free. It introduces a second artifact to maintain, an orchestration layer, and a contract between components. The benefits must be worth that cost, and they usually are in three ways.&lt;/p&gt;

&lt;p&gt;First, &lt;strong&gt;bounded context&lt;/strong&gt;. Each specialist agent can have a short instruction block, a small number of tools, and a knowledge base scoped to one domain. The orchestrator’s job is routing, not execution. Testing becomes possible because each agent has a well-defined input and output.&lt;/p&gt;

&lt;p&gt;Second, &lt;strong&gt;independent ownership&lt;/strong&gt;. HR owns the HR agent; IT owns the IT agent; Finance owns the invoice agent. When HR needs to change the parental-leave policy, they update one knowledge source and one agent, with no risk to the IT triage behavior.&lt;/p&gt;

&lt;p&gt;Third, &lt;strong&gt;reuse&lt;/strong&gt;. A connected “Knowledge Base Lookup” agent can serve the Service Desk, the Sales Assistant, and the Field Technician agent without three teams each rebuilding the same tool integrations, prompts, and error handling.&lt;/p&gt;

&lt;h3&gt;
  
  
  A decision checklist
&lt;/h3&gt;

&lt;p&gt;A practical rule for deciding whether to split:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Split when&lt;/strong&gt; the agent has multiple distinct owners, or the tool count is approaching 30, or two knowledge bases are pulling retrieval in conflicting directions, or SLA expectations differ between tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do not split when&lt;/strong&gt; the problem is really that one knowledge source is outdated, or when the instructions simply need rewriting, or when the “additional” use case is a one-off topic that belongs in a Power Automate flow rather than a new agent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cheapest intervention should always be tried first. A clean-up of instructions, a re-scoping of knowledge sources, or moving an over-loaded action into a Power Automate agent flow will often resolve what looked like a multi-agent problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Child or connected: a second decision
&lt;/h3&gt;

&lt;p&gt;Once the decision to split is made, Copilot Studio offers two options, and they serve different purposes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Child agents&lt;/strong&gt; are the right choice when the sub-agent exists only to factor complexity inside one parent. They share the parent’s environment, tools, and authentication. They are a first-class sub-agent type — you create them, give them their own instructions, and can define input and output variables — but they do not need to be reused, do not need to be independently owned, and simply make the parent easier to reason about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connected agents&lt;/strong&gt; are the right choice when the specialist is an independent unit: it has its own owner, its own release cadence, its own authentication model, its own model selection, or it will be called from more than one calling agent. Connected agents can be other Copilot Studio agents, Fabric Data Agents for governed analytics &lt;em&gt;(preview)&lt;/em&gt;, agents on the Microsoft Foundry Agent Service &lt;em&gt;(preview)&lt;/em&gt;, or agents built with the Microsoft 365 Agents SDK &lt;em&gt;(preview)&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The two are grounded in Microsoft’s own guidance. The table below summarizes the trade-offs that matter most — control, context, latency, and reuse.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Child agent&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Connected agent&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What it is&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A lightweight sub-agent &lt;strong&gt;inside&lt;/strong&gt; the parent agent&lt;/td&gt;
&lt;td&gt;A &lt;strong&gt;separately published&lt;/strong&gt; agent — another Copilot Studio agent, or an external agent over A2A, Microsoft Foundry &lt;em&gt;(preview)&lt;/em&gt;, Fabric &lt;em&gt;(preview)&lt;/em&gt;, or the M365 Agents SDK &lt;em&gt;(preview)&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context / orchestration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Shares the &lt;strong&gt;parent’s&lt;/strong&gt; environment, authentication, and orchestration context&lt;/td&gt;
&lt;td&gt;Runs its &lt;strong&gt;own orchestration layer&lt;/strong&gt; — its own reasoning pass over its own tools and knowledge. The parent hands off; the connected agent decides independently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context window&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Logic lives inside the parent’s boundary; use child agents to &lt;strong&gt;split a long instruction set into focused pieces&lt;/strong&gt; under the 8,000-character ceiling&lt;/td&gt;
&lt;td&gt;Each connected agent carries its &lt;strong&gt;own&lt;/strong&gt; instructions, knowledge, tools — and can use a &lt;strong&gt;different model&lt;/strong&gt; — so it has its own context budget and strong isolation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tight coupling; the parent owns config, auth, and lifecycle. Supports &lt;strong&gt;input/output variables&lt;/strong&gt; and can be referenced in instructions with &lt;code&gt;/&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Loose coupling; the connected agent owns its settings, model, ALM, and channels. You steer delegation only through its &lt;strong&gt;description and input contract&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lower — no extra orchestration hop&lt;/td&gt;
&lt;td&gt;Higher — each delegation adds an &lt;strong&gt;orchestration hop&lt;/strong&gt; (Microsoft explicitly flags the added latency)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reuse&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not reusable outside the parent; not independently published&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Reusable&lt;/strong&gt; across many parents; independently published and owned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Governance surface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Minimal extra surface&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Larger&lt;/strong&gt; testing, management, and governance surface; each connection is an inventoried dependency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Use when&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Single use case, one team or developer, you just want to group tools/instructions/knowledge cleanly, no separate auth/deploy/reuse&lt;/td&gt;
&lt;td&gt;Multiple teams own different agents, separate publishing/ALM, dedicated settings such as a different model, or you want the agent reusable across more than one parent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Remove via&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;“Delete”&lt;/td&gt;
&lt;td&gt;“Disconnect agent”&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two caveats from the documentation are worth keeping in mind. First, an agent that already has connected agents cannot itself be added as a connected agent — nesting is one level deep. Second, citations are not always preserved when outputs pass back from a called agent to the caller, which is one more reason to prefer structured returns over prose (a theme that recurs throughout Part 2).&lt;/p&gt;

&lt;p&gt;ABN AMRO’s published Copilot Studio work is consistent with this discipline: the case study describes enhancing customer and employee interactions using Copilot Studio together with Azure services. The architectural lesson to import — bounded agents plus governed data access — is the kind of pattern that makes outcomes reproducible across customer and employee scenarios, even though the case study reports the outcome rather than the internal decomposition. The City of Montréal’s citizen-engagement work points the same way: Copilot Studio used to improve information access and citizen engagement, the kind of scenario where a public-facing agent benefits from delegating to a specialist rather than holding every city process inside one prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Agent anatomy: the five configuration surfaces
&lt;/h2&gt;

&lt;p&gt;Before multi-agent work begins, it helps to be precise about what a single Copilot Studio agent actually contains. Makers who started with Power Virtual Agents sometimes carry forward a mental model built around topics and dialogs; makers who came from Azure OpenAI Studio sometimes carry forward a mental model built around system prompts and function calls. A modern Copilot Studio agent is neither of those alone. It is a composition of five distinct surfaces, each with different runtime behavior and different design trade-offs.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Instructions&lt;/strong&gt; — the natural-language description of the agent’s role, constraints, tone, and output preferences. Instructions are injected into every turn, up to a documented limit of 8,000 characters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge&lt;/strong&gt; — the structured and unstructured data the agent can retrieve from, including SharePoint sites, Dataverse tables, uploaded files, public websites, Microsoft 365 Graph connectors, enterprise search sources, and — newly — the Work IQ service &lt;em&gt;(preview)&lt;/em&gt; for real-time Microsoft 365 work context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools&lt;/strong&gt; — the executable capabilities the agent can invoke: connector actions, Power Automate flows, Dataverse actions, MCP-exposed tools, and other agents (child or connected) used as tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Topics&lt;/strong&gt; — deterministic, authored conversation paths triggered by phrases, events, or redirections from other topics. Topics are where you place behavior that must be reproducible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Triggers&lt;/strong&gt; — what causes the agent to run at all. Beyond user messages, Copilot Studio’s documented event triggers include SharePoint, OneDrive, Planner, Recurrence (schedule), and Dataverse row-change triggers; an HTTP request trigger and Power Automate cloud flows can extend the catalog where a native trigger does not yet exist.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Instructions: judgment-based behavior
&lt;/h3&gt;

&lt;p&gt;Instructions are the place for behavior that depends on context and cannot be fully specified in advance. Good instructions describe the agent’s purpose, its refusal rules, its preferred output format, and any constraints it must honor. They should not contain large tables of if-this-then-that logic; that is what topics are for.&lt;/p&gt;

&lt;p&gt;A healthy instruction block is rarely more than a page, and Copilot Studio enforces an 8,000-character ceiling regardless. Once instructions grow toward that limit, two things happen: the probability that the agent follows any individual rule drops, and the cost per turn rises. Copilot Studio’s generative orchestration picks up the instructions automatically; no separate system prompt editing is required. When a single instruction block genuinely needs more structure, splitting focused pieces into child agents (each referenced from the parent’s instructions with &lt;code&gt;/&lt;/code&gt;) is the documented way to stay under the ceiling.&lt;/p&gt;

&lt;h3&gt;
  
  
  Knowledge: scoped retrieval beats wide retrieval
&lt;/h3&gt;

&lt;p&gt;Copilot Studio supports a long list of knowledge sources. The mistake that repeats in production is attaching too many. Retrieval quality on a tightly scoped SharePoint library is almost always better than retrieval across an entire tenant, because the signal-to-noise ratio is higher and ranking works against fewer near-duplicates.&lt;/p&gt;

&lt;p&gt;A documented example is Dunaway, a firm whose Copilot Studio agent answers city-code questions. The published case study is explicit that they scoped knowledge to the specific regulatory libraries that mattered, rather than pointing the agent at every document the firm could access. The outcome — fast, accurate regulatory answers — depended on that scoping.&lt;/p&gt;

&lt;p&gt;Graph connectors are the right choice when the source is not already in SharePoint or Dataverse. Websites work, but are best reserved for public reference material where currency matters more than precision. Uploaded files are fine for stable documents but awkward for anything that changes; preferable to store those in SharePoint and let the agent retrieve them from there.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tools: the surface that most affects orchestration quality
&lt;/h3&gt;

&lt;p&gt;Every tool you add to an agent is a candidate the orchestrator must consider at every turn. Tools fall into several categories in Copilot Studio today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prebuilt connector actions&lt;/strong&gt; — from Microsoft’s catalog of 1,000+ connectors, including Microsoft 365 services and major SaaS platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power Automate cloud flows&lt;/strong&gt; — any existing flow can be promoted to a tool, which keeps complex orchestration logic out of the agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent flows&lt;/strong&gt; — a visual, AI-assisted workflow designer that blends deterministic steps with generative reasoning, triggered by Dataverse events, schedules, or HTTP calls. (A redesigned Workflows experience, in early release, is the evolution of this surface — see the “What’s new” note above.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP tools&lt;/strong&gt; — tools exposed by an MCP server, discovered automatically once the server is connected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Other agents as tools&lt;/strong&gt; — child or connected agents added to the agent’s list of callable specialists.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The practical guidance is to treat tool descriptions as first-class design artifacts. The orchestrator selects tools largely from their descriptions; a vague description produces vague routing. A one-sentence description that explains &lt;em&gt;when to use this tool, what it returns, and any side effects&lt;/em&gt; is worth more than a long paragraph that describes the implementation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Topics: the place for reproducibility
&lt;/h3&gt;

&lt;p&gt;Topics are the most under-used surface in modern Copilot Studio builds. Makers arriving from the LLM side sometimes treat everything as an instruction, and then are surprised when behavior they need to be deterministic — an escalation path, a compliance disclosure, a specific regulatory script — varies between conversations.&lt;/p&gt;

&lt;p&gt;Topics execute as authored. They can include message nodes, condition nodes, generative AI nodes, and action calls. If a behavior must be reproducible for audit or compliance reasons, put it in a topic. Rabobank’s published conversational banking work — text and voice-enabled conversational AI in a regulated banking context — is the kind of scenario where authored flows for regulated interactions sit alongside generative handling of the softer surrounding conversation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Triggers: what makes an agent autonomous
&lt;/h3&gt;

&lt;p&gt;The default trigger is a user message. Since March 2025, Copilot Studio supports autonomous triggers — an agent can be woken by a Dataverse row change, a SharePoint document event, a OneDrive event, a Planner change, a scheduled (Recurrence) trigger, or an HTTP call. Where a native trigger does not exist for the desired source, a Power Automate cloud flow that subscribes to that source can write into Dataverse and let the Dataverse row-change trigger wake the agent. These triggers are what make “autonomous agents” possible: the agent is still described by the same five surfaces, but it does not need a user to start it.&lt;/p&gt;

&lt;p&gt;A security note that Part 2 develops further: event triggers run with the agent maker’s credentials, and trigger payloads can carry untrusted content into the agent’s context. This is exactly the surface that CVE-2026-21520 (a SharePoint-form indirect prompt-injection issue patched in January 2026) exploited. Validate payloads and scope what a trigger can activate.&lt;/p&gt;

&lt;p&gt;Singapore Civil Defence Force’s published case study includes autonomous processes that run without user interaction. The savings reported in that case study — described as multi-million-dollar — come from that automation running continuously against existing business events, not from a human chatting with a bot.&lt;/p&gt;

&lt;h3&gt;
  
  
  How these surfaces interact in a multi-agent system
&lt;/h3&gt;

&lt;p&gt;When you split an agent, you are really deciding how each surface gets redistributed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instructions&lt;/strong&gt; shrink, because each specialist has a narrower role.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge&lt;/strong&gt; separates by domain, so retrieval becomes sharper.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools&lt;/strong&gt; concentrate in the specialists; the orchestrator holds few direct tools beyond the ability to call its agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Topics&lt;/strong&gt; tend to live in specialists, where reproducibility matters for specific business flows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Triggers&lt;/strong&gt; vary: the orchestrator is typically user-triggered, while specialists are often called-only; autonomous triggers live on individual specialists.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. The four orchestration patterns
&lt;/h2&gt;

&lt;p&gt;With the building blocks clear, the next question is how to arrange them. There are four patterns that cover the vast majority of enterprise multi-agent work, and all four can be implemented today in Copilot Studio using generative orchestration together with connected agents, child agents, and agent flows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pattern 1 — Router-worker
&lt;/h3&gt;

&lt;p&gt;A thin parent agent classifies each incoming request and delegates to a specialist. The parent does almost no execution itself; its job is routing. The specialists do the work and return results. The parent optionally reformulates the response into the conversational style the user expects.&lt;/p&gt;

&lt;p&gt;Router-worker is the default pattern for internal service desks, multi-tenant assistants, and any situation where requests fall into a small, stable set of categories. The strength of this pattern is operational: each specialist is small enough to debug, and changes to one specialist do not risk regressing the others.&lt;/p&gt;

&lt;p&gt;In Copilot Studio, the router is a standard agent with connected agents added on the Agents page. The orchestrator’s built-in tool selection handles the routing, provided each connected agent has a clear, narrow description. No custom code is required.&lt;/p&gt;

&lt;p&gt;Nexi Group’s published case study describes exactly this shape: a front-end agent that delegates card-service queries to specialists, reducing contact-center workload while keeping the interaction consistent for the customer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pattern 2 — Sequential pipeline
&lt;/h3&gt;

&lt;p&gt;Agent A’s output becomes Agent B’s input, which becomes Agent C’s input, and so on. Each stage applies a transformation that depends on the previous one.&lt;/p&gt;

&lt;p&gt;Sequential pipelines are the natural shape for review workflows: intake → analysis → recommendation → approval. They are also common in content-generation workflows, where one agent drafts, another edits, and a third formats.&lt;/p&gt;

&lt;p&gt;In Copilot Studio, sequential pipelines are typically built with agent flows, because agent flows give you explicit control over step order, conditional branching, and error handling. Individual steps can call connected agents, generative prompts, or deterministic actions. Agent flows also support human-in-the-loop approvals, which sequential pipelines frequently need at the decision point.&lt;/p&gt;

&lt;p&gt;Sequential work is where the discipline of structured outputs matters most. If step three has to parse prose from step two, the pipeline breaks quietly the first time the phrasing changes. Each step should return a structured object — JSON or a typed record — rather than a narrative.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pattern 3 — Parallel fan-out / fan-in
&lt;/h3&gt;

&lt;p&gt;The parent calls N specialists concurrently, waits for all of them, and then merges the results. This pattern is used when a single request needs enrichment from several independent sources, none of which depends on another.&lt;/p&gt;

&lt;p&gt;Typical enterprise examples: enriching a customer record by calling a CRM lookup, an ERP balance check, and a support history lookup at the same time; running legal, finance, and risk review of a contract in parallel; pulling inventory, shipping, and pricing in parallel for a quoting workflow.&lt;/p&gt;

&lt;p&gt;Agent flows in Copilot Studio support parallel branches explicitly. For cases where the parallelism is between full agents rather than actions, Power Automate remains a direct alternative: each branch calls an agent, and a final step aggregates the results. The parent agent then presents the merged output.&lt;/p&gt;

&lt;p&gt;The complexity to watch for is timeout and partial-failure behavior. Parallel patterns fail well only if you decide, before the first implementation, what happens when one of the N branches times out or errors. “Return what we have and note what is missing” is a more robust default than “fail the whole request.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Pattern 4 — Hierarchical (supervisor / sub-orchestrators)
&lt;/h3&gt;

&lt;p&gt;A supervisor agent decomposes a goal into subgoals and delegates each to a sub-orchestrator, which in turn delegates to its own specialists. This pattern is used for long-running processes that span departments, such as employee onboarding, incident post-mortems, or multi-step audits.&lt;/p&gt;

&lt;p&gt;The supervisor tracks state across time — usually in Dataverse — and is often an autonomous agent rather than a conversational one. Each sub-orchestrator updates its own step on completion, and the supervisor polls for progress or reacts to Dataverse events.&lt;/p&gt;

&lt;p&gt;Copilot Studio supports the hierarchical pattern through the combination of connected agents (for delegation), autonomous triggers (for event-driven progress), and Dataverse tables (for shared state). The durable choice for a long-running process is to store orchestration state in Dataverse rather than in conversation history, which truncates — persist state outside the conversation, not inside it. For agent-flow steps that genuinely run long, asynchronous responses &lt;em&gt;(preview)&lt;/em&gt; now let a flow exceed the two-minute limit and return results when it completes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choosing between the patterns
&lt;/h3&gt;

&lt;p&gt;A short checklist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If requests split cleanly into categories and there is little cross-dependency, use &lt;strong&gt;router-worker&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If work must happen in a specific order with each step depending on the previous, use &lt;strong&gt;sequential pipeline&lt;/strong&gt; (agent flows).&lt;/li&gt;
&lt;li&gt;If several independent lookups or reviews can happen at once, use &lt;strong&gt;parallel fan-out / fan-in&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If the process spans days, involves multiple departments, and needs state that outlives any single conversation, use &lt;strong&gt;hierarchical&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is common for a real system to use more than one pattern. A customer-service agent might use router-worker at the top level, then have a sequential pipeline for complaint handling as one of its specialists, with a parallel enrichment step inside that pipeline. The goal is not architectural purity; it is picking the simplest pattern for each piece.&lt;/p&gt;

&lt;h3&gt;
  
  
  Three pattern anti-patterns
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Circular delegation.&lt;/strong&gt; Agent A calls Agent B, which calls Agent A back. Copilot Studio does not prevent this structurally, and it leads to long, expensive conversations that loop until a timeout. Rule: child agents never call back into their parents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fan-out without merge.&lt;/strong&gt; The parent fires five parallel requests but does not wait for all results before responding, so the conversation becomes out-of-order. In agent flows, always use a “join” step before the aggregation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hierarchical without state.&lt;/strong&gt; A supervisor that tracks state in the conversation window will lose it the moment the conversation is truncated. Long-running processes must persist state outside the conversation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Copilot Studio provides the runtime — generative orchestration, tool selection, topic execution, agent-flow execution, autonomous triggers. It does not choose the pattern for you. The choice of pattern, the decision of which agent owns which responsibility, the contract between steps, and the handling of partial failures are all design decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The Model Context Protocol (MCP) in plain terms
&lt;/h2&gt;

&lt;p&gt;Two problems surface in any organization that has built more than a few agents. First, every agent builder reimplements the same integrations — Jira search, SharePoint lookup, ticket creation — in their own style, with their own error handling. Second, when a backend API changes, every agent that depends on it has to be updated individually. These are not AI problems; they are classic enterprise integration problems that the rise of agents has made more visible.&lt;/p&gt;

&lt;p&gt;MCP is the open standard that addresses both. It was originally published by Anthropic in late 2024, is now adopted by multiple agent platforms, and is supported natively in Microsoft Copilot Studio since 2025. For Copilot Studio makers, understanding MCP is less about protocol details and more about what the standard allows you to do.&lt;/p&gt;

&lt;h3&gt;
  
  
  What MCP actually is
&lt;/h3&gt;

&lt;p&gt;MCP is a specification for how an AI client (an agent) discovers and calls tools hosted on a separate server. The specification defines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A uniform way for the server to describe the tools it offers (name, description, input schema, output schema).&lt;/li&gt;
&lt;li&gt;A uniform way for the client to invoke a tool and receive a structured response.&lt;/li&gt;
&lt;li&gt;Support for authentication, including OAuth 2.0 flows.&lt;/li&gt;
&lt;li&gt;Support for streaming responses, which matters for long-running tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The practical consequence is that a single MCP server can expose a set of tools — search, create, update, delete against whatever backend — and any MCP-aware client can consume those tools without bespoke integration work.&lt;/p&gt;

&lt;p&gt;Copilot Studio today supports the Streamable transport for MCP. (SSE, an earlier transport, was deprecated and is no longer supported after August 2025.) Authentication options include none, API key (either in a header or a query parameter), and OAuth 2.0 with three configuration modes: dynamic discovery, dynamic client registration, and manual.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why MCP matters for Copilot Studio
&lt;/h3&gt;

&lt;p&gt;Before MCP, extending an agent with a custom backend required building a Power Platform custom connector — writing an OpenAPI definition, handling authentication, registering the connector, and then adding individual actions to the agent. Each action was defined at the connector level, which meant versioning, deprecation, and permissions were all managed per connector.&lt;/p&gt;

&lt;p&gt;With MCP, the server owns the tool catalog. When you connect an MCP server to a Copilot Studio agent, the server’s tools are discovered automatically. When the server adds a new tool, it becomes available to the agent without any change in Copilot Studio. When the server deprecates a tool, the change is visible server-side rather than scattered across agents.&lt;/p&gt;

&lt;p&gt;For enterprises with many agents and many backends, this inverts a maintenance problem. Integration code moves to one server per domain, owned by the team that owns the backend. The agents consume it; they do not redefine it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What MCP is not
&lt;/h3&gt;

&lt;p&gt;MCP is not an agent-to-agent protocol. It describes how agents call tools, not how agents call each other. For agent-to-agent communication, the relevant standard is A2A.&lt;/p&gt;

&lt;p&gt;MCP is also not a replacement for Power Platform connectors. Connectors remain the right choice when the backend requires complex per-user licensing, deep Dataverse integration, or features that benefit from the Power Platform management surface. MCP is the right choice when the backend is a discrete service with a stable API surface that multiple agents need to share. (Note that in Copilot Studio, MCP connectivity itself rides on Power Platform connectors, so connector-level data policies still govern MCP access.)&lt;/p&gt;

&lt;p&gt;Finally, MCP is not, by itself, a security model. Any MCP server you connect must still enforce authentication and authorization; MCP defines the envelope, not the access rules. Recent public reporting on prompt-injection classes of vulnerability in agent platforms — including CVE-2026-21520, an indirect prompt-injection issue patched in Copilot Studio in January 2026 — underlines that adding tools of any kind, MCP or otherwise, expands an agent’s attack surface. Tools that write data deserve particular scrutiny.&lt;/p&gt;

&lt;h3&gt;
  
  
  A common pattern: the shared knowledge MCP
&lt;/h3&gt;

&lt;p&gt;A frequent pattern in enterprise Copilot Studio deployments is a shared “knowledge retrieval” MCP server. It exposes tools such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;search_policy(query, domain)&lt;/code&gt; — returns matching policy passages with citations.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_policy(policy_id)&lt;/code&gt; — returns the full text of a policy.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;list_policy_versions(policy_id)&lt;/code&gt; — returns version history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of the organization’s agents — HR assistant, IT assistant, customer service assistant, compliance assistant — connects to this one MCP server and uses whichever tools it needs. When a new policy domain is added, it appears in all agents at once. When authentication is rotated, it rotates in one place. When a tool description is improved, every agent benefits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring an MCP server in Copilot Studio — the wizard path
&lt;/h3&gt;

&lt;p&gt;Microsoft Copilot Studio offers more than one path to connect an MCP server. The native onboarding wizard, introduced in 2025, is the recommended path for most cases.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open the Tools page of your agent.&lt;/strong&gt; Every agent has a Tools tab alongside Knowledge, Topics, Instructions, and Agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Select Add a tool → New tool → Model Context Protocol.&lt;/strong&gt; This opens the MCP onboarding wizard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provide the server details.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Server name&lt;/em&gt; — a short name; this is what makers see when they browse tools.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Server description&lt;/em&gt; — important. The description is what the orchestrator uses at runtime to decide whether to call this server. Be specific about what the server is for and what kinds of requests it handles.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Server URL&lt;/em&gt; — the base HTTPS endpoint of the MCP server. The Streamable transport is current; SSE is no longer supported after August 2025.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configure authentication.&lt;/strong&gt; Three options: 

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;None&lt;/em&gt; — for read-only servers on trusted networks only.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;API key&lt;/em&gt; — in a request header or as a query parameter. The agent includes it in requests to the MCP server.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;OAuth 2.0&lt;/em&gt; — preferred for anything involving identity. Three sub-options: &lt;em&gt;dynamic discovery&lt;/em&gt; (simplest; works when the server supports OAuth 2.0 dynamic client registration with discovery), &lt;em&gt;dynamic&lt;/em&gt; (DCR without discovery; you supply the authorization and token URLs), and &lt;em&gt;manual&lt;/em&gt; (you supply client ID, client secret, authorization, token, and refresh endpoints explicitly).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create the connection.&lt;/strong&gt; The wizard validates the server, pulls the tool catalog, and registers the tools as available to the agent. Each tool appears in the agent’s tool list with its declared schema.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is the entire configuration path for the common case. The effort goes into writing good tool descriptions on the server side, not into configuring the client.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring an MCP server — the custom connector path
&lt;/h3&gt;

&lt;p&gt;Before the native MCP integration, makers built a Power Apps custom connector with a specific &lt;code&gt;x-ms-agentic-protocol: mcp-streamable-1.0&lt;/code&gt; annotation. This path still works and is the right choice when you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic value lookups that feed MCP parameters from another API.&lt;/li&gt;
&lt;li&gt;Custom URL rewriting (for example, to route one connector to multiple regional MCP endpoints based on a catalog service).&lt;/li&gt;
&lt;li&gt;Fine-grained policy controls expressed at the Power Platform connector level, such as per-environment availability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Microsoft sample published in March 2026, “Dynamic MCP Routing in Copilot Studio,” uses exactly this approach: a single connector that resolves an instance dropdown via a catalog service and rewrites the URL at runtime. It is a useful reference for multi-tenant or multi-region requirements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring an MCP server — the Agents 365 (BYO MCP) path
&lt;/h3&gt;

&lt;p&gt;A third path now exists for organizations standardizing on tenant-wide agent management: you can register an existing MCP server in &lt;strong&gt;Agents 365&lt;/strong&gt; using the Agents 365 CLI and the Microsoft 365 Admin Center. Once the server is registered and approved, it becomes available for use in Copilot Studio. This is the right path when MCP servers need to be governed centrally as bring-your-own (BYO) assets rather than connected ad hoc per agent.&lt;/p&gt;

&lt;p&gt;Unless one of the custom-connector requirements applies — or you specifically want centralized Agents 365 governance — the wizard path is simpler and has fewer moving parts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tool descriptions are the production variable
&lt;/h3&gt;

&lt;p&gt;One thing deserves emphasis, because it determines success in production more than any configuration detail: the description of each MCP tool, authored on the server. A tool description in MCP should state, clearly and concisely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What the tool does.&lt;/li&gt;
&lt;li&gt;When the agent should use it (which kinds of requests).&lt;/li&gt;
&lt;li&gt;What it returns.&lt;/li&gt;
&lt;li&gt;Any side effects (writes data, sends messages, charges money).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A description like “Search items” is nearly useless to the orchestrator. “Searches the internal policy library for HR, IT, and compliance policies; returns matching passages with citations; read-only” is specific enough that the orchestrator will route appropriately. When orchestration quality feels off — the agent is calling the wrong tool, or no tool at all — the first place to look is usually the descriptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The Agent2Agent (A2A) protocol
&lt;/h2&gt;

&lt;p&gt;If MCP is how agents talk to tools, A2A is how agents talk to other agents. It is a separate open standard with its own specification, and — like MCP — it is supported natively in Microsoft Copilot Studio. A2A connections went generally available in April 2026. For multi-agent architectures that span platforms, teams, or vendors, A2A is the piece of the puzzle that keeps the system composable.&lt;/p&gt;

&lt;h3&gt;
  
  
  When A2A is relevant
&lt;/h3&gt;

&lt;p&gt;A Copilot Studio agent can already call another Copilot Studio agent as a connected agent — that works entirely inside the Microsoft stack. A2A becomes relevant when the other agent is &lt;em&gt;not&lt;/em&gt; a Copilot Studio agent. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An agent built with the Microsoft 365 Agents SDK in code.&lt;/li&gt;
&lt;li&gt;An agent hosted on the Microsoft Foundry Agent Service.&lt;/li&gt;
&lt;li&gt;An agent built on a non-Microsoft framework (LangGraph, CrewAI, Google’s own A2A-compliant agents).&lt;/li&gt;
&lt;li&gt;A partner’s agent exposed to your organization as a service.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before A2A, connecting to such an agent meant writing a custom HTTP integration — handling the request shape, interpreting streaming responses, mapping authentication, and dealing with session state. A2A standardizes the contract so that any A2A-compliant client can talk to any A2A-compliant agent with no custom code.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the protocol defines
&lt;/h3&gt;

&lt;p&gt;Microsoft Learn describes A2A as “an open standard for communication and collaboration between agents.” The specification covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A standard contract for &lt;strong&gt;sending tasks&lt;/strong&gt; to an external agent.&lt;/li&gt;
&lt;li&gt;A mechanism for providing &lt;strong&gt;rich, structured metadata&lt;/strong&gt; with the request — context, user identity, task parameters.&lt;/li&gt;
&lt;li&gt;A predictable &lt;strong&gt;response format&lt;/strong&gt; , including support for multi-turn interactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interoperability across frameworks&lt;/strong&gt; , so an agent built on any A2A-compliant platform can be called the same way.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compared to a traditional HTTP connector — which is generic and was not designed for agent workflows — A2A is explicitly designed for the shape of agent interactions: multi-turn interactions and rich contextual metadata work natively, where an HTTP connector requires you to build those capabilities yourself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring an A2A agent in Copilot Studio — the correct path
&lt;/h3&gt;

&lt;p&gt;External agents, including A2A-compliant agents, are added on the &lt;strong&gt;Agents page&lt;/strong&gt; of the calling agent — not the Tools page. The Tools page is for MCP servers and connector-backed tools; the Agents page is where connected agents (Copilot Studio, Fabric Data Agent, Microsoft Foundry Agent Service, Microsoft 365 Agents SDK) and external A2A agents are registered.&lt;/p&gt;

&lt;p&gt;The configuration steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Obtain the target agent’s A2A endpoint URL and authentication requirements from whoever owns it.&lt;/li&gt;
&lt;li&gt;In the calling agent, open the &lt;strong&gt;Agents&lt;/strong&gt; page.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Add an agent → Connect to an external agent → Agent2Agent&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Provide the A2A endpoint URL. If the agent publishes a valid agent card at the standard &lt;code&gt;.well-known&lt;/code&gt; URL, Copilot Studio auto-populates the name and description; otherwise enter them manually. The description tells the orchestrator when to delegate to this agent.&lt;/li&gt;
&lt;li&gt;Configure authentication. The options are &lt;strong&gt;None&lt;/strong&gt; , &lt;strong&gt;API key&lt;/strong&gt; (header or query parameter), and &lt;strong&gt;OAuth 2.0&lt;/strong&gt; (client ID, client secret, authorization URL, token URL, refresh URL). For enterprise scenarios, OAuth 2.0 paired with Entra ID is the sensible choice.&lt;/li&gt;
&lt;li&gt;Create the connection and save.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once registered, the A2A agent appears in the Agents list alongside connected Copilot Studio agents. The orchestrator invokes both kinds through the same delegation mechanism at runtime; only the configuration differs.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to use A2A versus connected agents
&lt;/h3&gt;

&lt;p&gt;A useful rule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If both agents live in your Copilot Studio tenant, &lt;strong&gt;connected agents&lt;/strong&gt; is the simpler choice. Lifecycle, authentication, and governance are all inside Power Platform.&lt;/li&gt;
&lt;li&gt;If the other agent is built outside Copilot Studio — in code with the Microsoft 365 Agents SDK, on the Microsoft Foundry Agent Service, on another platform, or by a partner — &lt;strong&gt;A2A&lt;/strong&gt; is the way to call it without custom plumbing.&lt;/li&gt;
&lt;li&gt;If you want the same agent to be callable from Copilot Studio, from a custom app, and from another vendor’s agent, &lt;strong&gt;publishing it as an A2A agent&lt;/strong&gt; turns it into a reusable unit across clients.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The two are not mutually exclusive. Many production systems mix: the orchestrator in Copilot Studio calls connected agents for Copilot-native specialists and A2A agents for specialists hosted elsewhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  Three rules for robust agent-to-agent calls
&lt;/h3&gt;

&lt;p&gt;These apply equally to connected agents and A2A agents.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Return structured data, not prose.&lt;/strong&gt; The calling agent should not parse “I created ticket INC-12345 for you” to extract the ID. Design the called agent to return a structured result. Agent flows, connected agents, and A2A agents in Copilot Studio all support structured return types; use them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make the called agent idempotent.&lt;/strong&gt; Retries must not create duplicate records. Every agent-to-agent call that writes data should accept an idempotency key and use it to deduplicate on the server side. This is particularly important for agents that create tickets, send email, or post messages, because retries are common under load.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bound the conversation.&lt;/strong&gt; A called agent should not call back into the calling agent. Structurally it is possible; in practice it produces loops that are expensive and hard to debug. Design the contract so the called agent has everything it needs as inputs, does its work, and returns.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Multi-turn versus single-turn
&lt;/h3&gt;

&lt;p&gt;A2A supports both. Some tasks are single-turn — “look up this policy and return the passage.” Others are genuinely multi-turn — “help this user configure their integration, with clarifying questions as needed.” The A2A payload Copilot Studio sends includes a context ID, message IDs, locale, and full chat history, which makes multi-turn continuity possible.&lt;/p&gt;

&lt;p&gt;Single-turn is the default and should be preferred when it applies. Multi-turn introduces state, which then has to be tracked somewhere — usually by the caller. For long-running processes, the hierarchical pattern with state stored in Dataverse is usually a better fit than keeping multi-turn state inside the A2A exchange.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security considerations for A2A
&lt;/h3&gt;

&lt;p&gt;The security model for A2A is the same concern that applies to any tool: the called agent is now part of your system’s trust boundary. A few practical implications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The called agent’s identity matters. In Entra-governed tenants, use Entra Agent ID — first introduced in May 2025 and expanded to public preview at Ignite 2025 — to give each agent a first-class identity with scoped permissions. Copilot Studio can now auto-create a per-agent Entra identity &lt;em&gt;(preview)&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Scopes should be narrow. An agent that exists to summarize documents does not need write access to email.&lt;/li&gt;
&lt;li&gt;Audit everything. Purview audit logs cover Copilot Studio activity; treat calls to external A2A agents the same way you would treat any outbound API call — logged, reviewed, and alertable. You are explicitly responsible for the data flows, quality, and security posture of agents you connect outside Copilot Studio.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. Wiring child, connected, and A2A agents — all three configuration paths
&lt;/h2&gt;

&lt;p&gt;Agent-to-agent delegation in Copilot Studio uses one of three mechanisms depending on where the called agent lives. Getting the mechanism right is what keeps the design from leaking through the architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring a child agent
&lt;/h3&gt;

&lt;p&gt;Child agents are authored inside the parent agent. In current Copilot Studio they are a first-class sub-agent type — not merely topics — with their own instructions and, optionally, their own input and output variables.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the parent agent, open the &lt;strong&gt;Agents&lt;/strong&gt; page and create a child agent named after its responsibility (e.g., “Translate Text,” “Validate Expense Code,” “Summarize Ticket”).&lt;/li&gt;
&lt;li&gt;Author its instructions and, where useful, define input and output variables so the parent can pass values in and read results out.&lt;/li&gt;
&lt;li&gt;Give it a clear description so the orchestrator can route to it. You can also reference it directly in the parent’s instructions by typing &lt;code&gt;/&lt;/code&gt; and selecting it.&lt;/li&gt;
&lt;li&gt;Save; the child agent is immediately available within the parent.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Child agents share the parent’s tools, knowledge, and authentication, and there is no separate lifecycle. If you later need to reuse the child agent elsewhere, promote its logic into a connected agent. (You can also explicitly redirect to a child agent from within a topic using the Redirect node, which resumes the originating topic when the child agent finishes.)&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring a connected agent
&lt;/h3&gt;

&lt;p&gt;A connected agent is a separately-published Copilot Studio agent (or a Fabric Data Agent &lt;em&gt;(preview)&lt;/em&gt;, an agent on the Microsoft Foundry Agent Service &lt;em&gt;(preview)&lt;/em&gt;, or one built with the Microsoft 365 Agents SDK &lt;em&gt;(preview)&lt;/em&gt;) that this agent calls.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ensure the target agent is published in the same environment and that you have permissions to use it.&lt;/li&gt;
&lt;li&gt;In the calling agent, open the &lt;strong&gt;Agents&lt;/strong&gt; page → &lt;strong&gt;Add an agent&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the target agent from the list of available agents in the environment.&lt;/li&gt;
&lt;li&gt;Provide a short description of &lt;em&gt;when&lt;/em&gt; the calling agent should delegate to this agent. This description, distinct from the target agent’s own description, is what the orchestrator uses to decide.&lt;/li&gt;
&lt;li&gt;Define the input contract: what the calling agent will pass. Keep this to the minimum needed.&lt;/li&gt;
&lt;li&gt;Define the expected return shape. Connected agents that return structured data are easier to compose; prefer structured returns to prose.&lt;/li&gt;
&lt;li&gt;Save.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A typical example: a “master” agent that routes HR questions to an HR agent and IT questions to an IT agent. Each specialist is a connected agent in its own right. The master holds only routing logic and a short “what I am” instruction. Each specialist holds its own knowledge (HR policies versus IT runbooks), its own tools (Workday connector versus ServiceNow connector), and its own owner.&lt;/p&gt;

&lt;p&gt;Remember the one-level nesting rule: an agent that already has connected agents can be a main agent, but cannot itself be added as a connected agent to another main agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting to a Fabric Data Agent
&lt;/h3&gt;

&lt;p&gt;Fabric Data Agents &lt;em&gt;(preview)&lt;/em&gt; are a specific type of connected agent that brings governed, schema-aware analytics into a conversational flow. They are configured the same way as any other connected agent, but the target is a Fabric Data Agent published in your Fabric environment.&lt;/p&gt;

&lt;p&gt;The practical value is that the agent can answer data questions with governed retrieval — row-level security, sensitivity labels, and column-level policies all apply — without the calling agent having to reimplement those controls. (Note a current limitation: Fabric Data agents can’t be reached via the topic Redirect node or referenced directly in instructions.)&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring an A2A agent
&lt;/h3&gt;

&lt;p&gt;A2A is used when the target agent is hosted outside Copilot Studio. The configuration steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Obtain the target agent’s A2A endpoint URL and authentication requirements from whoever owns it.&lt;/li&gt;
&lt;li&gt;In the calling agent, open the &lt;strong&gt;Agents&lt;/strong&gt; page.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Add an agent → Connect to an external agent → Agent2Agent&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Provide the endpoint URL (the communication endpoint, not the agent-card URL) and a description that tells the orchestrator when to use this agent.&lt;/li&gt;
&lt;li&gt;Configure authentication — None, API key, or OAuth 2.0 (with Entra ID the sensible choice for enterprise scenarios).&lt;/li&gt;
&lt;li&gt;Create the connection and save.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once registered, the A2A agent appears in the Agents list alongside connected and child agents. The orchestrator invokes all three through the same delegation mechanism at runtime; only the configuration differs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contracts between agents
&lt;/h3&gt;

&lt;p&gt;Whichever mechanism you use, the contract between the calling and called agent is where production reliability is won or lost.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Input contract.&lt;/strong&gt; Pass only what the child needs, and only structured values where possible. Passing the entire conversation history “in case it helps” reliably produces slower, less predictable calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output contract.&lt;/strong&gt; Structured returns — typed records or JSON — are dramatically easier to compose than prose. Copilot Studio supports structured outputs from connected agents natively; define them explicitly rather than relying on the orchestrator to parse text. (Be aware that citations are not always preserved when outputs pass back to the caller.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error contract.&lt;/strong&gt; Decide in advance what the called agent returns when it cannot complete the task. A common convention: return &lt;code&gt;{status: "not_found"}&lt;/code&gt;, &lt;code&gt;{status: "unauthorized"}&lt;/code&gt;, or &lt;code&gt;{status: "error", message: "..."}&lt;/code&gt; rather than conversational refusals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idempotency.&lt;/strong&gt; Any called agent that writes data should accept an idempotency key from the caller. Retries, which happen under load more often than teams expect, must not create duplicate tickets, emails, calendar events, or database rows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Avoiding loops
&lt;/h3&gt;

&lt;p&gt;Because Copilot Studio allows any agent to call any other agent, circular delegation is structurally possible: Agent A calls Agent B, which calls Agent A. The orchestrator will happily execute this until timeout or token exhaustion.&lt;/p&gt;

&lt;p&gt;The architectural rule: &lt;strong&gt;child agents do not call back into their parents.&lt;/strong&gt; If the specialist needs something the parent has, design the parent to pass it down as an input. If the specialist truly needs to coordinate with the parent, the design is not yet right — usually the work belongs in the parent, or the responsibility split is incorrect.&lt;/p&gt;

&lt;h3&gt;
  
  
  Governance: who owns which connection
&lt;/h3&gt;

&lt;p&gt;When the graph of agents grows beyond a handful, ownership matters. The Power Platform Admin Center’s &lt;strong&gt;Copilot Hub&lt;/strong&gt; gives admins usage, cost, and governance insight for Copilot Studio agents; the &lt;strong&gt;agent inventory&lt;/strong&gt; — now exposed as a schema you can query from the admin center, API, or Azure Resource Graph &lt;em&gt;(preview)&lt;/em&gt; — lists every agent and the features it uses. At the tenant level, &lt;strong&gt;Microsoft Agent 365&lt;/strong&gt; (early access, Ignite 2025) and the &lt;strong&gt;Microsoft Entra agent registry&lt;/strong&gt; provide cross-platform agent identity and observability.&lt;/p&gt;

&lt;p&gt;Practical governance steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assign a primary owner to every agent. Ownership is a Dataverse attribute; it also answers the question “who gets paged when this breaks.”&lt;/li&gt;
&lt;li&gt;Use Entra Agent ID (introduced May 2025; expanded to public preview at Ignite 2025) to give each agent a first-class identity. Scoped permissions then apply per agent rather than per maker — and per-agent identities can now be auto-created in Copilot Studio &lt;em&gt;(preview)&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Treat A2A connections to external agents as supply-chain dependencies. Document who operates them, review their security posture, and log calls through Purview.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. What the combination of MCP and A2A enables
&lt;/h2&gt;

&lt;p&gt;With MCP for tools and A2A for agents, a Copilot Studio tenant becomes a composition layer rather than a monolith. An orchestrator can call:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its own child agents for low-complexity sub-routines inside the parent.&lt;/li&gt;
&lt;li&gt;Copilot Studio connected agents for specialists owned inside the tenant.&lt;/li&gt;
&lt;li&gt;MCP servers for shared tool catalogs owned by backend teams.&lt;/li&gt;
&lt;li&gt;A2A agents for specialists built in code or hosted on other platforms (with Microsoft Foundry, Fabric, and M365 Agents SDK connections in public preview).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All four mechanisms are available today, documented on Microsoft Learn, and — where generally available — in production use; the preview connections are usable now with the usual preview caveats.&lt;/p&gt;

&lt;p&gt;This is the meaningful change MCP and A2A introduce: integration work moves from being duplicated per agent to being centralized per domain (for tools) and per agent (for cross-platform agents). The remaining decisions — what the specialists are, who owns them, how they are described, what contracts they expose — become the visible bottleneck again. That is a healthy state, because those decisions are the ones that actually determine whether a multi-agent system works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If you take five things away from this article, they are these.&lt;/p&gt;

&lt;p&gt;First, &lt;strong&gt;multi-agent orchestration is an architectural response to scope drift, not a fashion&lt;/strong&gt;. Splitting an agent is a decision with cost. Make it when you see the documented signals — tool counts approaching 30 to 40, multiple owners, conflicting knowledge, divergent SLAs — and avoid it when the cheaper fix (tighter instructions, scoped knowledge, a Power Automate flow) would do.&lt;/p&gt;

&lt;p&gt;Second, &lt;strong&gt;the five surfaces are not interchangeable&lt;/strong&gt;. Instructions hold judgment (within an 8,000-character limit). Knowledge holds retrievable text. Tools hold actions. Topics hold reproducible flows. Triggers hold the answer to “when does this agent run.” Putting behavior on the wrong surface — large rule tables in instructions, deterministic compliance flows in generative nodes — is the most common cause of unreliable agents.&lt;/p&gt;

&lt;p&gt;Third, &lt;strong&gt;the four patterns cover the work&lt;/strong&gt;. Router-worker, sequential pipeline, parallel fan-out, hierarchical. Most production systems mix two or three. None of them require features that do not exist in Copilot Studio today.&lt;/p&gt;

&lt;p&gt;Fourth, &lt;strong&gt;MCP and A2A are the two open standards that keep the system composable&lt;/strong&gt;. MCP centralizes tool integration per domain. A2A makes cross-platform agent calls portable. Neither is a replacement for the other, and neither is a security model on its own. Both expand the trust boundary; treat them accordingly.&lt;/p&gt;

&lt;p&gt;Fifth, &lt;strong&gt;the configuration paths are not interchangeable either&lt;/strong&gt;. MCP servers are added on the Tools page via the MCP wizard. Child agents are created on the Agents page inside the parent. Connected agents and A2A agents are also added on the Agents page — connected agents from the available agents in the environment, A2A agents via &lt;em&gt;Add an agent → Connect to an external agent → Agent2Agent&lt;/em&gt;. Getting the path right is mechanical, but it is also where teams lose hours when they assume the wrong starting point in the UI.&lt;/p&gt;

&lt;p&gt;Part 2 picks up from here and works through the practical side: four end-to-end scenarios — IT incident triage, contract review, field service dispatch, employee onboarding — each on a different orchestration pattern, followed by a starter MCP server inventory and the ten anti-patterns that recur in production deployments. Read Part 1 to settle the architectural decisions; read Part 2 to see them executed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/multi-agent-patterns" rel="noopener noreferrer"&gt;Explore multi-agent orchestration patterns&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-add-other-agents" rel="noopener noreferrer"&gt;Add other agents (overview)&lt;/a&gt; — source of the documented 30–40 choices-of-action threshold, child-agent definition, and preview status of Foundry/Fabric/M365 Agents SDK connections&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/requirements-quotas" rel="noopener noreferrer"&gt;Quotas and limits&lt;/a&gt; — 8,000-character instruction limit&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/connectors/connector-reference/" rel="noopener noreferrer"&gt;Power Platform connectors reference&lt;/a&gt; — the 1,000+ connector catalog&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-add-existing-server-to-agent" rel="noopener noreferrer"&gt;Connect your agent to an existing Model Context Protocol (MCP) server&lt;/a&gt; — wizard path, Streamable transport, SSE no longer supported after August 2025, BYO MCP via Agents 365&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/add-agent-agent-to-agent" rel="noopener noreferrer"&gt;Connect an agent available over the Agent2Agent (A2A) protocol&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/whats-new" rel="noopener noreferrer"&gt;What’s new in Copilot Studio&lt;/a&gt; — A2A GA (April 2026), Computer Use GA (May 2026), per-agent Entra identities (preview), agent inventory schema (preview)&lt;/li&gt;
&lt;li&gt;Microsoft Copilot Studio blog — &lt;a href="https://www.microsoft.com/en-us/microsoft-copilot/blog/copilot-studio/whats-new-in-copilot-studio-march-2025/" rel="noopener noreferrer"&gt;What’s new in Copilot Studio: March 2025&lt;/a&gt; — autonomous agents and generative orchestration GA&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-triggers-about" rel="noopener noreferrer"&gt;Event trigger overview&lt;/a&gt; — documented event triggers&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/adoption-case-studies" rel="noopener noreferrer"&gt;Copilot Studio real-world transformation stories&lt;/a&gt; — ABN AMRO, Rabobank, Dunaway, Nexi Group, City of Montréal, Singapore Civil Defence Force, T-Mobile, Holland America Line, La Trobe University, Signetic, A1 Inteligência em Viagens&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/entra/fundamentals/whats-new-ignite-2025" rel="noopener noreferrer"&gt;What’s new at Ignite 2025 for Microsoft Entra&lt;/a&gt; — Entra Agent ID&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/power-platform/admin/copilot/copilot-hub" rel="noopener noreferrer"&gt;Copilot Hub in the Power Platform Admin Center&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/microsoft-365/copilot/copilot-control-system/overview" rel="noopener noreferrer"&gt;Copilot Control System overview&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft CopilotStudioSamples — &lt;a href="https://microsoft.github.io/mcscatblog/posts/dynamic-mcp-routing-copilot-studio/" rel="noopener noreferrer"&gt;Dynamic MCP Routing in Copilot Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Model Context Protocol — &lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;Official specification and SDKs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Agent2Agent protocol — &lt;a href="https://a2aproject.github.io/A2A/" rel="noopener noreferrer"&gt;Open specification&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;VentureBeat — &lt;a href="https://venturebeat.com/security/microsoft-salesforce-copilot-agentforce-prompt-injection-cve-agent-remediation-playbook" rel="noopener noreferrer"&gt;Microsoft patched a Copilot Studio prompt injection. The data exfiltrated anyway.&lt;/a&gt; — CVE-2026-21520 coverage, April 2026&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agents</category>
      <category>copilotstudio</category>
      <category>multiagentorchestration</category>
    </item>
    <item>
      <title>Teams Phone Agent and Custom Voice Agents in Copilot Studio</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 27 Jun 2026 05:58:35 +0000</pubDate>
      <link>https://dev.to/holgerimbery/teams-phone-agent-and-custom-voice-agents-in-copilot-studio-19gc</link>
      <guid>https://dev.to/holgerimbery/teams-phone-agent-and-custom-voice-agents-in-copilot-studio-19gc</guid>
      <description>&lt;p&gt;How Teams Phone Agent's out-of-the-box voice experience and custom Copilot Studio voice agents bring conversational AI to Microsoft Teams Phone — capabilities, call-flow design, setup, gating, and consumption billing in the Frontier preview.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Summary lede:&lt;/strong&gt;&lt;br&gt;
Microsoft Teams Phone now has a conversational AI front door. &lt;strong&gt;Teams Phone Agent&lt;/strong&gt; is a new, configurable out-of-the-box experience that greets callers in natural language and resolves common requests — questions and answers, appointment scheduling, and conversational routing across 60+ languages — without any custom code. When a request is specific to your business, a &lt;strong&gt;custom voice agent built in Microsoft Copilot Studio&lt;/strong&gt; takes over, either through a seamless hand-off or by direct dial to a phone number. Both capabilities arrived through Microsoft's &lt;strong&gt;Frontier program&lt;/strong&gt; in June 2026, are tenant-gated, and the custom-agent path is billed by consumption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why read this article&lt;/strong&gt;&lt;br&gt;
Teams Phone has always routed calls with auto attendants and call queues. What changed is that the routing layer can now &lt;em&gt;understand spoken intent&lt;/em&gt; and &lt;em&gt;act on it&lt;/em&gt; — answering questions from a knowledge base, booking an appointment, or completing a business-specific workflow such as a prescription refill or an outage report. This is not a forced change for every Teams user. It is a deliberate capability for Teams Phone administrators, contact-center-style teams, Copilot Studio makers, and finance and compliance stakeholders who need to review, preview, gate, bill, route calls, manage data sources, and define fallback paths before AI ever answers a live customer call. This guide ties those decisions to the configuration steps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Three things define the current state of this feature set:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Two layers, one call flow.&lt;/strong&gt; Teams Phone Agent provides built-in skills you &lt;em&gt;configure&lt;/em&gt; (Q&amp;amp;A, Appointments, conversational routing). Copilot Studio voice agents provide custom workflows you &lt;em&gt;build&lt;/em&gt;. They are designed to work together inside a single call flow.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Frontier Public Preview, tenant-gated.&lt;/strong&gt; Both capabilities entered Frontier Public Preview in mid-June 2026. The Copilot Studio integration is explicitly gated — Microsoft support must enable your tenant before the Teams Phone channel option appears.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ynxcmjkrdaz84ifpqjr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ynxcmjkrdaz84ifpqjr.png" alt="upgit_20260626_1782454466.png" width="800" height="185"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consumption billing for custom agents.&lt;/strong&gt; Copilot Studio voice agent experiences are billed consumptively at a rate based on the orchestration type selected when the agent is built. Billing rolls out by early July 2026; no usage will be charged before then.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Confidence and currency note.&lt;/strong&gt; This article describes a &lt;strong&gt;preview&lt;/strong&gt; feature set as documented in June 2026. Preview features are not intended for production use, may have restricted functionality, and are subject to change. Capabilities, gating, regional support, and especially &lt;strong&gt;pricing and service limits&lt;/strong&gt; will change at general availability. Re-verify every commercial and technical detail against the current Microsoft Learn documentation and the Teams admin center before committing to a rollout.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scope.&lt;/strong&gt; This article covers Teams Phone Agent's built-in skills, custom Copilot Studio voice agents (hand-off and direct-dial patterns), the supporting auto-attendant/call-queue model, setup in the Teams admin center and Copilot Studio, preview gating, and consumption billing. Detailed Power Platform / Copilot Studio licensing economics, contact-center seat licensing, and third-party agent SDKs are out of scope and referenced only where they intersect with setup.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Where this fits — use cases, and why it doesn't cannibalize Dynamics 365 Contact Center
&lt;/h2&gt;

&lt;p&gt;Possible use cases. Teams Phone Agent and Copilot Studio voice agents are aimed at organizations whose phone system is Teams Phone, and that want to add conversational self-service to their existing call flows. The natural fits are front-door deflection and after-hours coverage: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a clinic answering hours, location, and insurance questions and handling appointment reschedules; &lt;/li&gt;
&lt;li&gt;a bank branch understanding intent and routing a mortgage caller to the right team with context; &lt;/li&gt;
&lt;li&gt;a pharmacy taking prescription-refill and order-status requests; &lt;/li&gt;
&lt;li&gt;a utility letting customers report an outage or get billing help at 2 a.m.; &lt;/li&gt;
&lt;li&gt;a home-services firm confirming or moving a booking without staff. 
Inside larger enterprises that already have Teams Phone, the same pattern serves internal lines:&lt;/li&gt;
&lt;li&gt;IT helpdesk, HR, facilities — and acts as an overflow or out-of-hours tier in front of human queues that would otherwise drop to voicemail. 
The common thread is high-volume, repetitive, rules- or knowledge-driven calls that don't require a trained agent.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this isn't cannibalizing Dynamics 365 Contact Center.
&lt;/h2&gt;

&lt;p&gt;The two products serve different operating models, and Microsoft has deliberately built them as a continuum rather than competitors. &lt;strong&gt;Teams Phone Agent&lt;/strong&gt; is an extension of the &lt;strong&gt;telephony layer&lt;/strong&gt; — it modernizes auto attendants and call queues for businesses that don't run, and don't want to run, a dedicated contact center. &lt;strong&gt;Dynamics 365 Contact Center&lt;/strong&gt; is a &lt;strong&gt;full CCaaS platform&lt;/strong&gt;: unified omnichannel routing across voice, chat, email, and social; a managed agent desktop with Copilot assist; queue and workforce management; quality and compliance tooling; CRM-agnostic system-of-record integration; and the operational analytics a supervised contact-center team depends on. Teams Phone Agent delivers none of those agent-operations capabilities, and it isn't trying to — so it can't displace the customers who need them. Crucially, both rest on the same Copilot Studio agent foundation: the custom voice agents you attach to Teams Phone are built in Copilot Studio, and the AI agents inside Dynamics 365 Contact Center draw on that same agentic platform and consumption model. That shared base means an organization grows along the curve — start with a Teams Phone Agent front door, and when call volume, omnichannel scope, or staffed-agent operations outgrow it, step up to Contact Center without abandoning the agent investment. The commercial models reinforce the split: Teams Phone Agent is a consumption-billed add-on to existing Teams Phone, while Contact Center is a per-seat CCaaS subscription. Different problem, different buyer, different price shape — complementary tiers of one Microsoft voice-AI story, not overlapping bets.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What changed and why it matters
&lt;/h2&gt;

&lt;p&gt;It is often difficult for businesses to serve every customer immediately during surges in call volume. Callers sit on hold while staff work through the backlog. Meanwhile, agentic voice AI is opening new ways to serve customers — answering questions, scheduling appointments, or even completing transactions over the phone, including after hours and on weekends.&lt;/p&gt;

&lt;p&gt;Teams Phone Agent and the ability to bring custom Copilot Studio voice agents to Teams Phone address this directly. For customer-facing organizations using Teams Phone — healthcare clinics, bank branches, utilities, pharmacies, service businesses — these agents take repetitive calls off employees' plates, so people can focus on the conversations that genuinely need a human touch, and customers reach resolution faster.&lt;/p&gt;

&lt;p&gt;The goal is &lt;strong&gt;not&lt;/strong&gt; to remove humans from every call. It is to reduce repetitive call handling so staff can focus on complex or sensitive conversations. Instead of relying solely on traditional auto-attendants, keypad menus, and human staff, organizations can now offer conversational phone experiences that understand spoken requests and respond naturally.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The design principle that matters most.&lt;/strong&gt; Teams Phone Agent sits &lt;em&gt;inside&lt;/em&gt; your call flow. It should be designed as a business process — greeting, knowledge sources, routing rules, escalation, after-hours behavior — rather than switched on as a generic AI receptionist. Every flow needs a deliberate happy path, escalation path, and after-hours path.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. The out-of-the-box experience — Teams Phone Agent
&lt;/h2&gt;

&lt;p&gt;Teams Phone Agent greets callers and resolves common requests using a set of &lt;strong&gt;built-in skills you configure rather than build&lt;/strong&gt;. This is the new, preview, out-of-the-box layer: administrators enable it in the Teams admin center and point it at content and routing targets. Four capabilities ship in the box.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Example use case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Questions &amp;amp; Answers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Answers caller questions from configured knowledge bases that support &lt;strong&gt;file uploads and URLs&lt;/strong&gt;, in natural conversation.&lt;/td&gt;
&lt;td&gt;A clinic answers questions about hours, locations, accepted insurance, and appointment preparation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Appointment scheduling&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lets callers &lt;strong&gt;book, reschedule, or cancel&lt;/strong&gt; appointments and &lt;strong&gt;look up upcoming appointment details&lt;/strong&gt;.&lt;/td&gt;
&lt;td&gt;A home-services company lets a customer change a plumbing or electrical repair booking without waiting for staff.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Conversational routing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The same tried-and-tested routing as traditional auto attendants — &lt;strong&gt;user or extension lookup, transfer to a user or call queue, and more&lt;/strong&gt; — driven by what the caller &lt;em&gt;says&lt;/em&gt;.&lt;/td&gt;
&lt;td&gt;A bank caller asking about a mortgage application is understood and sent to the right team.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context-aware transfer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;When a human is needed, the caller is passed along &lt;strong&gt;with the full conversation context&lt;/strong&gt;.&lt;/td&gt;
&lt;td&gt;The customer does not have to repeat the entire issue after the transfer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multilingual&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Supports conversations across &lt;strong&gt;60+ languages&lt;/strong&gt;, so callers interact naturally in their preferred language.&lt;/td&gt;
&lt;td&gt;A branch or service desk supports callers in multiple languages at scale.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The decisive practical point: callers skip cumbersome phone menus and do not have to repeat themselves, while the organization keeps the proven routing model underneath.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 Real-world example — replacing a keypad menu
&lt;/h3&gt;

&lt;p&gt;A regional clinic's old line opens with "Press 1 for appointments, press 2 for billing, press 3 for hours and location…". Most calls are about hours, directions, and appointment changes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Before:&lt;/strong&gt; every caller navigates the menu; appointment changes route to a front-desk queue that is busy at peak.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;After (Teams Phone Agent):&lt;/strong&gt; the agent answers hours and directions instantly from a knowledge base (uploaded files + the clinic website URL), handles reschedules and cancellations directly, and only conversationally transfers genuine billing questions to staff — with context attached.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Rule of thumb:&lt;/strong&gt; if a question is answered from published content or a task is a structured booking change, it belongs in the built-in skills. If it requires a system of record (billing balances, prescription records), it belongs in a custom Copilot Studio agent — see §3.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The custom layer — Copilot Studio voice agents
&lt;/h2&gt;

&lt;p&gt;The built-in Q&amp;amp;A and appointment tools cover common ground. When you need to automate processes unique to your business — letting a patient fill a prescription over the phone, a customer pay or query a bill, or a caller check order status — &lt;strong&gt;custom voice agents built in Microsoft Copilot Studio&lt;/strong&gt; step in. This functionality is beyond what the built-in Appointments and Q&amp;amp;A tools provide.&lt;/p&gt;

&lt;p&gt;There are &lt;strong&gt;two ways&lt;/strong&gt; to bring a Copilot Studio voice agent into Teams Phone.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pattern&lt;/th&gt;
&lt;th&gt;How it works&lt;/th&gt;
&lt;th&gt;When to use it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hand-off&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Teams Phone Agent handles greeting and routine requests, then seamlessly hands the call to a custom Copilot Studio agent when a specialized skill is needed. You want a single conversational front door that escalates to specialized workflows.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Direct dial&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A Copilot Studio voice agent is attached directly to a phone number via a Teams Phone &lt;strong&gt;resource account&lt;/strong&gt;, so callers reach it as the first point of contact.&lt;/td&gt;
&lt;td&gt;You are upgrading an existing IVR or want a dedicated line for a specific workflow.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  3.1 What you can build
&lt;/h3&gt;

&lt;p&gt;Copilot Studio is a platform for building custom workflows tailored to your business:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Custom workflows&lt;/strong&gt; — specialized voice topics and conversational logic (billing, refills, order/inventory status, and more).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensible integrations&lt;/strong&gt; — connect the agent to CRM systems, internal knowledge bases, and other line-of-business systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routing via Tags&lt;/strong&gt; — pass dynamic transfer information from Teams to Copilot Studio so the agent can route to call queues, auto attendants, specific users, and more, &lt;strong&gt;without hardcoding values&lt;/strong&gt;. Tags are what let one agent scale across many departments and transfer targets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By front-ending a call flow with a Copilot Studio voice agent, the agent acts as an intelligent first point of contact, resolving issues independently before routing to a human using traditional Teams Phone routing if needed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Supported agent types and one-way settings.&lt;/strong&gt; Only &lt;strong&gt;basic&lt;/strong&gt; voice agents are supported on this channel — &lt;strong&gt;real-time voice agents are not supported&lt;/strong&gt;. Changing an agent's voice type is an &lt;strong&gt;irreversible&lt;/strong&gt; action. Under &lt;strong&gt;Settings → Generative AI → Orchestration&lt;/strong&gt;, select &lt;strong&gt;classic orchestration&lt;/strong&gt;; &lt;strong&gt;generative orchestration is not supported here&lt;/strong&gt; and can introduce heavy latency (reported 5–6 second delays) and unexpected charges.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3.2 Real-world examples
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pharmacy.&lt;/strong&gt; A custom voice agent lets customers request a prescription refill by phone and check order status — a simpler way to manage routine needs without waiting for staff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Utility provider.&lt;/strong&gt; A custom agent connected to Teams Phone lets customers report an outage or get billing help &lt;strong&gt;outside normal business hours&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. The foundation — auto attendants, call queues, and "Agents and Queues"
&lt;/h2&gt;

&lt;p&gt;None of this replaces the planning discipline Teams Phone already requires. Teams Phone Agent, auto attendants, and call queues are planned and licensed together as one family, and the classic building blocks still apply.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auto attendants&lt;/strong&gt; redirect calls immediately or by dial option, allow dial-by-name or extension, route to voicemail / external numbers / other voice apps, and handle off-hours and holiday routing separately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Call queues&lt;/strong&gt; hold callers until an agent is free and redirect on overflow, timeout, or agent availability — to other queues, attendants, voicemail, or external destinations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Teams Phone Agent adds a conversational layer on top of and alongside these. Custom Copilot Studio agents that are published to the Teams Phone channel &lt;strong&gt;automatically appear in the Agents and Queues list&lt;/strong&gt; in the Teams admin center, ready to be wired into a call flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1 Business decisions to settle first
&lt;/h3&gt;

&lt;p&gt;Microsoft's planning guidance asks you to document the same business decisions up front, now extended for AI voice. Capture the answers and hand them to whoever does the configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How do callers reach you?&lt;/strong&gt; Internal only, external, or click-to-call on the web?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which languages&lt;/strong&gt; are needed, and for which department or group?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice or dial input&lt;/strong&gt; — Do you allow spoken input, or keypad only?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Off-hours and holiday routing&lt;/strong&gt; — what are the hours and holidays?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge sources&lt;/strong&gt; — which files and URLs feed the Q&amp;amp;A tool?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fallback and escalation&lt;/strong&gt; — where does an unresolved call go, and does the human handoff carry context?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance&lt;/strong&gt; — are there call-recording or other regulatory requirements?&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Authorized users.&lt;/strong&gt; Day-to-day operational changes — business, after-hours, and holiday greetings; call routing; queue membership; reporting — can be delegated to &lt;strong&gt;authorized users&lt;/strong&gt; who do not need Teams admin center access or a Teams Administrator role, with no extra licensing required.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  5. Setup at a glance
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1 Built-in Teams Phone Agent
&lt;/h3&gt;

&lt;p&gt;Teams Phone admins configure Teams Phone Agent in the &lt;strong&gt;Teams admin center&lt;/strong&gt; under &lt;strong&gt;Voice → Templates &amp;amp; resources → Agents and Queues&lt;/strong&gt;, setting up the Q&amp;amp;A and Appointments tools, conversational routing, holidays, and greetings. Standard Teams Phone prerequisites apply, including a properly configured Teams Phone &lt;strong&gt;resource account&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.2 Custom Copilot Studio agent — hand-off pattern
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build the voice agent&lt;/strong&gt; in Copilot Studio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Settings → Generative AI → Orchestration → Classic orchestration&lt;/strong&gt; (generative is not supported here).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Settings → Security → Authentication → No authentication&lt;/strong&gt; (required so callers can reach the agent), then &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Channels → Teams Phone Agent → Add channel&lt;/strong&gt;, wait for confirmation, then &lt;strong&gt;Publish&lt;/strong&gt;. &lt;em&gt;(If the channel option is not visible, your environment is not enabled — see §6.)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Teams admin center&lt;/strong&gt;, open your Teams Phone Agent call flow, &lt;strong&gt;Assign a dial key → destination: Agents and Queues&lt;/strong&gt;, enter a voice command and description, optionally link a &lt;strong&gt;Tag template&lt;/strong&gt;, and select your published agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Call in to confirm&lt;/strong&gt; the hand-off works.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  5.3 Custom Copilot Studio agent — direct-dial pattern
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Teams admin center → Voice → Resource accounts → Add.&lt;/strong&gt; Create a resource account with type &lt;strong&gt;AI Agent&lt;/strong&gt;, with a display name, username, and domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License the resource account.&lt;/strong&gt; In the Microsoft 365 admin center, assign the &lt;strong&gt;Teams Phone Resource Account&lt;/strong&gt; license to that account and let the change propagate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link the agent.&lt;/strong&gt; Back in &lt;strong&gt;Resource accounts → Edit&lt;/strong&gt;, set the &lt;strong&gt;Agent Source&lt;/strong&gt; to your Copilot Studio voice agent. Optionally set a &lt;strong&gt;voice routing policy&lt;/strong&gt; and assign a &lt;strong&gt;phone number&lt;/strong&gt; (Calling Plans, Operator Connect, or Direct Routing). Optionally attach a &lt;strong&gt;Tag template&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;PowerShell cmdlets are available for scripted setup.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;No phone number?&lt;/strong&gt; If you do not assign a phone number to the resource account, only users in your tenant can reach the agent over VoIP via the Teams client.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  5.4 Using Tags for Transfers
&lt;/h3&gt;

&lt;p&gt;After attaching a tag template in the Teams admin center, configure the Copilot Studio agent to act on the tag values: add a topic with a "User says a phrase" trigger (for example, "transfer" or "escalate"), ask the caller to choose a department using the tag names as options, then use &lt;strong&gt;Topic Management → Transfer conversation → Transfer to agent&lt;/strong&gt;, passing the caller's choice as the transfer target. Publish the agent again. The agent can now transfer to the targets defined in your tag template.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Environment and regional constraints (Copilot Studio).&lt;/strong&gt; Create the Copilot Studio environment in a &lt;strong&gt;supported region&lt;/strong&gt; (for example, US, UK, Europe, Canada, Australia, Asia, Korea, Norway, Sweden, Switzerland, UAE). Voice agents are not supported in environments in France, Germany, India, Japan, or South Africa — though tenants based in those countries can still use voice agents hosted in a supported region. The Power Platform environment must have &lt;strong&gt;"Get new features early" = No&lt;/strong&gt; and &lt;strong&gt;"Add a Dataverse data store" = Yes&lt;/strong&gt;. Choose the region closest to your callers to minimize latency.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  6. Availability, gating, and licensing
&lt;/h2&gt;

&lt;p&gt;This is firmly a preview, and the access and commercial model matter before any pilot.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Current state (June 2026)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Program&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Frontier Public Preview. Both Teams Phone Agent and the Copilot Studio integration entered Frontier Public Preview in mid-June 2026.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gating&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The Copilot Studio ↔ Teams Phone integration is &lt;strong&gt;explicitly enabled per tenant&lt;/strong&gt;. Contact &lt;strong&gt;Microsoft support&lt;/strong&gt; to enable it; until then, the Teams Phone channel option does not appear in Copilot Studio.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Teams Phone prerequisites&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Standard Teams Phone prerequisites, including a properly configured resource account and the relevant Teams Phone licenses for your scenario.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Copilot Studio licenses&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A &lt;strong&gt;Copilot Studio tenant license&lt;/strong&gt; (to run and publish agents) and a &lt;strong&gt;Copilot Studio user license&lt;/strong&gt; (to build them).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Built-in Teams Phone Agent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Available via the Frontier program; service limitations may apply.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  6.1 How custom agents are billed
&lt;/h3&gt;

&lt;p&gt;Custom Copilot Studio voice agent experiences — whether reached through a Teams Phone Agent handoff or by direct dial — are &lt;strong&gt;billed consumptively&lt;/strong&gt;, at a rate based on the &lt;strong&gt;orchestration type&lt;/strong&gt; your organization selects when building the agent in Copilot Studio.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Billing timeline.&lt;/strong&gt; Billing for Copilot Studio voice agent experiences in Teams Phone was set to roll out &lt;strong&gt;by early July 2026&lt;/strong&gt;, and usage is &lt;strong&gt;not charged before&lt;/strong&gt; that rollout. When billing goes live, &lt;strong&gt;all Frontier preview users must set up billing&lt;/strong&gt; to keep using Copilot Studio voice agents for Teams Phone. All licensing, pricing, and service limits are subject to change, with more details expected at general availability.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  6.2 Cost-control practices
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;classic orchestration&lt;/strong&gt; to avoid unexpected charges and reduce latency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope each agent narrowly&lt;/strong&gt; to the processes it supports — overly broad agents produce unexpected responses and unpredictable costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test thoroughly&lt;/strong&gt; with proper guardrails before exposing an agent to callers; how you build the agent significantly shapes the customer experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. An expanding ecosystem
&lt;/h2&gt;

&lt;p&gt;Microsoft is positioning this as a platform with &lt;strong&gt;choice across first- and third-party voice agents&lt;/strong&gt;. Alongside first-party Teams Phone Agent and Copilot Studio agents, Microsoft is working with select solution developers to integrate their voice agents with Teams Phone. &lt;strong&gt;AudioCodes announced general availability of its voice agent for Teams Phone&lt;/strong&gt; at launch, with additional solutions expected. Organizations can mix the built-in experience, custom Copilot Studio agents, and certified third-party agents within the same Teams Phone call flows.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Real-world example — a phased pilot
&lt;/h2&gt;

&lt;p&gt;A 40-branch bank wants to reduce hold times on its retail support line without risking a poor first AI experience.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Phase 1 — out-of-the-box only.&lt;/strong&gt; Enable Teams Phone Agent on a single non-critical line. Configure Q&amp;amp;A from published FAQs (hours, locations, card-replacement steps) and conversational routing to existing queues, with context-aware transfer to a human for anything unresolved. No custom build, no consumption billing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 2 — one custom workflow.&lt;/strong&gt; Once the front door is proven, build a single, narrowly scoped Copilot Studio agent for one high-volume task (for example, "report a lost card") integrated to the system of record, using classic orchestration. Validate the cost against the consumption meter before widening.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 3 — scale and route.&lt;/strong&gt; Use Tags so one agent serves multiple departments, and add after-hours coverage where a human queue previously sent callers to voicemail.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Why this order:&lt;/strong&gt; It separates the zero-cost, no-code value (Phase 1) from the consumption-billed custom value (Phase 2+), so the organization can prove customer experience and measure cost before committing.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Conclusion
&lt;/h2&gt;

&lt;p&gt;Teams Phone Agent turns Teams Phone from a routing-and-queueing system into a &lt;strong&gt;conversational AI front door&lt;/strong&gt;. The out-of-the-box experience — Q&amp;amp;A, appointment scheduling, conversational routing, context-aware handoff, and 60+ languages — covers routine calls with no code. Custom Copilot Studio voice agents extend it to the workflows unique to your business, accessible via handoff or direct dial. Underneath, the classic auto attendant and call queue model keeps escalation and after-hours paths intact.&lt;/p&gt;

&lt;p&gt;For now, this is a &lt;strong&gt;gated Frontier preview&lt;/strong&gt; with &lt;strong&gt;consumption-based billing&lt;/strong&gt; for custom agents. The disciplined move is a &lt;strong&gt;scoped pilot&lt;/strong&gt;: pick one high-volume, low-risk flow; deliberately design the happy, escalation, and after-hours paths; confirm the human handoff carries context; and validate cost with classic orchestration before widening. The technology is ready to trial — the discipline is in treating every voice agent as a designed business process, not a switch you flip.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This article will be revised as the feature set moves toward general availability. Expect changes to gating, regional support, supported agent types, and especially pricing and service limits.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Glossary - for those new to Teams Phone and Copilot Studio
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;Expansion&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI Agent (resource account type)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A Teams Phone resource account type used to attach a Copilot Studio voice agent directly to a phone number for direct dial.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Auto Attendant (AA)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A Teams Phone voice application that greets callers and routes them by menu, dial-by-name, or extension, with separate off-hours and holiday handling.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Call Queue (CQ)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A Teams Phone voice application that holds callers until an agent is available and redirects on overflow, timeout, or agent availability.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Classic orchestration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The Copilot Studio orchestration mode required for the Teams Phone channel; uses deterministic topic flows. Generative orchestration is not supported here.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Direct dial&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pattern where a Copilot Studio voice agent is attached directly to a phone number via a resource account, acting as the first point of contact.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Frontier program&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Microsoft's early-access program through which Teams Phone Agent and the Copilot Studio integration are currently delivered.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Handoff&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pattern where Teams Phone Agent passes a call to a custom Copilot Studio voice agent for a specialized workflow.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IVR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Interactive Voice Response — the automated voice menu or bot at the start of a call.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MCS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Microsoft Copilot Studio — the platform for building custom voice and chat agents.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Resource account&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A licensed, non-user account in Teams Phone to which voice applications (auto attendants, call queues, voice agents) and phone numbers are assigned.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tags&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A mechanism to pass dynamic transfer information from Teams to a Copilot Studio agent, identifying next steps and transfer targets without hardcoding values.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Teams Phone Agent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The configurable, out-of-the-box conversational AI experience for Teams Phone, providing built-in Q&amp;amp;A, appointment, and routing skills.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Sources and Links (primary)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://techcommunity.microsoft.com/blog/microsoftteamsblog/engage-customers-with-teams-phone-agent-and-custom-voice-agents-built-in-copilot/4526829" rel="noopener noreferrer"&gt;Engage customers with Teams Phone Agent and custom voice agents built in Copilot Studio — Microsoft Teams Blog (June 2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/microsoftteams/aa-cq-plan-overview" rel="noopener noreferrer"&gt;Plan — Auto attendants and Call queues overview (Microsoft Learn)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/microsoftteams/aa-cq-plan-teams-phone-agent-agents-queues" rel="noopener noreferrer"&gt;Plan — Agents and Queues for Teams Phone Agent (Microsoft Learn)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/microsoftteams/aa-cq-plan-business-decisions" rel="noopener noreferrer"&gt;Plan — Business decisions for Teams Phone Agent, Auto Attendant, and Call Queue (Microsoft Learn)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/microsoftteams/aa-cq-direct-mcs" rel="noopener noreferrer"&gt;Setup — Direct dial Microsoft Copilot Studio voice agents through Microsoft Teams Phone (Microsoft Learn)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/microsoftteams/aa-cq-setup-teams-phone-agent-agents-queues" rel="noopener noreferrer"&gt;Setup — Teams Phone Agent — Agents and Queues (Microsoft Learn)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/voice-teams-phone-agent" rel="noopener noreferrer"&gt;Integrate voice agents with Teams Phone Agent (preview) — Microsoft Copilot Studio (Microsoft Learn)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/microsoftteams/aa-cq-plan-authorized-users" rel="noopener noreferrer"&gt;Plan — Authorized users for Teams Phone Agent, Auto Attendant, and Call Queue (Microsoft Learn)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>msteams</category>
      <category>microsoft</category>
      <category>copilotstudio</category>
      <category>voicebots</category>
    </item>
    <item>
      <title>Power Platform Governance: A Practitioner's Reference (Part 2)</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/holgerimbery/power-platform-governance-a-practitioners-reference-part-2-13mk</link>
      <guid>https://dev.to/holgerimbery/power-platform-governance-a-practitioners-reference-part-2-13mk</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Summary lede.&lt;/strong&gt; Part 2 of this two-article reference picks up where last week’s foundations ended. With the platform perimeter in place — environments, Managed Environments, environment groups, DLP, tenant isolation, identity, and monitoring — this article works through the resources that live inside that perimeter and the processes that move them through it: Copilot Studio agents, agent authentication and connector governance, Application Lifecycle Management and pipelines, solution checker and quality gates, licensing and capacity governance, and change management and release rings. A closing recap then ties both articles together into a single posture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who this is for.&lt;/strong&gt; Same audience as part 1 — Power Platform administrators, security and compliance officers, Center of Excellence leads, architects, and makers. Part 2 assumes you have read part 1 or have an equivalent grasp of environment design, Managed Environments, environment groups, and DLP. Where part 1 answered “what is the perimeter and how do we hold it?”, part 2 answers “what gets built inside it, and how does that work move from a maker’s hands into production safely?” The format is unchanged: each control begins with the reason it exists, moves to the how, and points you to the authoritative Microsoft Learn page.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A note on the kits (continues from part 1).&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Two pieces of widely-deployed community tooling have changed status: the &lt;strong&gt;CoE Starter Kit&lt;/strong&gt; is no longer actively maintained — its core capabilities are now part of the Power Platform admin center (Inventory, Usage, Monitor, Actions) — and the &lt;strong&gt;ALM Accelerator for Power Platform&lt;/strong&gt; is formally deprecated, with &lt;strong&gt;Power Platform Pipelines&lt;/strong&gt; as the named replacement. Sections 9.14 (agent inventory) and 11 (ALM and pipelines) reflect that. The detailed write-up of the CoE Starter Kit transition lives in part 1, section 8.6; the ALM Accelerator transition is summarised in section 11.6 of this part.&lt;/p&gt;
&lt;h2&gt;
  
  
  Recap: where part 1 left off
&lt;/h2&gt;

&lt;p&gt;As we saw last week, platform-level governance is the foundation that everything else rests on. Part 1 walked through eight sections of foundations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Environment strategy.&lt;/strong&gt; Environments are the unit of governance because DLP, security roles, capacity, and compliance boundaries all follow environment lines. A topology that mirrors your delivery lifecycle (default for personal productivity, dev/test/prod for solutions, dedicated CoE and training environments) gives every later control a place to attach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The default environment.&lt;/strong&gt; It cannot be deleted, every licensed user is a maker in it, and Dataverse cannot be removed once added. Renaming it, attaching a restrictive DLP policy, enabling default environment routing, and converting it to a Managed Environment turn it from a shadow-IT magnet into a known, bounded surface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managed Environments.&lt;/strong&gt; A premium governance layer that adds sharing limits, the weekly digest, solution checker enforcement, maker welcome content, pipelines hosting, IP firewall, extended backup, and DLP for desktop flows. Most of part 2’s controls depend on Managed Environments being on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment groups and rules.&lt;/strong&gt; Groups apply policy in bulk to Managed Environments. When a rule is published at the group level, the corresponding setting becomes read-only inside each member environment, which is what makes policy enforceable rather than advisory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Loss Prevention.&lt;/strong&gt; Connectors are sorted into Business, Non-business, and Blocked. Data cannot flow between Business and Non-business in the same resource. Endpoint filtering and connector action control let you keep useful connectors while blocking their dangerous edges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tenant isolation and cross-tenant controls.&lt;/strong&gt; Restricts which external Entra ID tenants can be the identity source for connections. Defaults differ by tenant age — tenants created on or after 30 March 2026 ship with isolation enabled and both directions defaulting to deny.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security roles and identity.&lt;/strong&gt; Layered authorization: Entra ID at the tenant, Dataverse roles inside each environment, service principals for non-interactive work, Conditional Access and MFA on the &lt;code&gt;Power Platform API&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring, analytics, and tenant inventory.&lt;/strong&gt; Built-in admin center analytics (the &lt;strong&gt;Inventory&lt;/strong&gt; , &lt;strong&gt;Usage&lt;/strong&gt; , &lt;strong&gt;Monitor&lt;/strong&gt; , and &lt;strong&gt;Actions&lt;/strong&gt; experiences), the weekly digest, Microsoft Purview audit log, Application Insights export, and Microsoft Sentinel for SOC integration. The &lt;strong&gt;CoE Starter Kit&lt;/strong&gt; is no longer actively maintained; its inventory and attestation scenarios are now Microsoft’s responsibility in the admin center, reachable through the &lt;strong&gt;Power Platform inventory API&lt;/strong&gt; and the &lt;strong&gt;Power Platform for Admins V2&lt;/strong&gt; connector for any custom automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The minimum viable foundation from part 1 was: restrict default environment creation, attach a tenant-wide baseline DLP policy, enable default environment routing with a Managed Environments group, turn on tenant-level analytics, lean on the Power Platform admin center’s &lt;strong&gt;Inventory&lt;/strong&gt; , &lt;strong&gt;Usage&lt;/strong&gt; , &lt;strong&gt;Monitor&lt;/strong&gt; , and &lt;strong&gt;Actions&lt;/strong&gt; experiences (the CoE Starter Kit is no longer actively maintained), and verify your tenant isolation defaults. Everything in part 2 assumes that foundation is in place. The section numbering continues from part 1, starting at section 9.&lt;/p&gt;


&lt;h2&gt;
  
  
  9. Governing Microsoft Copilot Studio
&lt;/h2&gt;

&lt;p&gt;Copilot Studio agents are Power Platform resources. They are stored in environments, secured with Dataverse, shared through the same sharing model as apps and flows, and subject to DLP policies. A Copilot Studio agent is not a separate governance domain; it is a new resource type inside the platform perimeter. The controls below are specific to agents and combine with the platform-wide ones covered in part 1.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.1 Decide agent posture in tenant settings
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; The most basic question — “should agents exist in this tenant at all, and where?” — is answered at the tenant level. Skipping this step makes every later control fight a current.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; In &lt;strong&gt;Power Platform admin center &amp;gt; Settings &amp;gt; Tenant settings&lt;/strong&gt; , control whether Copilot Studio is enabled, who can create agents, whether agents can be created in the default environment, and which AI features (generative answers, autonomous triggers, external models) are available.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/tenant-settings" rel="noopener noreferrer"&gt;Tenant settings reference&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.2 Use the Copilot Studio admin center for agent-specific controls
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Some agent controls live outside the Power Platform admin center because they are specific to Copilot Studio’s data model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Visit &lt;code&gt;admin.copilotstudio.microsoft.com&lt;/code&gt; to control sharing org-wide, tenant-wide data access settings for agents, and transcript retention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-admin-center" rel="noopener noreferrer"&gt;Copilot Studio admin center&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.3 Restrict who can share agents tenant-wide
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; “Share with my entire organization” is a one-click action that bypasses normal sharing limits. Without restriction, any maker can publish a tenant-wide agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; The recent tenant setting &lt;strong&gt;“Choose who has permission to share agents with your entire organization”&lt;/strong&gt; allows three modes: all users, no users, or specific groups. Restrict to a CoE or approvals group for production-grade sharing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-sharing-controls-limits" rel="noopener noreferrer"&gt;Control how agents are shared&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.4 Cap agent sharing per environment
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Even with tenant-wide sharing locked down, intra-tenant oversharing is still possible. Sharing limits cap blast radius per agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; In a Managed Environment, apply &lt;code&gt;Limit sharing&lt;/code&gt; to cap viewers per agent and disable sharing via security groups. Mechanics are in part 1, section 3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-sharing-limits" rel="noopener noreferrer"&gt;Limit sharing&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.5 Apply group rules for agent sharing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Sharing limits per environment are tedious to manage at scale. Group rules let you apply the same sharing posture across many environments at once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use the &lt;code&gt;Sharing agents with Editor permissions&lt;/code&gt; and &lt;code&gt;Sharing agents with Viewer permissions&lt;/code&gt; environment group rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environment-groups-rules" rel="noopener noreferrer"&gt;Rules for environment groups&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.6 Set maker welcome content for Copilot Studio
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Most makers entering Copilot Studio will not have read your governance documentation. The welcome banner is the cheapest place to put guardrails in front of them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Configure maker welcome content in Managed Environments to surface agent guidelines as makers enter Copilot Studio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-security-and-governance" rel="noopener noreferrer"&gt;Copilot Studio security and governance&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.7 Run solution checker on agent solutions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Static analysis catches structural problems in agents the same way it does in apps and flows — missing fallbacks, knowledge sources without authentication, references to blocked connectors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Solution checker runs at solution import in Managed Environments. Mechanics are covered in section 12.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-solution-checker" rel="noopener noreferrer"&gt;Solution checker enforcement&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.8 Govern AI features per environment group
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Generative and external AI features carry different risk profiles in different environments. Production with regulated data needs a stricter stance than a pilot environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use the &lt;code&gt;AI-powered Copilot features&lt;/code&gt;, &lt;code&gt;Generative AI settings&lt;/code&gt;, &lt;code&gt;External models&lt;/code&gt;, &lt;code&gt;AI prompts&lt;/code&gt;, and &lt;code&gt;Preview and experimental AI models&lt;/code&gt; rules to turn capabilities off where they should not be available.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environment-groups-rules" rel="noopener noreferrer"&gt;Rules for environment groups&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.9 Control transcript access
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Conversation transcripts can contain sensitive prompts and customer data. Default-on transcript retention is a poor fit for regulated environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; The &lt;code&gt;Accessing transcripts from conversations in Copilot Studio agents&lt;/code&gt; rule turns transcript retention off for environments in regulated groups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environment-groups-rules" rel="noopener noreferrer"&gt;Rules for environment groups&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.10 Block high-risk agent connectors in DLP
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; DLP on agent connectors is the only way to stop entire classes of bad behavior at design time — public agents, ad-hoc HTTP, autonomous triggers — without playing whack-a-mole.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Common blocks for regulated tenants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Chat without Microsoft Entra ID authentication in Copilot Studio&lt;/code&gt;&lt;/strong&gt; — prevents publishing public, unauthenticated agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Direct Line channels in Copilot Studio&lt;/code&gt;&lt;/strong&gt; — block if only Teams, SharePoint, and Microsoft 365 Copilot channels are approved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Skills&lt;/code&gt;&lt;/strong&gt; — prevents invocation of arbitrary Bot Framework skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;HTTP requests&lt;/code&gt;&lt;/strong&gt; — prevents ad-hoc outbound calls from agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Event triggers&lt;/code&gt;&lt;/strong&gt; — disables autonomous agents until they are approved.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enforcement is real time; makers see validation errors while authoring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-data-loss-prevention" rel="noopener noreferrer"&gt;Configure data policies for agents&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.11 Constrain knowledge sources
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Knowledge sources are how agents reach data. A loose knowledge configuration is a loose data perimeter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Apply scope-aware controls to each source type:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A broad SharePoint URL grants the agent the site’s entire content tree — to makers who already have access. Grant scope at the document library or folder level where possible.&lt;/li&gt;
&lt;li&gt;Public website knowledge is fetched at runtime; treat it as untrusted input for prompt-injection exposure.&lt;/li&gt;
&lt;li&gt;Files uploaded as knowledge are stored in the agent’s Dataverse tables and inherit environment backup and data residency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use &lt;strong&gt;sensitivity labels&lt;/strong&gt; and &lt;strong&gt;Microsoft Purview&lt;/strong&gt; to label and classify content before it is indexed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-security-and-governance" rel="noopener noreferrer"&gt;Copilot Studio security and governance&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.12 Pick an authentication mode per agent
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Authentication mode determines whether sharing limits apply at all. Sharing limits apply only to agents that require authentication; public agents bypass the sharing model entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Three modes exist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authenticate with Microsoft&lt;/strong&gt; (Entra ID, default) — recommended for regulated environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authenticate manually&lt;/strong&gt; — generic OAuth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No authentication&lt;/strong&gt; — public; not recommended for tenants with sensitive data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Require Entra ID authentication in regulated environments by blocking the no-authentication connector in DLP. Blocking no-authentication is the prerequisite for sharing limits to be meaningful at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/configuration-end-user-authentication" rel="noopener noreferrer"&gt;Configure user authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.13 Approve a deployment channel matrix
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Each channel has its own risk profile and operational model. Without an approved matrix, channel selection becomes a maker-by-maker decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Enforce an approved channel matrix through tenant settings and DLP:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Channel&lt;/th&gt;
&lt;th&gt;Control&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft Teams&lt;/td&gt;
&lt;td&gt;Admin-approved app catalog; manifests are solution-aware&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft 365 Copilot&lt;/td&gt;
&lt;td&gt;Tenant Copilot extension governance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SharePoint&lt;/td&gt;
&lt;td&gt;Site permissions; viewer licensing applies at runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom website&lt;/td&gt;
&lt;td&gt;Block for regulated environments; pair with IP allow-list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Direct Line&lt;/td&gt;
&lt;td&gt;Block by default&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-security-and-governance" rel="noopener noreferrer"&gt;Copilot Studio security and governance&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.14 Monitor agents with the right surface for the question
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Different questions have different right surfaces. Behavior questions, audit questions, and inventory questions each have a primary tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Match the surface to the question:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent analytics&lt;/strong&gt; in Copilot Studio for sessions, resolution rate, and escalations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copilot Studio audit logs&lt;/strong&gt; in Microsoft Purview for create, publish, share, knowledge change, and tool add events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Application Insights export&lt;/strong&gt; (Managed Environments) for detailed traces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power Platform admin center Inventory&lt;/strong&gt; (and the &lt;strong&gt;Power Platform inventory API&lt;/strong&gt; / &lt;strong&gt;Power Platform for Admins V2&lt;/strong&gt; connector) for owner, environment, authentication mode, and last publish across all agents in the tenant. This is the replacement surface for the CoE Starter Kit’s &lt;code&gt;Power Platform agents&lt;/code&gt; inventory table, which is no longer actively maintained.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-logging-copilot-studio" rel="noopener noreferrer"&gt;Copilot Studio audit logs in Purview&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/admin/programmability-authentication-v2" rel="noopener noreferrer"&gt;Power Platform inventory API&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.15 Treat autonomous agents as a higher-risk class
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Autonomous (event-triggered) agents run without interactive sessions, which expands the attack surface and removes the human-in-the-loop signal that interactive agents give you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Keep autonomous agents in a dedicated environment, require code review on triggers, and disable them with the &lt;code&gt;Event triggers&lt;/code&gt; DLP connector in environments that are not ready.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-data-loss-prevention" rel="noopener noreferrer"&gt;Configure data policies for agents&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  9.16 Govern MCP servers as connectors
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Model Context Protocol (MCP) servers extend agents with external tools. From a governance standpoint, each MCP server is an external connector; treating it informally creates an unaudited integration path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Treat each MCP server as a custom connector for governance: review the server code or vendor, restrict outbound network paths, and block ad-hoc registration by makers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/mcp" rel="noopener noreferrer"&gt;Agents and MCP&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  10. Agent Authentication and Connector Governance
&lt;/h2&gt;

&lt;p&gt;Agents built in Copilot Studio interact with data and services through connectors, knowledge sources, and tools. Connector governance for agents uses the same Power Platform DLP engine applied to Power Apps and Power Automate, but a few controls are agent-specific.&lt;/p&gt;
&lt;h3&gt;
  
  
  10.1 Choose an authentication mode
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Authentication mode determines who can use the agent and whether platform sharing controls apply at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Pick one of three modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authenticate with Microsoft&lt;/strong&gt; (default) — uses Microsoft Entra ID. The agent requires sign-in; sharing limits apply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authenticate manually&lt;/strong&gt; — generic OAuth 2.0 (Okta, Auth0, custom IdP). Agent requires sign-in but identity lives outside Entra ID.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No authentication&lt;/strong&gt; — public link or embedded web chat. Sharing limits are bypassed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Block the connector &lt;code&gt;Chat without Microsoft Entra ID authentication in Copilot Studio&lt;/code&gt; in the tenant baseline DLP to remove the &lt;code&gt;No authentication&lt;/code&gt; option entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/configuration-end-user-authentication" rel="noopener noreferrer"&gt;Configure user authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  10.2 Use Entra Agent ID for outbound calls
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Older agent integrations relied on stored client secrets, which are awkward to rotate and easy to leak. Entra Agent ID replaces that pattern with a managed identity model that the platform owns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Each Copilot Studio agent is automatically provisioned with its own Entra Agent ID — a Microsoft Entra service principal of subtype &lt;code&gt;Agent&lt;/code&gt; — when the agent is created. The agent presents this identity on outbound calls. Administrators do not configure trusted app registrations for “agent federation”; the Agent ID is managed by the platform and visible in the Entra ID portal under enterprise applications. Where legacy connectors still rely on stored secrets, rotate them through Azure Key Vault.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-entra-agent-id" rel="noopener noreferrer"&gt;Entra Agent ID for Copilot Studio agents&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  10.3 Block high-risk connectors
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; A handful of connectors account for most of the risk in agent tooling. Blocking them by default forces every exception to be justified.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Common blocks for regulated tenants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;HTTP&lt;/code&gt;, &lt;code&gt;HTTP with Microsoft Entra ID&lt;/code&gt; (or endpoint-filter them to an allow-list).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Chat without Microsoft Entra ID authentication in Copilot Studio&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Skills&lt;/code&gt; (Bot Framework skills as tools).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Event triggers&lt;/code&gt; (autonomous agents).&lt;/li&gt;
&lt;li&gt;Custom connectors unless catalog-approved.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-data-loss-prevention" rel="noopener noreferrer"&gt;Configure data policies for agents&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  10.4 Use action control for partial approval
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Some connectors are too useful to block entirely but too dangerous to allow in full. Action control gives you a middle ground.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Allow read actions and block write actions on high-risk connectors — for example, allow &lt;code&gt;Get rows&lt;/code&gt; on SQL Server but block &lt;code&gt;Execute a SQL query&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/connector-action-control" rel="noopener noreferrer"&gt;Connector action control&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  10.5 A scripted policy baseline
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; A baseline that lives only in the UI is not portable across tenants and not testable in code review. PowerShell-defined baselines fix both problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; A starter snippet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$policy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;New-DlpPolicy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-DisplayName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Agent baseline"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Add-ConnectorToBusinessDataGroup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-PolicyName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$policy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ConnectorName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;shared_sharepointonline&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Add-ConnectorToBlockedGroup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-PolicyName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$policy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ConnectorName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;shared_logicflows_http&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Set-DlpPolicyDefaultConnectorGroup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-PolicyName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$policy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-DefaultGroup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Blocked&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/powerapps-powershell#data-loss-prevention-dlp-policy-commands" rel="noopener noreferrer"&gt;DLP PowerShell cmdlets&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.6 Govern tools, prompts, and MCP
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Agents do more than call connectors. Prompt content and external tools are governance surfaces in their own right; ignoring them leaves a hole the connector model alone cannot close.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Govern each surface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Generative orchestration&lt;/strong&gt; with built-in prompts — control via the &lt;code&gt;AI prompts&lt;/code&gt; and &lt;code&gt;Generative AI settings&lt;/code&gt; rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom prompts&lt;/strong&gt; (prompt columns, AI Builder prompts) — audit through Dataverse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP servers&lt;/strong&gt; as external tools — treat each server as a connector and inventory via the Copilot Studio admin center.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/mcp" rel="noopener noreferrer"&gt;Agents and MCP&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.7 Constrain knowledge sources upstream
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Knowledge sources are the easiest way for an agent to reach data the maker should not be able to reach. Upstream labels and authentication requirements close that gap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Apply layered controls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Require authenticated SharePoint sources; block public websites in regulated environments.&lt;/li&gt;
&lt;li&gt;Apply Microsoft Purview sensitivity labels upstream; agents honor label-based access for SharePoint and OneDrive content.&lt;/li&gt;
&lt;li&gt;Use the &lt;code&gt;Accessing transcripts from conversations in Copilot Studio agents&lt;/code&gt; rule to block transcript retention where conversations could contain sensitive prompts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/purview/sensitivity-labels" rel="noopener noreferrer"&gt;Purview sensitivity labels for Copilot&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/admin/connector-endpoint-filtering" rel="noopener noreferrer"&gt;Endpoint filtering&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  11. Application Lifecycle Management and Pipelines
&lt;/h2&gt;

&lt;p&gt;Application Lifecycle Management (ALM) for Power Platform is built on &lt;strong&gt;solutions&lt;/strong&gt;. A solution is a versioned container for apps, flows, agents, tables, roles, and environment variables. Movement between environments always goes through solution export and import — manually, via Power Platform Pipelines, or via Azure DevOps or GitHub.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.1 Treat solutions as the unit of deployment
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Solutions give you a versioned, traceable artifact. The Default Solution does not; deploying out of it is how teams lose change history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use one solution per deployable unit and avoid the &lt;strong&gt;Default Solution&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/basics-alm" rel="noopener noreferrer"&gt;ALM basics&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.2 Make flows solution-aware
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Non-solution-aware flows do not move cleanly between environments. Teams that skip this setting end up rebuilding flows in production by hand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Turn on &lt;code&gt;Default to creating new cloud flows as solution-aware&lt;/code&gt; so every new flow lands in a solution by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/basics-alm" rel="noopener noreferrer"&gt;ALM basics&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.3 Use environment variables and connection references
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Hard-coded connection strings and configuration values break promotion. Variables and references decouple configuration from solution content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use &lt;strong&gt;environment variables&lt;/strong&gt; for configuration and &lt;strong&gt;connection references&lt;/strong&gt; for flows and agents so connections can be rebound per environment without editing solution content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/basics-alm" rel="noopener noreferrer"&gt;ALM basics&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.4 Version solutions semantically
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Semantic versioning makes it possible to reason about what changed between releases. Without it, “version 7” tells you nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use semantic versioning (&lt;code&gt;1.4.2&lt;/code&gt;) and tag the source control commit that produced each version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/basics-alm" rel="noopener noreferrer"&gt;ALM basics&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.5 Adopt Power Platform Pipelines for native deployment
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Pipelines provide a deployment surface that runs inside the Power Platform itself — no external CI/CD required. For most low-code teams, they are the right starting point, and as of 2024 Microsoft has positioned them as the &lt;strong&gt;strategic replacement for the now-deprecated ALM Accelerator for Power Platform&lt;/strong&gt; (covered in 11.6).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Pipelines require a &lt;strong&gt;host environment&lt;/strong&gt; that is a Managed Environment. Source and target environments are registered in the host. A deployment imports a solution, rebinds connection references, and runs solution checker. Approvals can be attached to deployment stages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/pipelines" rel="noopener noreferrer"&gt;Power Platform Pipelines&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.6 Set up the pipelines host (and migrate off the ALM Accelerator)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Two pieces of status to keep straight when standing up native ALM:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The ALM Accelerator for Power Platform is formally deprecated (Microsoft Learn page last updated 2024-04-24).&lt;/strong&gt; Microsoft’s overview page is now titled &lt;em&gt;“ALM Accelerator for Power Platform (Deprecated)”&lt;/em&gt; and carries this notice: &lt;em&gt;“The ALM Accelerator is deprecated and will be removed in a future release. Use Pipelines in Power Platform to bring ALM automation capabilities to Power Platform and Dynamics 365 services. Pipelines can be used with source code integration or extended to integrate with other providers.”&lt;/em&gt; The accelerator was a canvas-app-plus-Azure-Pipelines reference implementation; the strategic replacement is the native Power Platform Pipelines experience described in 11.5. The accelerator continues to function for now, but no new investment is going into it and it is on track to be removed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The pipelines host solution is not the CoE Starter Kit.&lt;/strong&gt; They are different solutions with different purposes; conflating them leads to stalled rollouts. (The CoE Starter Kit itself is also no longer actively maintained — see part 1, section 8.6 — but that is a separate transition from the ALM Accelerator one.)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Install the &lt;strong&gt;Power Platform Pipelines&lt;/strong&gt; managed solution in the host environment (sometimes referenced as the &lt;em&gt;Deployment Pipeline Configuration&lt;/em&gt; app). Register environments in the &lt;code&gt;Deployment Environments&lt;/code&gt; table. If your tenant currently runs on the ALM Accelerator canvas app and Azure DevOps templates, treat this as the trigger to plan a migration to Pipelines — start by mapping each accelerator pipeline to a Pipelines stage, then route new solutions through Pipelines and freeze the accelerator pipelines for net-new work. Source-control integration is on the Pipelines roadmap; if you need it today, fall back to Build Tools or GitHub Actions (11.10) rather than to the accelerator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/set-up-pipelines" rel="noopener noreferrer"&gt;Set up Pipelines&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/guidance/alm-accelerator/overview" rel="noopener noreferrer"&gt;ALM Accelerator for Power Platform (Deprecated)&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.7 Run pipelines as service principals
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Pipelines should not depend on a human account that might leave the company. Service principals carry their own lifecycle and credentials.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Assign a service principal with &lt;code&gt;System Administrator&lt;/code&gt; in source and target environments. Use a &lt;strong&gt;delegated service account&lt;/strong&gt; or &lt;strong&gt;managed identity&lt;/strong&gt; where supported to avoid storing client secrets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/manage-application-users" rel="noopener noreferrer"&gt;Application users&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.8 Promote solutions with the PAC CLI
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Manual export and import via the UI is fine for one-off moves but not for repeatable deployments. The CLI is what survives review, automation, and offboarding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; A typical export/import:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pac auth create &lt;span class="nt"&gt;--url&lt;/span&gt; https://dev.crm.dynamics.com
pac solution &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; HRSolution &lt;span class="nt"&gt;--path&lt;/span&gt; ./HRSolution.zip &lt;span class="nt"&gt;--managed&lt;/span&gt;
pac auth create &lt;span class="nt"&gt;--url&lt;/span&gt; https://test.crm.dynamics.com
pac solution import &lt;span class="nt"&gt;--path&lt;/span&gt; ./HRSolution.zip &lt;span class="nt"&gt;--force-overwrite&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/developer/cli/reference/pipeline" rel="noopener noreferrer"&gt;pac pipeline reference&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.9 Trigger a pipeline deployment from the CLI
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Pipeline runs should be drivable from automation. The CLI provides exactly the surface needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Authenticate against the source environment first, then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pac pipeline deploy &lt;span class="nt"&gt;--solutionName&lt;/span&gt; HRSolution &lt;span class="sb"&gt;`&lt;/span&gt;
                    &lt;span class="nt"&gt;--currentVersion&lt;/span&gt; 1.4.1 &lt;span class="sb"&gt;`&lt;/span&gt;
                    &lt;span class="nt"&gt;--newVersion&lt;/span&gt; 1.4.2 &lt;span class="sb"&gt;`&lt;/span&gt;
                    &lt;span class="nt"&gt;--stageId&lt;/span&gt; &amp;lt;stageId&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The active &lt;code&gt;pac auth&lt;/code&gt; profile selects the pipeline; deployment notes are not a CLI argument and are added through the admin UI when needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/developer/cli/reference/pipeline" rel="noopener noreferrer"&gt;pac pipeline reference&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.10 Use Azure DevOps or GitHub when policy requires it
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Native pipelines are the right tool for most low-code teams, but they do not cover every release scenario — external approvals, multi-stack coordination, artifact signing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt;  &lt;strong&gt;Power Platform Build Tools&lt;/strong&gt; (Azure DevOps) and &lt;strong&gt;Power Platform Actions&lt;/strong&gt; (GitHub) expose the same CLI commands as pipeline tasks. Use them when the release policy requires capabilities the native pipelines do not have.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/devops-build-tools" rel="noopener noreferrer"&gt;Power Platform Build Tools&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/alm/devops-github-actions" rel="noopener noreferrer"&gt;GitHub Actions for Power Platform&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.11 Deploy managed, not unmanaged, to higher environments
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Unmanaged solutions in production allow layered customization that erodes traceability. Managed solutions force changes back through ALM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Deploy &lt;strong&gt;managed&lt;/strong&gt; solutions to test and production. Use the environment group rule &lt;code&gt;Unmanaged customizations&lt;/code&gt; to block unmanaged changes in production groups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/basics-alm" rel="noopener noreferrer"&gt;ALM basics&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  12. Solution Checker and Quality Gates
&lt;/h2&gt;

&lt;p&gt;Solution checker is a static-analysis engine that inspects solution contents against a Microsoft-maintained rule set. It runs on canvas apps, model-driven apps, Power Fx, Dataverse customizations, plug-ins, web resources, cloud flows, and Copilot Studio agents.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.1 Run on demand for fast feedback
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Makers and reviewers want feedback before they commit, not after the fact. On-demand runs close that gap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Run from the Power Platform admin center, from &lt;code&gt;make.powerapps.com&lt;/code&gt;, or with &lt;code&gt;pac solution check&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/checker-api/overview" rel="noopener noreferrer"&gt;Solution checker&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.2 Integrate with pipelines
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Manual runs depend on discipline. Pipeline-integrated runs depend on configuration, which is more reliable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Solution checker runs automatically before deployment in Power Platform Pipelines. No additional setup is needed beyond registering the pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/pipelines" rel="noopener noreferrer"&gt;Power Platform Pipelines&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.3 Enforce at solution import
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; A warning that does not block is a warning that gets ignored. Enforcement turns solution checker into an actual gate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; In Managed Environments, set &lt;code&gt;Solution checker enforcement&lt;/code&gt; to &lt;code&gt;Warn&lt;/code&gt; or &lt;code&gt;Block&lt;/code&gt; for solution import. At &lt;code&gt;Block&lt;/code&gt;, an import containing a rule violation at or above the threshold fails with the list of offending components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-solution-checker" rel="noopener noreferrer"&gt;Solution checker enforcement&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.4 Understand the rule categories
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Knowing what solution checker looks for helps you read the output and prioritize fixes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; The rule categories are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt; — use of &lt;code&gt;Execute Fetch&lt;/code&gt; with user-supplied input, open redirects in web resources, plug-in secrets in traces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt; — non-delegable queries in canvas apps, missing indexes in Dataverse, synchronous plug-ins on create/update of high-volume tables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintainability&lt;/strong&gt; — missing connection references, hard-coded GUIDs, deprecated API calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability&lt;/strong&gt; — missing error handling in flows, unbounded loops, overlapping workflow triggers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/checker-api/rules" rel="noopener noreferrer"&gt;Rule reference&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.5 Run from the CLI and consume SARIF
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Output that can be parsed by the rest of your toolchain is output that gets used. SARIF is the lingua franca of code scanners.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Run with the CLI and consume the SARIF output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pac solution check &lt;span class="nt"&gt;--path&lt;/span&gt; ./HRSolution.zip &lt;span class="sb"&gt;`&lt;/span&gt;
                   &lt;span class="nt"&gt;--geo&lt;/span&gt; europe &lt;span class="sb"&gt;`&lt;/span&gt;
                   &lt;span class="nt"&gt;--ruleSetName&lt;/span&gt; &lt;span class="s2"&gt;"Solution Checker"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI returns a SARIF file that can be uploaded to GitHub code scanning or parsed in Azure DevOps. Severity is one of &lt;code&gt;High&lt;/code&gt;, &lt;code&gt;Medium&lt;/code&gt;, &lt;code&gt;Low&lt;/code&gt;, &lt;code&gt;Informational&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/developer/cli/reference/solution#pac-solution-check" rel="noopener noreferrer"&gt;pac solution check&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.6 Configure enforcement thresholds explicitly
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Default thresholds may not match your risk tolerance. Configuration makes the threshold explicit instead of implicit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; In the admin center, &lt;code&gt;Edit Managed Environments &amp;gt; Solution checker&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enforcement: Block
Severity threshold: High
Exclusion rules: (solution-specific overrides)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-solution-checker" rel="noopener noreferrer"&gt;Solution checker enforcement&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.7 Use agent-specific checks
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Agents have failure modes apps and flows do not — missing fallbacks, public knowledge, blocked-channel publish. Solution checker covers them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Solution checker validates Copilot Studio agents for unused topics, missing fallback, knowledge sources without authentication, publish to blocked channels, and references to DLP-blocked connectors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/checker-api/overview" rel="noopener noreferrer"&gt;Solution checker&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.8 Add agent evaluations for behavioral quality
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Solution checker validates structure, not behavior. Behavioral quality — does the agent give the right answer to the right prompt — needs a separate gate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Copilot Studio includes &lt;strong&gt;agent evaluations&lt;/strong&gt; : define test sets of prompts and expected behaviors, then run them before publish. Evaluations are complementary to solution checker, not a replacement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/authoring-agent-evaluations" rel="noopener noreferrer"&gt;Agent evaluations&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  13. Licensing and Capacity Governance
&lt;/h2&gt;

&lt;p&gt;Licensing is a governance concern because runtime usage of Power Platform and Copilot Studio is gated by assigned licenses and consumed capacity. Capacity misconfiguration is a leading cause of outages.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.1 Pick the right Power Apps license model
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Per-app and per-user pricing have different break-even points. Choosing the wrong one for your usage pattern overpays for licenses or under-provisions makers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt;  &lt;strong&gt;Power Apps&lt;/strong&gt; ships per user or per app. Per-app covers one or two apps per user; per-user covers unlimited apps. Pick based on the number of apps the average user consumes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/pricing-billing-skus" rel="noopener noreferrer"&gt;Power Platform licensing overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.2 Match Power Automate plans to flow type
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Per-user, per-flow, and process plans suit different scenarios. Buying the wrong plan creates a cliff: either you over-license low-volume flows or run out of capacity on high-volume ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt;  &lt;strong&gt;Power Automate&lt;/strong&gt; ships per user (user plan) or per flow (hosted plan). Process plans allocate capacity to a single flow, typically for RPA workloads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/pricing-billing-skus" rel="noopener noreferrer"&gt;Power Platform licensing overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.3 Allocate Dataverse capacity per environment
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Without explicit allocation, environments draw from the tenant pool until exhausted. When the pool is gone, every over-pool environment goes read-only at once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Dataverse capacity (database, file, log) accrues per tenant and is allocated per environment. Assign capacity explicitly under &lt;code&gt;Resources &amp;gt; Capacity &amp;gt; Environments&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/capacity-storage" rel="noopener noreferrer"&gt;Capacity in admin center&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.4 Plan Copilot Studio consumption
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Copilot Studio consumption is metered in credits, and there is no hard tenant-wide cap. Budget alerts, not blocks, are the primary guard against runaway spend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt;  &lt;strong&gt;Copilot Studio&lt;/strong&gt; consumes &lt;strong&gt;Copilot Credits&lt;/strong&gt; per message, sold as &lt;strong&gt;prepaid capacity&lt;/strong&gt; or &lt;strong&gt;pay-as-you-go&lt;/strong&gt; (PAYG). Microsoft 365 Copilot user licenses include a separate allowance. Each agent message consumes credits based on type (generative answers, actions, autonomous events). Constraints to plan for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PAYG requires the &lt;strong&gt;Dataverse Azure subscription meter&lt;/strong&gt; configured at the environment level; without it, PAYG is inactive.&lt;/li&gt;
&lt;li&gt;No hard tenant-wide consumption cap exists today.&lt;/li&gt;
&lt;li&gt;Consumption reporting is in &lt;code&gt;Resources &amp;gt; Capacity &amp;gt; Copilot Studio&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Monitor trends weekly and set Azure budget alerts on the PAYG meter subscription.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/requirements-licensing-subscriptions" rel="noopener noreferrer"&gt;Copilot Studio licensing&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/admin/pay-as-you-go-overview" rel="noopener noreferrer"&gt;Pay-as-you-go setup&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.5 License Power Pages by site capacity
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Power Pages licensing is per-site, not per-user, which is easy to miss when projecting cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt;  &lt;strong&gt;Power Pages&lt;/strong&gt; is licensed by authenticated or anonymous user capacity per site. Plan capacity per site, not per identity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/pricing-billing-skus" rel="noopener noreferrer"&gt;Power Platform licensing overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.6 Use group-based licensing and audit monthly
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt; Direct license assignment leaves orphaned licenses behind when users leave. Group-based licensing keeps assignment in sync with employment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use Microsoft Entra ID group-based licensing. Audit monthly with PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Connect-MgGraph&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Scopes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Directory.Read.All"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-MgUser&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-All&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Property&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;AssignedLicenses&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;UserPrincipalName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;Where-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$_&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AssignedLicenses&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SkuId&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-contains&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;Power Apps Per User SKU&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;Select-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;UserPrincipalName&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/pricing-billing-skus" rel="noopener noreferrer"&gt;Power Platform licensing overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.7 Account for Developer Plan environments
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Developer environments are free per user but count against tenant environment quotas. Without a plan, they accumulate quietly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt;  &lt;strong&gt;Power Apps Developer Plan&lt;/strong&gt; provides a free, single-user environment for learning. Use default environment routing to manage developer environments centrally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/developer/plan" rel="noopener noreferrer"&gt;Developer Plan&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  14. Change Management and Release Rings
&lt;/h2&gt;

&lt;p&gt;Power Platform receives continuous updates from Microsoft and from in-tenant makers. A change management practice that controls both streams keeps environments predictable.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.1 Choose a release channel per environment group
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Microsoft pushes updates continuously. Channels let you control whether an environment gets updates as soon as they ship or after a slower validation period — a critical lever for production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Power Platform environments support two channels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auto&lt;/strong&gt; (default) — updates arrive as they are released to ring-by-ring deployment. Recommended for production environments where stability is achieved through Microsoft’s own gradual rollout.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly&lt;/strong&gt; — fixed monthly cadence; let’s pilot environments to preview the next set of updates before they reach Auto.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Set the channel with the environment group rule &lt;strong&gt;Release channel&lt;/strong&gt;. Production groups typically stay on &lt;code&gt;Auto&lt;/code&gt;; pilot groups use &lt;code&gt;Monthly&lt;/code&gt; for early validation. (There is no “Semi-Annual” channel for Power Platform — that term applies to Microsoft 365 Apps update channels, not Power Platform environments.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/release-channels" rel="noopener noreferrer"&gt;Release channels&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.2 Track Microsoft release waves
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Release waves announce major capability changes twice a year. They are how you anticipate behavior changes that channels alone cannot smooth over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Track release waves through the Microsoft Dynamics 365 release plans site and surface relevant items in your CoE communications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/dynamics365/release-plans/" rel="noopener noreferrer"&gt;Release waves&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.3 Gate previews and experimental features
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Preview features can disappear, change behavior, or carry undocumented limits. They do not belong in regulated environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use the &lt;code&gt;Generative AI settings&lt;/code&gt; and &lt;code&gt;Preview and experimental AI models&lt;/code&gt; rules at the environment group level to gate preview capabilities. Keep previews off in regulated groups; enable in a pilot group with representative data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environment-groups-rules" rel="noopener noreferrer"&gt;Rules for environment groups&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.4 Define in-tenant change categories
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt; Treating every deployment the same way over-controls routine changes and under-controls risky ones. Categories let you match scrutiny to risk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Apply the same change categories used in traditional IT:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Standard&lt;/strong&gt; (pre-approved) — patch increments of an existing solution, deployed via pipelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Normal&lt;/strong&gt; — new apps, flows, or agents; requires CoE or architecture review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emergency&lt;/strong&gt; — hotfixes; post-implementation review required.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each category maps to a pipeline approval configuration. Approvals are implemented as Dataverse records in the pipelines host with Azure AD group-based reviewer lists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/pipelines" rel="noopener noreferrer"&gt;Power Platform Pipelines&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.5 Use administration mode during deployments
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Deploying while users are active risks corrupted state and poor user experience. Administration mode blocks user traffic while the change is being made.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Enable administration mode with the CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pac admin set-runtime-state &lt;span class="nt"&gt;--runtime-state&lt;/span&gt; AdminMode

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Revert with &lt;code&gt;--runtime-state Enabled&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/admin-mode" rel="noopener noreferrer"&gt;Administration mode&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.6 Take a manual backup before risky changes
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Automatic backups follow a schedule; risky changes do not. A manual restore point taken just before a deployment is the cheapest insurance available.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Run &lt;code&gt;pac admin backup&lt;/code&gt; to create a manual restore point. Set the &lt;strong&gt;Backup retention&lt;/strong&gt; rule to at least 28 days for production groups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/backup-restore-environments" rel="noopener noreferrer"&gt;Manual backups&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.7 Communicate changes through known channels
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Surprises drive support volume. The cheapest way to reduce surprise is to communicate changes through channels the audience already reads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Layer three channels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Message Center&lt;/strong&gt; in the Microsoft 365 admin center surfaces Power Platform MC alerts. Subscribe Power Platform admins and CoE members.&lt;/li&gt;
&lt;li&gt;Use the &lt;strong&gt;Maker welcome content&lt;/strong&gt; rule to publish in-product notices for upcoming behavior changes.&lt;/li&gt;
&lt;li&gt;Maintain a tenant changelog in the CoE environment, linking MC IDs, affected environments, and owners.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-365/admin/manage/message-center" rel="noopener noreferrer"&gt;Message Center&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.8 Plan for rollback
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Rollback in Power Platform is limited and asymmetric. Pretending it is straightforward leads to ugly outages when something does need to be reversed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Rollback is constrained to Dataverse restore points and solution re-import of a prior version. Canvas apps retain version history; model-driven apps roll back via solution version. For Copilot Studio, earlier agent versions can be restored from the agent version list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/backup-restore-environments" rel="noopener noreferrer"&gt;Manual backups&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/authoring-publish-basics" rel="noopener noreferrer"&gt;Copilot Studio agent versions&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion: bringing both parts together
&lt;/h2&gt;

&lt;p&gt;Power Platform governance is not a single product, a single policy, or a single role. Across the two articles in this reference, the cumulative result is shown to be the result of many small, well-placed controls working together. Part 1 covered the platform on which everything stands: an environment topology that matches how the organization actually builds, a default environment treated as a perimeter rather than a playground, Managed Environments and environment groups that make policy enforceable at scale, DLP and tenant isolation that bound where data can move, identity and Conditional Access that decide who is allowed to touch the platform at all, and monitoring that turns activity into evidence. Part 2 covered everything that runs on that platform: Copilot Studio controls that extend the same model to AI agents, agent authentication and connector governance that shape what agents are allowed to do, ALM and pipelines that move solutions through environments traceably, solution checker and agent evaluations that gate quality at import and publish, licensing and capacity governance that prevent runtime surprises, and change management practices that absorb both Microsoft’s rollouts and your own without disrupting users.&lt;/p&gt;

&lt;p&gt;The two halves only work together. Part 1’s controls are not useful without something to govern; part 2’s controls do not stick without the foundations underneath them. Sharing limits matter only because Managed Environments make them enforceable. Solution checker enforcement matters only because environmental groups can apply it consistently. Entra Agent ID matters only because Conditional Access gates the identities of those agents present. The two articles are designed to be read as a single document, split for readability, not as independent pieces.&lt;/p&gt;

&lt;p&gt;The controls described across both parts already exist in the platform today. None of them requires custom engineering, third-party tooling, or preview access to be useful. What they require is decision-making: which environments belong in which group, which connectors are business versus non-business, which agents must authenticate with Microsoft Entra ID, which release channel each group follows, who approves a production deployment, and where the lines are drawn between regulated and general-purpose work. Those decisions &lt;em&gt;are&lt;/em&gt; governance.&lt;/p&gt;

&lt;p&gt;Start small and iterate. A minimum viable posture across both articles is: restrict default environment creation, attach a tenant-wide baseline DLP policy, enable default environment routing with a Managed Environments group, turn on tenant-level analytics, lean on the Power Platform admin center’s &lt;strong&gt;Inventory&lt;/strong&gt; , &lt;strong&gt;Usage&lt;/strong&gt; , &lt;strong&gt;Monitor&lt;/strong&gt; , and &lt;strong&gt;Actions&lt;/strong&gt; experiences (the CoE Starter Kit is no longer actively maintained), verify your tenant isolation defaults, require authenticated agents, run solution checker at import, deploy through &lt;strong&gt;Power Platform Pipelines&lt;/strong&gt; as a service principal (the strategic replacement for the now-deprecated ALM Accelerator), and set Auto channel for production with Monthly for a pilot ring. Everything else in these two articles is a refinement on that foundation. Governance that grows with the platform is governance that lasts; governance that is bolted on after an incident rarely recovers the ground it lost.&lt;/p&gt;

&lt;p&gt;Read this reference end to end once to map the territory, then return to it section by section as decisions come up. Both articles are designed to be skimmed for vocabulary and read closely when a specific control is at issue.&lt;/p&gt;

</description>
      <category>copilotstudio</category>
      <category>agents</category>
      <category>governance</category>
      <category>powerplatform</category>
    </item>
    <item>
      <title>Power Platform Governance: A Practitioner's Reference (Part 1)</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 16 May 2026 07:15:44 +0000</pubDate>
      <link>https://dev.to/holgerimbery/power-platform-governance-a-practitioners-reference-part-1-120c</link>
      <guid>https://dev.to/holgerimbery/power-platform-governance-a-practitioners-reference-part-1-120c</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Summary lede.&lt;/strong&gt; Power Platform and Copilot Studio now let every licensed Microsoft 365 user build apps, automations, and AI agents that touch enterprise data. This first part of a two-article reference walks through the platform-level foundations that everything else rests on — environment strategy, default-environment hardening, Managed Environments, environment groups and rules, DLP, tenant isolation, identity, and monitoring — and shows how they combine into a coherent, enforceable posture. Part 2 next week will cover Copilot Studio governance, agent authentication, ALM and pipelines, solution checker, licensing, and change management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who this is for.&lt;/strong&gt; Power Platform administrators, security or compliance officers responsible for a Microsoft 365 tenant, Center of Excellence leads, architects, designing a low-code or AI-agent platform, and makers who want to understand the guardrails around the tools they build with. The document replaces fragmented documentation with an ordered walkthrough of what actually exists today: CLI snippets, PowerShell examples, and direct links to authoritative Microsoft Learn pages. Nothing here is speculative, so the patterns can be applied to a tenant without waiting for a future release. If you need to defend an environment posture to auditors, onboard a new admin, set priorities for a governance rollout, or decide what "good" looks like for your tenant, this gives you the vocabulary, the examples, and the reasoning in one place.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why governance matters
&lt;/h2&gt;

&lt;p&gt;Power Platform and Copilot Studio have turned a large part of every Microsoft 365 tenant into a build surface. Employees who never wrote code are now authoring apps, flows, and AI agents that read from SharePoint, write to Dataverse, send email on behalf of users, and call external APIs. That shift changes the risk profile of the tenant in ways that are visible to three constituencies, each with a different stake.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;the business&lt;/strong&gt;, governance is what keeps low-code and AI investments returning value instead of accumulating liability. Ungoverned environments grow a long tail of half-finished apps, orphaned flows, and agents with unknown owners — each one a support ticket, compliance finding, or incident waiting to happen. Regulators increasingly ask who authored a control, what data it touched, and how changes were approved. A documented governance posture answers those questions without forensic archaeology and lets the business say &lt;em&gt;yes&lt;/em&gt; to new use cases because the controls are already in place.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;IT&lt;/strong&gt;, governance is the mechanism that preserves tenant integrity while the perimeter expands. Data Loss Prevention, tenant isolation, identity controls, and pipelines are not optional add-ons; they are how IT shifts from gatekeeper to platform operator. Without them, the only available stance is blanket denial — which does not reduce risk, because work simply moves to spreadsheets, personal accounts, and shadow SaaS where IT has no visibility at all. With them, IT can set guardrails at the platform level, delegate day-to-day authoring to business units, and focus engineering time on integrations, security, and automation.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;makers&lt;/strong&gt;, governance is the difference between building with confidence and building in the dark. Clear environment boundaries, known DLP rules, a predictable ALM path, and a Center of Excellence to turn to all reduce the cognitive load of citizen development. Makers who know what is allowed spend their time on business logic, not on working around unclear policy. Maker welcome content, solution checker, and sharing limits exist to shorten the feedback loop so that problems are caught while they are still cheap to fix.&lt;/p&gt;

&lt;p&gt;This first article works through the platform-level foundations: environment design, the default environment, Managed Environments, environment groups, DLP, tenant isolation, identity, and monitoring. Each control begins with the reason it exists, moves to the how, and points you to the authoritative Microsoft Learn page. Part 2 will build on this base by covering the resources that live inside those environments — Copilot Studio agents, ALM, licensing, and change management.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A note on the kits.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If you are coming to this article expecting the &lt;strong&gt;CoE Starter Kit&lt;/strong&gt; or the &lt;strong&gt;ALM Accelerator&lt;/strong&gt; to do the governance heavy lifting: that picture has changed. Microsoft has confirmed that the &lt;strong&gt;CoE Starter Kit is no longer actively maintained&lt;/strong&gt; — its core capabilities are now part of the Power Platform admin center — and the &lt;strong&gt;ALM Accelerator for Power Platform is formally deprecated&lt;/strong&gt;, with &lt;strong&gt;Power Platform Pipelines&lt;/strong&gt; as the named replacement. Section 8.6 covers the CoE Starter Kit transition to the admin center; section 3.5 covers the ALM Accelerator → Pipelines transition; the rest of the article reflects that shift.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. Environment Strategy
&lt;/h2&gt;

&lt;p&gt;An environment in Power Platform is a container for apps, flows, agents, connections, and Dataverse data. Environment design is the foundation of governance because DLP scope, security roles, capacity, and compliance boundaries all follow environment lines. Get the topology right and every later control has somewhere clean to attach. Get it wrong and you spend the rest of the rollout retrofitting policy onto a sprawl.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.1 Know the environment types
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Each type carries different defaults for licensing, data residency, and lifecycle. Choosing the wrong type at provisioning time creates rework that is rarely cheap to undo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Five types are in active use today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Default&lt;/strong&gt; — one per tenant, created automatically, open to every licensed user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production&lt;/strong&gt; — business-critical workloads, backed by Dataverse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sandbox&lt;/strong&gt; — non-production, resettable, suitable for UAT and load tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer&lt;/strong&gt; — single-maker environments, created manually or via routing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trial&lt;/strong&gt; and &lt;strong&gt;Teams&lt;/strong&gt; — time-limited or chat-scoped; not recommended for production assets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environments-overview" rel="noopener noreferrer"&gt;Environments overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 Adopt a topology that mirrors your delivery lifecycle
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; A topology aligned with how your organization actually builds shortens the path from idea to production and gives every governance rule (DLP, sharing limits, release channel) a natural place to land.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; A typical enterprise pattern separates by lifecycle and purpose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Default  -&amp;gt; personal productivity only (restricted)
DEV-*    -&amp;gt; per-maker or per-team developer environments
TEST-*   -&amp;gt; solution UAT with production-like data volume
PROD-*   -&amp;gt; published solutions, scoped by region or business unit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add a dedicated &lt;strong&gt;CoE&lt;/strong&gt; environment for governance tooling (pipelines host and any remaining CoE Starter Kit components — see section 8.6 for the kit's status) and a &lt;strong&gt;training&lt;/strong&gt; environment for enablement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/guidance/adoption/environment-strategy" rel="noopener noreferrer"&gt;Establishing an environment strategy&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.3 Restrict who can create environments
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Self-service environment creation is the fastest way to lose tenant-wide visibility. Most makers do not need to create environments; the few who do should be deliberately empowered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; In tenant settings, configure &lt;code&gt;Who can create production and sandbox environments&lt;/code&gt; and &lt;code&gt;Who can create trial environments&lt;/code&gt; to limit creation to admins or a named CoE group. For repeatable provisioning, drive creation through the CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pac admin create &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"DEV-Finance-EU"&lt;/span&gt; &lt;span class="nt"&gt;--type&lt;/span&gt; Sandbox &lt;span class="nt"&gt;--region&lt;/span&gt; europe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/control-environment-creation" rel="noopener noreferrer"&gt;Control who can create environments&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/developer/cli/reference/admin" rel="noopener noreferrer"&gt;pac admin reference&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.4 Pick a region before you provision
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Environments are region-locked. Region determines data residency, latency, and which regional services (Application Insights endpoints, Dataverse data centers) integrate cleanly. Moving an environment between regions is not a supported operation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Choose the region from the regional catalog at provisioning time. For regulated workloads, pick the region that satisfies the controlling jurisdiction even if it is not where most of your users sit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/regions-overview" rel="noopener noreferrer"&gt;Environment regions&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.5 Plan capacity before you turn on Dataverse
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Dataverse-enabled environments draw from a tenant-wide capacity pool. Capacity surprises are a leading cause of unplanned read-only mode in production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Any Dataverse-enabled environment — production or sandbox — requires the tenant-level minimum of 1 GB of database capacity. Capacity is a tenant pool, not a per-environment allocation, so plan total tenant capacity against the number of Dataverse-enabled environments you intend to run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/about-storage-capacity" rel="noopener noreferrer"&gt;About Dataverse storage capacity&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.6 Isolate regulated workloads
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; DLP, security roles, and Dataverse auditing settings are scoped per environment. Mixing regulated and non-regulated workloads in the same environment forces every control to be the strictest common denominator and complicates compliance reporting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Provision separate environments for HR, Finance, and other regulated workloads. Each one becomes a clean target for environment-specific DLP, role assignments, and backup retention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/guidance/adoption/environment-strategy" rel="noopener noreferrer"&gt;Establishing an environment strategy&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Governing the Default Environment
&lt;/h2&gt;

&lt;p&gt;The default environment is the only environment created automatically in every Power Platform tenant. Every licensed user is a member and holds the &lt;code&gt;Environment Maker&lt;/code&gt; role, which lets them create apps, flows, connections, and Copilot Studio agents. It is always present, always writable, and cannot be deleted or renamed — which makes it the single most common source of shadow IT on the platform. It needs explicit governance, not benign neglect.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 Understand what makes the default environment different
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Treating the default environment like any other production environment leads to surprises. Several behaviors are unique to it and cannot be disabled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Plan around four facts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It cannot be deleted. It can be renamed and reassigned to a non-default type for display purposes, but Microsoft treats it as the fallback environment for personal productivity.&lt;/li&gt;
&lt;li&gt;Every new tenant user inherits &lt;code&gt;Environment Maker&lt;/code&gt;. There is no tenant setting that removes this role on the default environment.&lt;/li&gt;
&lt;li&gt;Dataverse is optional by default, but once added it cannot be removed.&lt;/li&gt;
&lt;li&gt;Connectors default to the same tenant-wide DLP policy as any other non-scoped environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environments-overview#the-default-environment" rel="noopener noreferrer"&gt;Default environment overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 Rename and tag for clarity
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Makers cannot make good decisions about where to build if the default environment looks like any other production candidate. The name is the first signal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Rename the default environment to something like &lt;code&gt;Personal Productivity (Default)&lt;/code&gt; so its purpose is unambiguous. Apply a consistent solution-naming convention for any assets that genuinely belong there (such as personal flows).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environments-overview#the-default-environment" rel="noopener noreferrer"&gt;Default environment overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 Attach a restrictive DLP policy
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; The default environment is where ungoverned makers land first. A restrictive DLP policy turns the blast radius from "every connector Microsoft ships" into a known, defensible set.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Move risky connectors (HTTP, custom connectors, social media, unauthenticated agent chat) to &lt;code&gt;Blocked&lt;/code&gt;. Keep only Microsoft 365, Dataverse, and a short approved list in &lt;code&gt;Business&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/wp-data-loss-prevention" rel="noopener noreferrer"&gt;Data policies overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.4 Keep Dataverse out (or contained) by default
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Once Dataverse is added to the default environment, it cannot be removed. Production data living next to ungoverned personal flows is a compliance problem that is hard to walk back.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; If the default environment still lacks Dataverse, leave it off. Production data belongs in dedicated environments where capacity and backup are managed deliberately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environments-overview#the-default-environment" rel="noopener noreferrer"&gt;Default environment overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.5 Constrain sharing through Managed Environments
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Without sharing limits, a maker can publish an app or agent to the entire tenant with one click. The default environment is the most common origin for that mistake.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Convert the default environment to a Managed Environment and apply &lt;code&gt;Limit sharing&lt;/code&gt; rules: cap the number of users an asset can be shared with and disable sharing through security groups. Mechanics are covered in section 3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-sharing-limits" rel="noopener noreferrer"&gt;Limit sharing in Managed Environments&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.6 Enable default environment routing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; The cleanest way to keep the default environment empty is to redirect new makers somewhere else automatically. Routing replaces "the default environment is where people end up" with "the default environment is where nobody builds."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Turn on &lt;strong&gt;default environment routing&lt;/strong&gt; under &lt;strong&gt;Settings &amp;gt; Default environment routing&lt;/strong&gt; in the Power Platform admin center. Each routed maker receives a personal developer environment; group those environments with &lt;strong&gt;Environment groups&lt;/strong&gt; and apply policies in bulk (sharing limits, maker welcome content, solution checker).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/default-environment-routing" rel="noopener noreferrer"&gt;Default environment routing&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/admin/environment-groups" rel="noopener noreferrer"&gt;Environment groups&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.7 Lock down agents and Copilot in the default environment
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Copilot Studio agents created in the default environment are immediately discoverable by all licensed users. Without explicit controls, makers can publish unauthenticated agents, call any non-blocked connector, and add knowledge sources the creator already has access to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Apply layered controls: convert the default environment to a Managed Environment, block the &lt;code&gt;Chat without Microsoft Entra ID authentication in Copilot Studio&lt;/code&gt; connector in DLP, block the &lt;code&gt;HTTP&lt;/code&gt; and &lt;code&gt;HTTP with Microsoft Entra ID&lt;/code&gt; connectors, and enable tenant-level Copilot Studio restrictions on who can publish.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/admin-data-loss-prevention" rel="noopener noreferrer"&gt;Data policies for Copilot Studio&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/admin/tenant-settings" rel="noopener noreferrer"&gt;Tenant settings reference&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.8 Turn on monitoring before you need it
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Telemetry collected after an incident is worth less than telemetry collected before one. Get visibility on the default environment first, because that is where ungoverned activity tends to land.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Enable &lt;strong&gt;tenant-level analytics&lt;/strong&gt; in the Power Platform admin center to capture telemetry. Use the admin center &lt;strong&gt;Inventory&lt;/strong&gt;, &lt;strong&gt;Usage&lt;/strong&gt;, &lt;strong&gt;Monitor&lt;/strong&gt;, and &lt;strong&gt;Actions&lt;/strong&gt; experiences to list apps, flows, and agents by owner — these have replaced the CoE Starter Kit inventory flows (see section 8.6). Review the Managed Environments &lt;strong&gt;weekly digest&lt;/strong&gt; for inactive and top-used assets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/tenant-level-analytics" rel="noopener noreferrer"&gt;Tenant-level analytics&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.9 A starting DLP stance
&lt;/h3&gt;

&lt;p&gt;The example below is not a policy you should ship verbatim, but it is a defensible starting point for a default environment that has no other governance in place:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Business group:    Microsoft 365 connectors (Outlook, SharePoint, Teams, OneDrive), Dataverse, Approvals
Non-business:      (empty)
Blocked:           HTTP, HTTP with Microsoft Entra ID, custom connectors,
                   Chat without Microsoft Entra ID authentication in Copilot Studio,
                   SMTP, FTP, social media connectors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/create-dlp-policy" rel="noopener noreferrer"&gt;Create a data policy&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/admin/control-environment-creation" rel="noopener noreferrer"&gt;Control environment creation&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Managed Environments
&lt;/h2&gt;

&lt;p&gt;Managed Environments is a premium governance layer that augments a standard environment with administrative controls. Enabling it does not change the environment's region, type, or Dataverse schema; it activates a set of tenant-visible features that admins can enforce. Most of the controls that follow in this document depend on Managed Environments being on.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Limit sharing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Uncontrolled sharing is one of the highest-impact governance gaps. A single misconfigured share can expose an app or agent to the entire tenant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Cap the number of users an app or agent can be shared with, block sharing through security groups, and block editor sharing. Configure under &lt;code&gt;Edit Managed Environments &amp;gt; Limit sharing&lt;/code&gt;. Rules apply on the next share action; existing assignments remain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-sharing-limits" rel="noopener noreferrer"&gt;Limit sharing&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 Receive a weekly digest
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Admins do not have time to log into the admin center every day. A scheduled summary keeps inactive and top-used assets in front of them without manual polling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Power Platform and Dynamics 365 admins automatically receive an email summary covering active users, top apps, and inactive apps and flows. Add additional recipients via PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Get-TenantSettings&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;powerPlatform&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;governance&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;Add-Member&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-NotePropertyName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;additionalAdminDigestEmailRecipients&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;`
&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="nt"&gt;-NotePropertyValue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'coe@contoso.com;ops@contoso.com'&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Set-TenantSettings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-RequestBody&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-usage-insights" rel="noopener noreferrer"&gt;Usage insights (weekly digest)&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 Enforce solution checker
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Static analysis catches problems while they are cheap to fix. Without enforcement, solution checker becomes optional and stops being run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Run static analysis on solution import; warn or block. Configure under &lt;code&gt;Edit Managed Environments &amp;gt; Solution checker&lt;/code&gt; (mechanics in part 2, section 12).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-solution-checker" rel="noopener noreferrer"&gt;Solution checker enforcement&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.4 Show maker welcome content
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Makers who never see your governance guidance cannot follow it. The first experience inside the maker portals is the cheapest channel for organizational rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Configure a banner that appears for new makers in &lt;code&gt;make.powerapps.com&lt;/code&gt; and &lt;code&gt;copilotstudio.microsoft.com&lt;/code&gt;. Use it to point makers at internal documentation, the right environments, and approval processes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-overview" rel="noopener noreferrer"&gt;Managed Environments overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.5 Host Power Platform Pipelines
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Power Platform Pipelines are the native, low-code path for promotion across environments. They require Managed Environments to run, and as of 2024 Microsoft has positioned them as the &lt;strong&gt;strategic replacement for the ALM Accelerator for Power Platform&lt;/strong&gt;, which is formally deprecated and slated for removal in a future release. New ALM rollouts should start here rather than on the accelerator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Designate a Managed Environment as the pipelines host (covered in part 2, section 11). Source and target environments are registered in the host. If your tenant currently runs on the ALM Accelerator canvas app + Azure DevOps templates, treat this as the trigger to plan a migration to Pipelines — the accelerator continues to function for now, but no new investment is going into it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/alm/pipelines" rel="noopener noreferrer"&gt;Power Platform Pipelines&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/guidance/alm-accelerator/overview" rel="noopener noreferrer"&gt;ALM Accelerator for Power Platform (Deprecated)&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.6 Restrict Dataverse access by IP
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Network-level controls reduce the attack surface even when identity controls are intact. They also satisfy auditors who expect defense in depth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; &lt;strong&gt;IP firewall&lt;/strong&gt; restricts Dataverse access to declared IP ranges. &lt;strong&gt;IP cookie binding&lt;/strong&gt; adds session-level enforcement so that a stolen token cannot be replayed from a different network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/ip-firewall" rel="noopener noreferrer"&gt;IP firewall&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.7 Customer Lockbox and Customer-Managed Key
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Regulated tenants often need explicit approval before Microsoft engineers can access tenant data, and they need encryption keys under their own control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Customer Lockbox requires customer approval for Microsoft support access to environment data. Customer-Managed Key brings tenant-controlled keys into Dataverse encryption. Both require premium tenant licensing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-overview" rel="noopener noreferrer"&gt;Managed Environments overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.8 Extend backup retention
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; The seven-day default backup window is short for production workloads. An incident discovered on day eight has no restore point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Managed Environments support extended retention windows beyond the seven-day default. Configure retention per environment or, for groups, via the &lt;code&gt;Back-up retention&lt;/code&gt; rule.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/backup-restore-environments" rel="noopener noreferrer"&gt;Manual backups&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.9 DLP for desktop flows
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Desktop (RPA) flows can interact with anything on the host machine, which makes connector-level DLP particularly important for them. The control is gated behind Managed Environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Apply DLP policies to desktop flows the same way you apply them to cloud flows; enforcement happens at design and run time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/wp-data-loss-prevention" rel="noopener noreferrer"&gt;Data policies overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.10 Use the Catalog for internal distribution
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Without a catalog, reusable components are shared informally — by email, by chat, by file share — and traceability collapses. A catalog gives makers an approved internal store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Publish components (templates, connectors, plug-ins) to the Catalog so makers can install them with provenance and version metadata.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-overview" rel="noopener noreferrer"&gt;Managed Environments overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.11 Plan for the licensing implications
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Managed Environments changes how runtime licensing works for users, and that change is the most common surprise during rollout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Every user who activates an app, flow, or agent in a Managed Environment must hold a premium Power Platform license (Power Apps per user/per app, Power Automate Premium, or Dynamics 365). Confirm license posture before flipping the switch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/pricing-billing-skus" rel="noopener noreferrer"&gt;Power Platform licensing overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.12 Enabling
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; The toggle is per environment, so enablement is a deliberate act, not a tenant flag.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; In the Power Platform admin center, choose the environment, then &lt;code&gt;Edit Managed Environments&lt;/code&gt;. From the CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pac admin set-governance-config &lt;span class="nt"&gt;--environment-id&lt;/span&gt; &amp;lt;GUID&amp;gt; &lt;span class="nt"&gt;--protection-level&lt;/span&gt; Standard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-enable" rel="noopener noreferrer"&gt;Enable Managed Environments&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.13 When to enable
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Managed Environments costs licensing and increases admin overhead. Enabling it everywhere is wasteful; enabling it nowhere defeats the purpose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use Managed Environments for any environment with production workloads, external sharing, or sensitive data. Apply it to personal developer environments created by default environment routing so sharing limits and solution checker apply uniformly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-overview" rel="noopener noreferrer"&gt;Managed Environments overview&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Environment Groups and Rules
&lt;/h2&gt;

&lt;p&gt;Environment groups organize Managed Environments into collections so admins can apply policies in bulk. Each environment belongs to at most one group; groups cannot be nested or overlap; non-managed environments cannot be added.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1 Group environments by policy intent
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Without grouping, every environment is a one-off configuration. As the platform scales, that becomes unmaintainable. Groups let policy intent travel with environments instead of with people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Build groups around policy needs rather than reporting structure: a regulated production group, a pilot group for previews, a routed personal-productivity group, an admin/CoE group. A typical layout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Personal Productivity        -&amp;gt; routed per-maker developer envs; sharing disabled
Pilot                        -&amp;gt; experimental AI features on; release channel = Monthly
Production EU                -&amp;gt; AI off for regulated data; release channel = Auto
Production US                -&amp;gt; same policies as EU, separate region
CoE / Admin                  -&amp;gt; governance tooling; locked down
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environment-groups" rel="noopener noreferrer"&gt;Environment groups&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 Apply rules at the group level
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; When a rule is published at the group level, the corresponding setting becomes read-only inside each member environment. This makes policy enforceable rather than advisory; per-environment overrides are not supported.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use the admin center to publish any of the rules currently available (generally available unless noted):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sharing agents with Editor permissions&lt;/li&gt;
&lt;li&gt;Sharing agents with Viewer permissions&lt;/li&gt;
&lt;li&gt;Sharing controls for canvas apps&lt;/li&gt;
&lt;li&gt;Sharing controls for solution-aware cloud flows&lt;/li&gt;
&lt;li&gt;AI-powered Copilot features&lt;/li&gt;
&lt;li&gt;Generative AI settings&lt;/li&gt;
&lt;li&gt;External models&lt;/li&gt;
&lt;li&gt;AI prompts&lt;/li&gt;
&lt;li&gt;Accessing transcripts from conversations in Copilot Studio agents&lt;/li&gt;
&lt;li&gt;Sharing data between Copilot Studio and Viva Insights&lt;/li&gt;
&lt;li&gt;Maker welcome content&lt;/li&gt;
&lt;li&gt;Release channel&lt;/li&gt;
&lt;li&gt;Back-up retention&lt;/li&gt;
&lt;li&gt;Solution checker enforcement&lt;/li&gt;
&lt;li&gt;Unmanaged customizations&lt;/li&gt;
&lt;li&gt;Usage insights&lt;/li&gt;
&lt;li&gt;Power Apps component framework for canvas apps&lt;/li&gt;
&lt;li&gt;Content security policy&lt;/li&gt;
&lt;li&gt;Power Apps code apps&lt;/li&gt;
&lt;li&gt;Preview and experimental AI models&lt;/li&gt;
&lt;li&gt;Default deployment pipeline (preview)&lt;/li&gt;
&lt;li&gt;Advanced connector policy (preview)&lt;/li&gt;
&lt;li&gt;AI-generated descriptions (preview)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environment-groups-rules" rel="noopener noreferrer"&gt;Rules for environment groups&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.3 Manage group membership from the CLI
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Group membership changes are routine — onboarding new environments, retiring old ones — and should be scriptable. Rule definitions still live in the admin center; the CLI handles membership.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use the &lt;code&gt;pac admin&lt;/code&gt; group commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pac admin list-groups
pac admin add-group &lt;span class="nt"&gt;--environment&lt;/span&gt; &amp;lt;env-id&amp;gt; &lt;span class="nt"&gt;--environment-group&lt;/span&gt; &amp;lt;group-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/developer/cli/reference/admin" rel="noopener noreferrer"&gt;pac admin reference&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.4 Plan for group removal
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Removing an environment from a group is a half-revert: rule values stay where they were, but the environment becomes editable again locally. Without a manual reconciliation step, the environment can drift in ways that are hard to detect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; When you remove an environment from a group, treat the action as the start of a configuration review. Reconcile every formerly group-managed setting against your current standard before declaring the migration done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/environment-groups" rel="noopener noreferrer"&gt;Environment groups&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.5 Pair groups with default environment routing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Routed personal developer environments multiply quickly. Without grouping, you end up with hundreds of environments each configured independently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Auto-route new makers into personal environments, then assign those environments to a &lt;code&gt;Personal Productivity&lt;/code&gt; group with sharing disabled and solution checker enforced. Policies follow membership automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/default-environment-routing" rel="noopener noreferrer"&gt;Default environment routing&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Data Loss Prevention Policies
&lt;/h2&gt;

&lt;p&gt;Data Loss Prevention (DLP) policies in Power Platform control which connectors can be combined inside apps, flows, and agents. Policies apply to Power Apps, Power Automate cloud flows, desktop flows (in Managed Environments), and Copilot Studio agents.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1 Sort connectors into three groups
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Data leaks happen when organizational data moves alongside non-organizational connectors in the same resource. The three-group model is how Power Platform prevents that combination at design time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Place each connector into one of three groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Business&lt;/strong&gt; — connectors that can exchange organizational data with each other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-business&lt;/strong&gt; — connectors that can exchange non-organizational data with each other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blocked&lt;/strong&gt; — connectors that cannot be used at all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data cannot flow between Business and Non-business within the same resource.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/wp-data-loss-prevention" rel="noopener noreferrer"&gt;Data policies overview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.2 Set the default group for new connectors
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Microsoft adds connectors continuously. If new connectors land in a permissive group by default, your DLP posture decays without anyone editing policy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Set the &lt;strong&gt;Default group&lt;/strong&gt; to &lt;code&gt;Blocked&lt;/code&gt;. New connectors stay blocked until an admin explicitly classifies them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/create-dlp-policy" rel="noopener noreferrer"&gt;Create a data policy&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.3 Choose the right policy scope
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; A tenant-wide policy is the right baseline for high-risk connectors, but environment-specific policies let you allow connectors where they are needed without opening them everywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Target a policy at all environments (with optional exclusions), at specific environments, or only at the default environment. Policies aggregate: a connector blocked by &lt;em&gt;any&lt;/em&gt; applicable policy is blocked for that environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/create-dlp-policy" rel="noopener noreferrer"&gt;Create a data policy&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.4 Filter by endpoint
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; A blanket block on &lt;code&gt;HTTP&lt;/code&gt; is often too restrictive. Endpoint filtering keeps the connector available for the URLs you actually need while denying everything else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Allow or block specific URLs on HTTP-capable connectors, SQL Server, Azure Blob, and others. This is a premium-tier capability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/connector-endpoint-filtering" rel="noopener noreferrer"&gt;Endpoint filtering&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.5 Restrict individual connector actions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Many connectors expose both safe (read) and dangerous (arbitrary execute) actions. Action control lets you keep the safe ones while blocking the dangerous ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Allow or block individual actions on a connector — for example, block &lt;code&gt;Execute a SQL query&lt;/code&gt; on SQL Server while allowing table reads. Premium tier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/connector-action-control" rel="noopener noreferrer"&gt;Connector action control&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.6 Allow-list custom connector patterns
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Custom connectors are an open door if left ungoverned. Pattern-based allow-listing lets you approve a class of internal endpoints without approving every custom connector individually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Allow-list custom connectors by URL pattern. Pair with a tenant-wide block on unmatched custom connectors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/connector-endpoint-filtering" rel="noopener noreferrer"&gt;Connector endpoint filtering&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.7 A high-risk tenant baseline
&lt;/h3&gt;

&lt;p&gt;The example below is a defensible starting point for a tenant where regulated data lives next to general productivity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Business:      Microsoft 365 connectors (Outlook, Teams, SharePoint, OneDrive),
               Dataverse, Approvals, Planner
Non-business:  Bing Search, Translator, MSN Weather
Blocked:       HTTP, HTTP with Microsoft Entra ID (unless endpoint-filtered),
               custom connectors in default env, Twitter/X, Facebook, SMTP, FTP,
               Chat without Microsoft Entra ID authentication in Copilot Studio
Default group: Blocked
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/create-dlp-policy" rel="noopener noreferrer"&gt;Create a data policy&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.8 Manage DLP from PowerShell
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; UI configuration does not survive disaster recovery, audit reproduction, or environment cloning. Scripted policy management does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use the DLP cmdlets to retrieve, create, and modify policies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Get-DlpPolicy&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nx"&gt;New-DlpPolicy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-DisplayName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Tenant baseline"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# manage connector groups via Set-DlpPolicyDefaultConnectorGroup, Add-ConnectorToBusinessDataGroup, etc.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/powerapps-powershell#data-loss-prevention-dlp-policy-commands" rel="noopener noreferrer"&gt;DLP PowerShell cmdlets&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.9 Understand enforcement timing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Knowing when a policy takes effect is critical during incident response — and during planned changes that you do not want to break in production at noon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Policy changes take effect within minutes for new resources and on the next save or publish for existing ones. Copilot Studio enforces DLP in real time; makers see a validation error immediately when a blocked connector is referenced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/wp-data-loss-prevention" rel="noopener noreferrer"&gt;Data policies overview&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Tenant Isolation and Cross-Tenant Controls
&lt;/h2&gt;

&lt;p&gt;Tenant isolation restricts which external Microsoft Entra ID tenants can be used as the identity source for connections inside your Power Platform tenant. It is a separate control from DLP and from Microsoft Entra B2B. DLP governs &lt;em&gt;which connectors&lt;/em&gt; can be used; tenant isolation governs &lt;em&gt;which tenants users can authenticate to&lt;/em&gt; when creating a connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.1 Distinguish inbound from outbound
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Tenant isolation is directional. Mixing the two leads to either over-blocking (legitimate B2B work breaks) or under-blocking (data exfiltration paths remain).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Configure each direction explicitly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inbound&lt;/strong&gt; — another tenant's users creating a connection that points into your tenant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outbound&lt;/strong&gt; — your tenant's users creating a connection that points into another tenant.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/cross-tenant-restrictions" rel="noopener noreferrer"&gt;Tenant isolation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.2 Verify your default — it depends on tenant age
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; The default behavior changed in 2026, and assumptions from older guidance no longer apply universally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Tenants created &lt;strong&gt;before 30 March 2026&lt;/strong&gt; have both directions allowed by default; tenant isolation must be enabled explicitly. Tenants created &lt;strong&gt;on or after 30 March 2026&lt;/strong&gt; ship with tenant isolation enabled and both directions defaulting to deny — only allow-listed tenant IDs can be used. Verify the current state in your tenant rather than assuming a default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/cross-tenant-restrictions#enable-tenant-isolation" rel="noopener noreferrer"&gt;Restrict cross-tenant inbound/outbound&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.3 Configure tenant isolation deliberately
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; The control is tenant-wide; there is no per-environment override. A misconfiguration affects the entire tenant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; In the Power Platform admin center, under &lt;code&gt;Security &amp;gt; Tenant isolation&lt;/code&gt;, set:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tenant isolation: On
Default:          Block
Exceptions:       contoso-partner.onmicrosoft.com  (Inbound, Outbound)
                  fabrikam.onmicrosoft.com          (Outbound only)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/cross-tenant-restrictions" rel="noopener noreferrer"&gt;Tenant isolation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.4 Know what tenant isolation does &lt;em&gt;not&lt;/em&gt; cover
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Tenant isolation is sometimes mistaken for a complete cross-tenant boundary. It is not. Pairing it with the right Entra controls is the only way to close the gap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Tenant isolation applies to connectors that authenticate with Microsoft Entra ID (SharePoint, OneDrive, Dataverse, Outlook, Microsoft 365, Azure, etc.). It does not apply to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connectors that use API keys or generic OAuth.&lt;/li&gt;
&lt;li&gt;Service principal and managed identity authentication, which follow Microsoft Entra cross-tenant access policies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pair tenant isolation with Microsoft Entra cross-tenant access settings for a complete boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/cross-tenant-restrictions" rel="noopener noreferrer"&gt;Tenant isolation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.5 Layer Conditional Access
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Tenant isolation controls &lt;em&gt;where&lt;/em&gt; identities can come from; Conditional Access controls &lt;em&gt;under what conditions&lt;/em&gt; identity is accepted. Both layers are needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Apply Conditional Access policies to the &lt;code&gt;Power Platform API&lt;/code&gt; application to restrict sign-in by user, device, location, and risk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/conditional-access" rel="noopener noreferrer"&gt;Conditional Access for Power Platform&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.6 Layer the IP firewall
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Network-level controls reduce the attack surface even when identity controls are intact. They also satisfy auditors who expect defense in depth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; The IP firewall (Managed Environments) restricts Dataverse access to declared IP ranges. Configure per environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/ip-firewall" rel="noopener noreferrer"&gt;IP firewall&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.7 Enable continuous access evaluation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Static sign-in evaluation cannot react to changes in identity posture mid-session. CAE narrows the window between an account becoming risky and that account losing access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Continuous access evaluation (CAE) on Dataverse revokes sessions when identity posture changes — for example, when a user is disabled or moves outside an allowed network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/conditional-access" rel="noopener noreferrer"&gt;Conditional Access for Power Platform&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.8 Monitor configuration changes and runtime denials
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Tenant isolation is most useful when its events are visible. Two surfaces matter: configuration changes (someone modifying the policy) and runtime denials (someone hitting the policy).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Tenant isolation events flow to the Power Platform audit log and the Microsoft Purview unified audit log. Configuration changes appear under the &lt;code&gt;TenantIsolationPolicyUpdate&lt;/code&gt; activity; runtime denials surface as connection-creation failures rather than under a single unified filter — review both when investigating.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/audit-logs" rel="noopener noreferrer"&gt;Audit logs&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Security Roles and Identity
&lt;/h2&gt;

&lt;p&gt;Power Platform authorization is layered. Microsoft Entra ID provides tenant-level identity and global roles; Dataverse provides row- and column-level security inside each environment; connectors use per-user or service-principal credentials.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.1 Use the right tenant role
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Tenant-scoped governance work does not need Global Administrator. Over-privileged accounts increase blast radius without buying capability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Pick from the Microsoft Entra ID roles that govern Power Platform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Power Platform Administrator&lt;/strong&gt; — full control of environments, DLP, tenant settings, licenses (within Power Platform scope). Sufficient for almost all governance work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamics 365 Administrator&lt;/strong&gt; — equivalent scope for Dynamics 365 and Dataverse-backed environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global Administrator&lt;/strong&gt; — superset; not recommended for day-to-day platform work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fabric Administrator&lt;/strong&gt; — required for Power BI workspace and capacity governance that overlaps Power Platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assign least-privileged roles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/use-service-admin-role-manage-tenant" rel="noopener noreferrer"&gt;Microsoft Entra roles for Power Platform&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.2 Map environment roles to job function
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Environment roles control everything inside an environment, including who can hand out further roles. A misassignment here is hard to roll back without auditing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Inside each environment, the standard roles are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;System Administrator&lt;/strong&gt; — root of the environment; can assign any role.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Customizer&lt;/strong&gt; — schema and solution changes without user management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment Maker&lt;/strong&gt; — create apps, flows, agents, and custom connectors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Basic User&lt;/strong&gt; — runtime access to assigned records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delegated Admin&lt;/strong&gt; — scoped admin, granted via Microsoft Entra ID groups.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/database-security" rel="noopener noreferrer"&gt;Dataverse security roles&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.3 Build custom roles from a known baseline
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Privileges in Dataverse are granular; granting &lt;code&gt;*&lt;/code&gt; privileges in a custom role is the fastest way to recreate the problems custom roles were supposed to solve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Always start from a copy of an out-of-box role and remove or add the privileges you need at table, action, and column level. Avoid wildcard privileges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/database-security" rel="noopener noreferrer"&gt;Dataverse security roles&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.4 Prefer teams over individual sharing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Individual record sharing is auditable in theory and unmaintainable in practice. Teams turn membership into access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Use &lt;strong&gt;Owner teams&lt;/strong&gt; or &lt;strong&gt;Access teams&lt;/strong&gt; for direct ownership and sharing. For large memberships, use &lt;strong&gt;Microsoft Entra group teams&lt;/strong&gt; so group membership drives row access automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/manage-group-teams" rel="noopener noreferrer"&gt;Microsoft Entra group teams&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.5 Use service principals for non-interactive work
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Pipelines, integrations, and admin automation should not depend on human accounts. Service principals carry their own lifecycle and credentials, which is what audit and compliance expect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Register the app in Microsoft Entra ID, then assign an application user:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pac admin create-service-principal &lt;span class="sb"&gt;`&lt;/span&gt;
  &lt;span class="nt"&gt;--environment&lt;/span&gt; &amp;lt;env-id&amp;gt; &lt;span class="sb"&gt;`&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"Pipelines SPN"&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;
  &lt;span class="nt"&gt;--role&lt;/span&gt; &lt;span class="s2"&gt;"System Administrator"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rotate secrets and prefer federated credentials or managed identities where supported.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/manage-application-users" rel="noopener noreferrer"&gt;Application users&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.6 Apply Conditional Access and MFA
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Identity is the perimeter. Conditional Access and MFA are how that perimeter actually behaves under load — risky logins, anomalous locations, compromised credentials.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Apply Conditional Access to the &lt;code&gt;Power Platform API&lt;/code&gt; app and to &lt;code&gt;Microsoft Dataverse&lt;/code&gt;. Enforce MFA for administrators and for makers who connect to sensitive data sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/conditional-access" rel="noopener noreferrer"&gt;Conditional Access&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Monitoring, Analytics, and Tenant Inventory
&lt;/h2&gt;

&lt;p&gt;Governance without telemetry degrades quickly. Power Platform exposes several monitoring surfaces; the &lt;strong&gt;Inventory&lt;/strong&gt;, &lt;strong&gt;Usage&lt;/strong&gt;, &lt;strong&gt;Monitor&lt;/strong&gt;, and &lt;strong&gt;Actions&lt;/strong&gt; experiences in the Power Platform admin center wrap them into a tenant-wide inventory and alerting layer that Microsoft maintains as a first-party feature. The community &lt;strong&gt;CoE Starter Kit&lt;/strong&gt; filled this role for years but is no longer actively maintained — section 8.6 covers what that transition means in practice.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.1 Use admin center analytics for per-environment visibility
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Most operational questions ("is anyone using this app?", "are flow runs failing?") have answers in the admin center. Reaching for the CoE Starter Kit before checking the built-in analytics wastes time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Per-environment charts cover Power Apps usage, Power Automate runs, Dataverse API calls, and Copilot Studio sessions. Tenant-level analytics must be enabled in tenant settings before charts populate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/tenant-level-analytics" rel="noopener noreferrer"&gt;Tenant-level analytics&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.2 Push the weekly digest to a wider audience
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; The digest is a high-signal, low-noise summary. Only Power Platform and Dynamics 365 admins receive it by default, which is usually too narrow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Add CoE leads, security reviewers, and operations partners using &lt;code&gt;additionalAdminDigestEmailRecipients&lt;/code&gt; (mechanics in section 3.2).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/managed-environment-usage-insights" rel="noopener noreferrer"&gt;Usage insights (weekly digest)&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.3 Stream audit events to Microsoft Purview
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Platform-level actions — DLP changes, environment creations, sharing events — must be reviewable months after they happen. Purview is the long-term store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Power Platform activities flow natively into the Microsoft Purview unified audit log. Search them in the Purview portal, with the &lt;code&gt;Search-UnifiedAuditLog&lt;/code&gt; Exchange Online PowerShell cmdlet, or via the Microsoft 365 Audit API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/manage-dataverse-auditing" rel="noopener noreferrer"&gt;Audit logs and Purview&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/purview/audit-search" rel="noopener noreferrer"&gt;Search the audit log&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.4 Turn on Dataverse auditing per table
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Per-table read and change auditing is the only way to answer record-level forensic questions ("who saw this row?", "what changed and when?"). Without it, the trail stops at the API layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Enable auditing on tables that hold sensitive data. Retention follows the environment's audit retention setting; review it before assuming you have history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/manage-dataverse-auditing" rel="noopener noreferrer"&gt;Audit logs and Purview&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.5 Export to Application Insights
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Built-in analytics is summary-level. Application Insights gives you raw traces for performance and error analysis — the same signal an Azure team would expect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; In an environment's settings under &lt;code&gt;Product &amp;gt; Application Insights (preview)&lt;/code&gt;, add the connection string:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;InstrumentationKey&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;&lt;/span&gt;
&lt;span class="py"&gt;IngestionEndpoint&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;https://westeurope-1.in.applicationinsights.azure.com/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Power Apps emit &lt;code&gt;pageView&lt;/code&gt;, &lt;code&gt;traceEvent&lt;/code&gt;, and error events; model-driven apps add form performance metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/admin/app-insights-app-making" rel="noopener noreferrer"&gt;Application Insights for Power Platform&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.6 The CoE Starter Kit and ALM Accelerator — what changed
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; Until recently, the &lt;strong&gt;CoE Starter Kit&lt;/strong&gt; and the &lt;strong&gt;ALM Accelerator for Power Platform&lt;/strong&gt; were the two community-driven kits most enterprise governance setups leaned on — one for inventory and oversight, the other for solution promotion and source control. Native, in-product experiences now supersede both, and following the old guidance without qualification leads new tenants into a maintenance dead end.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Two formal status updates to be aware of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CoE Starter Kit — no longer actively maintained (Microsoft, May 2026).&lt;/strong&gt; The Microsoft Learn page now opens with a clear notice: &lt;em&gt;"The Power Platform CoE Starter Kit is no longer actively maintained. Its core capabilities are part of the Power Platform admin center. Issues are no longer reviewed or addressed."&lt;/em&gt; The kit remains available for existing and new deployments, but it will not receive new features, and GitHub issues are not triaged. Microsoft directs admins to the native admin center experiences instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inventory&lt;/strong&gt; — view and govern all apps, flows, and agents across the tenant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage&lt;/strong&gt; — track adoption and identify top resources and their owners.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor&lt;/strong&gt; — operational health of heavily used resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actions&lt;/strong&gt; — surface risks, enforce best practices, and act on governance insights.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Beyond the UI, the same data is reachable through the &lt;strong&gt;Power Platform CLI&lt;/strong&gt;, the &lt;strong&gt;Power Platform API&lt;/strong&gt;, the &lt;strong&gt;Power Platform inventory API&lt;/strong&gt;, and the &lt;strong&gt;Power Platform for Admins V2&lt;/strong&gt; connector — which is what to build automation against going forward.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ALM Accelerator for Power Platform — formally deprecated (Microsoft Learn page last updated 2024-04-24).&lt;/strong&gt; Microsoft's overview page is now titled &lt;em&gt;"ALM Accelerator for Power Platform (Deprecated)"&lt;/em&gt; and carries this notice: &lt;em&gt;"The ALM Accelerator is deprecated and will be removed in a future release. Use Pipelines in Power Platform to bring ALM automation capabilities to Power Platform and Dynamics 365 services. Pipelines can be used with source code integration or extended to integrate with other providers."&lt;/em&gt; The accelerator was a canvas-app-plus-Azure-Pipelines reference implementation; the strategic replacement is the in-product &lt;strong&gt;Power Platform Pipelines&lt;/strong&gt; experience (introduced in section 3.5 and detailed in part 2). The accelerator continues to function for now, but no new investment is being made in it, and it is on track to be removed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical recommendation.&lt;/strong&gt; If you already run either kit, keep operating it — neither is being switched off tomorrow — but stop building new dependencies on top of it. For inventory, attestation, and orphaned-asset detection, build against the admin center experiences and the inventory API. For ALM, route new solutions through Power Platform Pipelines and plan a migration off the ALM Accelerator to avoid being caught out when a removal date is announced. Tenants starting from scratch in 2026 should skip both kits and build directly on the in-product surfaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/power-platform/guidance/coe/starter-kit" rel="noopener noreferrer"&gt;CoE Starter Kit transition to Power Platform admin center&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/guidance/alm-accelerator/overview" rel="noopener noreferrer"&gt;ALM Accelerator for Power Platform (Deprecated)&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/alm/pipelines" rel="noopener noreferrer"&gt;Power Platform Pipelines&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/power-platform/admin/programmability-authentication-v2" rel="noopener noreferrer"&gt;Power Platform inventory API&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.7 Forward to Microsoft Sentinel
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt; SOCs want one queue. Forwarding Power Platform signals to Sentinel places platform incidents alongside other security telemetry, rather than in a separate, unmonitored location.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; Forward the Power Platform activity log and Purview audit events to Sentinel via the &lt;code&gt;Microsoft Power Platform administrative logs&lt;/code&gt; data connector. Pre-built analytic rules cover suspicious DLP changes, mass app sharing, and unauthenticated agent publishing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/azure/sentinel/data-connectors/microsoft-power-platform" rel="noopener noreferrer"&gt;Sentinel connector&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Outlook: what part 2 covers
&lt;/h2&gt;

&lt;p&gt;Part 1 has established the platform-level perimeter — the environments themselves, the policies that bind them, the identities that reach them, and the telemetry that watches them. None of those controls answers the question of what gets &lt;em&gt;built&lt;/em&gt; inside that perimeter, or how that work moves from a maker's hands into production. That is the territory of part 2.&lt;/p&gt;

&lt;p&gt;Next week's article picks up where this one ends and walks through six topics in the same Why → How → Learn more pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Governing Microsoft Copilot Studio.&lt;/strong&gt; Tenant- and environment-level controls for AI agents, including who can publish, what AI features are allowed where, how knowledge sources are scoped, and how transcripts are retained.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent authentication and connector governance.&lt;/strong&gt; The three authentication modes, the Entra Agent ID model that replaces stored client secrets, the connectors that should be blocked in regulated tenants, and the action-level controls that turn dangerous connectors into safe-but-useful ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Application Lifecycle Management and pipelines.&lt;/strong&gt; Solutions as the unit of deployment, environment variables and connection references, Power Platform Pipelines as the native promotion path (and the strategic replacement for the now-deprecated ALM Accelerator for Power Platform), and when to fall back to Azure DevOps or GitHub.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solution checker and quality gates.&lt;/strong&gt; Static analysis for apps, flows, and agents; how to enforce it at solution import; how to read SARIF output; and how agent evaluations complement structural checks with behavioral ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Licensing and capacity governance.&lt;/strong&gt; Power Apps and Power Automate license models, Dataverse capacity allocation, the Copilot Credits consumption model and its gotchas, and how to keep license assignment in sync with employment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change management and release rings.&lt;/strong&gt; The two release channels that actually exist for Power Platform (Auto and Monthly — there is no Semi-Annual), how to gate previews per environment group, in-tenant change categories, administration mode, manual backups, and rollback realities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you treat part 1 as the platform on which everything stands, part 2 is everything that runs on that platform. The two are designed to be read together: the controls in part 1 matter only because they shape the work covered in part 2, and the controls in part 2 stick only because the foundations in part 1 hold them up.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion (Part 1)
&lt;/h2&gt;

&lt;p&gt;Platform-level governance is the foundation of everything else. It is the cumulative result of many small, well-placed controls working together: an environment topology that matches how the organization actually builds, a default environment treated as a perimeter rather than a playground, Managed Environments and environment groups that make policy enforceable at scale, DLP and tenant isolation that bound where data can move, identity and Conditional Access that decide who is allowed to touch the platform at all, and monitoring that turns activity into evidence.&lt;/p&gt;

&lt;p&gt;The controls described in this article already exist on the platform. None of them requires custom engineering, third-party tooling, or preview access to be useful. What they require is decision-making: which environments belong in which group, which connectors are business versus non-business, which tenants are trusted for cross-tenant connections, and who has the right to administer what. Those decisions &lt;em&gt;are&lt;/em&gt; the platform half of governance.&lt;/p&gt;

&lt;p&gt;Start small and iterate. A minimum viable foundation is: restrict default environment creation, attach a tenant-wide baseline DLP policy, enable default environment routing with a Managed Environments group, turn on tenant-level analytics, lean on the Power Platform admin center's &lt;strong&gt;Inventory&lt;/strong&gt;, &lt;strong&gt;Usage&lt;/strong&gt;, &lt;strong&gt;Monitor&lt;/strong&gt;, and &lt;strong&gt;Actions&lt;/strong&gt; experiences (the CoE Starter Kit is no longer actively maintained — see section 8.6), and verify your tenant isolation defaults. Everything in part 1 is a refinement on that minimum viable foundation; everything in part 2 will be a refinement on top of part 1.&lt;/p&gt;

&lt;p&gt;Read on next week for the second half — agents, ALM, licensing, and change management — and a closing recap that ties both articles together.&lt;/p&gt;

</description>
      <category>copilotstudio</category>
      <category>powerplatform</category>
      <category>governance</category>
    </item>
    <item>
      <title>Microsoft Agent 365: The Control Plane for AI Agents Is Now Generally Available</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 09 May 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/holgerimbery/microsoft-agent-365-the-control-plane-for-ai-agents-is-now-generally-available-ggi</link>
      <guid>https://dev.to/holgerimbery/microsoft-agent-365-the-control-plane-for-ai-agents-is-now-generally-available-ggi</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Summary Lede&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
On 1 May 2026, Microsoft moved &lt;strong&gt;Agent 365&lt;/strong&gt; from preview into &lt;strong&gt;general availability&lt;/strong&gt; , positioning it as the control plane that organizations need in order to &lt;strong&gt;observe, govern, and secure&lt;/strong&gt; the rapidly growing population of AI agents working across their tenants. The service is licensed at &lt;strong&gt;fifteen US dollars per user per month&lt;/strong&gt; as a standalone add-on, or as a component of the new &lt;strong&gt;Microsoft 365 E7&lt;/strong&gt; suite, and it integrates directly with the security and compliance products that most enterprises already operate, including &lt;strong&gt;Microsoft Entra&lt;/strong&gt; , &lt;strong&gt;Microsoft Purview&lt;/strong&gt; , and &lt;strong&gt;Microsoft Defender&lt;/strong&gt;. Rather than introducing yet another place to build agents, Agent 365 sits above existing platforms and consolidates operational disciplines that have, until now, been distributed across many disconnected tools and dashboards.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Why read this:&lt;/strong&gt; If your organization has begun deploying AI agents — whether built in Copilot Studio, embedded in third-party SaaS, developed in Microsoft Foundry, or installed by users on their own devices — you are facing a governance question that did not exist eighteen months ago. This article explains what Agent 365 actually is, what it changes in the operating model of an organization that has already invested in Microsoft 365 Copilot, and how to take the first practical steps after acquiring a license. It is intended to bring the moving parts into a single, coherent narrative you can use when you brief stakeholders, plan a pilot, or write your internal adoption proposal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction: Why a Control Plane for Agents Is Now a Necessity
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI agents are no longer a category of pilot project owned by a single innovation team.&lt;/strong&gt; They are appearing inside Word, Excel, PowerPoint, Outlook, Teams, partner SaaS portals, custom-built applications, and, increasingly, on the local workstations of individual employees who have installed AI assistants on their own initiative. According to figures Microsoft cites from IDC, the worldwide population of AI agents is expected to reach approximately &lt;strong&gt;1.3 billion by 2028&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Even at a small fraction of that figure, the implications for an enterprise tenant are significant. The questions IT leaders are being asked have outpaced the tools available to answer them: &lt;em&gt;Which agents are running in our tenant today? Who owns each one? What data does each one touch, and on whose authority? Is it behaving as expected? If it has been compromised, when, by whom, and how would we know?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Microsoft now refers to this phenomenon openly as &lt;strong&gt;agent sprawl&lt;/strong&gt; , and a newer category — the so-called &lt;strong&gt;shadow agent&lt;/strong&gt; , meaning a local AI assistant installed on an endpoint without IT approval — has begun to appear on enterprise risk registers because it represents an identity-less, policy-less, telemetry-less actor with access to the same documents and chats as its human user. A control plane is the established architectural answer to this class of problem, and &lt;strong&gt;Agent 365 is, very deliberately, that control plane&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Microsoft Agent 365 Actually Is
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Agent 365 is a tenant-level service that gives administrators a single, authoritative view of every AI agent operating in the organization, together with the policy, identity, and security mechanisms required to manage them at scale.&lt;/strong&gt; Microsoft summarizes its purpose using three verbs that recur throughout the official documentation: &lt;strong&gt;observe, govern, and secure&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To &lt;strong&gt;observe&lt;/strong&gt; means that administrators have real-time visibility into the agents in their environment, what those agents are doing, and how they are performing.&lt;/li&gt;
&lt;li&gt;To &lt;strong&gt;govern&lt;/strong&gt; means that the lifecycle of each agent — from registration, through approval and assignment, to retirement — is controlled through consistent policies rather than ad-hoc decisions.&lt;/li&gt;
&lt;li&gt;To &lt;strong&gt;secure&lt;/strong&gt; means that the same enterprise-grade identity, data protection, and threat detection that already apply to users are extended, faithfully, to agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The service is built around five capabilities that Microsoft consistently identifies as the pillars of the offering:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pillar&lt;/th&gt;
&lt;th&gt;Role in the control plane&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Registry&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A unified inventory of every agent in the organization — including those issued an Entra Agent ID, those published in the Microsoft Teams or Agent Store, and shadow agents discovered on endpoints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access Control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unique &lt;strong&gt;Entra Agent ID&lt;/strong&gt; for every agent, with policy templates and adaptive, risk-based access decisions enforced by Microsoft Entra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Visualization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Telemetry, dashboards, role-based reports for IT, security, and business audiences, plus an &lt;strong&gt;Agent Map&lt;/strong&gt; of relationships between agents, users, and resources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interoperability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Governs agents built with Microsoft tools, with open-source frameworks, and with ecosystem partner platforms; agents can use the same Microsoft 365 context that users do&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Integration with &lt;strong&gt;Microsoft Defender&lt;/strong&gt; , &lt;strong&gt;Microsoft Entra&lt;/strong&gt; , and &lt;strong&gt;Microsoft Purview&lt;/strong&gt; for threat detection, identity protection, data loss prevention, and compliance&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;It is also worth being precise about what Agent 365 is &lt;em&gt;not&lt;/em&gt;. &lt;strong&gt;It is not a new platform for building agents.&lt;/strong&gt; Copilot Studio, Microsoft Foundry, and external frameworks remain the places where agents are designed, configured, and developed. Agent 365 is the layer above those platforms — the layer that ensures whatever you build, or whatever a partner ships into your tenant, becomes a managed, identified, observed, and governable entity within your organization.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Five Pillars in Greater Detail
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Registry
&lt;/h3&gt;

&lt;p&gt;The Registry is, in many respects, the foundational capability, because every other discipline depends on having an authoritative inventory. Through the Registry, administrators see a unified list of agents that includes those issued an Entra Agent ID, those published in the Microsoft Teams Store or the Agent Store, and — as discovery functionality continues to roll out — shadow agents detected on managed Windows endpoints by Microsoft Defender and Microsoft Intune. From the Registry, administrators can install agents for selected audiences, block or unblock them across the organization, assign or reassign owners, publish requested agents to the store, reject submissions, or delete agents and their associated files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Access Control through Entra Agent ID
&lt;/h3&gt;

&lt;p&gt;Each agent is given a unique identity, the &lt;strong&gt;Entra Agent ID&lt;/strong&gt; , which enables agents to be governed in the same identity-centric manner as human users. Administrators can apply &lt;strong&gt;policy templates&lt;/strong&gt; that encode standard guardrails on day one, and Microsoft Entra enforces adaptive, risk-based access decisions that respond to real-time context, blocking agents that show signs of compromise from reaching organizational resources. The principle of least privilege, long established for human accounts and service principals, is now available in operation for agents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Visualization
&lt;/h3&gt;

&lt;p&gt;The visualization layer goes beyond conventional dashboards. In addition to Telemetry, alerts, and role-based reports tailored separately to IT, security, and business audiences, Agent 365 provides an &lt;strong&gt;Agent Map&lt;/strong&gt; that displays the relationships between agents, the users on whose behalf they act, and the resources they connect to. This is particularly valuable for spotting unintended data flows or excessive privilege. Microsoft also references &lt;strong&gt;built-in performance measurement&lt;/strong&gt; to help decision-makers assess return on investment. However, the granularity of those metrics will, in practice, depend on the specific agents and host applications involved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interoperability
&lt;/h3&gt;

&lt;p&gt;The interoperability story is significant because it acknowledges that agents in a real enterprise are not all built on the same platform. Agent 365 governs agents created with Microsoft tools, with open-source frameworks, and with &lt;strong&gt;ecosystem partner platforms&lt;/strong&gt; , with pre-integrated partner agents available to deploy directly from the Microsoft 365 admin center at general availability. Agents can access the same Microsoft 365 context that users do — Teams, calendars, mailboxes, SharePoint — and Microsoft has highlighted unified SDKs and consistent &lt;strong&gt;Model Context Protocol (MCP) interfaces&lt;/strong&gt; for developers building agentic tools across Outlook, Teams, and SharePoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;p&gt;The security pillar is delivered through tight integration with the existing Microsoft security stack rather than through a parallel set of agent-specific tools.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Purview&lt;/strong&gt; brings information protection, data loss prevention, sensitivity labels, eDiscovery, Insider Risk Management, and the data security posture management capability for AI (often referred to as DSPM for AI) into scope for agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Defender XDR&lt;/strong&gt; contributes agent inventory, real-time runtime protection, threat hunting, and security posture management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Entra&lt;/strong&gt; contributes adaptive access enforcement and, as announced at RSAC 2026, network-level prompt-injection protection and explicit shadow-AI detection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cumulative effect is that agents become first-class citizens of your existing security operations rather than exceptions that need to be handled separately.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changes Operationally with Agent 365
&lt;/h2&gt;

&lt;p&gt;For organizations that have been running Microsoft 365 Copilot for some time, the introduction of Agent 365 changes several aspects of day-to-day operations in concrete ways:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Before Agent 365&lt;/th&gt;
&lt;th&gt;With Agent 365&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Identity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agents represented by shared service accounts or app registrations&lt;/td&gt;
&lt;td&gt;Every agent receives a unique &lt;strong&gt;Entra Agent ID&lt;/strong&gt; and is governed individually&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Inventory&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scattered across Teams Store, Copilot Studio, partner portals&lt;/td&gt;
&lt;td&gt;Single &lt;strong&gt;Agent Registry&lt;/strong&gt; view in the Microsoft 365 admin center&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Per-agent manual permission grants&lt;/td&gt;
&lt;td&gt;Policy-template-driven, adaptive, risk-based enforcement through Microsoft Entra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Observability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vendor-specific dashboards&lt;/td&gt;
&lt;td&gt;Unified telemetry, role-based reports, and an &lt;strong&gt;Agent Map&lt;/strong&gt; of relationships&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Security and compliance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reaching into agent behaviour required significant effort&lt;/td&gt;
&lt;td&gt;Native coverage through the same &lt;strong&gt;Defender&lt;/strong&gt; , &lt;strong&gt;Entra&lt;/strong&gt; , and &lt;strong&gt;Purview&lt;/strong&gt; controls used today&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The new shadow-AI dimension is also worth highlighting. Until now, an unsanctioned local AI assistant on an employee’s laptop has been more or less invisible to IT. With Agent 365, Defender, and Intune, surface those agents in the Registry so administrators can quarantine them, block them from accessing organizational resources, or, where appropriate, formally onboard them under policy. This is one of the more visibly novel capabilities of the GA release.&lt;/p&gt;

&lt;h2&gt;
  
  
  Licensing and Availability
&lt;/h2&gt;

&lt;p&gt;Microsoft Agent 365 is licensed on a &lt;strong&gt;per-user basis&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Standalone price:&lt;/strong&gt; fifteen US dollars per user per month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bundled option:&lt;/strong&gt; included in the new &lt;strong&gt;Microsoft 365 E7&lt;/strong&gt; suite, which combines Microsoft 365 E5, Microsoft 365 Copilot, the Microsoft Entra Suite, and Agent 365 into a single offering aimed at enterprises that want to standardize on a fully integrated identity, productivity, and agent-governance platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Availability segment:&lt;/strong&gt; Commercial cloud at general availability. Microsoft’s documentation also notes that &lt;strong&gt;Microsoft 365 for Government Community Cloud High and Government Community Cloud Moderate&lt;/strong&gt; environments support agent publishing scenarios.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are no strict product prerequisites to enable Agent 365. Still, Microsoft recommends that customers hold &lt;strong&gt;Microsoft Entra P1, Entra P2, or the Entra Suite&lt;/strong&gt; , alongside &lt;strong&gt;Microsoft Purview Data Loss Prevention&lt;/strong&gt; , to make full use of the governance and security benefits. A Microsoft 365 Copilot license remains necessary to use Copilot-based agents. Pricing details should always be validated with your account team, since regional adjustments, channel offers, and bundle economics can materially change the total cost of ownership.&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking Your First Steps After Acquiring a License
&lt;/h2&gt;

&lt;p&gt;One of the most pragmatic aspects of Agent 365 is that &lt;strong&gt;there is no infrastructure to deploy&lt;/strong&gt;. The service is activated via licensing and configured in the Microsoft 365 admin center, so the initial steps are administrative rather than technical. The following sequence reflects the recommended path from the Microsoft Learn documentation, organized as most teams will execute it in practice.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Confirm Roles and Licenses
&lt;/h3&gt;

&lt;p&gt;Begin by ensuring that the right people hold the right roles. Please assign the &lt;strong&gt;Global Administrator&lt;/strong&gt; role and any other agent-administration roles required for your organization, in line with your least-privilege practices. At the same time, confirm that the audiences for which you intend to enable agents have appropriate licenses in place — Microsoft 365 Copilot in particular, but also any Entra and Purview SKUs that you plan to rely on for governance and protection.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Open the Agents Area in the Microsoft 365 Admin Center
&lt;/h3&gt;

&lt;p&gt;Sign in to the &lt;strong&gt;Microsoft 365 admin center&lt;/strong&gt; , expand &lt;strong&gt;… Show all&lt;/strong&gt; in the left navigation, select &lt;strong&gt;Agents&lt;/strong&gt; , and open &lt;strong&gt;All agents&lt;/strong&gt;. This view, with &lt;strong&gt;Registry&lt;/strong&gt; selected, is the canonical inventory of every agent known in your tenant. It is worth spending time here before making any operational decisions; many organizations are surprised by what already exists in their environment once it is presented in a single list.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Establish a Baseline Policy
&lt;/h3&gt;

&lt;p&gt;Before approving anything broadly, define and apply an &lt;strong&gt;Agent Policy Template&lt;/strong&gt; that captures your organization’s standards. The template determines, among other things, which connectors and data sources agents may use, what sensitivity-label boundaries apply, and which Conditional Access conditions Entra should enforce. Treat this template as a living governance artifact, deliberately version it, and review it with your security and data-protection stakeholders before it becomes the default for new approvals.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Activate or Install Your First Agent
&lt;/h3&gt;

&lt;p&gt;To install an agent for users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the agent from the Registry list.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;Install&lt;/strong&gt; in the agent details pane.&lt;/li&gt;
&lt;li&gt;Decide whether the deployment scope should be the entire organization or specific users and groups, and select &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Review the requested permissions, and select &lt;strong&gt;Grant admin consent&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Accept the requested permissions, and select &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Finish deployment&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent will subsequently appear in the relevant host product — Copilot, Teams, Outlook, or another Microsoft 365 surface — for the chosen audience.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Process Activation and Approval Requests
&lt;/h3&gt;

&lt;p&gt;End users can request agents from the Microsoft Teams Store or the Agent Store, and those requests surface to administrators for review. Each request can be approved and activated, or rejected with a rationale. From a governance perspective, formally approving or rejecting requests is at least as important as installing approved agents, because it creates the decision trail that auditors and risk reviewers will look for in 12 months.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Turn On Observability and Security
&lt;/h3&gt;

&lt;p&gt;The full value of Agent 365 only emerges when its companion services are correctly configured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In &lt;strong&gt;Microsoft Purview&lt;/strong&gt; , enable the data security posture management capability for AI, configure DLP policies that include agent identities, and bring agent interactions into your retention and eDiscovery scope.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Microsoft Defender XDR&lt;/strong&gt; , review the agent inventory, switch on real-time runtime protection for agents, and integrate agent telemetry into your existing threat-hunting workflows.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Microsoft Entra&lt;/strong&gt; , define the adaptive access policies that should apply to agent identities, and decide explicitly whether and how external parties may interact with your agents — by default, agents behave as internal identities and external access is constrained by administrative policy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. Use the Agent Map to Validate Reality Against Intent
&lt;/h3&gt;

&lt;p&gt;Once a small number of agents are running under the new policies, open the &lt;strong&gt;Agent Map&lt;/strong&gt; to inspect the relationships between agents, users, and data sources. This is the single most effective way to detect unintended privilege, unexpected agent-to-agent connections, or data flows that violate your sensitivity-label model. The Map is intended to make excessive privilege visually obvious, and it should become a regular part of your operational review cadence.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Maintain Lifecycle Hygiene
&lt;/h3&gt;

&lt;p&gt;Agent 365 supports a comprehensive set of lifecycle actions through the Microsoft 365 admin center, including &lt;strong&gt;install, uninstall, block, unblock, assign a new owner, publish to the store, reject a submission, and delete&lt;/strong&gt;. Schedule a recurring review — quarterly is a reasonable starting point — to identify orphaned, unused, or stale agents and retire them deliberately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Guidance for a Successful Rollout
&lt;/h2&gt;

&lt;p&gt;A few principles consistently distinguish successful rollouts from those that struggle:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Begin with discovery rather than deployment.&lt;/strong&gt; The first weeks should be spent observing what already exists in your tenant before approving anything new, because the inventory you uncover will materially shape your governance design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Please assign an Agent Owner to each agent&lt;/strong&gt;. Agents without accountable human owners tend, over time, to drift outside policy. Make ownership explicit at registration and revisit it quarterly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Treat the initial Agent 365 program as a security and compliance project at least as much as a productivity project.&lt;/strong&gt; The most defensible early wins are reducing shadow-AI exposure and producing a credible audit trail. Productivity outcomes follow naturally once stakeholders trust the guardrails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Be honest about the operational overhead.&lt;/strong&gt; A control plane only delivers value if someone is operating it. Plan for a small but explicit team responsible for policy templates, request triage, agent reviews, and lifecycle hygiene, and make sure that the team has the authority to say no when an agent does not meet your standards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Evaluate the Microsoft 365 E7 bundle carefully&lt;/strong&gt; if you are already an E5 customer. The bundle economics can become attractive once Microsoft 365 Copilot, the Entra Suite, and Agent 365 are all in scope. Still, the decision should be evaluated through a deliberate commercial analysis rather than a reflex.&lt;/p&gt;

&lt;h2&gt;
  
  
  Caveats and What to Watch
&lt;/h2&gt;

&lt;p&gt;Several aspects of the service deserve a measured note:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shadow-agent detection&lt;/strong&gt; is described in Microsoft’s announcement materials as a capability that will continue to expand over time, which suggests that initial coverage will improve as the service matures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance and ROI metrics&lt;/strong&gt; are real. Still, their granularity in any given environment will depend on the specific agents and host applications you operate, so it is wise to validate them against your own reporting needs early.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;End-to-end value depends on companion services.&lt;/strong&gt; Because Agent 365 spans several Microsoft products, the value you obtain will depend on how thoroughly Entra, Purview, and Defender are configured in your tenant — partial deployments will yield partial value.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion: A Single, Coherent Place to Govern Agents
&lt;/h2&gt;

&lt;p&gt;The general availability of Microsoft Agent 365 is a significant milestone, less because it introduces dramatic new capabilities than because it &lt;strong&gt;consolidates a set of operational disciplines that enterprises have urgently needed&lt;/strong&gt;. Organizations have been building, buying, and deploying AI agents for some time. The absence of a unified control plane has become increasingly difficult to defend against in front of security committees, auditors, and regulators. Agent 365 closes that gap by extending the same identity, governance, and security model that already underpins your users to the agents that increasingly act alongside them.&lt;/p&gt;

&lt;p&gt;For most Microsoft 365 customers, the practical implication is straightforward. The infrastructure question is settled, the licensing path is clear, the integration with the existing Entra, Purview, and Defender stack is real, and the first steps are administrative rather than technical. What remains is the work that always determines the success of a governance program: &lt;strong&gt;defining sensible policy, assigning accountable owners, observing what is happening in your tenant, and acting on what you learn&lt;/strong&gt;. Agent 365 will not do that work for you, but it now provides — for the first time — a single, coherent place in which to do it.&lt;/p&gt;

&lt;p&gt;If you are considering when to begin, the answer is almost certainly now. &lt;em&gt;The agents are already there. The control plane is finally here.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Official Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft Learn — &lt;em&gt;Microsoft Agent 365 overview&lt;/em&gt; (&lt;a href="https://learn.microsoft.com/en-us/microsoft-agent-365/overview" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/microsoft-agent-365/overview&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;em&gt;Get started with Microsoft Agent 365&lt;/em&gt; (&lt;a href="https://learn.microsoft.com/en-us/microsoft-agent-365/get-started" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/microsoft-agent-365/get-started&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Microsoft Learn — &lt;em&gt;Governance and Lifecycle actions for agents available in Microsoft 365 admin center&lt;/em&gt; (&lt;a href="https://learn.microsoft.com/en-us/microsoft-365/admin/manage/agent-actions" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/microsoft-365/admin/manage/agent-actions&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Microsoft 365 Blog — &lt;em&gt;Microsoft Agent 365: The control plane for AI agents&lt;/em&gt; (Charles Lamanna, Executive Vice President, Business Applications &amp;amp; Agents, November 2025) (&lt;a href="https://www.microsoft.com/en-us/microsoft-365/blog/2025/11/18/microsoft-agent-365-the-control-plane-for-ai-agents/" rel="noopener noreferrer"&gt;https://www.microsoft.com/en-us/microsoft-365/blog/2025/11/18/microsoft-agent-365-the-control-plane-for-ai-agents/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Microsoft — &lt;em&gt;Microsoft Agent 365: The Control Plane for Agents&lt;/em&gt; (product page, &lt;a href="https://www.microsoft.com/en-us/microsoft-agent-365" rel="noopener noreferrer"&gt;https://www.microsoft.com/en-us/microsoft-agent-365&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Microsoft Copilot Acceleration Team — &lt;em&gt;Microsoft Agent 365 Resources&lt;/em&gt; (&lt;a href="https://microsoft.github.io/agent-resources/agent365/" rel="noopener noreferrer"&gt;https://microsoft.github.io/agent-resources/agent365/&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agent365</category>
      <category>githubcopilot</category>
      <category>entra</category>
      <category>purview</category>
    </item>
    <item>
      <title>Copilot Studio Billing – A Short Answer to a Frequent Question</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 02 May 2026 08:04:40 +0000</pubDate>
      <link>https://dev.to/holgerimbery/copilot-studio-billing-a-short-answer-to-a-frequent-question-50n5</link>
      <guid>https://dev.to/holgerimbery/copilot-studio-billing-a-short-answer-to-a-frequent-question-50n5</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary Lede&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Organizations implementing Microsoft Copilot Studio often ask about the machine structure and how to monitor and analyze resource use across their deployed agents. This article addresses these common questions by examining the foundational principles of Copilot Studio's billing methodology. Specifically, the platform employs a usage-based billing model that operates through Copilot Credits, a standardized measurement unit that quantifies billable computational resources. Microsoft Copilot Studio gives you comprehensive visibility into consumption and costs through integrated Analytics. You get real-time visibility into billing metrics, consumption attribution, and capacity planning, without needing external tools or manual reconciliation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Usage-based billing with Copilot Credits
&lt;/h2&gt;

&lt;p&gt;Microsoft Copilot Studio employs a consumption-based billing model centered on Copilot Credits, a standardized unit of measurement that quantifies the billable computational resources your agent uses. We add up each agent's operational costs by summing all Copilot Credits used across your organizational tenant, providing a transparent, predictable billing framework. The volume of Copilot Credits your agent consumes is determined by multiple contributing factors, including the frequency and intensity of user interactions, the specific AI capabilities invoked during those interactions (such as natural language responses, backend action execution, or business process flows), and the overall complexity of the scenarios the agent must handle. This approach lets your costs scale with your actual usage and feature use across your organization. &lt;/p&gt;

&lt;h2&gt;
  
  
  Where to see billing and consumption
&lt;/h2&gt;

&lt;p&gt;Copilot Studio provides a dedicated Analytics page at the agent level that shows billing‑relevant data for a selected time period. This includes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3p42tumzxnw0a7rmp2ij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3p42tumzxnw0a7rmp2ij.png" alt="upgit_20260401_1775038928.png" width="385" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbfk25eo3xe6e29lgqrm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbfk25eo3xe6e29lgqrm.png" alt="upgit_20260401_1775040164.png" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Total billed Copilot Credits for the agent
&lt;/h3&gt;

&lt;p&gt;The Analytics dashboard provides comprehensive visibility into your agent's billing metrics through several key components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Billing trend visualization&lt;/strong&gt;: A temporal representation of Copilot Credit consumption plotted over your selected time period, enabling stakeholders to identify consumption patterns, peak usage intervals, and seasonal fluctuations in agent utilization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Activity-based consumption breakdown&lt;/strong&gt;: A detailed attribution analysis that segments credit consumption by interaction type and feature category. This granular view helps identify which capabilities—such as natural language processing, action executions, or business process integrations—are the primary drivers of your organization's computational costs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Credit allocation and remaining capacity&lt;/strong&gt;: A dashboard element that displays your monthly credit allocation alongside actual consumption to date, providing clear visibility into remaining available credits within the current billing cycle and helping prevent unexpected cost overruns.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This analytical approach helps makers and administrators go beyond simple cost visibility to understand the factors and user behaviors that drive consumption patterns in their agents. &lt;/p&gt;

&lt;h3&gt;
  
  
  Near‑real‑time visibility
&lt;/h3&gt;

&lt;p&gt;Please note that consumption data in the Analytics experience isn't reflected immediately. Because data collection and aggregation are distributed across Microsoft's infrastructure, there is a deliberate processing interval between when an interaction occurs in your agent and when the corresponding credit consumption metrics appear in the Analytics dashboard. Specifically, recent user activity and associated Copilot Credit charges typically require several hours to propagate through the telemetry pipeline and surface in the analytics interface. This temporal lag between actual consumption and reported metrics is a critical consideration when conducting performance monitoring, particularly in scenarios involving new agent deployments, recent architectural modifications, or optimization initiatives. Organizations implementing consumption tracking during these periods should account for this delay when interpreting analytics data and making operational decisions based on observed billing trends. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;The relationship between billing metrics and agent design decisions is a core principle in building and running Microsoft Copilot Studio deployments. Organizations that recognize and leverage this connection are better positioned to make informed architectural decisions that balance functional requirements with cost efficiency. The Analytics experience provided within Copilot Studio serves a dual purpose that extends well beyond simple billing transparency. As a primary governance tool, it enables organizations to establish consumption baselines, define and enforce cost budgets, and implement optimization strategies at both the agent and organizational levels. This comprehensive analytical framework becomes increasingly critical as agents transition from the experimentation and proof-of-concept phases to production environments, where operational costs accumulate rapidly, and optimization opportunities become more constrained. By establishing clear visibility into consumption patterns during early development stages, teams can identify inefficient architectural patterns, optimize interaction flows, and refine AI capabilities—all before deploying agents at scale. Furthermore, the transparency provided by the Analytics dashboard facilitates organizational governance by empowering stakeholders to establish accountability for resource utilization, track consumption trends against budgetary targets, and make data-driven decisions regarding agent expansion, feature prioritization, and technology investments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links and resources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/requirements-messages-management?source=recommendations" rel="noopener noreferrer"&gt;billing rates&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Microsoft Copilot Studio's billing model, centered on usage-based Copilot Credits, provides a transparent and scalable framework for managing the costs associated with AI agent deployment. By leveraging the built-in Analytics experience, organizations can gain comprehensive insights into their agents' consumption patterns, enabling informed decision-making around agent design, optimization, and cost management. As organizations continue to adopt and scale their use of AI agents, understanding the nuances of billing and consumption visibility will be essential for maximizing the value of their investments in Microsoft Copilot Studio while maintaining control over operational costs.&lt;/p&gt;

</description>
      <category>copilotstudio</category>
      <category>agents</category>
    </item>
    <item>
      <title>Microsoft IQ: The New Intelligence Layer for Enterprise AI Agents</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 25 Apr 2026 08:42:12 +0000</pubDate>
      <link>https://dev.to/holgerimbery/microsoft-iq-the-new-intelligence-layer-for-enterprise-ai-agents-281b</link>
      <guid>https://dev.to/holgerimbery/microsoft-iq-the-new-intelligence-layer-for-enterprise-ai-agents-281b</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary Lede&lt;/strong&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Microsoft's new IQ layers - &lt;strong&gt;Work IQ&lt;/strong&gt;, &lt;strong&gt;Fabric IQ&lt;/strong&gt;, and &lt;strong&gt;Foundry IQ&lt;/strong&gt; - are unified intelligence systems that give enterprise AI agents deep organizational context. Rather than relying solely on general knowledge, these layers ground agents in your company's real data, workflows, and knowledge domains, enabling them to make decisions with the credibility and awareness of experienced employees.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Why read this:&lt;/strong&gt; If you're building or deploying AI agents in enterprise environments, understanding these three intelligence layers is essential. Learn what each layer does, the business value they unlock, practical developer integration steps with Copilot Studio, and real limitations to watch for - whether you're looking to protect your competitive edge or avoid common deployment pitfalls.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction: Why Enterprise Context Is the New AI Differentiator
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI agents - autonomous systems that plan, reason, and act on behalf of users - are moving from experimentation to production at enterprise scale.&lt;/strong&gt; A July 2024 Capgemini survey of 1,100 companies with over \$1 billion in annual revenue found that &lt;strong&gt;82% plan to integrate AI agents within the next one to three years&lt;/strong&gt;, with only 7% reporting no plans at all Of those surveyed, 71% expect AI agents to drive automation, and 64% expect them to free human workers from repetitive tasks so they can focus on higher-value functions. Separately, KPMG's Q2 2025 AI Quarterly Pulse Survey of 130 U.S.-based C-suite leaders (from organizations with \$1 billion or more in revenue) reports that &lt;strong&gt;33% of organizations have now deployed at least some agents - a three-fold increase after two consecutive quarters at 11%&lt;/strong&gt;. The same survey found that &lt;strong&gt;82% of leaders agree their industry's competitive landscape will look fundamentally different within 24 months&lt;/strong&gt; due to AI.&lt;/p&gt;

&lt;p&gt;Yet deploying powerful language models alone does not guarantee business impact. Large language models ship with broad general knowledge but lack awareness of an organization's current data, internal processes, contractual obligations, and human workflow patterns. The real differentiator is no longer &lt;em&gt;how smart the model is&lt;/em&gt;, but &lt;strong&gt;how well it understands your organization&lt;/strong&gt;. At &lt;strong&gt;Microsoft Ignite 2025&lt;/strong&gt;, Microsoft addressed this gap by introducing a &lt;strong&gt;"Unified Context Layer"&lt;/strong&gt; comprising three tightly connected intelligence systems: &lt;strong&gt;Work IQ&lt;/strong&gt;, &lt;strong&gt;Fabric IQ&lt;/strong&gt;, and &lt;strong&gt;Foundry IQ&lt;/strong&gt;. Together, they form &lt;strong&gt;"Microsoft IQ"&lt;/strong&gt; - a unified intelligence layer spanning productivity, data, and knowledge - designed to ground AI agents with deep enterprise context so they can make reliable decisions and continuously optimize operations.&lt;/p&gt;

&lt;p&gt;Each IQ layer addresses a distinct dimension of organizational context:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;IQ Layer&lt;/th&gt;
&lt;th&gt;Context Domain&lt;/th&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Primary Function&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Work IQ&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;User &amp;amp; work context&lt;/td&gt;
&lt;td&gt;Microsoft 365&lt;/td&gt;
&lt;td&gt;Captures collaboration signals - emails, meetings, chats, documents, relationships - and builds persistent memory of how people and teams work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fabric IQ&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Business &amp;amp; data context&lt;/td&gt;
&lt;td&gt;Microsoft Fabric&lt;/td&gt;
&lt;td&gt;Unifies analytical, operational, and real-time data into a governed semantic model with ontologies, graphs, and business rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Foundry IQ&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Knowledge &amp;amp; reasoning context&lt;/td&gt;
&lt;td&gt;Microsoft Foundry (Azure AI Foundry)&lt;/td&gt;
&lt;td&gt;Creates multi-source, permission-aware knowledge bases with agentic retrieval for grounded, citation-backed answers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each workload is standalone, but they can be used together to provide a comprehensive organizational context for agents. For business decision-makers, these layers translate into &lt;strong&gt;faster time-to-insight, more trustworthy AI outputs, and the ability to deploy agents that act with the contextual awareness of experienced employees rather than generic assistants&lt;/strong&gt;. For developers building with &lt;strong&gt;Microsoft Copilot Studio&lt;/strong&gt; (low-code) or the &lt;strong&gt;Microsoft Agent Framework / Agent 365&lt;/strong&gt; (pro-code), the IQ layers provide ready-made intelligence services that eliminate the need to hand-build retrieval pipelines, semantic models, or user-context systems from scratch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93d1mlgwb5q77aluvnjj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93d1mlgwb5q77aluvnjj.png" alt="upgit_20260407_1775544328.png" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Work IQ - Personalizing AI with User &amp;amp; Collaboration Context
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What It Is
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Work IQ is the intelligence layer in Microsoft 365 that gives AI agents a real-time, permission-aware understanding of how people actually work.&lt;/strong&gt; It is built on three tightly integrated layers - &lt;strong&gt;Data, Memory, and Inference&lt;/strong&gt; - that work together to provide Microsoft 365 Copilot and custom agents with continuous contextual understanding of work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data&lt;/strong&gt; unifies signals from files, emails, meetings, chats, and business systems across Microsoft 365 to capture how work happens across the organization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory&lt;/strong&gt; builds a persistent understanding of how people and teams work, enabling agents to stay aligned to priorities and remain consistent across tasks, apps, and sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference&lt;/strong&gt; brings together models, skills, and tools so agents can reason and take action while the &lt;strong&gt;Agent 365 control plane&lt;/strong&gt; ensures those actions remain observable, governed, and compliant.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Work IQ connects to organizational and personal data - SharePoint files, Outlook emails, Teams meetings - and builds personalized memory based on user preferences, habits, and workflows. &lt;strong&gt;Conversational memory&lt;/strong&gt; in Microsoft 365 Copilot, powered by Work IQ, enables it to retain context and important details across sessions by drawing on a user's work profile, instructions, preferences, and insights from past chats. Users stay in control and can review or delete these memories at any time.&lt;/p&gt;

&lt;p&gt;Importantly, Work IQ does not merely retrieve information - &lt;strong&gt;it interprets context&lt;/strong&gt;. This is why a Work IQ-enabled agent can answer questions like &lt;em&gt;"What did we decide last week about the field project budget?"&lt;/em&gt; or &lt;em&gt;"Summarise the latest customer escalations and draft a report"&lt;/em&gt;. It reasons over signals, patterns, and workflows rather than searching a document library.&lt;/p&gt;

&lt;h3&gt;
  
  
  Strategic Value for Business
&lt;/h3&gt;

&lt;p&gt;For decision-makers, Work IQ delivers &lt;strong&gt;personalization at scale&lt;/strong&gt; without sacrificing security. It enables AI agents to recognize who a user works with, what they focus on, and how they typically accomplish tasks. Microsoft is now exposing the power of Work IQ through &lt;strong&gt;APIs&lt;/strong&gt;, allowing developers to build AI agents targeting specific enterprise scenarios beyond what the built-in Copilot offers.&lt;/p&gt;

&lt;p&gt;Work IQ also surfaces &lt;strong&gt;workflow intelligence&lt;/strong&gt; - for example, identifying that operations teams are overloaded handling exceptions manually, observing long email chains, or spotting recurring "delay review" meetings that consume capacity. This kind of insight goes beyond analytics into organizational awareness, helping leaders understand &lt;em&gt;where human effort is being consumed&lt;/em&gt; and where agents can provide the most value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tradeoff consideration:&lt;/strong&gt; Work IQ can only be as effective as the signals it can access. It is accessed primarily through Copilot and works best when collaboration data is well-structured and consistently captured in Microsoft 365 tools. Organizations with fragmented communication (e.g., heavy use of external email, shadow IT chat tools, or poorly organized SharePoint) will see diminished returns until information management improves.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer Integration - Copilot Studio
&lt;/h3&gt;

&lt;p&gt;Work IQ is surfaced to developers as &lt;strong&gt;Model Context Protocol (MCP) tools&lt;/strong&gt; that can be attached to agents in Copilot Studio. The following step-by-step process adds the &lt;strong&gt;Work IQ Mail&lt;/strong&gt; server to an agent:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4or7wocb3mh2u7idd0jl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4or7wocb3mh2u7idd0jl.png" alt="upgit_20260407_1775544135.png" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sign in to &lt;strong&gt;Copilot Studio&lt;/strong&gt; and select or create your agent.&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Tools&lt;/strong&gt; tab and then &lt;strong&gt;Add Tool&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;On the &lt;em&gt;Add tool&lt;/em&gt; page, select &lt;strong&gt;Model Context Protocol&lt;/strong&gt; to see Work IQ MCP servers and other MCP servers.&lt;/li&gt;
&lt;li&gt;Type &lt;strong&gt;"mail"&lt;/strong&gt; in the search box.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Work IQ Mail&lt;/strong&gt; and expand the &lt;strong&gt;connection&lt;/strong&gt; dropdown to select &lt;strong&gt;Create New Connection&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Create&lt;/strong&gt;, provide credentials, and complete the sign-in process.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Add and Configure&lt;/strong&gt; to complete the process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test the agent&lt;/strong&gt; - for example, prompt: &lt;em&gt;"Send an email to [name] and ask how the hands-on lab is going."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;When asked to allow the Work IQ tool to connect and use services, select &lt;strong&gt;Allow&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After configuration, the agent can read email content, understand the context, and respond accordingly. &lt;strong&gt;Repeat these steps&lt;/strong&gt; for &lt;strong&gt;Work IQ Calendar&lt;/strong&gt; or &lt;strong&gt;Work IQ Teams&lt;/strong&gt; to extend the agent's capabilities with meeting insights, chats, and more&amp;gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisite:&lt;/strong&gt; A &lt;strong&gt;Microsoft 365 Copilot license&lt;/strong&gt; is required to use Work IQ MCP servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer Integration - Microsoft Agent Framework (Agent 365)
&lt;/h3&gt;

&lt;p&gt;For pro-code developers, the Work IQ tooling infrastructure is built into the &lt;strong&gt;Microsoft Agent 365 SDK and CLI&lt;/strong&gt;, Microsoft Foundry, and Copilot Studio. Agent 365 provides a secure, centralized gateway for extending agents with enterprise-ready tools through Work IQ for Microsoft 365 services and custom tooling servers for specialized workflows. This means developers building agents programmatically - using the Agent 365 SDK in Python, C#, or other supported languages - can invoke Work IQ's capabilities (querying recent communications, documents, or calendar entries) as part of an agent's reasoning loop without manually calling Microsoft Graph APIs and interpreting raw data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Governance and Security
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;IT administrators retain full control&lt;/strong&gt; over Work IQ MCP tools through the &lt;strong&gt;Microsoft 365 admin center&lt;/strong&gt; under the &lt;strong&gt;Agents and Tools&lt;/strong&gt; section, where they can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View all activated Work IQ MCP servers (Work IQ Mail, Work IQ Calendar, Work IQ Teams, and any custom servers).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow or block&lt;/strong&gt; specific servers based on organizational policies.&lt;/li&gt;
&lt;li&gt;Apply &lt;strong&gt;scoped permissions&lt;/strong&gt; so agents only access what they need.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If an admin blocks a Work IQ MCP tool or MCP server, it blocks access for &lt;strong&gt;every user and every agent&lt;/strong&gt;. Permissions always take precedence over configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observability&lt;/strong&gt; is built in via &lt;strong&gt;Microsoft Defender&lt;/strong&gt;. Admins can run queries in &lt;strong&gt;Advanced Hunting&lt;/strong&gt; to inspect trace logs of tool calls made by agents, monitor execution details (which tools were invoked, parameters passed, and outcomes), and detect anomalies or unauthorized usage patterns.&lt;/p&gt;

&lt;p&gt;All Work IQ MCP servers also undergo &lt;strong&gt;continuous evaluation&lt;/strong&gt;to measure accuracy, latency, and reliability, ensuring production-grade robustness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fabric IQ - Turning Enterprise Data into Business-Meaningful Intelligence
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What It Is
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Fabric IQ (preview) is a workload in Microsoft Fabric that unifies data across OneLake and organizes it in the language of your business.&lt;/strong&gt; The unified data is then exposed to analytics, AI agents, and applications with &lt;strong&gt;consistent semantic meaning and context&lt;/strong&gt;. While Work IQ understands &lt;em&gt;work&lt;/em&gt;, Fabric IQ understands &lt;em&gt;data&lt;/em&gt; - and specifically what data &lt;strong&gt;means&lt;/strong&gt; in business terms.&lt;/p&gt;

&lt;p&gt;Fabric IQ models business data through &lt;strong&gt;ontologies, semantic models, and graphs&lt;/strong&gt; so agents can reason over analytics in OneLake and Power BI. It combines the following items into one semantic intelligence workload&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fabric IQ Item&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ontology (preview)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Enterprise vocabulary and semantic layer that defines entity types, relationships, properties, and condition-action rules (through Fabric Activator). Binds definitions to real data so downstream tools share the same language&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Plan (preview)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unified no-code platform for collaborative planning, reporting, analytics, data integration, and management on a single platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Graph (preview)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Native graph storage and compute for nodes, edges, and traversals over connected data - suited to path finding, dependency analysis, and graph algorithms. Integrated with the ontology item&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data Agent (preview)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Conversational Q&amp;amp;A systems using generative AI that connect to the ontology to understand business concepts when answering questions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Operations Agent (preview)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI agent to monitor real-time data and recommend business actions, aware of business terminology from the ontology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Power BI Semantic Models&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Curated analytics models optimized for reporting and interactive analysis with measures, hierarchies, and relationships. Ontologies can be generated directly from them&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Several of these items are shared with other Fabric workloads (e.g., Graph and Operations Agent are also part of Real-Time Intelligence; Data Agent is shared with Data Science).&lt;/p&gt;

&lt;h3&gt;
  
  
  Strategic Value for Business
&lt;/h3&gt;

&lt;p&gt;Fabric IQ delivers six key benefits identified by Microsoft:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unification of data&lt;/strong&gt; - Combines data from various OneLake sources (lakehouses, eventhouses, Power BI semantic models) into a single consistent model. Can also unify external operational data using OneLake shortcuts without copying data or building ETL pipelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent language across tools&lt;/strong&gt; - A single definition of a concept (like &lt;em&gt;Customer&lt;/em&gt;, &lt;em&gt;Material&lt;/em&gt;, or &lt;em&gt;Asset&lt;/em&gt;) drives how Power BI, notebooks, and agents interpret data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faster onboarding&lt;/strong&gt; - Business concepts only need to be declared once, then new dashboards and AI experiences inherit that meaning automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Governance and trust&lt;/strong&gt; - Reduces duplication and inconsistent definitions across teams by enforcing clear semantics, while constraints improve data quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-domain reasoning&lt;/strong&gt; - Represents relationships between concepts with graph links, enabling traversals like &lt;em&gt;Order → Shipment → Temperature Sensor → Cold Chain Breach&lt;/em&gt; to explain outcomes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI readiness and decision-ready actions&lt;/strong&gt; - Provides structured grounding for copilots and agents so answers reflect enterprise language. Rules defined in the ontology (via Fabric Activator) enable governed, real-time actions (e.g., alerts and notifications) when conditions are met.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For &lt;strong&gt;finance teams&lt;/strong&gt;, this means an AI agent can answer questions like &lt;em&gt;"Why did request volume spike in the North region last month?"&lt;/em&gt; or &lt;em&gt;"Show anomalies in field service cycle time"&lt;/em&gt; - grounded in what the data &lt;strong&gt;means&lt;/strong&gt;, not just where it lives. The semantic model ensures that metrics such as "net profit" and "customer churn" are calculated exactly as defined by the business, so CFOs can trust the AI's output.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;operations teams&lt;/strong&gt;, Fabric IQ's ontology can model supply chain entities, inventory levels, delivery metrics, and their relationships. When an on-time delivery percentage dips below historical norms, a Fabric IQ-informed agent can detect the anomaly, correlate it with upstream bottlenecks, and surface the issue before it escalates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tradeoff consideration:&lt;/strong&gt; Fabric IQ requires upfront investment in &lt;strong&gt;semantic modeling&lt;/strong&gt;. Organizations must define ontologies and business rules, which demands collaboration between data engineers and domain experts. Once agents depend on business meaning, that meaning becomes production infrastructure - semantic models must be versioned, governed, deployed, and monitored with the same rigor applied to code. For organizations already using Power BI, existing data models provide a head start: they instantly serve as a catalyst, giving agents rich, business-specific context.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer Integration
&lt;/h3&gt;

&lt;p&gt;Developers interact with Fabric IQ primarily through the &lt;strong&gt;Microsoft Fabric portal&lt;/strong&gt;, where they can create ontologies, bind them to data sources, and build Data Agents or Operations Agents that reason over the unified data model. The recommended approach for choosing the right Fabric IQ item depends on the scenario:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;When to Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ontology (preview)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cross-domain consistency, governance, and AI/agent grounding; reasoning across processes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Graph (preview)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Relationship-heavy questions (impact chains, communities, shortest paths) dominate; GQL-style pattern matching needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Power BI Semantic Model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Business users need trusted KPIs and fast visuals with dimensional modeling and governed datasets&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Several key item relationships support combined use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ontology + Semantic Model:&lt;/strong&gt; Generate or align Power BI semantic models so terminology and KPIs stay consistent across reports.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ontology + Graph:&lt;/strong&gt; Ontology declares which things connect and why; Graph stores and computes traversals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ontology + Data/Operations Agents:&lt;/strong&gt; Ontology grounds agents in shared business semantics and rules, enabling them to retrieve context, reason across domains, and trigger governed actions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan + Semantic Model:&lt;/strong&gt; Plan connects to existing semantic models, allowing dimensions and measures to be used in planning sheets for seamless plan-versus-actuals analytics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Foundry IQ - Unified Knowledge Retrieval and Reasoning for AI Agents
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What It Is
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Foundry IQ (preview) is a managed knowledge layer in Microsoft Foundry that enables the creation of configurable, multi-source &lt;em&gt;knowledge bases&lt;/em&gt; providing agents with permission-aware, citation-backed responses based on organizational data&lt;/strong&gt;. It tackles what many architects consider the hardest challenge in agent design: &lt;strong&gt;knowledge retrieval and grounding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A Foundry IQ knowledge base consists of &lt;strong&gt;knowledge sources&lt;/strong&gt; (connections to internal and external data stores) and &lt;strong&gt;parameters that control retrieval behavior&lt;/strong&gt;. Multiple agents can share the same knowledge base. When an agent queries the knowledge base, Foundry IQ uses &lt;strong&gt;agentic retrieval&lt;/strong&gt; - a multi-query pipeline - to process the query, retrieve relevant information, enforce user permissions, and return grounded answers with citations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Capabilities
&lt;/h3&gt;

&lt;p&gt;Foundry IQ offers the following capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-source knowledge bases:&lt;/strong&gt; Connect one knowledge base to multiple agents. Supported knowledge sources include &lt;strong&gt;Azure Blob Storage, SharePoint, OneLake&lt;/strong&gt;, and &lt;strong&gt;public web data&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated document processing:&lt;/strong&gt; Automate document chunking, &lt;strong&gt;vector embedding generation&lt;/strong&gt;, and metadata extraction for indexed knowledge sources. Schedule &lt;strong&gt;recurring indexer runs&lt;/strong&gt; for incremental data refresh.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible query modes:&lt;/strong&gt; Issue &lt;strong&gt;keyword, vector, or hybrid queries&lt;/strong&gt; across indexed and remote knowledge sources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agentic retrieval engine:&lt;/strong&gt; Uses a large language model to &lt;strong&gt;plan queries, select sources, run parallel searches, and aggregate results&lt;/strong&gt;. The retrieval reasoning effort can be configured at three levels: &lt;strong&gt;minimal, low, or medium&lt;/strong&gt; for LLM processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extractive data with citations:&lt;/strong&gt; Returns answers with source references so agents can reason over raw content and &lt;strong&gt;trace answers back to source documents&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permission-aware:&lt;/strong&gt; Synchronizes &lt;strong&gt;access control lists (ACLs)&lt;/strong&gt; for supported sources and honors &lt;strong&gt;Microsoft Purview sensitivity labels&lt;/strong&gt;. Enforces permissions at query time so agents return only authorized content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity-based queries:&lt;/strong&gt; Runs queries under the caller's &lt;strong&gt;Microsoft Entra identity&lt;/strong&gt; for end-to-end permission enforcement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The underlying indexing and retrieval infrastructure is powered by &lt;strong&gt;Azure AI Search&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Components
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge base&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Top-level resource that orchestrates agentic retrieval. Defines which knowledge sources to query and parameters that control retrieval behavior, including retrieval reasoning effort (minimal, low, or medium)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge sources&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Connections to indexed or remote content. A knowledge base references one or more knowledge sources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agentic retrieval&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multi-query pipeline that decomposes complex questions into subqueries, executes them in parallel, semantically reranks results, and returns unified responses. Uses an optional LLM from Azure OpenAI in Foundry Models for query planning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Foundry IQ knowledge bases can be used in &lt;strong&gt;Foundry Agent Service, Microsoft Agent Framework, or any custom application&lt;/strong&gt; by calling the knowledge base APIs from Azure AI Search.&lt;/p&gt;

&lt;h3&gt;
  
  
  Strategic Value for Business
&lt;/h3&gt;

&lt;p&gt;Foundry IQ is the layer that makes AI &lt;strong&gt;enterprise-grade for knowledge work&lt;/strong&gt;. It enables agents to understand contracts, policies, procedures, SLAs, regulatory constraints, and unstructured documents - and to reason across them safely. The combination of &lt;strong&gt;permission enforcement and source citations&lt;/strong&gt; directly addresses the two most common executive concerns about enterprise AI: data leakage and hallucination. Every assertion the agent makes can be traced to a vetted document, supporting trust and auditability.&lt;/p&gt;

&lt;p&gt;Foundry IQ serves as &lt;strong&gt;a single endpoint for high-quality organizational data&lt;/strong&gt; to maximize context for AI applications. Its knowledge retrieval engine runs over multiple data sources including Work IQ, Fabric IQ, Azure data services, custom web applications, and the web.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tradeoff consideration:&lt;/strong&gt; Because Foundry IQ indexes and retrieves content automatically, the &lt;strong&gt;quality of the knowledge base depends heavily on the quality and curation of source content&lt;/strong&gt;. Outdated, duplicated, or poorly written documents will produce lower-quality retrieval results. Organizations should invest in content hygiene (removing obsolete documents, standardizing formatting, clarifying ownership) before connecting sources to Foundry IQ. Additionally, Foundry IQ is currently in &lt;strong&gt;public preview&lt;/strong&gt; without a production service-level agreement, which means production-critical workloads should be tested thoroughly and planned around the preview constraints.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer Integration - Setting Up via the Microsoft Foundry Portal
&lt;/h3&gt;

&lt;p&gt;The typical portal-based workflow for Foundry IQ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sign in to &lt;strong&gt;Microsoft Foundry&lt;/strong&gt; at &lt;a href="https://ai.azure.com" rel="noopener noreferrer"&gt;https://ai.azure.com&lt;/a&gt;. Ensure the &lt;strong&gt;"New Foundry"&lt;/strong&gt; toggle is on.&lt;/li&gt;
&lt;li&gt;Create a project or select an existing project.&lt;/li&gt;
&lt;li&gt;From the top menu, select &lt;strong&gt;Build&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;On the &lt;strong&gt;Knowledge&lt;/strong&gt; tab:

&lt;ul&gt;
&lt;li&gt;Create or connect to an existing search service that supports agentic retrieval.&lt;/li&gt;
&lt;li&gt;Create a knowledge base by adding one knowledge source at a time.&lt;/li&gt;
&lt;li&gt;Configure knowledge base properties for retrieval behavior.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;On the &lt;strong&gt;Agents&lt;/strong&gt; tab:

&lt;ul&gt;
&lt;li&gt;Create or select an existing agent.&lt;/li&gt;
&lt;li&gt;Connect to your knowledge base.&lt;/li&gt;
&lt;li&gt;Use the &lt;strong&gt;playground&lt;/strong&gt; to send messages and refine your agent.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;For proof-of-concept testing, you can use the &lt;strong&gt;free tier for Azure AI Search&lt;/strong&gt; and a free allocation of tokens for agentic retrieval.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer Integration - Connecting Foundry IQ to Agents Programmatically
&lt;/h3&gt;

&lt;p&gt;For pro-code developers, the connection from an agent to a Foundry IQ knowledge base uses the &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; to facilitate tool calls. When invoked by the agent, the knowledge base orchestrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plans and decomposes the user query into subqueries.&lt;/li&gt;
&lt;li&gt;Processes the subqueries simultaneously using keyword, vector, or hybrid techniques.&lt;/li&gt;
&lt;li&gt;Applies &lt;strong&gt;semantic reranking&lt;/strong&gt; to identify the most relevant results.&lt;/li&gt;
&lt;li&gt;Synthesizes the results into a &lt;strong&gt;unified response with source references&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;SDK and API support&lt;/strong&gt; (as of the documentation)&amp;gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Python SDK&lt;/th&gt;
&lt;th&gt;C# SDK&lt;/th&gt;
&lt;th&gt;JavaScript SDK&lt;/th&gt;
&lt;th&gt;Java SDK&lt;/th&gt;
&lt;th&gt;REST API&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft Foundry&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt; for programmatic setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;Azure AI Search service&lt;/strong&gt; with a knowledge base containing one or more knowledge sources.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Microsoft Foundry project&lt;/strong&gt; with an LLM deployment (such as gpt-4.1-mini).&lt;/li&gt;
&lt;li&gt;Authentication and permissions configured on the search service and project.&lt;/li&gt;
&lt;li&gt;Python SDK version &lt;strong&gt;2.0.0 or later&lt;/strong&gt; or the &lt;strong&gt;2025-11-01-preview&lt;/strong&gt; REST API version:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For role-based access control (RBAC):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Azure AI User&lt;/strong&gt; role on the parent resource to access model deployments and create agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure AI Project Manager&lt;/strong&gt; role on the parent resource to create a project connection for MCP authentication.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;system-assigned managed identity&lt;/strong&gt; on the project for interactions with Azure AI Search.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Microsoft provides an end-to-end Python sample on GitHub - the &lt;strong&gt;agentic-retrieval-pipeline-example&lt;/strong&gt; - for integrating Azure AI Search and Foundry Agent Service for knowledge retrieval.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Three IQ Layers Work Together - A Practical Scenario
&lt;/h2&gt;

&lt;p&gt;Understanding each IQ layer individually is important; understanding how they &lt;strong&gt;combine&lt;/strong&gt; is what unlocks transformative use cases. As one analysis frames it: think of a three-layer stack - &lt;strong&gt;Fabric IQ&lt;/strong&gt; at the foundation (structured data intelligence), &lt;strong&gt;Foundry IQ&lt;/strong&gt; in the middle (reasoning and knowledge grounding), and &lt;strong&gt;Work IQ&lt;/strong&gt; on top (human workflow intelligence).&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario: Supply Chain Delay Management (Operations)
&lt;/h3&gt;

&lt;p&gt;Consider a company building an AI agent to help manage supply chain delays:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fabric IQ&lt;/strong&gt; detects anomalies in delivery metrics. It sees that certain suppliers are trending late beyond historical norms, notices that on-time delivery percentages are dipping in specific regions, and correlates delays with upstream bottlenecks. &lt;strong&gt;This is data-driven awareness&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foundry IQ&lt;/strong&gt; grounds the agent in supplier contracts, SLAs, penalty clauses, and internal policies. It understands what the agreement actually says about late deliveries, interprets escalation thresholds, and knows which suppliers have stricter terms. &lt;strong&gt;This is contextual reasoning&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Work IQ&lt;/strong&gt; observes that operations teams are overloaded handling these exceptions manually. It sees long email chains, recurring "delay review" meetings, and individuals spending hours every week tracking updates from vendors. It identifies patterns of reactive work consuming capacity. &lt;strong&gt;This is workflow intelligence&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;agent&lt;/strong&gt; combines all three streams: it recommends which delays need escalation based on contractual impact, drafts communications to suppliers referencing the correct SLA language, suggests internal reprioritization, and surfaces issues before they become crises.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scenario: Customer Service Knowledge Agent
&lt;/h3&gt;

&lt;p&gt;A customer service team deploys an agent using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Foundry IQ&lt;/strong&gt; as the primary knowledge source, indexing product manuals, troubleshooting guides, FAQs, and past support ticket resolutions. When a customer asks about error code E305, the agent retrieves the relevant manual section with a citation to the source document.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Work IQ&lt;/strong&gt; to access recent internal communications - for example, identifying that an engineering team discussed this exact error in a Teams conversation last week and already developed a workaround. The agent can surface this workaround alongside the official documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fabric IQ&lt;/strong&gt; to check whether the error is correlated with a particular product batch or region by querying the semantic model of manufacturing and logistics data, enabling the support agent to proactively notify affected customers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scenario: Financial Reporting and Analysis (Finance)
&lt;/h3&gt;

&lt;p&gt;A finance team connects Fabric IQ to its consolidated financial data in OneLake and Power BI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Ontology&lt;/strong&gt; defines entities like &lt;em&gt;Account&lt;/em&gt;, &lt;em&gt;Transaction&lt;/em&gt;, &lt;em&gt;Cost Center&lt;/em&gt;, and &lt;em&gt;Region&lt;/em&gt; with standardized definitions for metrics like &lt;em&gt;Operating Margin&lt;/em&gt; and &lt;em&gt;Revenue Growth&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Data Agent&lt;/strong&gt; in Fabric IQ allows analysts to ask natural-language questions such as &lt;em&gt;"What are the top five cost centers by budget variance this quarter?"&lt;/em&gt; - grounded in the official semantic model, ensuring the answer uses Finance's own calculation methodology.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foundry IQ&lt;/strong&gt; supplements this with knowledge from internal accounting policies, audit findings, and regulatory guidance documents, so the agent can explain &lt;em&gt;why&lt;/em&gt; a variance occurred and whether it triggers any policy-based escalation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Work IQ&lt;/strong&gt; can surface the context of recent discussions among the finance team (e.g., &lt;em&gt;"The CFO discussed this variance in Monday's meeting and requested a root-cause analysis by Friday"&lt;/em&gt;), ensuring the AI's recommendations are aligned with current priorities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical Guidance for Copilot Studio and Agent Framework Developers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Choosing the Right Development Platform
&lt;/h3&gt;

&lt;p&gt;Microsoft offers two primary paths for agent development, and &lt;strong&gt;both&lt;/strong&gt; can leverage the IQ layers. The choice depends on the developer persona and scenario complexity:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criteria&lt;/th&gt;
&lt;th&gt;Copilot Studio&lt;/th&gt;
&lt;th&gt;Microsoft Agent Framework (Agent 365 SDK)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Target audience&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Business users, makers, power users, fusion teams&lt;/td&gt;
&lt;td&gt;Professional developers, IT teams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Approach&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low-code / no-code with visual design canvas&lt;/td&gt;
&lt;td&gt;Pro-code (Python, C# SDKs) with full programmatic control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IQ integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Work IQ via MCP tools (Add Tool &amp;gt; Model Context Protocol); Foundry IQ via MCP connection; Fabric IQ via Fabric Data Agent&lt;/td&gt;
&lt;td&gt;Work IQ via Agent 365 SDK; Foundry IQ via knowledge base APIs and Python SDK; Fabric IQ via APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Governance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Built-in through Agent 365 control plane + M365 admin center&lt;/td&gt;
&lt;td&gt;Same Agent 365 governance + Azure RBAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best for&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;FAQ bots, task-specific assistants, business-process agents with moderate complexity&lt;/td&gt;
&lt;td&gt;Multi-agent orchestration, complex retrieval pipelines, custom reasoning logic, enterprise-grade production agents&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Copilot Studio is aimed at &lt;strong&gt;low-code builders&lt;/strong&gt; while Azure AI Foundry serves &lt;strong&gt;pro-code developers&lt;/strong&gt;; Agent 365 delivers a consistent, developer-friendly experience backed by rigorous evaluation for accuracy, latency, and reliability across both paths.&lt;/p&gt;

&lt;p&gt;These platforms are not mutually exclusive. A common pattern is to use &lt;strong&gt;Foundry&lt;/strong&gt; to build and fine-tune the agent's reasoning backend (including Foundry IQ knowledge bases) and &lt;strong&gt;Copilot Studio&lt;/strong&gt; for the conversational front-end and deployment to Microsoft 365 channels. Microsoft also supports &lt;strong&gt;connecting a Foundry agent directly into Copilot Studio&lt;/strong&gt; for organizations that want pro-code control over the backend with low-code deployment】.&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Developer Resources
&lt;/h3&gt;

&lt;p&gt;Microsoft provides a &lt;strong&gt;hands-on learning experience&lt;/strong&gt; called the &lt;strong&gt;IQ Series&lt;/strong&gt; - an official GitHub repository (microsoft/iq-series) that includes video episodes, Jupyter notebooks, and Azure deployment templates spanning Foundry IQ, Work IQ, and Fabric IQ. This is a valuable starting point for developers exploring integration patterns.&lt;/p&gt;

&lt;p&gt;For Copilot Studio, the &lt;strong&gt;Copilot-Studio-and-Azure&lt;/strong&gt; GitHub repository includes a lab on &lt;strong&gt;Microsoft Foundry agentic retrieval&lt;/strong&gt; (labs/2.4-microsoft-foundry-agentic-retrieval) with a notebook (foundry-IQ-agents.ipynb) that demonstrates how to connect Copilot Studio agents to Foundry IQ.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Best Practices
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Curate your knowledge sources deliberately.&lt;/strong&gt; For Foundry IQ, prioritize high-quality, authoritative content - official policy libraries, product documentation, and knowledge articles that customer service reps already use. Remove outdated or duplicated material before indexing. Please use scheduled indexing for incremental data refresh so agents always use the current information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Invest in semantic modeling.&lt;/strong&gt; For Fabric IQ, collaborate with business domain experts to design ontologies that capture actual business rules, relationships, and terminology. Start from existing &lt;strong&gt;Power BI semantic models&lt;/strong&gt; when possible - they can be used as a bootstrap for ontologies, keeping language consistent across Fabric experiences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Clean up collaboration data.&lt;/strong&gt; For Work IQ, ensure that the organization's SharePoint structures are tidy, file ownership is clear, and key processes are documented. Reduce duplication and align Dataverse models with real business logic. As noted in an analysis by VisualLabs, &lt;em&gt;"Copilot cannot infer intent from SharePoint chaos"&lt;/em&gt; - AI amplifies what already exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Combine IQ layers for maximum impact. **Foundry IQ can incorporate Work IQ and Fabric IQ as data sources&lt;/strong&gt;, enabling custom agents to unify all three context dimensions through a single retrieval interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Govern and monitor rigorously.&lt;/strong&gt; Use the &lt;strong&gt;M365 admin center&lt;/strong&gt; for Work IQ tool governance and &lt;strong&gt;Azure RBAC&lt;/strong&gt; for Foundry IQ permissions. Use &lt;strong&gt;Microsoft Defender's Advanced Hunting&lt;/strong&gt; to audit all tool calls your agents make in production. For Foundry IQ, enforce permissions at query time by passing user tokens to filter results based on identity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Use the "Bring Your Own Model" capability strategically.&lt;/strong&gt; Copilot Studio supports connecting models from &lt;strong&gt;Microsoft Foundry's model catalog&lt;/strong&gt; (including GPT 4.5, Llama, DeepSeek, and &lt;strong&gt;11,000+ more models&lt;/strong&gt;) to specific prompt actions within an agent. This allows you to pick the best-performing model for each task - not just use a single model globally. Governance for these model connections is managed through &lt;strong&gt;Power Platform admin center policies&lt;/strong&gt; under the "Microsoft Foundry" connector.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Case Summary
&lt;/h2&gt;

&lt;p&gt;The following table consolidates practical use cases across three domains, illustrating which IQ layers contribute and how:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;Work IQ Contribution&lt;/th&gt;
&lt;th&gt;Fabric IQ Contribution&lt;/th&gt;
&lt;th&gt;Foundry IQ Contribution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customer Service&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Intelligent support agent that resolves complex tickets&lt;/td&gt;
&lt;td&gt;Surfaces recent internal discussions about the issue (Teams chats, email threads)&lt;/td&gt;
&lt;td&gt;Correlates the issue with product batch data, defect rates, or regional patterns&lt;/td&gt;
&lt;td&gt;Retrieves official troubleshooting guides, product manuals, and policy documents with citations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Finance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Automated financial analysis and variance reporting&lt;/td&gt;
&lt;td&gt;Identifies which finance team members have been discussing a variance and surfaces meeting action items&lt;/td&gt;
&lt;td&gt;Provides a governed semantic model of financial KPIs, ensuring consistent definitions (e.g., how "operating margin" is calculated)&lt;/td&gt;
&lt;td&gt;Grounds the agent in accounting policies, audit findings, and regulatory guidance documents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Operations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Supply chain delay advisor&lt;/td&gt;
&lt;td&gt;Detects that ops teams are overloaded with manual exception handling (long email chains, recurring meetings)&lt;/td&gt;
&lt;td&gt;Identifies anomalies in delivery metrics, correlates delays with upstream bottlenecks, and detects regional performance dips&lt;/td&gt;
&lt;td&gt;Retrieves supplier contracts, SLAs, and penalty clauses to determine contractual obligations and escalation thresholds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HR / Onboarding&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;New employee onboarding assistant&lt;/td&gt;
&lt;td&gt;Understands who the new hire's team members are and what projects are active&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;Retrieves onboarding guides, IT setup instructions, benefits documentation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compliance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Regulatory compliance advisor&lt;/td&gt;
&lt;td&gt;Tracks which compliance officers have been communicating about a specific regulatory change&lt;/td&gt;
&lt;td&gt;Monitors regulatory metrics and flags anomalies against defined thresholds&lt;/td&gt;
&lt;td&gt;Retrieves the latest regulatory texts, internal policies, and past audit reports with citations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Addressing the Runtime and Governance Layer: Agent 365
&lt;/h2&gt;

&lt;p&gt;No discussion of enterprise agent deployment is complete without addressing &lt;strong&gt;who monitors these agents and who is accountable for them&lt;/strong&gt;. Microsoft's answer is &lt;strong&gt;Agent 365&lt;/strong&gt; - the runtime and governance layer that sits over all IQ workloads and agent interactions.&lt;/p&gt;

&lt;p&gt;Agent 365 monitors agent decisions, tracks accuracy over time, enforces compliance boundaries, and provides deep &lt;strong&gt;observability&lt;/strong&gt; into how agents behave in the real world. It gives visibility into what the agent is doing, why it is doing it, and whether it is staying within defined guardrails. This is not just logging - it is operational control: knowing when performance drifts, when policies change, and when human override is required. Without this layer, as one analysis notes, &lt;em&gt;"you have experiments - clever, promising, but fragile. With it, you have enterprise-grade systems that can scale responsibly."&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;For organizations evaluating AI agent initiatives, the presence of Agent 365 as a centralized governance layer is a critical factor in the build-versus-buy decision. It combines extensibility, security, and compliance to help organizations confidently scale AI agents across productivity and business systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Turning Enterprise Context into Competitive Advantage
&lt;/h2&gt;

&lt;p&gt;Work IQ, Fabric IQ, and Foundry IQ represent a structural shift in how enterprises build AI agents. Rather than bolting generic AI onto existing workflows, these intelligence layers &lt;strong&gt;embed organizational understanding directly into the agent's reasoning process&lt;/strong&gt; - from user collaboration patterns (Work IQ) to governed business semantics (Fabric IQ) to secure, multi-source knowledge retrieval (Foundry IQ).&lt;/p&gt;

&lt;p&gt;For business decision-makers evaluating AI investments, the implication is clear: &lt;strong&gt;the value of enterprise AI is proportional to the quality and depth of context it can access&lt;/strong&gt;. Organizations that invest in structuring their work data (M365), defining business semantics (Fabric), and curating knowledge bases (Foundry) will extract far more value from AI agents than those relying on generic models. KPMG's survey found that among organizations scaling AI, the top ROI metrics are productivity (cited by 98% of leaders), profitability (97%), and improved performance and work quality (94%) - all outcomes that depend on context-rich, trustworthy AI rather than raw model capability.&lt;/p&gt;

&lt;p&gt;For developers, the three IQ layers provide &lt;strong&gt;a clear architecture and integration path&lt;/strong&gt; - whether through Copilot Studio's visual MCP tool integration or through the Agent 365 SDK's programmatic APIs. The key is to start with well-defined data foundations (clean SharePoint, governed Fabric models, curated knowledge sources) and progressively layer in IQ capabilities as agent scenarios mature.&lt;/p&gt;

&lt;p&gt;The organizations that will lead in the agentic era are those that recognize deployment is only the beginning - and that &lt;strong&gt;contextual intelligence, not model size, is the true differentiator&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>agents</category>
    </item>
    <item>
      <title>Connecting Azure Application Insights to Microsoft Copilot Studio: Unlocking Deep Analytics for Agentic Systems</title>
      <dc:creator>Holger Imbery</dc:creator>
      <pubDate>Sat, 18 Apr 2026 07:08:42 +0000</pubDate>
      <link>https://dev.to/holgerimbery/connecting-azure-application-insights-to-microsoft-copilot-studio-unlocking-deep-analytics-for-13m8</link>
      <guid>https://dev.to/holgerimbery/connecting-azure-application-insights-to-microsoft-copilot-studio-unlocking-deep-analytics-for-13m8</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Summary Lede&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Agentic systems demand visibility. By connecting Azure Application Insights to your Copilot Studio agents, you gain enterprise-grade monitoring that goes far beyond built-in analytics—enabling real-time diagnostics, performance optimization, and strategic business insights in a single integrated platform.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Why read this&lt;/strong&gt;: You'll discover how to unlock faster issue detection and resolution, measure and improve user experience, demonstrate ROI to stakeholders, and establish the telemetry foundation that separates high-performing teams from those operating blindly. This guide walks through prerequisites, configuration steps, and best practices to help you implement a mature observability strategy immediately.&lt;/p&gt;

&lt;p&gt;As agentic systems grow in complexity and autonomy, visibility becomes critical. Analytics illuminate how agents interpret user intent, make decisions, and interact with external systems—transforming a "black box" into an understandable, debuggable, and continuously improving system. In production environments, telemetry reveals performance bottlenecks, catches errors before users notice them, and provides the evidence base for optimizing agent behavior and dialog flows. Without analytics, teams operate blindly; with it, they make data-driven decisions and build trust through transparency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Connecting Azure Application Insights to Copilot Studio
&lt;/h2&gt;

&lt;p&gt;Connecting &lt;strong&gt;Azure Application Insights&lt;/strong&gt; to &lt;strong&gt;Microsoft Copilot Studio&lt;/strong&gt; agents significantly extends your monitoring, diagnostics, and analytics capabilities far beyond the native tooling provided by Copilot Studio alone. Application Insights, a powerful component of the broader &lt;strong&gt;Azure Monitor&lt;/strong&gt; platform, is a fully extensible Application Performance Management (APM) service designed to meet enterprise-scale requirements. This service captures granular message-level telemetry, topic trigger events, interaction latency measurements, custom domain-specific events, and comprehensive error details in near real-time, enabling immediate visibility into agent behavior. By establishing this integration, organizations gain access to both fine-grained technical observability, which empowers engineering teams to debug and optimize agent performance, and strategic usage intelligence, which informs business stakeholders about adoption patterns, user satisfaction trends, and operational efficiency metrics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4398sluzbf9vmm1a51wk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4398sluzbf9vmm1a51wk.png" alt="upgit_20260401_1775031491.png" width="800" height="952"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Benefits Overview
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Benefit Area&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Technical Capabilities&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Business / Strategic Value&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Real-Time Monitoring&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Live telemetry stream of conversations; configurable Azure Monitor alerts for anomalies or thresholds&lt;/td&gt;
&lt;td&gt;Proactive issue detection minimizes downtime; enables swift scaling responses during usage spikes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance Optimization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Latency and performance data per interaction; Smart Detection flags unusual performance drops automatically&lt;/td&gt;
&lt;td&gt;Faster, more reliable agent increases user satisfaction; reduces abandonment from slow responses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Diagnostics &amp;amp; Error Logging&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Automatic capture of exceptions with full context (stack traces, conversation state, topic/step); custom telemetry events for domain-specific tracking&lt;/td&gt;
&lt;td&gt;Faster troubleshooting lowers support costs; higher reliability builds user trust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;User Interaction Analytics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Conversation counts, active users, channels, topics triggered, session durations — queryable via KQL&lt;/td&gt;
&lt;td&gt;Data-driven improvements to dialog design; evidence base for prioritizing development effort&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dashboards &amp;amp; Reporting&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pre-built Copilot Studio Dashboard (Azure Workbook) with total conversations, latency, exceptions, tool usage, and topic analytics — editable and shareable&lt;/td&gt;
&lt;td&gt;Cross-functional visibility for technical and business stakeholders; supports ROI reporting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Connects to Power BI, Azure Data Lake, Azure Monitor alerts, and other Azure services&lt;/td&gt;
&lt;td&gt;Enterprise-grade reporting pipelines; cross-system correlation between bot telemetry and business outcomes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Custom Events &amp;amp; Extensibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;"Log a custom telemetry event" action in Copilot Studio for domain-specific tracking; KQL for arbitrary analysis&lt;/td&gt;
&lt;td&gt;Tailored KPI tracking (resolution rates, conversion events); structured A/B testing of agent configurations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How Telemetry Is Collected
&lt;/h2&gt;

&lt;p&gt;Setting up Application Insights for your Copilot Studio agents involves configuring where and how telemetry data flows. The process is straightforward but requires understanding key configuration options and prerequisites. Here's what you need to know to get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Per-agent configuration&lt;/strong&gt;: There is no tenant-wide switch. Each agent must be connected to Application Insights individually.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Setup&lt;/strong&gt;: Add the Application Insights connection string in &lt;code&gt;Settings → Advanced → Application Insights&lt;/code&gt; within Copilot Studio.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Azure Subscription&lt;/strong&gt;: Required to use Application Insights.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Logging Options&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;Log activities&lt;/code&gt;: Logs all incoming/outgoing messages and events.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;Log sensitive Activity properties&lt;/code&gt;: Includes &lt;code&gt;userid&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;text&lt;/code&gt;, and &lt;code&gt;speak&lt;/code&gt;. Off by default due to privacy implications.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Metrics and Data Are Available
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Custom Dimensions
&lt;/h3&gt;

&lt;p&gt;Telemetry records include rich metadata in the &lt;code&gt;customDimensions&lt;/code&gt; field:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Sample Values&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Type of activity&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;message&lt;/code&gt;, &lt;code&gt;conversationUpdate&lt;/code&gt;, &lt;code&gt;event&lt;/code&gt;, &lt;code&gt;invoke&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;channelId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Channel identifier&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;emulator&lt;/code&gt;, &lt;code&gt;directline&lt;/code&gt;, &lt;code&gt;msteams&lt;/code&gt;, &lt;code&gt;webchat&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fromId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sender identifier&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fromName&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Username from client&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;John Bonham&lt;/code&gt;, &lt;code&gt;Keith Moon&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;locale&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Client origin locale&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;en-us&lt;/code&gt;, &lt;code&gt;zh-cn&lt;/code&gt;, &lt;code&gt;de-de&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;recipientId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Recipient identifier&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;recipientName&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Recipient name&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;John Bonham&lt;/code&gt;, &lt;code&gt;Keith Moon&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;text&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Text in message&lt;/td&gt;
&lt;td&gt;&lt;code&gt;find a coffee shop&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;designMode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Whether conversation occurred in the test canvas&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;True&lt;/code&gt; / &lt;code&gt;False&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;{: .important }&lt;br&gt;
Note: Data quality varies by channel. For example, unique user counts are only reliable when users are authenticated.&lt;/p&gt;
&lt;h3&gt;
  
  
  Built-In Copilot Studio Dashboard
&lt;/h3&gt;

&lt;p&gt;Copilot Studio provides a pre-built Azure Workbook dashboard that offers immediate visibility into your agent's performance and usage patterns. This dashboard aggregates key metrics without requiring custom configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Location&lt;/strong&gt;: &lt;code&gt;Application Insights → Monitoring → Workbooks → Copilot Studio Dashboard&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Metrics Included&lt;/strong&gt;: Total conversations, latency, exceptions, tool usage, topic analytics&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Customizable&lt;/strong&gt;: Add tiles using KQL, save and share dashboards with team members (requires Reader role)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  KQL Querying
&lt;/h3&gt;

&lt;p&gt;Use &lt;strong&gt;Kusto Query Language (KQL)&lt;/strong&gt; to analyze telemetry data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let queryStartDate = ago(14d);
let queryEndDate = now();
let groupByInterval = 1d;
customEvents
| where timestamp &amp;gt; queryStartDate
| where timestamp &amp;lt; queryEndDate
| summarize uc=dcount(user_Id) by bin(timestamp, groupByInterval)
| render timechart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To exclude test conversations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;customEvents
| extend isDesignMode = customDimensions['designMode']
| where isDesignMode == "False"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Built-In Analytics vs. Application Insights
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;Built-In Analytics&lt;/th&gt;
&lt;th&gt;Azure Application Insights&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Track topic usage and completion&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes (with custom events)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Understand user satisfaction&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes (if instrumented)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debug dialog transitions&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monitor API latency or errors&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visualize trends over time&lt;/td&gt;
&lt;td&gt;yes (limited)&lt;/td&gt;
&lt;td&gt;yes (custom dashboards)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Correlate with external systems&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alerting and anomaly detection&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;{: .important }&lt;br&gt;
Application Insights complements — not replaces — built-in analytics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Benefits
&lt;/h2&gt;

&lt;p&gt;Application Insights delivers powerful technical capabilities that transform agent monitoring and diagnostics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Live Metrics&lt;/strong&gt;: Real-time monitoring of bot activity.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Smart Detection&lt;/strong&gt;: Automatic anomaly and performance issue detection.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Custom Telemetry&lt;/strong&gt;: Log domain-specific events from within Copilot Studio.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Centralized Monitoring&lt;/strong&gt;: Consolidate logs, metrics, and traces across agents.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Scalability&lt;/strong&gt;: Monitor bots across multiple environments and regions.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Extensibility&lt;/strong&gt;: Integrate with Power BI, Azure Data Lake, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Business Value and Strategic Advantages
&lt;/h2&gt;

&lt;p&gt;Application Insights transforms agent monitoring from a purely technical exercise into a strategic business tool. By connecting telemetry data to measurable outcomes, organizations can demonstrate ROI, accelerate innovation cycles, and build confidence in agentic systems. The following sections explore the key business advantages:&lt;/p&gt;

&lt;h3&gt;
  
  
  Data-Driven Decision-Making
&lt;/h3&gt;

&lt;p&gt;Telemetry provides the foundation for evidence-based improvements across your agent ecosystem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Use telemetry to understand user behavior, optimize dialog flows, and prioritize development.&lt;/li&gt;
&lt;li&gt;  Dashboards and reports provide evidence for product decisions and stakeholder communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Operational Efficiency
&lt;/h3&gt;

&lt;p&gt;Application Insights dramatically reduces the time and effort required to maintain reliable agents in production. By automating detection and providing detailed diagnostics, teams can respond faster to issues and prevent recurring problems from consuming resources.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Reduce mean time to detect and resolve issues.&lt;/li&gt;
&lt;li&gt;  Identify systemic issues and eliminate recurring failures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Customer Satisfaction
&lt;/h3&gt;

&lt;p&gt;Application Insights enables you to measure and enhance user experience by providing visibility into agent responsiveness and identifying friction points in conversations. By understanding where users encounter delays or confusion, teams can make targeted improvements that directly impact satisfaction and retention.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Improve response times and reduce errors.&lt;/li&gt;
&lt;li&gt;  Analyze drop-offs and confusion points to refine UX.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Compliance and Auditing
&lt;/h3&gt;

&lt;p&gt;In regulated industries and enterprises subject to data governance requirements, comprehensive audit trails and compliance documentation are non-negotiable. Application Insights provides the forensic capabilities needed to demonstrate regulatory compliance, investigate incidents, and maintain defensible records of agent behavior and data handling.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Maintain detailed logs for audit trails.&lt;/li&gt;
&lt;li&gt;  Support regulatory requirements with timestamped, queryable data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;p&gt;Implementing a robust telemetry strategy requires discipline and intentionality. The following best practices will help you maximize the value of Application Insights while minimizing operational overhead and ensuring data quality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Log Meaningful Events&lt;/strong&gt;: When instrumenting your Copilot Studio agents, focus exclusively on capturing events that provide actionable intelligence. This includes clear indicators of user intent (such as topic invocations or explicit requests), documented dialog outcomes (successful resolutions, escalations, or abandonment), and comprehensive error context. By avoiding noise and focusing on the signal, you reduce data volume while improving analysis quality and reducing query latency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Correlation IDs&lt;/strong&gt;: Implement correlation identifiers to link related activities across multiple services, dialogs, and organizational boundaries. This practice is essential in distributed systems where a user's interaction may involve multiple agents, backend APIs, and cloud services. Correlation IDs enable end-to-end tracing of requests, making it significantly easier to diagnose complex failures and understand latency across the entire interaction pipeline.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set Up Alerts&lt;/strong&gt;: Configure Azure Monitor alerts on critical performance thresholds and anomalies. Rather than waiting to discover problems through manual dashboard review, proactive alerting ensures that your team is immediately notified of concerning patterns—such as sudden spikes in error rates, performance degradation, or unexpected traffic patterns. This enables rapid response before issues escalate into user-facing problems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review Dashboards Regularly&lt;/strong&gt;: Establish a cadence for reviewing Application Insights dashboards with relevant stakeholders—both technical teams who investigate issues and business stakeholders who track adoption metrics. Regular review sessions transform telemetry from a passive record into an active feedback loop that informs prioritization, guides feature development, and validates hypotheses about agent behavior and user satisfaction.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Connect your Copilot Studio agent to Application Insights
&lt;/h2&gt;

&lt;p&gt;Establishing a connection between your Copilot Studio agent and Azure Application Insights requires careful configuration to ensure telemetry data flows correctly to your monitoring environment. This section provides comprehensive guidance on the setup process, prerequisites, and optional configuration settings that affect which data is captured and transmitted.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites and Initial Setup
&lt;/h3&gt;

&lt;p&gt;Before you can establish a successful connection between your Copilot Studio agent and Application Insights, ensure that you have an active Azure subscription and an existing Application Insights resource. The connection process relies on authentication credentials stored in your agent's configuration so that you will need administrative access to both your Copilot Studio environment and your Azure resources.&lt;/p&gt;

&lt;p&gt;To initiate the connection process, navigate to the &lt;strong&gt;Settings&lt;/strong&gt; page for your agent within Copilot Studio. From the Settings page, locate and select the &lt;strong&gt;Advanced&lt;/strong&gt; tab. This tab contains configuration options not exposed in the standard settings interface and typically reserved for operational and monitoring settings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring the Application Insights Connection String
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80rrub187s7syde2rker.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80rrub187s7syde2rker.png" alt="upgit_20260401_1775031412.png" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within the Advanced settings tab, you will find a dedicated &lt;strong&gt;Application Insights&lt;/strong&gt; section. In this section, locate the &lt;strong&gt;Connection string&lt;/strong&gt; field and populate it with the connection string obtained from your Azure Application Insights resource.&lt;/p&gt;

&lt;p&gt;The connection string serves as the authentication and routing credential that enables your agent to transmit telemetry data to your specific Application Insights instance securely. Refer to the &lt;a href="https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview" rel="noopener noreferrer"&gt;Azure Monitor documentation&lt;/a&gt; for comprehensive instructions on locating and retrieving your connection string from your Application Insights resource in the Azure portal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optional Logging Configuration
&lt;/h3&gt;

&lt;p&gt;In addition to basic connectivity, Application Insights offers two optional configuration flags that let you control the scope and sensitivity of captured telemetry data. These settings provide flexibility to balance comprehensive monitoring with privacy and compliance considerations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log Activities&lt;/strong&gt;: When this setting is enabled, Application Insights captures comprehensive details of all incoming and outgoing messages exchanged between users and your agent, as well as all event notifications triggered during agent operation. This option provides maximum visibility into agent behavior and user interactions, enabling detailed diagnostics and comprehensive audit trails. However, enabling this option increases telemetry volume and may have cost implications for higher-traffic agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log Sensitive Activity Properties&lt;/strong&gt;: This setting governs whether certain data fields that may contain personally identifiable information (PII) or other sensitive information are included in logged telemetry. When enabled, the following properties are captured in logs: &lt;code&gt;userid&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;text&lt;/code&gt;, and &lt;code&gt;speak&lt;/code&gt; (note that the &lt;code&gt;text&lt;/code&gt; and &lt;code&gt;speak&lt;/code&gt; properties apply exclusively to message-type activities and are not captured for other event types).&lt;/p&gt;

&lt;p&gt;By default, this setting is &lt;strong&gt;disabled&lt;/strong&gt; due to data privacy and compliance considerations. Organizations operating under strict data governance frameworks, healthcare regulations (HIPAA), financial regulations (PCI-DSS), or general privacy standards (GDPR) should exercise caution when enabling this option. If enabled, ensure that appropriate data retention policies, encryption measures, and access controls are in place to protect sensitive information logged to Application Insights.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Connecting your Copilot Studio agents to Azure Application Insights represents a fundamental shift in how you approach agent observability and operational excellence. By moving beyond built-in analytics, you gain enterprise-grade monitoring capabilities that illuminate every aspect of agent behavior—from granular message-level telemetry to high-level strategic insights about adoption and ROI.&lt;/p&gt;

&lt;p&gt;The integration delivers immediate practical benefits: faster issue detection and resolution, performance optimization grounded in real data, and comprehensive audit trails that satisfy regulatory requirements. It also turns your organization's relationship with agentic systems from speculative to evidence-driven, so you can scale confidently and keep improving.&lt;/p&gt;

&lt;p&gt;Whether your priority is reducing support costs, accelerating time-to-resolution, or demonstrating measurable business value to stakeholders, Application Insights provides the visibility and analytical power to achieve those goals. Start with the fundamentals—configure the connection string, enable appropriate logging, and establish a dashboard review cadence. As your telemetry practice matures, layer in custom events, automated alerts, and deeper correlation across your broader system ecosystem.&lt;/p&gt;

&lt;p&gt;Telemetry infrastructure pays off right away and grows over time as your teams build data-driven habits, and your agents become more reliable, responsive, and aligned with business goals.&lt;/p&gt;

</description>
      <category>copilotstudio</category>
      <category>applicationinsights</category>
      <category>azure</category>
    </item>
  </channel>
</rss>
