<?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: Alex Pechenizkiy</title>
    <description>The latest articles on DEV Community by Alex Pechenizkiy (@az365ai).</description>
    <link>https://dev.to/az365ai</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%2F3969141%2Fb5e3e816-d15e-43d1-9916-2fbc9eed6fd3.jpg</url>
      <title>DEV Community: Alex Pechenizkiy</title>
      <link>https://dev.to/az365ai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/az365ai"/>
    <language>en</language>
    <item>
      <title>What Are Azure AI Services in 2026? A Complete Overview</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Tue, 01 Sep 2026 17:31:24 +0000</pubDate>
      <link>https://dev.to/az365ai/what-are-azure-ai-services-in-2026-a-complete-overview-6l5</link>
      <guid>https://dev.to/az365ai/what-are-azure-ai-services-in-2026-a-complete-overview-6l5</guid>
      <description>&lt;p&gt;Microsoft's Azure AI Services have evolved dramatically. If you are building AI-powered applications in 2026, the platform looks nothing like it did two years ago. Five core services, new pricing models, and a RAG pattern that has become the default architecture.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure AI Services in 2026 centers on five pillars: OpenAI Service, AI Search, Document Intelligence, Speech, and Vision. The winning production pattern is Document Intelligence for ingestion, AI Search for indexing, and OpenAI for querying -- the same RAG architecture behind Microsoft 365 Copilot. Start with a multi-service resource and prototype in AI Studio.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Azure AI Landscape
&lt;/h2&gt;

&lt;p&gt;Azure AI Services is Microsoft's umbrella for cloud-based AI capabilities. Instead of building machine learning models from scratch, you call an API and get intelligence back. Simple.&lt;/p&gt;

&lt;p&gt;The platform now covers five core areas:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Azure OpenAI Service
&lt;/h3&gt;

&lt;p&gt;The flagship. Access to GPT-4, GPT-4o, and the latest models directly through Azure's infrastructure. Key advantages over using OpenAI directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise security&lt;/strong&gt; -- your data stays within Azure's compliance boundary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private networking&lt;/strong&gt; -- VNet integration, Private Endpoints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managed capacity&lt;/strong&gt; -- Provisioned Throughput Units (PTUs) for predictable performance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regional availability&lt;/strong&gt; -- deploy models in the Azure region closest to your users&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Azure AI Search (formerly Cognitive Search)
&lt;/h3&gt;

&lt;p&gt;The backbone of RAG (Retrieval-Augmented Generation) architectures. Combines traditional search with vector search and semantic ranking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hybrid search (keyword + vector) out of the box&lt;/li&gt;
&lt;li&gt;Integrated vectorization -- no separate embedding pipeline needed&lt;/li&gt;
&lt;li&gt;Skillsets for document cracking (PDFs, images, Office docs)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are building anything with &lt;a href="https://az365.ai/blog/power-platform-governance-repo-standards-reviews-inventory/" rel="noopener noreferrer"&gt;Power Automate and AI on a governed foundation&lt;/a&gt;, AI Search is often the missing piece that ties enterprise data to language models.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Azure AI Document Intelligence
&lt;/h3&gt;

&lt;p&gt;Extracts structured data from documents. Invoices, receipts, contracts, forms -- feed it a PDF and get JSON back. The prebuilt models handle common document types with zero training.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Azure AI Speech
&lt;/h3&gt;

&lt;p&gt;Real-time speech-to-text, text-to-speech, and translation. The custom neural voice feature lets you create a synthetic voice that sounds like a specific person (with consent, obviously).&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Azure AI Vision
&lt;/h3&gt;

&lt;p&gt;Image analysis, OCR, face detection, and custom image classification. The Florence foundation model powers most of these capabilities now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Azure AI Service Should You Use?
&lt;/h2&gt;

&lt;p&gt;The most common question I hear: "Which service do I actually need?" Here is a 40-word answer. If you need chat or text generation, use Azure OpenAI. If you need search over your data, use AI Search. For document extraction use Document Intelligence. Speech and Vision cover their respective domains.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If you need...&lt;/th&gt;
&lt;th&gt;Use this&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chat, text generation, reasoning&lt;/td&gt;
&lt;td&gt;Azure OpenAI Service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search over your own data + AI&lt;/td&gt;
&lt;td&gt;Azure AI Search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extract data from documents&lt;/td&gt;
&lt;td&gt;Document Intelligence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice interaction&lt;/td&gt;
&lt;td&gt;Azure AI Speech&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image/video understanding&lt;/td&gt;
&lt;td&gt;Azure AI Vision&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Pattern That Works
&lt;/h2&gt;

&lt;p&gt;Most production Azure AI applications in 2026 follow this pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ingest&lt;/strong&gt; documents with Document Intelligence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Index&lt;/strong&gt; them in Azure AI Search (with vectors)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query&lt;/strong&gt; using Azure OpenAI + Search (RAG pattern)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Present&lt;/strong&gt; results through a Copilot-style interface&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the architecture behind Microsoft 365 Copilot, and you can build the same pattern for your own data. For organizations already running &lt;a href="https://az365.ai/blog/power-platform-governance-repo-standards-reviews-inventory/" rel="noopener noreferrer"&gt;governance on Power Platform&lt;/a&gt;, layering AI Search on top of existing Dataverse data is a natural next step.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Building with Azure AI?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I write about Azure AI architecture, Power Platform integration, and production patterns weekly. &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/az365ai/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt;&lt;/strong&gt; to get notified when new deep dives drop.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What the Docs Do Not Tell You
&lt;/h2&gt;

&lt;p&gt;A few things I have learned building on Azure AI Services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PTU pricing is a trap for prototypes.&lt;/strong&gt; Pay-as-you-go is cheaper until you hit consistent, predictable volume. Do the math before committing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Search index rebuilds are slow.&lt;/strong&gt; Plan for indexer schedules and incremental updates from day one, not as an afterthought.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-service resources share quota.&lt;/strong&gt; If Document Intelligence spikes, it can starve your Speech API calls. Monitor per-service usage even under the umbrella resource.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Region matters more than you think.&lt;/strong&gt; Not all models are available in all regions. Check &lt;a href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models" rel="noopener noreferrer"&gt;Azure OpenAI model availability&lt;/a&gt; before picking your region.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;The fastest path:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an Azure AI Services multi-service resource (one endpoint, all services)&lt;/li&gt;
&lt;li&gt;Use Azure AI Studio as your playground&lt;/li&gt;
&lt;li&gt;Start with Azure OpenAI + AI Search for a RAG prototype&lt;/li&gt;
&lt;li&gt;Add specialized services as you need them&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The free tier gives you enough quota to prototype. Production pricing is pay-per-use.&lt;/p&gt;

&lt;p&gt;If you are coming from the Power Platform side, check out how &lt;a href="https://az365.ai/blog/power-automate-naming-conventions-that-scale/" rel="noopener noreferrer"&gt;governance and naming discipline&lt;/a&gt; applies the same structured approach to AI integrations.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is the first of many posts exploring Azure AI capabilities. Follow along as we dive deeper into each service with practical examples and real architectures.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/what-is-azure-ai-services-2026/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aistrategy</category>
      <category>azure</category>
      <category>ai</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Building AI Solutions on Azure: The Architecture That Actually Works</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Mon, 31 Aug 2026 19:46:37 +0000</pubDate>
      <link>https://dev.to/az365ai/building-ai-solutions-on-azure-the-architecture-that-actually-works-2fah</link>
      <guid>https://dev.to/az365ai/building-ai-solutions-on-azure-the-architecture-that-actually-works-2fah</guid>
      <description>&lt;p&gt;Microsoft's Azure AI architecture diagram shows 5 boxes with arrows. A user query goes in. A grounded response comes out. Clean. Simple. Wrong.&lt;/p&gt;

&lt;p&gt;The real Azure AI architecture has 15 components, 3 pricing traps, and at least 2 patterns that stop working the moment you move past a demo. I have built production AI solutions on Azure for enterprise clients, and the gap between the marketing diagram and the actual deployment is where projects fail.&lt;/p&gt;

&lt;p&gt;This is the architecture from someone who builds it. Real service names, real pricing as of March 2026, and honest guidance on what breaks at scale.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure AI in 2026 centers on Microsoft Foundry, GPT-4.1 (1M context, 5x cheaper than GPT-4o), and hybrid RAG with AI Search. A production enterprise RAG solution runs $600-1,100/month for a mid-market workload. AI Search is the silent budget killer. Start with classic RAG unless you can tolerate preview-breaking changes.&lt;/p&gt;
&lt;/blockquote&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fbuilding-ai-azure-architecture-hero.svg%3Fv%3Df0761598" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fbuilding-ai-azure-architecture-hero.svg%3Fv%3Df0761598" alt="Azure AI architecture stack showing Foundry, models, RAG pipeline, and cost layers" width="691" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Service Map in 2026: What Changed and What It Is Called Now
&lt;/h2&gt;

&lt;p&gt;If you set up "Azure AI Studio" 18 months ago, you need to catch up. The platform has been rebranded twice. Azure AI Studio became Azure AI Foundry, which became &lt;strong&gt;Microsoft Foundry&lt;/strong&gt;. Your existing deployments still work, but the portal experience and SDK surface have shifted significantly.&lt;/p&gt;

&lt;p&gt;Here is what actually matters in the current stack:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microsoft Foundry&lt;/strong&gt; is the control plane. It is where you deploy models, manage agents, run evaluations, and connect data sources. The Foundry Agent Service hit GA with production-ready AI agents, including real-time voice. The new &lt;code&gt;azure-ai-projects v2 beta&lt;/code&gt; SDK unifies agents, inference, evaluations, and memory in a single package. Multi-agent workflows can now be built visually in the portal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure OpenAI Service&lt;/strong&gt; is the model runtime. This is where your GPT-4.1, GPT-5.2, and o-series deployments live. Same service, same endpoints, same API - it just sits inside Foundry now instead of being a standalone resource.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure AI Search&lt;/strong&gt; is the retrieval layer for RAG. Vector search, keyword search, semantic ranking. This has not been rebranded (yet), and it remains the most important service in any production RAG architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cognitive Services&lt;/strong&gt; still exist as individual APIs (Vision, Speech, Language, Document Intelligence), but Microsoft is folding them into Foundry's unified surface. For new projects, go through Foundry. For existing deployments, the standalone APIs still work.&lt;/p&gt;

&lt;p&gt;Two newer capabilities worth knowing: &lt;strong&gt;Foundry MCP Server&lt;/strong&gt; (Preview) is a cloud-hosted Model Context Protocol server at &lt;code&gt;mcp.ai.azure.com&lt;/code&gt; that connects from VS Code and Visual Studio with Entra auth. &lt;strong&gt;Foundry Local&lt;/strong&gt; lets you run large multimodal models fully disconnected on local hardware with APIs that mirror the cloud surface. Both are early, but they signal where Microsoft is heading.&lt;/p&gt;

&lt;p&gt;For a deeper look at each service and where they fit, see &lt;a href="https://az365.ai/blog/what-is-azure-ai-services-2026" rel="noopener noreferrer"&gt;What is Azure AI Services in 2026&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Models: What to Deploy and What It Costs
&lt;/h2&gt;

&lt;p&gt;Model selection is your first architecture decision and it determines your cost structure for the life of the project. Here is the lineup as of March 2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Context Window&lt;/th&gt;
&lt;th&gt;Input $/M tokens&lt;/th&gt;
&lt;th&gt;Output $/M tokens&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4.1&lt;/td&gt;
&lt;td&gt;1M tokens&lt;/td&gt;
&lt;td&gt;$1.00&lt;/td&gt;
&lt;td&gt;$4.00&lt;/td&gt;
&lt;td&gt;High-context RAG, document processing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;128K tokens&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;td&gt;Existing production apps, multimodal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o-mini&lt;/td&gt;
&lt;td&gt;128K tokens&lt;/td&gt;
&lt;td&gt;$0.15&lt;/td&gt;
&lt;td&gt;$0.60&lt;/td&gt;
&lt;td&gt;High-volume, cost-sensitive workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.2&lt;/td&gt;
&lt;td&gt;400K tokens&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;Reasoning-heavy, complex analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;o3&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;$2.00&lt;/td&gt;
&lt;td&gt;$8.00&lt;/td&gt;
&lt;td&gt;Chain-of-thought reasoning tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;text-embedding-3-small&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;$0.02&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;RAG embeddings (default choice)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;text-embedding-3-large&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;$0.13&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;Higher-accuracy embeddings&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The headline: &lt;strong&gt;GPT-4.1 is the new default for most projects.&lt;/strong&gt; It is 5x cheaper on input and 3.75x cheaper on output than GPT-4o, and it has a 1M token context window. Unless you need GPT-5.2's reasoning capabilities or GPT-4o-mini's rock-bottom pricing for high-volume scenarios, GPT-4.1 is where you start.&lt;/p&gt;

&lt;p&gt;The 1M token context window on GPT-4.1 is real, but it does not mean you should stuff 10,000 pages into a single prompt. Retrieval quality matters more than context window size. I will come back to this in the RAG section.&lt;/p&gt;

&lt;p&gt;The o-series models (o3, o4-mini) are purpose-built for reasoning. They are not general-purpose chat models. Use them when the task requires multi-step logical analysis - code review, mathematical proofs, complex decision trees. Do not use them for document summarization or Q&amp;amp;A. You are paying for reasoning tokens you do not need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Batch API&lt;/strong&gt; cuts costs by 50% for non-real-time workloads. If you are processing documents overnight, generating embeddings for a new corpus, or running bulk evaluations, batch is the first cost optimization to implement.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Does RAG Actually Work on Azure?
&lt;/h2&gt;

&lt;p&gt;The Retrieval-Augmented Generation pattern is the foundation of most enterprise AI on Azure. The concept is simple: instead of asking the LLM to answer from its training data, you retrieve relevant documents first and include them in the prompt. The implementation is where it gets complicated.&lt;/p&gt;

&lt;p&gt;Here is the production architecture, not the 5-box version:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;User submits a query&lt;/strong&gt; The query hits your orchestration layer - Semantic Kernel, LangChain, or Azure AI Agent Service. This is custom code you write and deploy on App Service or Functions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query goes to Azure AI Search&lt;/strong&gt; A hybrid query runs three search methods in parallel: BM25 keyword matching, vector similarity search against your embedding index, and semantic ranking that re-ranks the top results by meaning. Results are merged using Reciprocal Rank Fusion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Top chunks are retrieved&lt;/strong&gt; The search returns the top 5-10 document chunks with relevance scores. Each chunk was previously split from source documents, enriched with metadata, embedded, and indexed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chunks are injected into the prompt&lt;/strong&gt; Your orchestrator builds a system prompt with the retrieved chunks, citation metadata, and instructions. This prompt goes to Azure OpenAI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM generates a grounded response&lt;/strong&gt; GPT-4.1 or GPT-5 produces an answer based on the retrieved context, with citations pointing back to source documents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Response is returned with citations&lt;/strong&gt; The user sees the answer plus links to the original documents. Content safety filters run on both input and output.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is 6 steps and at least 8 Azure services (App Service, AI Search, Azure OpenAI, Blob Storage, Key Vault, Application Insights, Entra ID, Content Safety). The marketing diagram shows 3 boxes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Classic RAG vs Agentic Retrieval
&lt;/h3&gt;

&lt;p&gt;Microsoft now offers two approaches, and the choice matters:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Classic RAG&lt;/strong&gt; is the proven path. You query Azure AI Search, get results, pass them to the LLM, return the response. Simple pipeline, millisecond query times, GA features only, and you control every timeout and retry. If your system is in production or you cannot tolerate preview-breaking changes, this is the right choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agentic Retrieval&lt;/strong&gt; (Preview) is the new approach. The LLM decomposes complex questions into focused subqueries, executes them in parallel across multiple knowledge sources, and synthesizes results. It can query SharePoint and Bing directly without indexing, and it inherits Entra ID permissions. For greenfield projects that can tolerate preview instability, this is where Microsoft is investing.&lt;/p&gt;

&lt;p&gt;My recommendation: &lt;strong&gt;start with classic RAG.&lt;/strong&gt; Migrate to agentic retrieval when it reaches GA and you have validated it against your specific data. The preview label is not cosmetic. I have seen breaking changes in preview APIs that required rewriting orchestration logic on short notice.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Breaks at Scale
&lt;/h3&gt;

&lt;p&gt;Three things consistently break in production RAG deployments:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chunking strategy matters more than model choice.&lt;/strong&gt; Bad chunks with GPT-5 produce worse results than good chunks with GPT-4o-mini. Sentence-based splitting works for narrative documents. Fixed-size splitting works for structured data. Neither works well for tables, forms, or multi-column PDFs without preprocessing. Clean your data before embedding. Run the same cleaning operations on queries that you ran on chunks. Lowercased chunks need lowercased queries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Terminology mismatches kill retrieval quality.&lt;/strong&gt; Users ask about "PTO policy for remote workers" but the documents say "time off," "telecommute," "recent hires." Hybrid search with semantic ranking addresses this, but it is not perfect. You need to test with real user queries, not the queries you assume users will ask.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Response time expectations create architecture pressure.&lt;/strong&gt; Users expect 3-5 second answers. A simple RAG query with keyword + vector + semantic ranking + LLM generation runs 2-4 seconds on a good day. Add agentic retrieval with multiple subqueries and you are looking at 8-15 seconds. The architecture decision between classic and agentic is partly a latency decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cost Math Nobody Publishes
&lt;/h2&gt;

&lt;p&gt;Here is a real cost estimate for a mid-market enterprise workload: 50,000 documents, 500 users, roughly 10,000 queries per day.&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;Azure Service&lt;/th&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Monthly Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;LLM (query generation)&lt;/td&gt;
&lt;td&gt;Azure OpenAI GPT-4.1&lt;/td&gt;
&lt;td&gt;Global Standard&lt;/td&gt;
&lt;td&gt;$200-500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embeddings&lt;/td&gt;
&lt;td&gt;text-embedding-3-small&lt;/td&gt;
&lt;td&gt;Standard&lt;/td&gt;
&lt;td&gt;$10-30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search index&lt;/td&gt;
&lt;td&gt;Azure AI Search&lt;/td&gt;
&lt;td&gt;S1 (Standard)&lt;/td&gt;
&lt;td&gt;$250&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Semantic ranker&lt;/td&gt;
&lt;td&gt;AI Search add-on&lt;/td&gt;
&lt;td&gt;Per 1,000 queries&lt;/td&gt;
&lt;td&gt;$50-100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orchestrator&lt;/td&gt;
&lt;td&gt;App Service / Functions&lt;/td&gt;
&lt;td&gt;B1-S1&lt;/td&gt;
&lt;td&gt;$50-100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Document storage&lt;/td&gt;
&lt;td&gt;Blob Storage&lt;/td&gt;
&lt;td&gt;Hot tier&lt;/td&gt;
&lt;td&gt;$10-20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monitoring&lt;/td&gt;
&lt;td&gt;Application Insights&lt;/td&gt;
&lt;td&gt;Pay-as-you-go&lt;/td&gt;
&lt;td&gt;$20-50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;$600-1,100/month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That is the honest number. Not the "$20/month AI chatbot" from the demo. Not the six-figure enterprise quote from a systems integrator. A properly architected mid-market RAG solution with monitoring, security, and production-grade infrastructure.&lt;/p&gt;

&lt;p&gt;Three pricing traps I see repeatedly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trap 1: AI Search tier escalation.&lt;/strong&gt; You start on Basic ($74/month) because your vector index fits in 2 GB. Six months later, your document corpus has grown and you need S2 at $1,000/month. The jump from Basic to S1 is manageable. The jump from S1 to S2 is 4x. Plan your storage growth before you commit to a tier. The good news: self-service tier upgrades are now in preview, so you can scale up without recreating indexes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trap 2: Provisioned vs Standard deployment.&lt;/strong&gt; Provisioned Throughput Units (PTUs) give you reserved capacity and predictable costs. But the minimum commitment is significant, and PTUs only make sense at sustained high volume. Most teams should start with Standard (pay-per-token) and migrate to Provisioned when monthly token spend consistently exceeds the PTU cost. Do the math before you sign.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trap 3: Total cost vs Azure OpenAI cost.&lt;/strong&gt; Azure OpenAI token pricing is competitive. But total Azure cost runs 15-40% higher than calling OpenAI directly when you factor in the support plan, data transfer, Blob Storage, networking, and Key Vault. The trade-off is enterprise security, compliance, private networking, and regional data residency. For regulated industries, that premium is worth it. For a startup building a chatbot, maybe not.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scaling Triggers That Change the Math
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;100K+ documents&lt;/strong&gt; push you to S2 AI Search ($1,000/month) or storage-optimized tiers ($2,500+/month)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High sustained throughput&lt;/strong&gt; justifies PTU commitment over pay-per-token&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-region deployment&lt;/strong&gt; multiplies the entire cost stack by region count&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-tuning&lt;/strong&gt; adds compute costs for training runs on top of inference costs&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Want architecture reviews like this for your Azure AI project?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/az365ai/" rel="noopener noreferrer"&gt;Follow Alex on LinkedIn&lt;/a&gt; for cost breakdowns, architecture patterns, and honest takes on what works in production.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Power Platform Integration: The Bridge Between Pro-Dev and Citizen AI
&lt;/h2&gt;

&lt;p&gt;Most enterprise organizations do not choose between custom Azure AI and Power Platform AI. They need both. The architecture question is where the boundary sits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure OpenAI Connector&lt;/strong&gt; is a Premium connector for Power Automate and Power Apps. It calls Azure OpenAI endpoints directly from flows and canvas apps. Requires a Premium license (per user or per app). Use this when you need GPT capabilities inside an existing Power Platform workflow without building a custom API. The &lt;a href="https://az365.ai/blog/ai-powered-flow-review-quality-gates-before-production" rel="noopener noreferrer"&gt;AI-powered flow review&lt;/a&gt; pattern shows what this looks like in practice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copilot Studio&lt;/strong&gt; is the low-code surface for building AI-driven agents. It integrates with Azure OpenAI, Azure AI Search, and Microsoft Graph. Deploy agents across websites, Teams, and other channels. For organizations that want AI assistants without custom code, Copilot Studio is the entry point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataverse as a RAG source&lt;/strong&gt; is the pattern I see gaining traction. Your CRM data, case records, knowledge articles - all sitting in Dataverse - can be surfaced through custom APIs or Service Bus integration to Azure AI Search. Virtual tables can integrate AI-enriched data back into Dataverse without replication. The &lt;a href="https://az365.ai/blog/power-platform-governance-repo-standards-reviews-inventory/" rel="noopener noreferrer"&gt;Power Platform governance baseline&lt;/a&gt; covers how structured governance makes this integration manageable.&lt;/p&gt;

&lt;p&gt;One thing to watch: &lt;strong&gt;AI Builder credits are transitioning to Copilot Studio Credits.&lt;/strong&gt; Seeded credits from Power Apps Premium and D365 licenses are available until November 1, 2026, then they disappear. If your AI Builder consumption relies on seeded credits, plan your budget now.&lt;/p&gt;

&lt;p&gt;The honest take on &lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy" rel="noopener noreferrer"&gt;when to build custom Azure AI vs adopt Copilot&lt;/a&gt; is a decision framework I cover in the next article in this series.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Architecture Diagrams Leave Out
&lt;/h2&gt;

&lt;p&gt;After building production AI solutions on Azure, here is what I wish someone had told me upfront:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The naming churn is real and it affects your team.&lt;/strong&gt; Azure AI Studio became Azure AI Foundry became Microsoft Foundry. Documentation references all three names. Internal training materials go stale. Your team members search for "Azure AI Studio" tutorials and find outdated guidance. Budget time for re-education every 6-12 months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Content safety filtering adds latency and occasionally blocks legitimate queries.&lt;/strong&gt; The built-in content filters are non-negotiable in Azure OpenAI (unlike calling OpenAI directly). They protect you from liability, but they also add 100-300ms to every request and sometimes flag medical, legal, or HR content as harmful. You need a plan for false positives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitoring is not optional, and Application Insights alone is not enough.&lt;/strong&gt; You need token usage tracking, retrieval quality metrics (are you returning relevant chunks?), groundedness evaluation (is the LLM making things up?), and cost attribution by department or use case. Microsoft's GenAIOps guidance documents this, but most teams discover the need after the first invoice surprise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model Router&lt;/strong&gt; (Preview, May 2025) auto-selects the best underlying model per prompt. Interesting concept, but I would not use it in production yet. You lose cost predictability and debugging clarity when you cannot tell which model answered a given query.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The GPT-RAG Solution Accelerator&lt;/strong&gt; (&lt;a href="https://github.com/Azure/GPT-RAG" rel="noopener noreferrer"&gt;github.com/Azure/GPT-RAG&lt;/a&gt;) is the best starting point for a production deployment. Zero-Trust architecture, network isolation, NL2SQL agent capabilities, and Responsible AI guardrails included. It is opinionated, which is exactly what you want when standing up enterprise AI infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture Decision That Matters Most
&lt;/h2&gt;

&lt;p&gt;Every team I work with wants to talk about models. GPT-4.1 vs GPT-5.2. Context windows. Reasoning capabilities. Those choices matter, but they are reversible. You can swap models in an afternoon.&lt;/p&gt;

&lt;p&gt;The decision that actually determines project success is &lt;strong&gt;retrieval architecture.&lt;/strong&gt; How you chunk documents, how you build your search index, how you handle multi-source data governance. Get that wrong and no model will save you. Get it right and even GPT-4o-mini delivers useful results.&lt;/p&gt;

&lt;p&gt;Start with hybrid search (keyword + vector + semantic ranking) on Azure AI Search. Use GPT-4.1 for generation. Monitor costs weekly. Build your &lt;a href="https://az365.ai/blog/architecture-diagrams-with-draw-io-mcp-and-claude" rel="noopener noreferrer"&gt;architecture diagrams&lt;/a&gt; before you write code. And test with real user queries from day one, not synthetic benchmarks.&lt;/p&gt;

&lt;p&gt;The "$20 AI chatbot" from the demo becomes a $600-1,100/month production system. That is still dramatically cheaper than the pre-AI alternative of hiring 3 analysts to manually search 50,000 documents. But architects need honest numbers, not marketing slides.&lt;/p&gt;

&lt;p&gt;Build with the real architecture. Budget with the real costs. Ship with the real constraints. That is how AI on Azure actually works.&lt;/p&gt;




&lt;h2&gt;
  
  
  Microsoft AI Builder Series
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/microsoft-ai-certifications-2026" rel="noopener noreferrer"&gt;AI Certifications in 2026&lt;/a&gt; - Which ones actually matter&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/building-ai-solutions-azure-architecture" rel="noopener noreferrer"&gt;Building AI on Azure&lt;/a&gt; - The architecture that works&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy" rel="noopener noreferrer"&gt;Copilots vs Custom AI&lt;/a&gt; - When to build and when to buy&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://dev.to/"&gt;AZ365.ai&lt;/a&gt; - Azure and AI insights for architects building on Microsoft. &lt;a href="https://www.linkedin.com/in/az365ai/" rel="noopener noreferrer"&gt;Follow Alex on LinkedIn&lt;/a&gt; for architecture deep dives.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/building-ai-solutions-azure-architecture/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>azure</category>
      <category>azureai</category>
      <category>rag</category>
    </item>
    <item>
      <title>Microsoft AI Certifications in 2026: Which Ones Actually Matter</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Sun, 30 Aug 2026 17:51:25 +0000</pubDate>
      <link>https://dev.to/az365ai/microsoft-ai-certifications-in-2026-which-ones-actually-matter-15ok</link>
      <guid>https://dev.to/az365ai/microsoft-ai-certifications-in-2026-which-ones-actually-matter-15ok</guid>
      <description>&lt;p&gt;Half of Microsoft's AI certifications are retiring by June 2026. Three exams gone, six replacements launching in overlapping waves, a brand new executive tier nobody saw coming, and zero clear guidance from Microsoft on what to do if you are mid-study right now. I have been through 20 years of Microsoft certification cycles. This one is the messiest transition I have seen.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI-900, AI-102, and DP-100 retire by June 30, 2026. The replacements (AI-901, AI-103, AI-200, AI-300) launch in beta between April and May. For developers, take AI-102 before June or wait for AI-103 GA. For ML engineers, grab the AI-300 beta at 80% off. For architects, AB-100 is the hardest and most valuable cert in the new lineup. For everyone else, AB-730 is the $99 baseline that proves you can actually use AI at work.&lt;/p&gt;
&lt;/blockquote&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fmicrosoft-ai-certifications-hero.svg%3Fv%3Db55ef111" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fmicrosoft-ai-certifications-hero.svg%3Fv%3Db55ef111" alt="Timeline showing Microsoft AI certifications retiring and their replacements launching in 2026" width="672" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Great Reset: What Is Retiring and What Replaces It
&lt;/h2&gt;

&lt;p&gt;Microsoft announced the retirements in a &lt;a href="https://techcommunity.microsoft.com/blog/skills-hub-blog/the-ai-job-boom-is-here-are-you-ready-to-showcase-your-skills/4494128" rel="noopener noreferrer"&gt;Tech Community blog post&lt;/a&gt; that buried the timeline details. Here is the actual transition map.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Retiring Exam&lt;/th&gt;
&lt;th&gt;Retirement Date&lt;/th&gt;
&lt;th&gt;Replacement&lt;/th&gt;
&lt;th&gt;Replacement Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI-900 (Azure AI Fundamentals)&lt;/td&gt;
&lt;td&gt;June 30, 2026&lt;/td&gt;
&lt;td&gt;AI-901 (Azure AI Fundamentals v2)&lt;/td&gt;
&lt;td&gt;Beta April 2026, GA expected June 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI-102 (Azure AI Engineer Associate)&lt;/td&gt;
&lt;td&gt;June 30, 2026&lt;/td&gt;
&lt;td&gt;AI-103 (Azure AI App and Agent Developer)&lt;/td&gt;
&lt;td&gt;Beta April 2026, GA expected June 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DP-100 (Azure Data Scientist Associate)&lt;/td&gt;
&lt;td&gt;June 1, 2026&lt;/td&gt;
&lt;td&gt;AI-300 (MLOps Engineer Associate)&lt;/td&gt;
&lt;td&gt;Beta now, GA expected May 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notice the problem. DP-100 retires June 1 but AI-300 might not be GA until May. AI-900 retires June 30 but AI-901 enters beta in April. There is a window where the old exam is dead and the new one is not fully live. If you are planning to certify, timing matters.&lt;/p&gt;

&lt;p&gt;There is also a second wave of entirely new certifications that did not exist before:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;New Exam&lt;/th&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AB-730 (AI Business Professional)&lt;/td&gt;
&lt;td&gt;Fundamentals&lt;/td&gt;
&lt;td&gt;$99&lt;/td&gt;
&lt;td&gt;Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AB-731 (AI Transformation Leader)&lt;/td&gt;
&lt;td&gt;Fundamentals&lt;/td&gt;
&lt;td&gt;$99&lt;/td&gt;
&lt;td&gt;Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AB-900 (M365 Copilot and Agent Administration)&lt;/td&gt;
&lt;td&gt;Fundamentals&lt;/td&gt;
&lt;td&gt;$99&lt;/td&gt;
&lt;td&gt;Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AB-100 (Agentic AI Business Solutions Architect)&lt;/td&gt;
&lt;td&gt;Expert&lt;/td&gt;
&lt;td&gt;$165&lt;/td&gt;
&lt;td&gt;Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI-200 (Azure AI Cloud Developer)&lt;/td&gt;
&lt;td&gt;Associate&lt;/td&gt;
&lt;td&gt;$165&lt;/td&gt;
&lt;td&gt;Beta April 2026, GA expected July 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SC-500 (Cloud and AI Security Engineer)&lt;/td&gt;
&lt;td&gt;Associate&lt;/td&gt;
&lt;td&gt;$165&lt;/td&gt;
&lt;td&gt;Beta May 2026, GA expected July 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That is 9 new or replacement exams. Microsoft now has more AI-specific certifications than AWS and Google combined. Whether that is a good thing depends on which ones you pick.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Certifications That Actually Matter
&lt;/h2&gt;

&lt;p&gt;I am ranking every new Microsoft AI certification by practical career value. Not marketing value. Not resume-padding value. What actually changes your job prospects or daily work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tier 1: Take These
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AI-300 (MLOps Engineer Associate) - The real engineer cert.&lt;/strong&gt;&lt;br&gt;
This replaces DP-100 and it is a genuine upgrade. The old Data Scientist Associate exam tested you on Azure ML Studio notebooks and scikit-learn pipelines. AI-300 tests MLOps infrastructure: GitHub Actions for model CI/CD, Bicep templates for Azure AI Foundry deployment, model monitoring, RAG pipeline optimization, and generative AI operations. This is what ML engineering actually looks like in 2026.&lt;/p&gt;

&lt;p&gt;Study time: 50-70 hours. The beta is open right now with Microsoft's standard 80% beta discount for the first 300 testers (check learn.microsoft.com for the current beta promo code, since codes change per cohort). At roughly $33 instead of $165, this is the best deal in the current certification cycle.&lt;/p&gt;

&lt;p&gt;If I were starting today as a data scientist or ML engineer, this is my first cert. No contest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AB-100 (Agentic AI Business Solutions Architect) - The hardest one.&lt;/strong&gt;&lt;br&gt;
This is expert-level and requires an active associate certification as a prerequisite. The exam covers multi-agent AI system design across Dynamics 365, Power Platform, Copilot Studio, and Azure AI. Not many people have deep knowledge across all four platforms. That small candidate pool is exactly what makes this cert valuable.&lt;/p&gt;

&lt;p&gt;Study time: 60-80 hours. Cost: $165. If you work at the intersection of D365 and AI and you are already building &lt;a href="https://az365.ai/blog/power-platform-governance-repo-standards-reviews-inventory/" rel="noopener noreferrer"&gt;agentic governance into Power Platform&lt;/a&gt; projects, this is the cert that separates you from everyone else. We took this one apart domain by domain in the &lt;a href="https://az365.ai/blog/ab-100-agentic-ai-architect-certification-decode-2026/" rel="noopener noreferrer"&gt;AB-100 decode&lt;/a&gt;: what the Deploy-heavy weighting signals, the prerequisite gate that catches PL-600 holders, and a three-week prep plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-103 (Azure AI App and Agent Developer Associate) - The developer default.&lt;/strong&gt;&lt;br&gt;
This replaces AI-102 with a stronger focus on Azure AI Foundry, agentic patterns, and Copilot Studio integration. If you build AI-powered applications on Azure, this will be your primary credential starting mid-2026.&lt;/p&gt;

&lt;p&gt;The problem: it is not GA yet. Beta is expected April 2026. If you need a cert now, take AI-102 before June 30. Your AI-102 credential stays valid for one year after the retirement date, and the knowledge overlaps significantly with AI-103.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tier 2: Situationally Valuable
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AB-730 (AI Business Professional) - The baseline everyone should have.&lt;/strong&gt;&lt;br&gt;
This is the $99, 15-20 hour certification that proves you can use generative AI tools productively. Prompt engineering, business content drafting, AI-assisted analysis. It is not technical. That is the point. Every knowledge worker who uses M365 Copilot daily should have this. If you manage a team, make this the standard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AB-900 (Copilot and Agent Administration Fundamentals) - For IT admins.&lt;/strong&gt;&lt;br&gt;
Heavy on Microsoft Purview, DLP policies, DSPM for AI, and SharePoint oversharing prevention. If you are the person responsible for rolling out Copilot licenses and making sure nobody accidentally shares confidential data through AI, this is your cert. Niche but critical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SC-500 (Cloud and AI Security Engineer Associate) - The security crossover.&lt;/strong&gt;&lt;br&gt;
Beta expected May 2026. If it covers LLM application security, Purview DSPM for AI, and Copilot data protection as expected, this fills a gap that nobody else in the market has addressed. Security engineers who understand AI-specific attack surfaces are in short supply.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tier 3: Strategic But Not Urgent
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AB-731 (AI Transformation Leader) - The one nobody is talking about.&lt;/strong&gt;&lt;br&gt;
This is the first Microsoft certification explicitly designed for executives. Not technical people. Not developers. Directors, VPs, and department heads who need to understand AI business value, responsible AI governance, and adoption strategy.&lt;/p&gt;

&lt;p&gt;The exam covers three domains: AI business value assessment (35-40%), Microsoft AI capabilities (35-40%), and implementation strategy (20-25%). Study time is 20-30 hours. Cost is $99.&lt;/p&gt;

&lt;p&gt;Here is why this matters even if you are technical. Your CTO or VP of Engineering probably cannot articulate what Microsoft's AI stack actually does. They know "Copilot" and maybe "Azure OpenAI" and that is it. AB-731 gives them a structured framework for AI investment decisions. If you are trying to get AI initiatives funded, sending your leadership team through AB-731 prep materials removes the biggest blocker: executives who do not understand what they are approving. The &lt;a href="https://az365.ai/blog/power-platform-governance-repo-standards-reviews-inventory/" rel="noopener noreferrer"&gt;Power Platform governance baseline&lt;/a&gt; is a good primer on why governance matters before you hand leadership the AB-731 study guide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-901 (Azure AI Fundamentals) - Wait for it.&lt;/strong&gt;&lt;br&gt;
Direct replacement for AI-900. If you have zero AI background and want a fundamentals credential, wait for this instead of rushing through AI-900 before retirement. The content will be updated for 2026 tooling. Beta expected April, GA expected June.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-200 (Azure AI Cloud Developer Associate) - TBD.&lt;/strong&gt;&lt;br&gt;
Beta expected April 2026. The differentiation from AI-103 is not clear yet. This appears to be a broader cloud developer cert with AI integration focus, but until the study guide drops, I cannot recommend it over AI-103.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do Certifications Actually Affect Your Career?
&lt;/h2&gt;

&lt;p&gt;Here is the real question. Do these credentials translate to money and job offers?&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Salary Range (USD, 2026)&lt;/th&gt;
&lt;th&gt;Cert Premium vs Uncertified&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI/ML Engineer (certified)&lt;/td&gt;
&lt;td&gt;$120,000 - $200,000&lt;/td&gt;
&lt;td&gt;+15-25%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Azure AI Engineer (AI-102/AI-103)&lt;/td&gt;
&lt;td&gt;$110,000 - $165,000&lt;/td&gt;
&lt;td&gt;+12-20%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MLOps Engineer (AI-300 target)&lt;/td&gt;
&lt;td&gt;$130,000 - $180,000&lt;/td&gt;
&lt;td&gt;+15-25%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Scientist (DP-100/AI-300)&lt;/td&gt;
&lt;td&gt;$115,000 - $170,000&lt;/td&gt;
&lt;td&gt;+12-20%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Certified professionals earn 15-25% more than uncertified peers in equivalent roles. That is not my opinion. That is what the &lt;a href="https://www.riseworks.io/blog/ai-talent-salary-report-2025" rel="noopener noreferrer"&gt;salary data shows&lt;/a&gt; across multiple surveys.&lt;/p&gt;

&lt;p&gt;But here is the nuance. Entry-level AI hiring dropped 73.4% in 2025. The market is not looking for people who can pass a fundamentals exam. It is looking for mid-to-senior practitioners who can ship production AI systems. A fundamentals cert alone does not move the needle. An associate or expert cert stacked on top of real project experience does.&lt;/p&gt;

&lt;p&gt;The ROI math on AI-300: $165 exam fee (or $33 at beta pricing), 50-70 hours of study, and an MLOps Engineer role pays $130,000-$180,000. If certification moves you even one salary band, the return on 60 hours of study time is measured in tens of thousands of dollars per year.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Building AI solutions on Azure?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start with the architecture patterns that actually work in production. &lt;a href="https://az365.ai/blog/what-is-azure-ai-services-2026" rel="noopener noreferrer"&gt;What are Azure AI Services in 2026&lt;/a&gt; maps the full service catalog, and &lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy" rel="noopener noreferrer"&gt;Copilots vs Custom AI&lt;/a&gt; covers build-vs-buy decisions for real projects. &lt;a href="https://www.linkedin.com/in/az365ai/" rel="noopener noreferrer"&gt;Follow Alex on LinkedIn&lt;/a&gt; for architecture deep dives.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Microsoft vs AWS vs Google: The Honest Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Microsoft&lt;/th&gt;
&lt;th&gt;AWS&lt;/th&gt;
&lt;th&gt;Google Cloud&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI-specific certs&lt;/td&gt;
&lt;td&gt;10+&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fundamentals tier&lt;/td&gt;
&lt;td&gt;AI-901, AB-730, AB-731, AB-900&lt;/td&gt;
&lt;td&gt;AI Practitioner ($150)&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Developer/Engineer tier&lt;/td&gt;
&lt;td&gt;AI-103, AI-200, AI-300&lt;/td&gt;
&lt;td&gt;ML Specialty ($300)&lt;/td&gt;
&lt;td&gt;Professional ML Engineer ($200)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architect/Expert tier&lt;/td&gt;
&lt;td&gt;AB-100&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security + AI cert&lt;/td&gt;
&lt;td&gt;SC-500&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business/Executive cert&lt;/td&gt;
&lt;td&gt;AB-730, AB-731&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud market share&lt;/td&gt;
&lt;td&gt;~24%&lt;/td&gt;
&lt;td&gt;~31-33%&lt;/td&gt;
&lt;td&gt;~10-12%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Salary range&lt;/td&gt;
&lt;td&gt;$110K - $200K&lt;/td&gt;
&lt;td&gt;$130K - $165K&lt;/td&gt;
&lt;td&gt;$140K - $170K&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Microsoft has the broadest certification portfolio by far. AWS has two AI certs. Google has two. Microsoft has ten and counting.&lt;/p&gt;

&lt;p&gt;Does breadth mean quality? Not automatically. But it does mean Microsoft is the only vendor where a business analyst, a developer, an ML engineer, an architect, a security engineer, and an executive can all get role-appropriate AI credentials from the same platform. AWS and Google do not have a cert for your CTO. Microsoft does.&lt;/p&gt;

&lt;p&gt;The salary numbers are interesting. Google Cloud ML Engineer certification correlates with the highest single-cert salary bump at roughly 25%. AWS ML Specialty appears in 40% more job postings than competitors for ML-specific roles. Microsoft Azure AI sits in the middle on both metrics but has 3x more certification paths.&lt;/p&gt;

&lt;p&gt;My honest take: if you work in a Microsoft shop (D365, Power Platform, M365, Azure), Microsoft certs are the obvious choice. If you are cloud-agnostic and optimizing purely for salary, Google's ML Engineer cert has the best ROI per exam. If you want the most job postings to apply to, AWS ML Specialty gives you volume.&lt;/p&gt;

&lt;p&gt;Most competitive professionals hold one vendor cert plus one vendor-neutral credential (Stanford ML Specialization, fast.ai, or Deep Learning Specialization). The vendor cert proves you can deploy. The theory cert proves you understand why.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Free Credentials Everyone Ignores
&lt;/h2&gt;

&lt;p&gt;Microsoft offers Applied Skills assessments. These are free, hands-on lab credentials. Not traditional exams. You complete a real task in a sandbox environment and earn a credential if you pass.&lt;/p&gt;

&lt;p&gt;Current AI-related Applied Skills:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create agents in Microsoft Copilot Studio&lt;/strong&gt; - build and deploy a working agent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Develop generative AI apps with Azure OpenAI and Semantic Kernel&lt;/strong&gt; - code-level assessment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate reports with AI research agents&lt;/strong&gt; - practical AI application&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prepare security and compliance to support Microsoft 365 Copilot&lt;/strong&gt; - governance skills&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These do not carry the weight of a full certification on a resume. But they are free, they prove hands-on ability (not just exam knowledge), and they take 2-4 hours each. If you are building a &lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy" rel="noopener noreferrer"&gt;Copilot-powered solution&lt;/a&gt; and want to validate your skills without spending $165, start here.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Would Actually Do
&lt;/h2&gt;

&lt;p&gt;If I were planning my certification path right now, here is exactly what I would do based on career stage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Early career (0-3 years):&lt;/strong&gt;&lt;br&gt;
Wait for AI-901 (April beta). Pass it. Then immediately start studying for AI-103. Those two credentials plus a GitHub portfolio of actual projects is enough to get interviews. Skip AB-730 unless your employer pays for it. Your time is better spent building things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mid-career developer (3-7 years):&lt;/strong&gt;&lt;br&gt;
Take AI-102 right now, before June 30. The content overlaps with AI-103 and you get a valid credential immediately instead of waiting for a beta. Then stack the Semantic Kernel Applied Skills credential on top. If you are building AI-powered apps on Azure, the combination of AI-102 + hands-on Semantic Kernel experience puts you ahead of 90% of candidates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Senior engineer or ML specialist (7+ years):&lt;/strong&gt;&lt;br&gt;
AI-300 beta. Today. The standard 80% beta discount is available for the first 300 testers (check learn.microsoft.com for the current code, since beta promo codes rotate per cohort). This is the most technical cert in the new lineup and it validates what you probably already do: MLOps pipelines, model deployment, monitoring, and generative AI operations. At roughly $33, the risk-reward ratio is absurd.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architect:&lt;/strong&gt;&lt;br&gt;
AB-100, but only after you have a qualifying associate cert (that is a hard prerequisite). If you already hold AI-102 or any of the 14 qualifying associate certs, start studying now. If you are &lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy" rel="noopener noreferrer"&gt;building agentic solutions&lt;/a&gt; across D365 and Azure AI, this is the credential that proves cross-platform architecture competence. Small candidate pool means high differentiation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manager or director:&lt;/strong&gt;&lt;br&gt;
AB-731 (AI Transformation Leader). The $99 you spend and 20-30 hours you invest will give you the vocabulary and framework to evaluate AI initiatives, set governance policy, and make funding decisions without depending on your technical team to translate everything. Then send your entire team through AB-730.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IT admin managing Copilot rollout:&lt;/strong&gt;&lt;br&gt;
AB-900 first, then the Applied Skills credential for Copilot security and compliance. These two together cover the governance side of AI deployment that most organizations are ignoring until something goes wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Timeline That Matters
&lt;/h2&gt;

&lt;p&gt;Here is what to do month by month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;March 2026:&lt;/strong&gt; Decide your path. If you are taking AI-102 or DP-100, register now. If you want the AI-300 beta discount, apply before slots fill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;April 2026:&lt;/strong&gt; AI-901 and AI-103 betas open. Early adopters can take these at reduced cost. Beta scores take longer to process (8-10 weeks).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;May 2026:&lt;/strong&gt; SC-500 beta opens. AI-300 expected GA. Last full month to take DP-100 before June 1 retirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;June 2026:&lt;/strong&gt; AI-900, AI-102, DP-100 all retired by June 30. AI-901 expected GA. AI-103 expected GA. The old era is officially over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;July 2026:&lt;/strong&gt; AI-200 and SC-500 expected GA. The full new certification portfolio is in place.&lt;/p&gt;

&lt;p&gt;The window between now and June is the most important. After June, the path is clear. Right now, you have a choice between the known (old exams with defined study guides) and the unknown (new exams with beta-quality materials). I would take the known exam now and the new exam later. Having both on your profile shows continuity.&lt;/p&gt;

&lt;p&gt;The certification market is shifting from "prove you know AI concepts" to "prove you can deploy AI systems." Every new exam in the 2026 lineup emphasizes hands-on skills, production deployment, and operational concerns over theory. That is the right direction. Study accordingly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Microsoft AI Builder Series
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/microsoft-ai-certifications-2026" rel="noopener noreferrer"&gt;AI Certifications in 2026&lt;/a&gt; - Which ones actually matter&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/what-is-azure-ai-services-2026" rel="noopener noreferrer"&gt;What Are Azure AI Services in 2026&lt;/a&gt; - The full service map&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy" rel="noopener noreferrer"&gt;Copilots vs Custom AI&lt;/a&gt; - When to build and when to buy&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://dev.to/"&gt;AZ365.ai&lt;/a&gt; - Azure and AI insights for architects building on Microsoft. &lt;a href="https://www.linkedin.com/in/az365ai/" rel="noopener noreferrer"&gt;Follow Alex on LinkedIn&lt;/a&gt; for architecture deep dives.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/microsoft-ai-certifications-2026/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aistrategy</category>
      <category>azureai</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>15 Rules for Perfect Architecture Diagram Arrows</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Sat, 29 Aug 2026 17:27:43 +0000</pubDate>
      <link>https://dev.to/az365ai/15-rules-for-perfect-architecture-diagram-arrows-59l7</link>
      <guid>https://dev.to/az365ai/15-rules-for-perfect-architecture-diagram-arrows-59l7</guid>
      <description>&lt;p&gt;I built a programmatic checker that scores architecture diagram arrows against 15 quality rules, then ran it on the 52 diagrams shipped on this site.&lt;/p&gt;

&lt;p&gt;41 failed.&lt;/p&gt;

&lt;p&gt;Not "borderline." Failed. Crossed arrows. Diagonal segments. Edges routing through shapes. Exit points bunched together. The checker is mechanical and applied to my own published artifacts, so this isn't a study, it's a self-audit: ~79% of diagrams I'd already shipped had routing issues the human eye glosses over.&lt;/p&gt;

&lt;p&gt;The 15 rules below are the rules the checker enforces. Every diagram shipped after the audit passes all of them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Professional architecture diagrams require orthogonal-only edges, zero crossings, zero edge-through-shape violations, evenly distributed exit points, 20px clearance from shapes, and grid-aligned waypoints. These aren't style preferences - they're geometric constraints that can be checked programmatically. Most auto-routed diagrams fail at least 3 of these 15 rules.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The 3 Critical Rules (Zero Tolerance)
&lt;/h2&gt;

&lt;p&gt;These three rules have zero tolerance. Violate any one of them and the diagram looks amateur, regardless of everything else.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 1: Orthogonal Only
&lt;/h3&gt;

&lt;p&gt;Every segment of every edge must be either perfectly horizontal or perfectly vertical. No diagonals. No curves. No "close enough."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The test:&lt;/strong&gt; Take any two consecutive points on an edge path. Either their X coordinates are identical (vertical segment) or their Y coordinates are identical (horizontal segment). If both differ, the segment is diagonal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Diagonal edges look unintentional. They suggest the tool auto-routed the edge and nobody reviewed it. A single diagonal segment in an otherwise clean diagram breaks the visual consistency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Insert a waypoint at the bend point to split the diagonal into two orthogonal segments. Choose the L-shape (horizontal-first or vertical-first) that creates fewer crossings with other edges.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 2: Zero Crossings
&lt;/h3&gt;

&lt;p&gt;No two edges may intersect at any point along their paths.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The test:&lt;/strong&gt; Decompose every edge into horizontal and vertical segments. For every pair of edges, check all H-V segment pairs. A crossing occurs when a horizontal segment's Y value falls between a vertical segment's Y endpoints AND the vertical segment's X value falls between the horizontal segment's X endpoints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Crossed edges force the reader to trace which line goes where. With more than two crossings, the diagram becomes a puzzle instead of a communication tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Re-route the shorter edge by adding waypoints that go around the crossing point. Use the "highway" pattern - route the edge outside the main diagram area, then back in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 3: Zero Edge-Through-Shape
&lt;/h3&gt;

&lt;p&gt;No edge segment may pass through the bounding box of any shape that is not the edge's source or target.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The test:&lt;/strong&gt; For each edge segment, check intersection with every non-source, non-target shape. A horizontal segment at &lt;code&gt;y=100&lt;/code&gt; from &lt;code&gt;x=50&lt;/code&gt; to &lt;code&gt;x=300&lt;/code&gt; passes through a shape at &lt;code&gt;(120, 80, 160, 60)&lt;/code&gt; because the segment's Y is within the shape's vertical bounds and the segment's X range overlaps the shape's horizontal bounds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; This is the most egregious violation. An arrow that goes &lt;em&gt;through&lt;/em&gt; a box looks broken. It's the first thing anyone notices. It screams "nobody reviewed this diagram."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Add two waypoints that route the edge around the shape, maintaining at least 20px clearance. Route below (&lt;code&gt;shape.bottom + 20&lt;/code&gt;), above (&lt;code&gt;shape.top - 20&lt;/code&gt;), or to the side.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 4 Routing Quality Rules
&lt;/h2&gt;

&lt;p&gt;These affect how professional the routing looks. They're the difference between "acceptable" and "polished."&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 4: Minimal Bends
&lt;/h3&gt;

&lt;p&gt;Each edge should have the minimum number of bends needed to reach its target without violating Rules 1-3. Extra bends add visual noise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The test:&lt;/strong&gt; For each edge with N waypoints, simulate removing each intermediate waypoint. If the path is still valid without it, the waypoint is unnecessary.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 5: Consistent Exit/Entry Points
&lt;/h3&gt;

&lt;p&gt;When multiple edges exit the same side of a shape, they must be evenly distributed. Not all bunched at the center.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The formula:&lt;/strong&gt; For N edges exiting the same side, position each at &lt;code&gt;(i + 1) / (N + 1)&lt;/code&gt;. Three edges from the right side should exit at Y positions 0.25, 0.50, and 0.75. Not 0.33, 0.50, 0.67. And definitely not all at 0.50.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Bunched exit points create overlapping edge segments near the shape. The first few pixels of each edge look like one thick line instead of separate paths.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 6: Symmetrical Fan-Out
&lt;/h3&gt;

&lt;p&gt;When one source connects to multiple targets, the routing pattern must be visually symmetrical around the center axis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The pattern:&lt;/strong&gt; All edges exit the source at evenly distributed points. All edges travel to a shared "highway" line (a vertical or horizontal guide). Each edge turns on the highway toward its target. The result: zero crossings, perfect symmetry.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 7: Symmetrical Fan-In
&lt;/h3&gt;

&lt;p&gt;Same as Rule 6 but reversed. Multiple sources converging on one target must enter at evenly distributed points with symmetrical routing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3 Spacing Rules
&lt;/h2&gt;

&lt;p&gt;These control the whitespace around edges. Tight diagrams with edges brushing against shapes look cramped and hard to read.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 8: 20px Clearance
&lt;/h3&gt;

&lt;p&gt;Every edge segment must maintain at least 20px distance from any non-source, non-target shape boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The test:&lt;/strong&gt; For each edge segment, find the closest shape boundary that isn't the edge's source or target. If the distance is less than 20px, the edge is too close.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Tight clearance makes it ambiguous whether an edge connects to a shape or just passes by it. 20px of whitespace removes the ambiguity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 9: No Overlapping Edges
&lt;/h3&gt;

&lt;p&gt;Two different edges may not share the same path segment. Parallel edges on the same line look like one thick edge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Offset parallel edges by 10px perpendicular to the shared segment direction. Two horizontal edges at &lt;code&gt;y=100&lt;/code&gt; become one at &lt;code&gt;y=95&lt;/code&gt; and one at &lt;code&gt;y=105&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 10: Label Placement
&lt;/h3&gt;

&lt;p&gt;Every edge label must be centered on the edge's longest segment, not overlapping any shape, and have a white background so the label is readable even where it crosses the edge line.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 5 Polish Rules
&lt;/h2&gt;

&lt;p&gt;These are the finishing touches. They distinguish "good" from "publication-ready."&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 11: Flow Direction Consistency
&lt;/h3&gt;

&lt;p&gt;The primary flow direction must be consistent. If the diagram flows left-to-right, more than 70% of edges should follow that direction. Feedback loops and secondary relationships are exceptions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 12: Edge Ordering Preservation
&lt;/h3&gt;

&lt;p&gt;Parallel edges connecting the same columns of shapes must maintain their vertical order. If edge A's source is above edge B's source, edge A's path should remain above edge B's path at every point.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 13: Right-Angle Precision
&lt;/h3&gt;

&lt;p&gt;Every bend must be exactly 90 degrees. This is guaranteed by Rule 1 - if all segments are orthogonal, all bends are right angles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 14: Connection Point Accuracy
&lt;/h3&gt;

&lt;p&gt;The first waypoint of each edge must exactly match the calculated exit point on the source shape. No floating-point drift. &lt;code&gt;exitX=0.5&lt;/code&gt; on a shape at &lt;code&gt;x=100&lt;/code&gt; with &lt;code&gt;width=200&lt;/code&gt; means the edge starts at &lt;code&gt;x=200&lt;/code&gt;. Exactly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 15: Waypoint Grid Alignment
&lt;/h3&gt;

&lt;p&gt;All waypoints must be on the 10px grid. Round every coordinate: &lt;code&gt;x = Math.round(x / 10) * 10&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Check These Programmatically
&lt;/h2&gt;

&lt;p&gt;I wrote a TypeScript engine that parses &lt;code&gt;.drawio&lt;/code&gt; XML, extracts all vertices and edges, decomposes edge paths into segments, and runs every rule as a geometric check.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Rule 2: Zero Crossings&lt;/span&gt;
&lt;span class="c1"&gt;// Check every pair of edges for H-V segment intersections&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;segA&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;edgeA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;segments&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;segB&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;edgeB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;segments&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;segA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;direction&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;H&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;segB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;direction&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;V&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;segA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;segB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;minY&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;segA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;segB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maxY&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
          &lt;span class="nx"&gt;segB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;segA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;minX&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;segB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;segA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maxX&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;violations&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;CROSSING&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The scoring: 30 points for Rules 1-3 (critical), 25 for Rules 4-7 (routing), 25 for Rules 8-10 (spacing), 20 for Rules 11-15 (polish). &lt;strong&gt;Pass threshold: 95 out of 100.&lt;/strong&gt; Not 70. Not 80. One crossed arrow in a professional diagram is one too many.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results From the Self-Audit
&lt;/h2&gt;

&lt;p&gt;The checker scored all 52 diagrams shipped on this site at audit time. The breakdown:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Score Range&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;100/100 (perfect)&lt;/td&gt;
&lt;td&gt;11 diagrams&lt;/td&gt;
&lt;td&gt;Simple horizontal flows - no routing challenges&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;80-94 (close)&lt;/td&gt;
&lt;td&gt;8 diagrams&lt;/td&gt;
&lt;td&gt;Minor exit point distribution or clearance issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;60-79 (needs work)&lt;/td&gt;
&lt;td&gt;8 diagrams&lt;/td&gt;
&lt;td&gt;Edge-through-shape violations, bunched exits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Below 60 (rewrite)&lt;/td&gt;
&lt;td&gt;25 diagrams&lt;/td&gt;
&lt;td&gt;Multiple crossings, diagonals, edges through shapes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The diagrams that scored 100 were all simple left-to-right horizontal flows. Easy routing. No fan-out. No feedback loops. The moment a diagram had more than one flow direction, the auto-router started creating violations.&lt;/p&gt;

&lt;p&gt;The fix for every failing diagram was the same: add explicit waypoints to each edge instead of relying on the auto-router. When you specify the exact path, the path is exact.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Recommend
&lt;/h2&gt;

&lt;p&gt;Start with Rules 1-3. If your diagrams have no diagonal segments, no crossings, and no edges through shapes, they're already better than 90% of architecture diagrams in the wild.&lt;/p&gt;

&lt;p&gt;Then add Rule 5 (exit distribution) and Rule 8 (clearance). These two rules account for most of the "it looks off but I can't explain why" feeling in diagrams.&lt;/p&gt;

&lt;p&gt;Finally, enforce Rule 15 (grid alignment). When every waypoint snaps to a 10px grid, the entire diagram feels ordered even if you can't articulate why.&lt;/p&gt;

&lt;p&gt;The remaining rules are polish. They matter for publication. They don't matter for a whiteboard sketch.&lt;/p&gt;

&lt;p&gt;The 15 rules above pass mechanical review. Apply them by hand, or wire them into your diagram tooling so the bad arrows never get drawn in the first place.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;For the technical pipeline behind these diagrams, see &lt;a href="https://az365.ai/blog/architecture-diagrams-with-draw-io-mcp-and-claude/" rel="noopener noreferrer"&gt;Architecture Diagrams with Draw.io MCP and Claude&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/15-rules-perfect-architecture-diagram-arrows/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>drawio</category>
      <category>diagrams</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Generating 20+ Architecture Diagrams in Minutes: A Batch-Generation Pattern</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Fri, 28 Aug 2026 23:21:06 +0000</pubDate>
      <link>https://dev.to/az365ai/generating-20-architecture-diagrams-in-minutes-a-batch-generation-pattern-247m</link>
      <guid>https://dev.to/az365ai/generating-20-architecture-diagrams-in-minutes-a-batch-generation-pattern-247m</guid>
      <description>&lt;p&gt;When a CTO needs architecture documentation for a 350-person enterprise running 15 systems with zero existing diagrams, the timeline rarely permits weeks of Visio work. The traditional manual approach yields maybe five diagrams before the deadline, and they are outdated before the ink dries.&lt;/p&gt;

&lt;p&gt;The batch-generation approach: define the system as code, render diagrams programmatically, and iterate visual quality through automated checks. The same definition produces 20 or more diagrams in the time it takes to draw one by hand.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A TypeScript script generates 20+ enterprise architecture diagrams as Draw.io XML: ERDs, network topologies, CI/CD pipelines, integration maps, security models. Each diagram exports to SVG with Azure icons embedded. Every diagram passes automated quality gates (grid alignment, color palette, edge routing) and a visual QA review loop before publishing. The full set generates in minutes per batch.&lt;/p&gt;
&lt;/blockquote&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-integration-map.svg%3Fv%3D17a67c47" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-integration-map.svg%3Fv%3D17a67c47" alt="Enterprise integration map showing API Management as the central hub connecting Power Platform, backend services, legacy Oracle, and Dataverse" width="616" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Running Example: Cascade Dynamics
&lt;/h2&gt;

&lt;p&gt;Cascade Dynamics is the canonical az365 fictional company used across multiple articles. The architecture is designed to be plausible and complete enough to exercise every diagram category, while staying entirely synthetic. None of it maps to a specific real engagement.&lt;/p&gt;

&lt;p&gt;The setup: a 350-person firm modernizing its case-management platform. The fictional environment inherits an Oracle 19c database that has been running for 15 years, and is building a hybrid platform on Azure plus Power Platform while keeping the legacy system alive during the transition.&lt;/p&gt;

&lt;p&gt;The stack spans:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Legacy&lt;/strong&gt;: Oracle 19c on-prem, SFTP batch feeds, Windows Server VMs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure&lt;/strong&gt;: AKS, App Services, Cosmos DB, Azure SQL, API Management, Service Bus, Azure OpenAI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power Platform&lt;/strong&gt;: Dataverse for case management, Power Automate for approvals, Power BI for dashboards&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: Entra ID with Conditional Access, Key Vault, Sentinel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the kind of environment where architecture documentation is not optional. It is a compliance requirement. And it is the kind of environment where nobody has time to draw diagrams by hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do You Generate 20+ Diagrams from Code?
&lt;/h2&gt;

&lt;p&gt;The pattern is straightforward. A TypeScript script contains helper functions for common diagram elements (icons, rectangles, containers, edges) and a specification array where each diagram is a function that returns Draw.io XML.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Helper: Azure icon with label&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;iconBlock&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;iconPath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;addIcon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;iconPath&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;addLabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// One diagram = one function&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cascade-cicd-pipeline&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;iconBlock&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;devops/Azure_DevOps.svg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Azure DevOps&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;build&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;step&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;140&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;140&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;55&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Build&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Compile + unit tests&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;test&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;step&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;320&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;140&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;55&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Integration + security&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;amber&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;addEdge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ado&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;push&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;addEdge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;test&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the script. It generates 20+ &lt;code&gt;.drawio&lt;/code&gt; files, exports each to SVG (with Azure icons embedded, transparent backgrounds), and validates against the quality gate. The whole batch completes in minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 5 Categories Every Enterprise Architecture Needs
&lt;/h2&gt;

&lt;p&gt;Every complex system needs at least these five diagram categories. Skip any of them and there will be blind spots that cost time during incident response, audits, or onboarding.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Diagrams&lt;/th&gt;
&lt;th&gt;Who Reads Them&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Data Architecture&lt;/td&gt;
&lt;td&gt;ERDs, data flows, event architecture, state machines&lt;/td&gt;
&lt;td&gt;Developers, DBAs, compliance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure + Security&lt;/td&gt;
&lt;td&gt;Network topology, zero trust, identity, monitoring&lt;/td&gt;
&lt;td&gt;Platform engineers, security, auditors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DevOps + Deployment&lt;/td&gt;
&lt;td&gt;CI/CD, environment topology, IaC, container architecture&lt;/td&gt;
&lt;td&gt;DevOps, release managers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration + AI&lt;/td&gt;
&lt;td&gt;Integration map, AI pipelines, RAG architecture, migration path&lt;/td&gt;
&lt;td&gt;Architects, data engineers, AI team&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power Platform + Governance&lt;/td&gt;
&lt;td&gt;Platform footprint, approval flows, environments, governance&lt;/td&gt;
&lt;td&gt;CoE team, admins, business owners&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Data Architecture: ERDs, Flows, Events, and State Machines
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Core ERD
&lt;/h3&gt;

&lt;p&gt;This is always diagram #1. Before anyone writes a line of code, they need to see the data model. The Cascade Dynamics Dataverse schema has 6 core tables across 3 domains: clinical (blue), provider (green), and administrative (amber/purple/gray).&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-erd-core-entities.svg%3Fv%3D5fbfc844" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-erd-core-entities.svg%3Fv%3D5fbfc844" alt="Entity Relationship Diagram showing 6 Dataverse tables: Patient, Clinical Case, Clinician, Appointment, Document, and Audit Log with relationship arrows" width="862" height="529"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Core ERD for Cascade Dynamics. Color-coded by domain: clinical (blue), provider (green), scheduling (amber), documents (purple), audit (gray). All relationships labeled with cardinality.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What makes this ERD useful: column-level detail (not just table names), color coding by domain, and relationship cardinality on every edge. The &lt;code&gt;ai_summary&lt;/code&gt; column on the Document table signals immediately that AI processing is happening at the data layer.&lt;/p&gt;

&lt;p&gt;For a deeper look at generating beautiful ERDs from Dataverse schemas, see &lt;a href="https://az365.ai/blog/generate-beautiful-dataverse-erd-in-5-minutes" rel="noopener noreferrer"&gt;Generate a Beautiful Dataverse ERD in 5 Minutes&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Ingestion Pipeline
&lt;/h3&gt;

&lt;p&gt;The Oracle-to-Azure migration runs nightly batch feeds through SFTP. This diagram shows the flow from legacy to cloud, splitting structured data to Azure SQL and documents to Cosmos DB.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-data-flow-ingestion.svg%3Fv%3D91cd9cf3" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-data-flow-ingestion.svg%3Fv%3D91cd9cf3" alt="Data flow pipeline from Oracle 19c through SFTP and Blob Storage to Data Factory, splitting to Azure SQL for structured data and Cosmos DB for documents" width="736" height="181"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Nightly data ingestion from legacy Oracle. SFTP batch upload to Blob Storage triggers Data Factory, which routes structured data to SQL and documents to Cosmos.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Event-Driven Architecture
&lt;/h3&gt;

&lt;p&gt;Service Bus handles the async event distribution. Three topic categories (case events, document events, audit events) feed into Function App consumers. This is the backbone. Every state change in the system flows through here.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-event-driven-architecture.svg%3Fv%3D9bb46ed1" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-event-driven-architecture.svg%3Fv%3D9bb46ed1" alt="Event-driven architecture with Service Bus distributing events to 4 Function App consumers through 3 topic categories" width="662" height="291"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Service Bus topology with 3 topic categories and 4 Function consumers. Each consumer has a single responsibility: notification, AI processing, search indexing, or compliance logging.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Case Lifecycle State Machine
&lt;/h3&gt;

&lt;p&gt;Cases move through 7 states with a decision gateway. The rejection loop (Returned to Draft) is the one that causes the most bugs. State transitions that go backward need careful handling in Power Automate.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-state-machine-case-lifecycle.svg%3Fv%3Dfb519f69" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-state-machine-case-lifecycle.svg%3Fv%3Dfb519f69" alt="State machine showing case lifecycle: Draft to Submitted to In Review with decision gateway to Approved/Returned, then Active and Closed" width="796" height="339"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Case lifecycle state machine. The 'Returned' state loops back to Draft. This backward transition is where most workflow bugs live.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure + Security: Network, Zero Trust, Identity, and Observability
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Network Topology
&lt;/h3&gt;

&lt;p&gt;Hub-spoke VNet design. The hub hosts the firewall, bastion, and DNS. App and data spokes are peered to the hub. On-premises Oracle connects through VPN/ExpressRoute. This is the diagram the network team and auditors ask for first.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-network-topology.svg%3Fv%3D24a432a8" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-network-topology.svg%3Fv%3D24a432a8" alt="Hub-spoke VNet topology with Hub VNet containing Firewall, Bastion, and DNS, connected to App Spoke with AKS and App Service, Data Spoke with SQL and Cosmos, and on-premises Oracle via VPN" width="743" height="525"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Hub-spoke network topology. Hub VNet (10.0.0.0/16) peers to app and data spokes. On-premises connection via VPN/ExpressRoute to the legacy Oracle environment.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Zero Trust Security Model
&lt;/h3&gt;

&lt;p&gt;Entra ID at the center, four pillars radiating out: Conditional Access (MFA), Key Vault (managed identities), Sentinel (SIEM), and NSG Rules (micro-segmentation). Each pillar maps to a concrete implementation below it.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-security-zero-trust.svg%3Fv%3D946f00d8" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-security-zero-trust.svg%3Fv%3D946f00d8" alt="Zero trust security model with Entra ID at center connecting to Conditional Access, Key Vault, Sentinel, and NSG Rules, each mapping to implementation details" width="703" height="309"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Zero trust security model. Every component maps from a principle (Conditional Access) to an implementation (MFA required for all users, all apps).&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Identity Architecture
&lt;/h3&gt;

&lt;p&gt;The authentication flow from end to end. Users authenticate through Entra ID, pass Conditional Access (MFA + device compliance), receive a JWT, hit API Management, and get routed to the appropriate backend API. This is the diagram to hand to the penetration testing team.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-identity-architecture.svg%3Fv%3Dda7b3443" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-identity-architecture.svg%3Fv%3Dda7b3443" alt="Identity flow from Users through Entra ID and Conditional Access to API Management, routing to Clinical API and Document API backends" width="823" height="118"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;End-to-end identity flow. Every request passes through 4 checkpoints before reaching backend services.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Monitoring and Observability
&lt;/h3&gt;

&lt;p&gt;Three telemetry sources (App Services, AKS, Functions) feed into Application Insights and Log Analytics, which converge on Azure Monitor. From there, security events go to Sentinel and operational metrics go to dashboards. This is how a team answers "what broke at 3 AM."&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-monitoring-observability.svg%3Fv%3D2b07d22e" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-monitoring-observability.svg%3Fv%3D2b07d22e" alt="Monitoring stack showing App Services, AKS, and Functions feeding into Application Insights and Log Analytics, converging on Azure Monitor with outputs to Sentinel and dashboards" width="703" height="186"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Observability stack. Three telemetry sources converge on Azure Monitor, which routes security alerts to Sentinel and operational metrics to Power BI dashboards.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DevOps + Deployment: CI/CD, Topology, IaC, and Containers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  CI/CD Pipeline
&lt;/h3&gt;

&lt;p&gt;Azure DevOps runs the pipeline. Code push triggers build and unit tests, then integration and security testing, then an approval gate, then staging with smoke tests, and finally production with blue-green deployment. The ACR (Container Registry) stores the images.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-cicd-pipeline.svg%3Fv%3D313319e2" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-cicd-pipeline.svg%3Fv%3D313319e2" alt="CI/CD pipeline from Azure DevOps through Build, Test, approval Gate, Staging, and Production stages with ACR for container images" width="861" height="189"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;CI/CD pipeline with 5 stages. The approval gate between testing and staging is where most deployments pause for human review.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Deployment Topology
&lt;/h3&gt;

&lt;p&gt;Three environments, each with identical resource sets. Dev (blue), Test/UAT (amber), Production (green). The promote/approve edges show the one-way flow. Nothing goes backward from prod to dev.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-deployment-topology.svg%3Fv%3D59718c9b" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-deployment-topology.svg%3Fv%3D59718c9b" alt="Three deployment environments (Development, Test/UAT, Production) each containing App Service, SQL Database, and Cosmos DB with promote and approve edges between them" width="703" height="183"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Deployment topology. Each environment has identical resource types (App Service, SQL, Cosmos) with promotion gates between them.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Infrastructure as Code
&lt;/h3&gt;

&lt;p&gt;Bicep templates in git, committed to an Azure DevOps pipeline that runs ARM what-if validation, then deploys to resource groups. Azure Policy validates compliance at every deployment. No manual portal clicks allowed.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-infrastructure-as-code.svg%3Fv%3D91a7571b" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-infrastructure-as-code.svg%3Fv%3D91a7571b" alt="IaC pipeline from Bicep Templates through Azure DevOps to ARM Deploy, splitting to Resource Groups and Azure Policy validation" width="683" height="186"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Infrastructure as Code pipeline. Bicep templates are the single source of truth. Azure Policy validates every deployment against compliance rules.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Container Architecture
&lt;/h3&gt;

&lt;p&gt;The AKS cluster hosts 4 workloads: Clinical API, Document API, Event Processor, and an Auth Sidecar (DaemonSet). ACR provides container images, Application Gateway handles ingress, and Key Vault provides secrets through the auth sidecar.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-container-architecture.svg%3Fv%3D446ca66b" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-container-architecture.svg%3Fv%3D446ca66b" alt="AKS cluster containing Clinical API, Document API, Event Processor, and Auth Sidecar deployments, with ACR, Application Gateway, and Key Vault connected externally" width="621" height="203"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;AKS cluster architecture. The Auth Sidecar (DaemonSet) handles secret rotation from Key Vault so application pods never touch secrets directly.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration + AI: APIs, Document Processing, RAG, and Migration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Enterprise Integration Map
&lt;/h3&gt;

&lt;p&gt;API Management sits at the center. On the left: consumer systems (Power Platform, Power Pages portal, mobile app). On the right: backend services (App Services, Functions). Below: legacy Oracle and Dataverse. Every system-to-system call routes through APIM.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-integration-map.svg%3Fv%3D17a67c47" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-integration-map.svg%3Fv%3D17a67c47" alt="Enterprise integration map with API Management at center, connecting Power Platform, Power Pages, and Mobile App on the left to App Service and Functions on the right, with Oracle and Dataverse below" width="616" height="311"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Enterprise integration map. APIM is the single gateway for all system-to-system communication. The legacy Oracle adapter (dashed line) handles the SFTP/CDC bridge.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Document Processing Pipeline
&lt;/h3&gt;

&lt;p&gt;Documents flow through 6 steps: upload, blob storage, AI Document Intelligence (form extraction), Azure OpenAI (summarization), Cosmos DB (storage), and a Power App (display). A reviewer uploads a scanned form and gets a structured summary in the case management app.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-ai-document-pipeline.svg%3Fv%3D67739fd0" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-ai-document-pipeline.svg%3Fv%3D67739fd0" alt="AI document pipeline from upload through Blob Storage, Doc Intelligence, Azure OpenAI, Cosmos DB to Power App display" width="803" height="81"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;AI document processing pipeline. Documents go from PDF to structured summary in seconds. Doc Intelligence extracts fields, OpenAI generates the summary, Cosmos stores the results.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  RAG Architecture
&lt;/h3&gt;

&lt;p&gt;The Retrieval-Augmented Generation pattern. A user asks a question, Azure OpenAI sends a vector search to AI Search, which fetches relevant documents from Cosmos DB. The documents flow back to OpenAI as context for a grounded response with citations.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-rag-architecture.svg%3Fv%3D4677e718" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-rag-architecture.svg%3Fv%3D4677e718" alt="RAG pattern showing User Query to Azure OpenAI, which sends vector search to AI Search, fetches documents from Cosmos DB, and generates a grounded response with citations" width="693" height="211"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;RAG architecture. The feedback loop (OpenAI to Search to Cosmos to OpenAI) ensures every response is grounded in actual documents, not hallucinated.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Legacy Modernization Path
&lt;/h3&gt;

&lt;p&gt;The migration from Oracle to Azure is a 6-month project. Data Migration Service handles the schema and data transfer, with structured records going to Azure SQL and documents to Cosmos DB. A parallel run period validates data consistency before the Oracle cutover.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-legacy-modernization.svg%3Fv%3Deece09db" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-legacy-modernization.svg%3Fv%3Deece09db" alt="Legacy modernization path from Oracle 19c through Data Migration Service to Azure SQL and Cosmos DB, with a parallel run validation period before Oracle cutover" width="733" height="186"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Legacy modernization path. The 6-month parallel run is non-negotiable for regulated systems. Validate data consistency before decommissioning anything.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Power Platform + Governance: Landscape, Approvals, Environments, and CoE
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Power Platform Footprint
&lt;/h3&gt;

&lt;p&gt;The complete Power Platform map. Dataverse is the center of gravity. Power Apps drives the case management UI, Power Automate handles workflow, Power BI powers dashboards, and Copilot Studio provides the AI assistant. API Management bridges the Power Platform to Azure backend services.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-power-platform-landscape.svg%3Fv%3D2937687b" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-power-platform-landscape.svg%3Fv%3D2937687b" alt="Power Platform footprint showing Dataverse at center with Power Apps, Power Automate, Power BI connecting from top, Copilot Studio and API Management from bottom" width="642" height="281"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Power Platform footprint. Dataverse is the center of gravity. Every platform component reads from and writes to the same data layer.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Approval Flow Architecture
&lt;/h3&gt;

&lt;p&gt;Cases need 3 approval steps: manager review, specialist review, and compliance check. Power Automate orchestrates the multi-step approval with parallel notifications at each stage.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-approval-flow.svg%3Fv%3D7f4ee6c3" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-approval-flow.svg%3Fv%3D7f4ee6c3" alt="Approval flow from Case Submit through Manager Review, Specialist Review, and Compliance check to Approved status" width="746" height="189"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Multi-step approval flow. Three sequential gates, each with different reviewers and criteria. The compliance check at the end is the one that catches policy violations.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Environment Strategy
&lt;/h3&gt;

&lt;p&gt;The standard Dev to Test/UAT to Production promotion path. Solutions export as unmanaged from Dev, import as managed into Test, and deploy to Production only after approval. Connection references and environment variables handle the per-environment configuration.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-environment-strategy.svg%3Fv%3D84bd6f64" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-environment-strategy.svg%3Fv%3D84bd6f64" alt="Environment strategy from Power Platform through Dev (unmanaged), Test/UAT (managed import), to Production (managed only) with Dataverse" width="761" height="81"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Environment promotion strategy. Dev is unmanaged (experiment freely), Test imports managed solutions, Production accepts managed solutions only.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Governance Model
&lt;/h3&gt;

&lt;p&gt;The Center of Excellence toolkit sits at the middle. DLP policies block risky connectors, CoE Starter Kit provides inventory and compliance tracking, and Environment Groups handle routing rules. Below: Solution Checker gates code quality, Approval Gates control prod promotion, and Azure Policy enforces infrastructure compliance.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-governance-model.svg%3Fv%3Db4cb94db" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fcascade-governance-model.svg%3Fv%3Db4cb94db" alt="Governance model with Power Platform at top, three pillars (DLP Policies, CoE Starter Kit, Environment Groups) and their implementations below" width="652" height="281"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Governance model. Three pillars (DLP, CoE, Environment Groups) each map to concrete enforcement mechanisms. Azure Policy extends governance to the infrastructure layer.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Use Visio, Lucidchart, or Miro?
&lt;/h2&gt;

&lt;p&gt;The table below contrasts a typical manual Visio workflow against the script-based approach. Times are illustrative, not measured benchmarks.&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;Manual Tools&lt;/th&gt;
&lt;th&gt;Batch Generation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time for 20 diagrams&lt;/td&gt;
&lt;td&gt;Days to weeks&lt;/td&gt;
&lt;td&gt;Minutes per batch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Version control&lt;/td&gt;
&lt;td&gt;Binary files, no diffs&lt;/td&gt;
&lt;td&gt;XML in git, meaningful diffs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consistency&lt;/td&gt;
&lt;td&gt;Manual, varies by author&lt;/td&gt;
&lt;td&gt;Code-enforced palette and layout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Update cost&lt;/td&gt;
&lt;td&gt;Redraw from scratch&lt;/td&gt;
&lt;td&gt;Change one line, regenerate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Azure icons&lt;/td&gt;
&lt;td&gt;Download, import, position&lt;/td&gt;
&lt;td&gt;648 icons referenced by path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quality assurance&lt;/td&gt;
&lt;td&gt;Eyeball it&lt;/td&gt;
&lt;td&gt;Automated quality gate + visual QA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;License cost&lt;/td&gt;
&lt;td&gt;Per-seat license required&lt;/td&gt;
&lt;td&gt;Open source toolchain&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The real advantage is not speed. It is the fact that these diagrams are code. When the architecture changes, change the script and regenerate. The diagrams stay current because updating them costs nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Visual QA Loop That Catches What Code Reviews Miss
&lt;/h2&gt;

&lt;p&gt;Automated quality gates check structure: grid alignment, color palette compliance, edge routing, icon usage. They catch the mechanical errors. But they miss the aesthetic problems that make a diagram confusing: tangled routing, clipped labels, poor spacing, crossed edges.&lt;/p&gt;

&lt;p&gt;The fix: export each diagram to PNG, read it visually, critique, fix, and regenerate. The PNG review catches what the structural check cannot. Both checks together give full coverage.&lt;/p&gt;

&lt;p&gt;For every diagram in this article, the pipeline was:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generate &lt;code&gt;.drawio&lt;/code&gt; XML from the TypeScript spec&lt;/li&gt;
&lt;li&gt;Run the quality gate (grid, palette, edges, icons), which must pass&lt;/li&gt;
&lt;li&gt;Export to PNG at 2x scale&lt;/li&gt;
&lt;li&gt;Visually review the PNG for aesthetic issues&lt;/li&gt;
&lt;li&gt;Fix any coordinate issues in the script&lt;/li&gt;
&lt;li&gt;Re-generate and re-verify&lt;/li&gt;
&lt;li&gt;Export final SVG with transparent background and embedded icons&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The result: 20+ diagrams that are structurally correct AND visually clean. No tangled arrows. No clipped text. No crossed edges.&lt;/p&gt;

&lt;p&gt;For more on the diagramming pipeline, see &lt;a href="https://az365.ai/blog/architecture-diagrams-with-draw-io-mcp-and-claude" rel="noopener noreferrer"&gt;Architecture Diagrams with Draw.io MCP and Claude Code&lt;/a&gt;. For the broader argument about keeping documentation alive in git, see &lt;a href="https://az365.ai/blog/living-documentation-in-git-why-sharepoint-word-docs-are-dead" rel="noopener noreferrer"&gt;Living Documentation in Git&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommended Starting Point
&lt;/h2&gt;

&lt;p&gt;Start with 5 diagrams, not 20. Every enterprise needs at minimum: an ERD, a network topology, an integration map, a CI/CD pipeline, and an environment strategy. Those five cover 80% of the questions stakeholders will ask.&lt;/p&gt;

&lt;p&gt;Build the batch script incrementally. Add one diagram at a time, verify it looks right, commit. Avoid trying to design all 20 at once.&lt;/p&gt;

&lt;p&gt;Use the visual QA loop from day one. Diagrams ship with broken icons, dark backgrounds, and tangled arrows often enough that the export-to-PNG-and-look step is non-negotiable. Every time.&lt;/p&gt;

&lt;p&gt;The goal is not perfect diagrams. The goal is diagrams that exist, that are accurate, and that update when the architecture changes. If a documentation strategy requires someone to manually update Visio files, the documentation will be wrong by next week.&lt;/p&gt;

&lt;p&gt;Code-generated diagrams are living documentation. That is the entire point.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Building architecture documentation that stays current? Check out &lt;a href="https://az365.ai/blog/agentic-development-with-claude-code-the-setup-that-actually-works" rel="noopener noreferrer"&gt;how agentic development works in practice&lt;/a&gt; and the &lt;a href="https://az365.ai/blog/architecture-diagrams-with-draw-io-mcp-and-claude" rel="noopener noreferrer"&gt;full diagramming pipeline with Draw.io MCP&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/20-architecture-diagrams-in-20-minutes-ai-documents-enterprise-systems/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>drawio</category>
      <category>diagrams</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Agentic Development with Claude Code: The Setup That Actually Works</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Thu, 27 Aug 2026 23:25:48 +0000</pubDate>
      <link>https://dev.to/az365ai/agentic-development-with-claude-code-the-setup-that-actually-works-2hna</link>
      <guid>https://dev.to/az365ai/agentic-development-with-claude-code-the-setup-that-actually-works-2hna</guid>
      <description>&lt;p&gt;Most developers use Claude Code like a chatbot. They type a question, get an answer, type another question. Each session starts from zero. No memory of what you built yesterday, no reusable patterns, no quality standards.&lt;/p&gt;

&lt;p&gt;That is not agentic development. That is autocomplete with extra steps.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;
Claude Code becomes a production system when you give it three things: persistent memory (CLAUDE.md + MEMORY.md), specialized agents (20+ prompt files with scoring rubrics), and automated pipelines (skills that chain agents with quality gates). This article shows the exact setup that produces the published articles you can browse at &lt;a href="https://az365.ai/blog/" rel="noopener noreferrer"&gt;az365.ai/blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What Makes Development "Agentic"?
&lt;/h2&gt;

&lt;p&gt;A chatbot answers questions. An agent completes tasks. The difference is not the model - it is the environment you build around it.&lt;/p&gt;

&lt;p&gt;An agentic setup has four layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Project instructions&lt;/strong&gt; that persist across sessions (CLAUDE.md, AGENTS.md)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory&lt;/strong&gt; that accumulates knowledge over time (feedback, preferences, project state)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specialized agents&lt;/strong&gt; with defined roles, inputs, outputs, and quality gates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; that chain agents into repeatable pipelines&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without these layers, every session is a blank slate. With them, session 50 is dramatically more productive than session 1 because the system has learned your codebase, your preferences, and your quality standards.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fagentic-development-hero.svg%3Fv%3D25b0e4da" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fagentic-development-hero.svg%3Fv%3D25b0e4da" alt="Agentic development pipeline showing four layers from project instructions through memory, agents, and skills" width="631" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: Project Instructions (CLAUDE.md)
&lt;/h2&gt;

&lt;p&gt;CLAUDE.md is the file Claude Code reads at the start of every session. It is your leverage point. Every instruction there saves you from repeating yourself in every conversation.&lt;/p&gt;

&lt;p&gt;A minimal CLAUDE.md points to your real instructions:&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="gh"&gt;# Claude Instructions&lt;/span&gt;
All project rules are in: &lt;span class="gs"&gt;**[AGENTS.md](./AGENTS.md)**&lt;/span&gt;
Read that file in full before writing any code.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AGENTS.md contains the operational details: project structure, coding rules, common mistakes to avoid, MCP server references, and the full agent inventory. Keeping instructions in a separate file means you can update them without touching the root config.&lt;/p&gt;

&lt;h3&gt;
  
  
  What goes in project instructions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Technology stack&lt;/strong&gt; with exact versions (not "use React" but "Astro 5.x + Tailwind CSS 4.x via &lt;a class="mentioned-user" href="https://dev.to/tailwindcss"&gt;@tailwindcss&lt;/a&gt;/vite")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Common mistakes&lt;/strong&gt; with fixes (a table of past failures prevents repeating them)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP servers&lt;/strong&gt; with tool descriptions and workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI commands&lt;/strong&gt; so the agent can operate your tools without guessing syntax&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing rules&lt;/strong&gt; if your project involves content (no em dashes, no AI slop phrases)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key insight: project instructions are not documentation for humans. They are configuration for an AI agent. Write them like you are programming behavior, not explaining concepts.&lt;/p&gt;

&lt;p&gt;We document every architectural decision this way. The same principle applies to &lt;a href="https://az365.ai/blog/living-documentation-in-git-why-sharepoint-word-docs-are-dead/" rel="noopener noreferrer"&gt;living documentation in git&lt;/a&gt; - if it is not in the repo, it does not exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: Persistent Memory
&lt;/h2&gt;

&lt;p&gt;Memory is what makes session 50 better than session 1. Claude Code supports a file-based memory system at &lt;code&gt;~/.claude/projects/&amp;lt;project&amp;gt;/memory/&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Memory types
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;What It Stores&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;user&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Your role, preferences, expertise level&lt;/td&gt;
&lt;td&gt;"Senior architect, new to React frontend"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;feedback&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Corrections and confirmed approaches&lt;/td&gt;
&lt;td&gt;"Never use --svg-theme auto, it breaks with OS dark mode"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;project&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ongoing work, goals, decisions&lt;/td&gt;
&lt;td&gt;"Merge freeze after March 5 for mobile release"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;reference&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pointers to external systems&lt;/td&gt;
&lt;td&gt;"Pipeline bugs tracked in Linear project INGEST"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  How memory compounds
&lt;/h3&gt;

&lt;p&gt;Memory accumulates feedback rules across sessions. Each rule prevents a specific mistake from recurring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"All repos under crmvet/ must be --private"&lt;/li&gt;
&lt;li&gt;"Always WebFetch verify after push - never say should deploy"&lt;/li&gt;
&lt;li&gt;"SVG export needs --svg-theme light --embed-svg-images"&lt;/li&gt;
&lt;li&gt;"Draw.io XML needs HTML entity-encoded in value attributes"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without memory, I would need to re-explain each of these every session. With memory, the agent reads them automatically and applies them without prompting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: Specialized Agents
&lt;/h2&gt;

&lt;p&gt;An agent is a prompt file that defines a role, inputs, outputs, and quality gates. It is not a chatbot conversation - it is a job description for an AI worker.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anatomy of an effective agent
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Agent: Diagram Creator&lt;/span&gt;

&lt;span class="gu"&gt;## Role&lt;/span&gt;
Create Draw.io diagrams from visual plans using the MCP server.

&lt;span class="gu"&gt;## Input&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Build spec from /diagram-architect
&lt;span class="p"&gt;-&lt;/span&gt; Article .mdx file for context
&lt;span class="p"&gt;-&lt;/span&gt; Azure2 icon catalog

&lt;span class="gu"&gt;## Process&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Build on canvas via Draw.io MCP
&lt;span class="p"&gt;2.&lt;/span&gt; Run programmatic review (score &amp;gt;= 70)
&lt;span class="p"&gt;3.&lt;/span&gt; Fix issues, re-review
&lt;span class="p"&gt;4.&lt;/span&gt; Export .drawio + SVG

&lt;span class="gu"&gt;## Output&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; .drawio source file
&lt;span class="p"&gt;-&lt;/span&gt; .svg for the live site

&lt;span class="gu"&gt;## Quality Checks&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; [ ] All positions on 10px grid
&lt;span class="p"&gt;-&lt;/span&gt; [ ] Azure2 icons for all services
&lt;span class="p"&gt;-&lt;/span&gt; [ ] All colors from approved palette
&lt;span class="p"&gt;-&lt;/span&gt; [ ] Combined review score &amp;gt;= 70
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The quality checks are what separate an agent from a prompt. Without measurable gates, you get inconsistent output. With them, you get a standard.&lt;/p&gt;

&lt;h3&gt;
  
  
  How many agents do you need?
&lt;/h3&gt;

&lt;p&gt;We run 20 agents across two sites:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Content creation&lt;/td&gt;
&lt;td&gt;4 writers + editor + researcher&lt;/td&gt;
&lt;td&gt;Site-specific voice, 10 quality gates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Planning&lt;/td&gt;
&lt;td&gt;3 (content, SEO, series)&lt;/td&gt;
&lt;td&gt;Scoring rubrics, cannibalization checks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visual&lt;/td&gt;
&lt;td&gt;3 (strategist, architect, creator)&lt;/td&gt;
&lt;td&gt;Diagram pipeline with MCP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Review&lt;/td&gt;
&lt;td&gt;5 (content + 4 diagram critics)&lt;/td&gt;
&lt;td&gt;0-100 scoring, weighted dimensions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ops&lt;/td&gt;
&lt;td&gt;5 (publisher, visual QA, LinkedIn, refresh, planner)&lt;/td&gt;
&lt;td&gt;Deploy verification, staleness monitoring&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You do not need 20 agents on day one. Start with 3: a writer, an editor, and a reviewer. Add agents when you find yourself giving the same instructions repeatedly.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fagentic-development-agent-hierarchy.svg%3Fv%3De9d3056e" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fagentic-development-agent-hierarchy.svg%3Fv%3De9d3056e" alt="Agent hierarchy showing 20 agents organized in 5 categories radiating from a central content machine hub" width="761" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our &lt;a href="https://az365.ai/blog/power-automate-naming-conventions-that-scale/" rel="noopener noreferrer"&gt;naming conventions&lt;/a&gt; article was the first test of the writer + editor pipeline. The &lt;a href="https://az365.ai/blog/power-automate-flow-inventory-you-cant-govern-what-you-cant-see/" rel="noopener noreferrer"&gt;governance series&lt;/a&gt; tested batch production across multiple articles with parallel agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 4: Skills (Reusable Pipelines)
&lt;/h2&gt;

&lt;p&gt;A skill is a prompt template that users invoke with a slash command. Skills chain multiple agents into a repeatable workflow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/write-post → Writer Agent → Editor Agent → Review Agent → Publisher Agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each invocation follows the same process, applies the same quality standards, and produces consistent output. The skill is the pipeline - the agents are the stages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Skills we use daily
&lt;/h3&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;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/write-post&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full article production with anti-AI-detection checks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/review-content&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4-dimension scoring: SEO, quality, engagement, conversion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/review-diagram&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4 critic agents: layout, brand, storytelling, export&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/drawio&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Architecture diagrams with 648 Azure2 icons&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/diagram-architect&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Plan layout before building (coordinates, icons, edges)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/capture-idea&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Store raw brain dump as structured backlog item&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Pipeline That Produces Articles
&lt;/h2&gt;

&lt;p&gt;Here is the full lifecycle, from idea to published article:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Capture&lt;/strong&gt; (&lt;code&gt;/capture-idea&lt;/code&gt;) - raw brain dump to structured idea&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan&lt;/strong&gt; (&lt;code&gt;/plan-content&lt;/code&gt;) - score and prioritize against existing content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Research&lt;/strong&gt; (Researcher agent + Microsoft Learn MCP) - verify facts against official docs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write&lt;/strong&gt; (Writer agent, site-specific voice) - draft with opinions and real examples&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edit&lt;/strong&gt; (Editor agent, 10 quality gates) - no em dashes, no employer names, no AI slop&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review&lt;/strong&gt; (&lt;code&gt;/review-content&lt;/code&gt;) - score 0-100, fix until &amp;gt;= 70&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Plan&lt;/strong&gt; (Visual Strategist) - what diagrams, where, what type&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagram Architect&lt;/strong&gt; - calculate coordinates, resolve icons, plan edges&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagram Build&lt;/strong&gt; (Draw.io MCP) - create on canvas or batch generate&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagram Review&lt;/strong&gt; (4 critics) - layout, brand, storytelling, export&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Export&lt;/strong&gt; (draw.io CLI) - .drawio to SVG with embedded icons&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Publish&lt;/strong&gt; (Publisher agent) - git commit, push, verify live deployment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn&lt;/strong&gt; (LinkedIn Writer) - algorithm-optimized post&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each step has a defined input, output, and quality gate. If any gate fails, work goes back to the responsible agent with specific fix 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fagentic-development-pipeline.svg%3Fv%3D6e701379" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fagentic-development-pipeline.svg%3Fv%3D6e701379" alt="13-step pipeline from capture through publish with red feedback loops for failed reviews" width="713" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The red dashed arrows are the feedback loops. A content review score below 70 sends the article back to the writer. A diagram review failure sends it back to the builder. No step is "done" until its quality gate passes.&lt;/p&gt;

&lt;p&gt;This pipeline produced every article on this site, including the &lt;a href="https://az365.ai/blog/power-automate-flow-inventory-you-cant-govern-what-you-cant-see/" rel="noopener noreferrer"&gt;flow inventory governance piece&lt;/a&gt;, the &lt;a href="https://az365.ai/blog/power-automate-environment-strategy-dev-test-prod/" rel="noopener noreferrer"&gt;environment strategy guide&lt;/a&gt;, and the &lt;a href="https://az365.ai/blog/solution-aware-power-automate-flows-why-loose-flows-kill-alm/" rel="noopener noreferrer"&gt;solution-aware flows article&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP Servers: Extending the Agent's Reach
&lt;/h2&gt;

&lt;p&gt;Model Context Protocol servers give your agents access to external tools and data. Three MCP servers power our setup:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;MCP Server&lt;/th&gt;
&lt;th&gt;What It Provides&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Microsoft Learn&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Search and fetch official Microsoft documentation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Draw.io&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Programmatic diagram creation with Azure2 icons&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google Trends&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Trending topics and news for content research&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The key lesson with MCP: always verify capabilities by testing, not by assuming. Our Draw.io MCP server required a browser open on localhost:3000 for the WebSocket connection. The tools list said nothing about this requirement. We discovered it when every tool call hung indefinitely.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Went Wrong (Twice)
&lt;/h2&gt;

&lt;p&gt;Before sharing the lessons, here are two disasters that shaped the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Dark Mode Export Disaster.&lt;/strong&gt; A batch of diagrams was exported to SVG and deployed to production before anyone checked the live site in dark mode. Every diagram had a black background with dark green shapes, completely unreadable. The root cause: &lt;code&gt;--svg-theme auto&lt;/code&gt; uses CSS &lt;code&gt;light-dark()&lt;/code&gt; which responds to the OS dark mode preference, not the site's theme toggle. The fix was &lt;code&gt;--svg-theme light&lt;/code&gt; with a CSS card wrapper in the blog layout. The first deploys had asset-routing bugs that the publish-check gate now catches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The HTML Encoding Bug.&lt;/strong&gt; Draw.io stores HTML in XML attributes. The value &lt;code&gt;&amp;lt;b&amp;gt;Dev&amp;lt;/b&amp;gt;&lt;/code&gt; must be encoded as &lt;code&gt;&amp;amp;lt;b&amp;amp;gt;Dev&amp;amp;lt;/b&amp;amp;gt;&lt;/code&gt; in the .drawio file. Draw.io then decodes it and renders the HTML. The batch generator had the encoding wrong, first too little (raw tags in XML = malformed), then too much (double-encoded = literal &lt;code&gt;&amp;amp;lt;b&amp;amp;gt;&lt;/code&gt; showing on screen). Raw HTML rendering bugs slipped through before publish-check gating was added.&lt;/p&gt;

&lt;p&gt;Both bugs had the same root cause: no visual review step in the automated pipeline.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fagentic-development-feedback-loop.svg%3Fv%3D2c0d4ee8" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fagentic-development-feedback-loop.svg%3Fv%3D2c0d4ee8" alt="Quality feedback loop: build, review with 4 critics, score check, fix if below 70 or ship if passing" width="653" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fix: a mandatory quality loop. Build the diagram, run 4 critics, check the combined score. Below 70? Back to the builder with specific fix instructions. Above 70? Export and deploy. No exceptions. The Layout Critic and Brand Critic run programmatically and scored 100/100. But neither of them could see that the exported SVG looked terrible. The fix: always verify the deployed output with WebFetch or a screenshot before declaring success.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned Building This System
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Never accept "can't do it" from the agent
&lt;/h3&gt;

&lt;p&gt;When Claude said it could not export SVGs, the correct response was "research how." The draw.io desktop CLI had &lt;code&gt;--export --format svg&lt;/code&gt; all along. Push back on capability claims.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Test on the live site, not in the editor
&lt;/h3&gt;

&lt;p&gt;Diagrams were built in batches before anyone checked the deployed result. The first deploy showed dark backgrounds and broken icons. Checking after the first diagram would have caught the issue immediately instead of multiplying the rework.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Build the review system before the production system
&lt;/h3&gt;

&lt;p&gt;The content pipeline came first, with no quality gates for diagrams. Building the critic agents before batch-generating diagrams would have caught the arrow alignment, broken icons, and dark mode issues before they hit production.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Memory prevents repeat mistakes
&lt;/h3&gt;

&lt;p&gt;Every debugging session produced a feedback memory entry. "SVG export needs --svg-theme light" is the kind of knowledge that shortens the iteration loop measurably; calibrate to your own setup.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Think systems, not tasks
&lt;/h3&gt;

&lt;p&gt;"Fix this diagram" is a task. "Build a pipeline that produces correct diagrams every time" is a system. The system takes longer to build but pays back on every subsequent diagram.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started: Your First 30 Minutes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create CLAUDE.md&lt;/strong&gt; in your project root. Point it to your coding standards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create one feedback memory&lt;/strong&gt; for your strongest preference (naming conventions, test patterns, deployment rules).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create one agent&lt;/strong&gt; for the task you do most often. Define role, input, output, quality checks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create one skill&lt;/strong&gt; that invokes that agent with &lt;code&gt;/your-command&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run it and iterate.&lt;/strong&gt; The first version will be rough. By version 3, it will be faster than doing it manually.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The gap between "using Claude Code" and "building with Claude Code" is the same gap between typing commands and writing scripts. One is interactive. The other is infrastructure.&lt;/p&gt;

&lt;p&gt;Build the infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Articles
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/architecture-diagrams-with-draw-io-mcp-and-claude/" rel="noopener noreferrer"&gt;Architecture Diagrams with Draw.io MCP Server and Claude Code&lt;/a&gt; - how we built the diagram pipeline&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/power-automate-flow-inventory-you-cant-govern-what-you-cant-see/" rel="noopener noreferrer"&gt;Power Automate Flow Inventory&lt;/a&gt; - what parallel agents built end-to-end on this pipeline&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/agentic-development-with-claude-code-the-setup-that-actually-works/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>claudecode</category>
      <category>agents</category>
    </item>
    <item>
      <title>Logic Apps as MCP Servers - The Architecture That Actually Works</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Wed, 26 Aug 2026 14:37:11 +0000</pubDate>
      <link>https://dev.to/az365ai/logic-apps-as-mcp-servers-the-architecture-that-actually-works-4ofe</link>
      <guid>https://dev.to/az365ai/logic-apps-as-mcp-servers-the-architecture-that-actually-works-4ofe</guid>
      <description>&lt;p&gt;Microsoft just turned Azure Logic Apps into MCP servers. In preview, as of March 2026. This means your 1,400+ Logic Apps connectors - Dataverse, SharePoint, SQL, Outlook, SAP, ServiceNow - are now callable tools for AI agents in Claude Code, VS Code Copilot, or Cursor.&lt;/p&gt;

&lt;p&gt;That's the headline. Here's what the docs don't tell you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure Logic Apps Standard can now act as remote MCP servers, exposing workflows as tools for AI agents. There are two approaches: direct (fast, no governance) and via API Center (enterprise, full governance). Easy Auth is NOT optional. Standard Logic Apps have hosting costs (~$160/month minimum). The connector auth question - whose credentials does the AI agent use? - is a governance gap the docs skip.&lt;/p&gt;
&lt;/blockquote&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Flogic-apps-mcp-architecture-hero.svg%3Fv%3Dd29d268a" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Flogic-apps-mcp-architecture-hero.svg%3Fv%3Dd29d268a" alt="Full MCP architecture stack showing MCP Client connecting through API Management and API Center to Logic App Standard with 1,400+ connectors reaching enterprise systems" width="563" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is an MCP Server and Why Should You Care?
&lt;/h2&gt;

&lt;p&gt;MCP - Model Context Protocol - is the open standard that lets AI agents call external tools. When you ask Claude Code to "send an email to the project team," it needs a tool that actually sends email. The MCP server provides that tool.&lt;/p&gt;

&lt;p&gt;Until now, building an MCP server meant writing TypeScript or Python that wraps an API. You'd build an HTTP endpoint, handle auth, parse requests, call the downstream service, return results. For every integration. Manually.&lt;/p&gt;

&lt;p&gt;Logic Apps as MCP servers changes this. You pick a connector, select the actions you want to expose, and Azure builds the MCP endpoint. The AI agent discovers the tools and calls them. No custom code.&lt;/p&gt;

&lt;p&gt;The architecture is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;MCP Client&lt;/strong&gt; (Claude Code, VS Code, Cursor) connects to your MCP server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Server&lt;/strong&gt; (Logic App Standard) exposes workflows as callable tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connectors&lt;/strong&gt; (1,400+) do the actual work - querying databases, sending emails, creating records&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise Systems&lt;/strong&gt; (Dataverse, SQL, SharePoint, SAP) are the final destinations&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The protocol is JSON-RPC 2.0 over Server-Sent Events (SSE). The transport is HTTP. Your MCP server runs in Azure, your MCP client runs locally. Remote, not local.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do You Set Up Logic Apps as an MCP Server?
&lt;/h2&gt;

&lt;p&gt;There are two approaches. Microsoft presents them as equivalent options. They're not.&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Flogic-apps-mcp-direct-vs-apicenter.svg%3Fv%3D7969379e" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Flogic-apps-mcp-direct-vs-apicenter.svg%3Fv%3D7969379e" alt="Side-by-side comparison of Direct approach (3 layers, fast, no governance) versus API Center approach (4 layers, enterprise, full governance)" width="633" height="392"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Two approaches: Direct is fast but has no rate limiting or discovery. API Center adds governance but requires APIM setup.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach 1: Direct from Logic App (Fast, No Governance)
&lt;/h3&gt;

&lt;p&gt;Open your Logic App Standard in the Azure portal. Under &lt;strong&gt;Agents&lt;/strong&gt;, you'll see a new &lt;strong&gt;MCP servers&lt;/strong&gt; blade. Create a server, select existing workflows or build new ones, choose auth (OAuth or API key), done.&lt;/p&gt;

&lt;p&gt;Your AI agent connects directly to the Logic App's MCP endpoint. No intermediary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use this:&lt;/strong&gt; Dev/test environments. Personal productivity tools. Internal prototyping. Situations where you control both the client and the server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's missing:&lt;/strong&gt; No rate limiting. No usage analytics. No API key rotation policy. No centralized catalog for other teams to discover your server. If someone hammers your endpoint, there's no throttle.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach 2: Via API Center (Enterprise, Full Governance)
&lt;/h3&gt;

&lt;p&gt;The enterprise path adds two layers: API Management for security and rate limiting, and API Center for discovery and governance.&lt;/p&gt;

&lt;p&gt;The stack becomes: &lt;strong&gt;MCP Client -&amp;gt; API Management -&amp;gt; API Center -&amp;gt; Logic App Standard -&amp;gt; Connectors -&amp;gt; Enterprise Systems.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You create the MCP server through API Center's portal, which registers it as a governed API. API Management handles auth, rate limiting, and usage tracking. Other teams can discover your MCP server through the API Center catalog.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use this:&lt;/strong&gt; Production environments. Multi-team organizations. Anything touching customer data. Compliance-regulated industries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you get that Direct doesn't:&lt;/strong&gt; Centralized discovery, rate limiting, usage analytics, API key management through APIM, and audit trails.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Auth Problem Nobody Talks About
&lt;/h2&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Flogic-apps-mcp-auth-flow.svg%3Fv%3D453358a0" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Flogic-apps-mcp-auth-flow.svg%3Fv%3D453358a0" alt="Authentication flow from AI Agent through Entra ID and Easy Auth to MCP Server, with two options: OAuth 2.0 or API Key" width="693" height="194"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Easy Auth is mandatory. Without it, your MCP server accepts calls from anyone. The docs bury this 8-step setup.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The docs mention Easy Auth like it's a checkbox. It's not. Here's the setup:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an app registration in Entra ID&lt;/li&gt;
&lt;li&gt;Note the application (client) ID&lt;/li&gt;
&lt;li&gt;Set the issuer URL with your tenant ID&lt;/li&gt;
&lt;li&gt;Configure the allowed token audience (with trailing slash - yes, the trailing slash matters)&lt;/li&gt;
&lt;li&gt;Set identity requirements (specific identities or any identity)&lt;/li&gt;
&lt;li&gt;Set tenant requirements (allow or deny cross-tenant)&lt;/li&gt;
&lt;li&gt;Set App Service authentication to allow unauthenticated access (yes, this is correct - Easy Auth handles it at a different layer)&lt;/li&gt;
&lt;li&gt;Choose your auth method: OAuth 2.0 or API Key&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;API keys support 3 expiration durations: 24 hours, 7 days, 30 days. There's no custom duration. There's no automatic rotation. You generate a key, it expires, you generate a new one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The governance gap the docs skip:&lt;/strong&gt; When your MCP server calls a connector - say, the Outlook connector to send email - whose credentials are used? The answer: the credentials stored in the Logic App's API connection. This means the AI agent sends email AS whoever set up the Outlook connection. If that's a shared mailbox, fine. If that's your personal account, every AI agent user sends email as you.&lt;/p&gt;

&lt;p&gt;This is a governance question you need to answer before exposing any connector that creates, updates, or sends data. Read/query connectors are less risky. Write connectors need a service account or shared connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does This Actually Cost?
&lt;/h2&gt;

&lt;p&gt;This is the part that surprises people coming from Consumption Logic Apps.&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;Consumption&lt;/th&gt;
&lt;th&gt;Standard (MCP Server)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hosting model&lt;/td&gt;
&lt;td&gt;Pay per execution&lt;/td&gt;
&lt;td&gt;Always-on App Service Plan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minimum cost&lt;/td&gt;
&lt;td&gt;$0 (idle = free)&lt;/td&gt;
&lt;td&gt;~$160/month (WS1 plan)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scaling&lt;/td&gt;
&lt;td&gt;Automatic, per-trigger&lt;/td&gt;
&lt;td&gt;Manual or autoscale rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP support&lt;/td&gt;
&lt;td&gt;No (event-driven, no persistent endpoint)&lt;/td&gt;
&lt;td&gt;Yes (persistent HTTP endpoint)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Connectors&lt;/td&gt;
&lt;td&gt;Same 1,400+&lt;/td&gt;
&lt;td&gt;Same 1,400+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Standard Logic Apps run on a Workflow Service Plan or App Service Environment v3. Per the &lt;a href="https://azure.microsoft.com/en-us/pricing/details/logic-apps/" rel="noopener noreferrer"&gt;Azure Logic Apps pricing page&lt;/a&gt;, the entry-level Workflow Standard plan (WS1) is priced per vCPU-hour and works out to roughly $160/month for the minimum always-on configuration at list rates (region and reservation discounts vary; check the Azure pricing calculator for your scenario).&lt;/p&gt;

&lt;p&gt;You're paying for an always-on compute instance because MCP servers need a persistent HTTP endpoint. Consumption Logic Apps are event-driven - they spin up on trigger, execute, and shut down. You can't run an MCP server on something that shuts down between calls.&lt;/p&gt;

&lt;p&gt;For dev/test with light usage, this is a real cost consideration. For production with multiple teams calling the server, $160/month is noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five High-Value Patterns to Build With This
&lt;/h2&gt;

&lt;p&gt;Now that every Logic App connector is an MCP tool, the interesting question is: which connectors become the most useful AI agent tools? Five candidate patterns:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Dataverse query tool.&lt;/strong&gt; Let Claude Code query your Dataverse tables by describing what you want in natural language. "Find all active cases assigned to a given user" translates to a FetchXML query through the Dataverse connector. Useful for Power Platform developers who live in the terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. SharePoint document search.&lt;/strong&gt; Your AI agent can search SharePoint document libraries, read file metadata, and pull content. Combine this with Azure OpenAI for a RAG pattern that doesn't require a custom indexer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Automated incident response.&lt;/strong&gt; Connect to Azure Monitor alerts, ServiceNow tickets, and Teams notifications. When an alert fires, the AI agent reads the alert, creates a ServiceNow incident, and posts to the on-call Teams channel. All through MCP tools backed by Logic App connectors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Approval workflow trigger.&lt;/strong&gt; Start a Power Automate approval from your AI agent. "Send this deployment for manager approval" becomes a tool call that triggers the approval flow, waits for the response, and returns the result.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Multi-system data aggregation.&lt;/strong&gt; Pull data from SQL, Dataverse, and a REST API in one agent conversation. Each query is a separate MCP tool. The AI agent orchestrates the calls and synthesizes the results. No custom middleware needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest Take
&lt;/h2&gt;

&lt;p&gt;This is a genuinely useful capability. The 1,400+ connector library is Logic Apps' superpower, and exposing it to AI agents through MCP is the right move. For anyone who has been wrapping APIs in custom MCP server code, this eliminates most of that work.&lt;/p&gt;

&lt;p&gt;But the execution has gaps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gap 1: Cost model mismatch.&lt;/strong&gt; Most developers experimenting with MCP servers want something cheap or free for prototyping. Standard Logic Apps have a minimum monthly cost. Microsoft should offer a Consumption-compatible MCP endpoint, even if it's limited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gap 2: Auth complexity.&lt;/strong&gt; Easy Auth setup is 8 steps with tenant configuration, app registration, and audience URIs. For something called "Easy" Auth, it's not easy. A one-click "secure this endpoint" option would help adoption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gap 3: Connector credential governance.&lt;/strong&gt; The docs don't address whose credentials the AI agent uses when calling write connectors. This is the first question any security team will ask.&lt;/p&gt;

&lt;p&gt;Despite the gaps, this is usable today for read-only Dataverse and SQL queries in dev environments. For production write operations, wait until Microsoft clarifies the credential governance story, or build a service account pattern around it.&lt;/p&gt;

&lt;p&gt;The architecture diagram at the top of this article was generated using the &lt;a href="https://az365.ai/blog/architecture-diagrams-with-draw-io-mcp-and-claude/" rel="noopener noreferrer"&gt;Draw.io MCP diagramming pipeline&lt;/a&gt;. When the architecture changes (and it will, this is preview), the diagram regenerates from spec. Keeping diagrams current is what makes them worth drawing.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;For more on building Azure architecture diagrams from code, see &lt;a href="https://az365.ai/blog/architecture-diagrams-with-draw-io-mcp-and-claude/" rel="noopener noreferrer"&gt;Architecture Diagrams with Draw.io MCP and Claude&lt;/a&gt;. For the geometry rules behind clean diagrams, see &lt;a href="https://az365.ai/blog/15-rules-perfect-architecture-diagram-arrows/" rel="noopener noreferrer"&gt;15 Rules for Perfect Architecture Diagram Arrows&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/logic-apps-mcp-server-architecture-that-actually-works/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>logicapps</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Architecture Diagrams with Draw.io MCP Server and Claude Code</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Tue, 25 Aug 2026 14:36:50 +0000</pubDate>
      <link>https://dev.to/az365ai/architecture-diagrams-with-drawio-mcp-server-and-claude-code-599g</link>
      <guid>https://dev.to/az365ai/architecture-diagrams-with-drawio-mcp-server-and-claude-code-599g</guid>
      <description>&lt;p&gt;"Can you draw me an architecture diagram?"&lt;/p&gt;

&lt;p&gt;That used to mean: open Visio (if you have a license), spend 30 minutes fighting with connectors, export a PNG, paste it into a Word doc that nobody will update. Or worse: open PowerPoint and draw boxes with arrows.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Draw.io MCP server lets Claude Code generate architecture diagrams from plain text descriptions. Describe your system, get a version-controlled .drawio file in seconds. Free, git-friendly, and no Visio license required.&lt;/p&gt;
&lt;/blockquote&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fdrawio-mcp-hero.svg%3Fv%3D087dde7d" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fdrawio-mcp-hero.svg%3Fv%3D087dde7d" alt="Three step flow from text prompt through Claude to Draw.io diagram output" width="753" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now I describe what I want in plain text and Claude generates a Draw.io architecture diagram in seconds. No Visio license. No manual dragging. Version-controlled XML that diffs in git as part of your &lt;a href="https://az365.ai/blog/living-documentation-in-git-why-sharepoint-word-docs-are-dead" rel="noopener noreferrer"&gt;living documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do You Generate Architecture Diagrams with Claude and Draw.io?
&lt;/h2&gt;

&lt;p&gt;You describe the system in plain English and Claude produces valid Draw.io XML through the MCP server. The diagram opens in your browser for review, and you save the .drawio file directly into your repo's /docs folder. The entire process takes under a minute for most diagrams, compared to 30+ minutes of manual work in Visio or Lucidchart.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;The Draw.io MCP server runs locally and renders diagrams from mxGraphModel XML. Claude Code connects to it through the MCP protocol and can create diagrams from text descriptions.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install the Draw.io MCP server&lt;/strong&gt; Add it to your .mcp.json config. It runs locally on port 3000 and opens a browser-based editor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Describe what you want&lt;/strong&gt; Tell Claude: 'Create a swimlane diagram showing the performance review process with 4 lanes: Employee, Manager, HR, System.' Claude generates the XML.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review and refine&lt;/strong&gt; The diagram opens in your browser at localhost:3000. Adjust positioning if needed, or ask Claude to modify specific elements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save the XML&lt;/strong&gt; Copy the .drawio file to your /docs folder. Commit to git. It's now versioned with your code.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What It Generates
&lt;/h2&gt;

&lt;p&gt;Here's a swimlane process diagram generated the same way:&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fswimlane-review-process.svg%3Fv%3D7165cbc2" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fswimlane-review-process.svg%3Fv%3D7165cbc2" alt="Performance Review process swimlane diagram with four lanes: HR Admin, Manager, Employee, and System" width="960" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Swimlane diagram for a performance review process. Four lanes, decision gateway, system automation steps.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Claude handles these diagram types well:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Diagram Type&lt;/th&gt;
&lt;th&gt;Quality&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Swimlane / process flow&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Business processes, approval workflows, user journeys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entity Relationship Diagram&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Dataverse schema visualization, data models&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration map&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;System context diagrams, API connections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;State machine&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Record status flows, lifecycle diagrams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data flow&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Source-to-target mapping, ETL pipelines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sequence diagram&lt;/td&gt;
&lt;td&gt;OK&lt;/td&gt;
&lt;td&gt;API call sequences (Mermaid is better for these)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Real Example: D365 Integration Architecture
&lt;/h2&gt;

&lt;p&gt;I described this to Claude:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create a Draw.io architecture diagram showing: Dynamics 365 CE in the center, connected to Azure AI Search (for document indexing), an external ERP via Azure Service Bus, Power Automate for email notifications, and Dataverse audit log feeding into Power BI. Use blue for Azure services, green for D365, gray for external systems."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;30 seconds later:&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fintegration-architecture-d365.svg%3Fv%3Dac79e8e3" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fintegration-architecture-d365.svg%3Fv%3Dac79e8e3" alt="D365 Integration Architecture diagram showing Dynamics 365 CE connected to Azure Service Bus, Azure AI Search, Power BI, and an external ERP through Azure Functions" width="900" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Integration architecture generated from a text description. Color-coded by system type, labeled connections, legend included.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Would it have taken me 30 minutes in Visio? More.&lt;/p&gt;
&lt;h2&gt;
  
  
  What It Gets Right
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Structure and layout.&lt;/strong&gt; Claude understands that swimlanes have horizontal lanes, ERDs have relationships, integration maps have system boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Color coding.&lt;/strong&gt; Tell it your color scheme and it applies consistently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Labeling.&lt;/strong&gt; Connection labels, system names, data flow descriptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;XML validity.&lt;/strong&gt; The generated mxGraphModel XML renders correctly in Draw.io every time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What It Gets Wrong
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complex layouts.&lt;/strong&gt; Diagrams with 20+ elements sometimes overlap. You need to drag things around manually.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pixel-perfect positioning.&lt;/strong&gt; It approximates positioning. Fine for working diagrams, not for presentation slides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your specific codebase.&lt;/strong&gt; Claude doesn't know your actual table names or API endpoints unless you tell it. Paste your schema or API spec for accurate diagrams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aesthetic polish.&lt;/strong&gt; The diagrams are functional, not beautiful. If you need presentation-quality, use Draw.io's manual tools for final polish.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The 80/20 rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Claude generates 80% of the diagram in 30 seconds. You spend 5 minutes on the remaining 20% (positioning, fine-tuning labels). Total: 6 minutes vs 30+ minutes from scratch.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  The Prompt Pattern That Works
&lt;/h2&gt;

&lt;p&gt;Be specific. Don't say "draw an architecture diagram." Say:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a Draw.io diagram showing:
- [System A] connects to [System B] via [protocol/method]
- [System C] reads from [System B] on a [schedule]
- Use [color] for [category], [color] for [category]
- Include a legend in the top-right corner
- Layout: left-to-right flow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The more context you give, the better the output. Paste your actual table names, API endpoints, or flow definitions for maximum accuracy. For Dataverse projects, you can &lt;a href="https://az365.ai/blog/xrmtoolbox-schema-export-to-erd-with-claude" rel="noopener noreferrer"&gt;export your schema with XrmToolBox&lt;/a&gt; and feed it directly to Claude for an accurate ERD.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building a documentation practice for your Power Platform team?&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/az365ai/" rel="noopener noreferrer"&gt;Follow Alex on LinkedIn&lt;/a&gt; for more patterns on AI-assisted architecture and living docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compared to Other Tools
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;AI Generation&lt;/th&gt;
&lt;th&gt;Git Friendly&lt;/th&gt;
&lt;th&gt;Collaboration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Draw.io + Claude&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Yes (text to diagram)&lt;/td&gt;
&lt;td&gt;Yes (XML diffs)&lt;/td&gt;
&lt;td&gt;Via git&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visio&lt;/td&gt;
&lt;td&gt;$15/mo&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No (binary format)&lt;/td&gt;
&lt;td&gt;SharePoint co-edit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lucidchart&lt;/td&gt;
&lt;td&gt;$8/mo&lt;/td&gt;
&lt;td&gt;Limited AI&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Real-time co-edit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Miro&lt;/td&gt;
&lt;td&gt;$8/mo&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Real-time co-edit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mermaid&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Yes (Claude writes Mermaid)&lt;/td&gt;
&lt;td&gt;Yes (text format)&lt;/td&gt;
&lt;td&gt;Via git&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Draw.io + Claude wins on cost (free), AI generation (full diagrams from text), and git friendliness (XML diffs). It loses on real-time collaboration - you collaborate through pull requests, not simultaneous editing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Next article: using this workflow to generate ERDs from XrmToolBox schema exports. Export your Dataverse schema, feed it to Claude, get a visual ERD in 5 minutes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://dev.to/"&gt;AZ365.ai&lt;/a&gt; - Azure and AI insights for architects building on Microsoft. &lt;a href="https://www.linkedin.com/in/az365ai/" rel="noopener noreferrer"&gt;Follow Alex on LinkedIn&lt;/a&gt; for architecture deep dives.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/architecture-diagrams-with-draw-io-mcp-and-claude/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>drawio</category>
      <category>architecture</category>
    </item>
    <item>
      <title>AI Copilots vs Custom AI on Azure: When to Build and When to Buy</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Mon, 24 Aug 2026 14:34:24 +0000</pubDate>
      <link>https://dev.to/az365ai/ai-copilots-vs-custom-ai-on-azure-when-to-build-and-when-to-buy-22kh</link>
      <guid>https://dev.to/az365ai/ai-copilots-vs-custom-ai-on-azure-when-to-build-and-when-to-buy-22kh</guid>
      <description>&lt;p&gt;Microsoft wants you to buy Copilot for everything. Email summaries, meeting recaps, document drafts, code completions, security investigations, sales forecasting. Six Copilot products, all pitched as the answer to your AI strategy.&lt;/p&gt;

&lt;p&gt;Sometimes they are right. M365 Copilot plugs into Word, Excel, Outlook, and Teams with zero custom code. For horizontal productivity across an organization, nothing else comes close.&lt;/p&gt;

&lt;p&gt;But sometimes you are paying $30/user/month for 500 users when Azure OpenAI would handle the same workload for $300/month total. That is not a rounding error. That is $15,000/month vs $300/month. And the gap only widens as your use case gets more specific.&lt;/p&gt;

&lt;p&gt;I have built both. Copilot deployments for general productivity. Custom &lt;a href="https://az365.ai/blog/what-is-azure-ai-services-2026" rel="noopener noreferrer"&gt;Azure AI solutions&lt;/a&gt; for domain-specific workflows. The answer is never "always build" or "always buy." The answer is knowing where the crossover point is for your specific situation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Copilot wins for horizontal productivity across M365. Custom Azure AI wins for domain-specific workloads at scale. The crossover point is around 15-20 users for single-purpose AI features. Most enterprises need both - Copilot for the broad surface, custom AI for the vertical depth, and Copilot Studio as the bridge between them.&lt;/p&gt;
&lt;/blockquote&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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fai-copilots-vs-custom-hero.svg%3Fv%3D3d681375" 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%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fai-copilots-vs-custom-hero.svg%3Fv%3D3d681375" alt="Cost comparison showing Copilot at $15,000 per month versus custom Azure OpenAI at $220-520 per month for 500 users" width="592" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Microsoft Copilot Ecosystem in 60 Seconds
&lt;/h2&gt;

&lt;p&gt;Six products carry the Copilot name. They share branding but not much else.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Product&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;th&gt;Pricing Model&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;M365 Copilot&lt;/td&gt;
&lt;td&gt;AI in Word, Excel, Outlook, Teams, PowerPoint&lt;/td&gt;
&lt;td&gt;Per-seat&lt;/td&gt;
&lt;td&gt;$30/user/month (Enterprise)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D365 Copilot&lt;/td&gt;
&lt;td&gt;AI in Sales, Service, Finance, Supply Chain&lt;/td&gt;
&lt;td&gt;Per-seat add-on&lt;/td&gt;
&lt;td&gt;$50/user/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copilot Studio&lt;/td&gt;
&lt;td&gt;Low-code custom copilot builder&lt;/td&gt;
&lt;td&gt;Consumption&lt;/td&gt;
&lt;td&gt;$200/month per 25K credits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security Copilot&lt;/td&gt;
&lt;td&gt;Threat analysis in Defender, Sentinel&lt;/td&gt;
&lt;td&gt;Consumption (SCUs)&lt;/td&gt;
&lt;td&gt;$6/SCU on-demand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Copilot&lt;/td&gt;
&lt;td&gt;Code completions, agents, PR reviews&lt;/td&gt;
&lt;td&gt;Per-seat&lt;/td&gt;
&lt;td&gt;$19/user/month (Business)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power Platform Copilot&lt;/td&gt;
&lt;td&gt;Natural-language app/flow building&lt;/td&gt;
&lt;td&gt;Included&lt;/td&gt;
&lt;td&gt;Part of Power Platform license&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pricing models are already a signal. M365 and D365 Copilot charge per seat regardless of usage. Security Copilot and Copilot Studio charge by consumption. That distinction matters enormously when you start doing cost math.&lt;/p&gt;

&lt;p&gt;One more pricing detail that changes the calculus: Microsoft is launching M365 E7 in May 2026 at $99/user/month. It bundles Copilot with agent management and identity tools. If you are already on E5 at $57/user/month, the upgrade to E7 makes Copilot effectively $42/user/month instead of a $30 add-on. The bundle math is different from the add-on math.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Copilot Is the Right Answer
&lt;/h2&gt;

&lt;p&gt;I am not anti-Copilot. I have seen it save real time in real organizations. The use cases where it excels share three characteristics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Horizontal productivity.&lt;/strong&gt; Every knowledge worker sends emails, attends meetings, and edits documents. M365 Copilot automates the repetitive parts of all three. Meeting summaries alone save 15-30 minutes per meeting for every attendee who skipped or joined late. An Australian government pilot measured roughly 1 hour/day saved per user on summarization and drafting, with 61% reporting improved work quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data already in Microsoft Graph.&lt;/strong&gt; Copilot is grounded in your SharePoint files, Exchange emails, Teams chats, and OneDrive documents. If your organization's knowledge already lives there, Copilot can find it and reason over it without building anything. No RAG pipeline. No vector database. No embedding model. It just works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No dev team required.&lt;/strong&gt; M365 Copilot is an admin toggle, not a development project. Enable it, assign licenses, train users. Time-to-value is days, not months. For organizations without AI engineering talent, this is the only realistic path to AI adoption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Forrester numbers back this up.&lt;/strong&gt; Their Total Economic Impact study of M365 Copilot found 116% ROI over 3 years for a composite organization - $36.8M in benefits against $17.1M in costs. For SMBs, the ROI was up to 353% within 3 years.&lt;/p&gt;

&lt;p&gt;But here is the part Microsoft does not put in the press release.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Custom AI Wins
&lt;/h2&gt;

&lt;p&gt;Gartner surveyed IT leaders in 2025. 40% were piloting M365 Copilot. Only 5% of completed pilots moved to large-scale deployment. Most enterprises remain 12-18 months from scaled rollout.&lt;/p&gt;

&lt;p&gt;Why? Because the moment you move past general productivity, Copilot's per-seat model breaks down and its customization ceiling becomes visible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Domain-specific knowledge.&lt;/strong&gt; Your legal contracts, medical records, engineering specifications, and proprietary databases do not live in Microsoft Graph. Copilot cannot reason over data it cannot see. Custom RAG pipelines on Azure OpenAI connect to any data source through any API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom reasoning chains.&lt;/strong&gt; Copilot follows pre-built interaction patterns. If you need multi-step agent workflows - retrieve from three systems, cross-reference, apply business rules, generate a structured output - you need &lt;a href="https://az365.ai/blog/what-is-azure-ai-services-2026" rel="noopener noreferrer"&gt;Azure AI Foundry&lt;/a&gt; orchestration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fine-tuning.&lt;/strong&gt; When GPT-4o does not understand your industry terminology, classification schemes, or output formats, Azure OpenAI supports fine-tuning. A fine-tuned o4-mini model costs roughly $1.70/hour for hosting plus token costs. That is expensive for experimentation but cheap for production workloads that run 24/7.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model selection.&lt;/strong&gt; Azure AI Foundry gives you access to the full model marketplace: OpenAI, Meta Llama, Mistral, Phi. Pick the right model for the right task. Use GPT-4o for complex reasoning and GPT-4o-mini for high-volume classification. Copilot gives you whatever model Microsoft chose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost at scale.&lt;/strong&gt; This is the big one.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Much Does Copilot Actually Cost vs Custom Azure AI?
&lt;/h2&gt;

&lt;p&gt;Here is the math Microsoft does not show you in the sales deck.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;M365 Copilot Enterprise at $30/user/month:&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;Users&lt;/th&gt;
&lt;th&gt;Monthly Cost&lt;/th&gt;
&lt;th&gt;Annual Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;$3,000&lt;/td&gt;
&lt;td&gt;$36,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;$15,000&lt;/td&gt;
&lt;td&gt;$180,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;$30,000&lt;/td&gt;
&lt;td&gt;$360,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,000&lt;/td&gt;
&lt;td&gt;$150,000&lt;/td&gt;
&lt;td&gt;$1,800,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now compare that to a custom chatbot built on Azure OpenAI. Same use case: employees asking questions about internal knowledge. 1,000 queries/day across the organization, averaging 500 input tokens and 1,000 output tokens per query.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom Azure OpenAI (GPT-4o-mini) cost:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input: 15M tokens/month x $0.15/1M = &lt;strong&gt;$2.25/month&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Output: 30M tokens/month x $0.60/1M = &lt;strong&gt;$18.00/month&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Azure infrastructure (App Service, AI Search, storage): &lt;strong&gt;$200-500/month&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total: $220-520/month regardless of user count&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read that again. $220-520/month for unlimited users vs $15,000/month for 500 licensed seats.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The crossover point&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For a single AI feature - an internal knowledge chatbot, a document classifier, a summarization pipeline - custom AI becomes cheaper than Copilot at roughly 15-20 users. Below that, Copilot's zero-development-cost advantage wins. Above that, the per-seat model bleeds money for targeted use cases.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But this comparison is not entirely fair. Copilot does not just answer questions. It summarizes emails, drafts documents, recaps meetings, analyzes spreadsheets, and surfaces information across the entire M365 surface. Replicating all of that on Azure OpenAI would cost far more than $520/month - and you would spend months building it.&lt;/p&gt;

&lt;p&gt;The real comparison is not Copilot vs custom AI. It is Copilot for everything vs Copilot for productivity + custom AI for domain-specific work.&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;Copilot Cost (500 users)&lt;/th&gt;
&lt;th&gt;Custom AI Cost&lt;/th&gt;
&lt;th&gt;Winner&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;General productivity (email, docs, meetings)&lt;/td&gt;
&lt;td&gt;$15,000/month&lt;/td&gt;
&lt;td&gt;Not feasible to replicate&lt;/td&gt;
&lt;td&gt;Copilot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Single domain chatbot (internal KB)&lt;/td&gt;
&lt;td&gt;$15,000/month&lt;/td&gt;
&lt;td&gt;$300-800/month&lt;/td&gt;
&lt;td&gt;Custom AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10 specialized workflows&lt;/td&gt;
&lt;td&gt;$15,000/month&lt;/td&gt;
&lt;td&gt;$2,000-5,000/month&lt;/td&gt;
&lt;td&gt;Custom AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Productivity + domain-specific&lt;/td&gt;
&lt;td&gt;$15,000 + $2,000&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;Hybrid&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The hybrid row is where most enterprises land. And that is where Copilot Studio enters the picture.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Building your AI strategy?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/az365ai/" rel="noopener noreferrer"&gt;Follow Alex on LinkedIn&lt;/a&gt; for architecture deep dives and cost analysis on Azure AI decisions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Hybrid Pattern: Copilot + Custom AI + Copilot Studio
&lt;/h2&gt;

&lt;p&gt;The smartest deployments I have seen run three layers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 1: Copilot for horizontal productivity.&lt;/strong&gt; Email drafting, meeting summaries, document generation, Teams chat, Excel analysis. Every knowledge worker gets this. The per-seat cost is justified because every user touches these features daily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 2: Custom Azure AI for vertical depth.&lt;/strong&gt; Domain-specific RAG pipelines, custom classification, specialized agents, external-facing chatbots. These serve specific teams or workflows. The consumption model scales with usage, not headcount. A legal team of 20 running contract analysis does not require 500 Copilot licenses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 3: Copilot Studio as the bridge.&lt;/strong&gt; This is the product most "build vs buy" articles ignore, and it is the one that fills the gap between layers 1 and 2.&lt;/p&gt;

&lt;p&gt;Copilot Studio lets you build custom copilots on Microsoft infrastructure without managing Azure resources directly. It connects to enterprise data via 1,500+ Power Platform connectors. It extends M365 Copilot with declarative agents - custom instructions, custom knowledge, custom actions - that show up right inside Teams and the M365 app.&lt;/p&gt;

&lt;p&gt;The pricing is consumption-based: $200/month per 25,000 Copilot Credits. No per-seat charges.&lt;/p&gt;

&lt;h3&gt;
  
  
  Copilot Studio vs Azure AI Foundry
&lt;/h3&gt;

&lt;p&gt;The bridge layer has its own decision point. When do you use Copilot Studio, and when do you go full Azure AI Foundry?&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;Azure AI Foundry&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Builder persona&lt;/td&gt;
&lt;td&gt;Business users, IT admins&lt;/td&gt;
&lt;td&gt;AI developers, data scientists&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code requirement&lt;/td&gt;
&lt;td&gt;Low-code / no-code&lt;/td&gt;
&lt;td&gt;Pro-code (Python, REST APIs)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model control&lt;/td&gt;
&lt;td&gt;Pre-selected models&lt;/td&gt;
&lt;td&gt;Full model marketplace + fine-tuning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment speed&lt;/td&gt;
&lt;td&gt;Hours to days&lt;/td&gt;
&lt;td&gt;Weeks to months&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration&lt;/td&gt;
&lt;td&gt;M365 and Power Platform native&lt;/td&gt;
&lt;td&gt;Any system via APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data residency&lt;/td&gt;
&lt;td&gt;Microsoft-managed&lt;/td&gt;
&lt;td&gt;Full Azure control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom model training&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (fine-tuning, distillation)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Internal agents, M365 extensions, FAQ bots&lt;/td&gt;
&lt;td&gt;Custom RAG, multi-model pipelines, products&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;My rule of thumb: if a business analyst can describe the use case in a Teams message, start with Copilot Studio. If the requirements include "fine-tune," "multi-model," or "embed in our product," go straight to Azure AI Foundry.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 5-Question Decision Framework
&lt;/h2&gt;

&lt;p&gt;Before you commit budget to either path, answer these five questions. They will tell you where you land.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Where does the data live?&lt;/strong&gt; If your data is in Microsoft Graph (SharePoint, OneDrive, Exchange, Teams), Copilot can reach it natively. If it is in proprietary databases, legacy systems, or external APIs, you need custom AI with a RAG pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How many people need this specific AI feature?&lt;/strong&gt; Per-seat Copilot pricing favors broad adoption. If 500 people need email summaries, Copilot is the answer. If 20 people need contract analysis, custom AI at $300-800/month beats 20 Copilot licenses at $600/month - and it scales to 200 users at the same price.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do you have AI engineering talent?&lt;/strong&gt; Custom Azure AI requires Python developers who understand embeddings, prompt engineering, and orchestration frameworks. If your team is all Power Platform, start with Copilot Studio. If you have data scientists, Azure AI Foundry unlocks capabilities Copilot cannot match.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is AI part of your product or just internal tooling?&lt;/strong&gt; If AI is a feature your customers interact with, build custom. Copilot is designed for internal productivity, not external products. Azure AI Foundry gives you the APIs, model selection, and SLAs needed for customer-facing AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does the base model understand your domain?&lt;/strong&gt; Test it. Send GPT-4o 10 real questions from your domain. If it answers 8+ correctly, Copilot or a simple RAG pipeline is enough. If it struggles with your terminology, classification schemes, or output formats, you need fine-tuning - and that means Azure AI Foundry.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you answered "Microsoft Graph," "500 users," "no AI engineers," "internal tooling," and "base model works" - buy Copilot. Do not overthink it.&lt;/p&gt;

&lt;p&gt;If you answered "proprietary databases," "20 users," "we have data scientists," "customer-facing," and "needs fine-tuning" - build on Azure AI Foundry. The consumption model will save you money and the customization will differentiate your product.&lt;/p&gt;

&lt;p&gt;If you answered a mix - and most enterprises do - you need the hybrid pattern. Copilot for the broad surface. Custom AI for the vertical depth. Copilot Studio to bridge the simple custom needs without spinning up a full Azure project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Adoption Reality Check
&lt;/h2&gt;

&lt;p&gt;Here is what the analyst data actually says, stripped of vendor spin.&lt;/p&gt;

&lt;p&gt;90%+ of Fortune 500 companies are using M365 Copilot. That sounds like universal adoption until you realize only ~15M paid seats exist globally out of ~400M+ potential M365 users. That is roughly 3.3% penetration. The awareness and budget gap is real.&lt;/p&gt;

&lt;p&gt;80% of Fortune 500 are also using Azure AI Foundry. Enterprises are not choosing one path. They are running both in parallel.&lt;/p&gt;

&lt;p&gt;The Gartner data is the most telling: most enterprises remain 12-18 months from scaled Copilot deployment. The top barriers are data readiness, ROI measurement, and regulatory fit. If your &lt;a href="https://az365.ai/blog/coe-starter-kit-what-it-does-and-what-to-build-on-top" rel="noopener noreferrer"&gt;governance layer&lt;/a&gt; is not in place, scaling either path is risky. A law firm reduced 7-day contract drafts to 7 hours. But a 5,000-employee company is spending an additional $1.8M/year on M365 Copilot licenses, and finance teams are demanding clear proof of value.&lt;/p&gt;

&lt;p&gt;The ROI is real for the right use cases. The waste is real when Copilot is deployed to users who never open it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I Would Put the Money
&lt;/h2&gt;

&lt;p&gt;Stop treating this as a binary choice. The right answer for most organizations above 200 employees is all three layers.&lt;/p&gt;

&lt;p&gt;Deploy M365 Copilot to users who live in Outlook, Teams, and Word - your knowledge workers, managers, and executives. Measure adoption monthly. Cut licenses for users with less than 5 Copilot interactions per week.&lt;/p&gt;

&lt;p&gt;Build custom AI on Azure OpenAI for the 2-3 domain-specific workflows where your competitive advantage lives. Start with GPT-4o-mini at $0.15/$0.60 per million tokens. Move to fine-tuned models only after you prove the base model cannot handle your domain.&lt;/p&gt;

&lt;p&gt;Use Copilot Studio to fill the gaps - the internal FAQ bot, the HR policy agent, the IT helpdesk copilot. These are the use cases too custom for M365 Copilot but too simple for a full Azure AI Foundry project.&lt;/p&gt;

&lt;p&gt;The organizations wasting money right now are the ones that bought 5,000 Copilot licenses because the sales rep showed a good demo. The organizations getting real value are the ones that mapped their AI use cases first, matched each one to the right layer, and measured the results. (For the &lt;a href="https://az365.ai/blog/power-platform-governance-repo-standards-reviews-inventory/" rel="noopener noreferrer"&gt;governance foundation&lt;/a&gt; that makes mapping possible, start with environment strategy and flow inventory.)&lt;/p&gt;

&lt;p&gt;Build where you differentiate. Buy where you do not.&lt;/p&gt;




&lt;h2&gt;
  
  
  Microsoft AI Builder Series
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/microsoft-ai-certifications-2026" rel="noopener noreferrer"&gt;AI Certifications in 2026&lt;/a&gt; - Which ones actually matter&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/building-ai-solutions-azure-architecture" rel="noopener noreferrer"&gt;Building AI on Azure&lt;/a&gt; - The architecture that works&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy" rel="noopener noreferrer"&gt;Copilots vs Custom AI&lt;/a&gt; - When to build and when to buy&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://dev.to/"&gt;AZ365.ai&lt;/a&gt; - Azure and AI insights for architects building on Microsoft. &lt;a href="https://www.linkedin.com/in/az365ai/" rel="noopener noreferrer"&gt;Follow Alex on LinkedIn&lt;/a&gt; for architecture deep dives.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>azure</category>
      <category>azureai</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>Azure OpenAI PTU vs PAYG: The Real Break-Even Table</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Sun, 23 Aug 2026 14:16:03 +0000</pubDate>
      <link>https://dev.to/az365ai/azure-openai-ptu-vs-payg-the-real-break-even-table-30m5</link>
      <guid>https://dev.to/az365ai/azure-openai-ptu-vs-payg-the-real-break-even-table-30m5</guid>
      <description>&lt;p&gt;Every Azure OpenAI cost calculator on the internet tells you the same thing. PTU breaks even at roughly 150 to 200 million tokens per month for GPT-5. Below that volume, pay-as-you-go wins. Above, provisioned wins. Pick a number, sign the reservation, move on.&lt;/p&gt;

&lt;p&gt;That math is wrong, or at least incomplete. Calculators assume 100% sustained utilization of the PTU deployment. Many production workloads run well below 100% sustained utilization; calibrate against your own telemetry. The gap between calculator math and reality is where, in the worked example below, a 15-PTU yearly reservation can cost more every month than the equivalent pay-as-you-go bill.&lt;/p&gt;

&lt;p&gt;I pulled Microsoft's own published per-PTU throughput numbers, current 2026 pricing, and ran the actual table for GPT-5 and friends. Here is what you should see before signing anything.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GPT-5 Global PAYG is $1.25 per million input tokens and $10 per million output. GPT-5 Global PTU is roughly $1 per PTU per hour, $260 per PTU per month reserved, $221 per PTU per month on a yearly reservation. Minimum deployment is 15 PTUs (so $10,800 per month hourly, $3,900 monthly reserved, $3,315 yearly reserved). Each PTU gives you 4,750 input TPM, with one output token costing the same utilization as eight input tokens. At 100% utilization 24/7 on a typical 8K-in/1K-out workload, PAYG and yearly-reserved PTU break even at roughly $3,800/month. At 40% sustained utilization (closer to most production workloads), yearly PTU costs the same $3,315 while PAYG drops to $1,540. PTU is a great deal only when you can saturate the deployment and commit to a year. It is a trap when you cannot.&lt;/p&gt;
&lt;/blockquote&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%2F4ojgqweeens23uni8slv.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%2F4ojgqweeens23uni8slv.png" alt="Break-even chart of monthly cost versus sustained PTU utilization, showing pay-as-you-go cheaper below roughly 86 percent utilization and a yearly PTU reservation only winning above it." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The break-even curve the calculators hide: at the utilization most production workloads actually run, PAYG stays cheaper than a yearly PTU reservation.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How PTU Billing Actually Works
&lt;/h2&gt;

&lt;p&gt;A Provisioned Throughput Unit (PTU) is a unit of model processing capacity Microsoft sells you on a fixed hourly rate. You deploy a model in PTU mode, you reserve a number of PTUs, and you pay for those PTUs whether you use them or not. The model's TPM (tokens per minute) capacity is a function of how many PTUs you bought.&lt;/p&gt;

&lt;p&gt;Three flavors exist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global Provisioned&lt;/strong&gt;: cheapest, requests routed across global capacity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Zone Provisioned&lt;/strong&gt;: middle tier, requests stay within a continental data zone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regional Provisioned&lt;/strong&gt;: most expensive, requests stay in a specific region&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Global is what most architects pick. Data zone and regional cost more for compliance scenarios.&lt;/p&gt;

&lt;p&gt;The minimum deployment is 15 PTUs for Global and Data Zone, scaling in increments of 5. Regional starts at 50 PTUs for most models. You cannot deploy "1 PTU of GPT-5 to test." The smallest GPT-5 PTU deployment is 15 PTUs.&lt;/p&gt;

&lt;p&gt;Three billing modes exist for the PTUs you reserve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hourly&lt;/strong&gt;: flexible, no commitment, expensive&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly reserved&lt;/strong&gt;: substantial discount, 1-month commitment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yearly reserved&lt;/strong&gt;: biggest discount, 1-year commitment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reservations are a financial construct, not a deployment construct. You buy reservations through the Azure portal Reservations page, and they automatically apply discount to any matching deployment in the same scope, region, and deployment type. Microsoft's own guidance:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Reservations guarantee a discounted price for the selected term. They don't reserve capacity on the service or guarantee that it will be available when a deployment is created. It's highly recommended that customers create deployments prior to purchasing a reservation to protect against over-purchasing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So the safe order is: deploy first (paying hourly), confirm capacity is available, then buy the reservation. You will pay hourly for at least a few days while you are sizing.&lt;/p&gt;

&lt;h2&gt;
  
  
  GPT-5 Pricing as of April 2026
&lt;/h2&gt;

&lt;p&gt;Confirmed pricing for the GPT-5 family on Azure OpenAI / Foundry:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;PAYG input ($/M)&lt;/th&gt;
&lt;th&gt;PAYG output ($/M)&lt;/th&gt;
&lt;th&gt;Cached input ($/M)&lt;/th&gt;
&lt;th&gt;PTU hourly ($/PTU/hr)*&lt;/th&gt;
&lt;th&gt;Min PTUs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5 (Global)&lt;/td&gt;
&lt;td&gt;$1.25&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;$0.13&lt;/td&gt;
&lt;td&gt;~$1.00&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5-mini&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;td&gt;$2&lt;/td&gt;
&lt;td&gt;(same 90% cache)&lt;/td&gt;
&lt;td&gt;~$1.00&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5-nano&lt;/td&gt;
&lt;td&gt;$0.05&lt;/td&gt;
&lt;td&gt;$0.40&lt;/td&gt;
&lt;td&gt;(same 90% cache)&lt;/td&gt;
&lt;td&gt;~$1.00&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5-pro&lt;/td&gt;
&lt;td&gt;$15&lt;/td&gt;
&lt;td&gt;$120&lt;/td&gt;
&lt;td&gt;(same 90% cache)&lt;/td&gt;
&lt;td&gt;varies&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5.4&lt;/td&gt;
&lt;td&gt;(varies)&lt;/td&gt;
&lt;td&gt;(varies)&lt;/td&gt;
&lt;td&gt;(varies)&lt;/td&gt;
&lt;td&gt;varies&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*PTU hourly rates vary by model and region. The Azure Pricing Calculator is the authoritative source. The $1/PTU/hour figure for GPT-5 Global is based on 2026 Azure OpenAI pricing for GPT-5 Global PTU, with monthly reservations landing near $260/PTU/month and yearly reservations near $221/PTU/month.&lt;/p&gt;

&lt;p&gt;A handful of additional billing levers apply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cached input&lt;/strong&gt; is roughly 10% of standard input rate (90% cache savings)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batch API&lt;/strong&gt; offers 50% off async workloads&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yearly reservation&lt;/strong&gt; is roughly 70% off hourly PTU pricing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly reservation&lt;/strong&gt; is roughly 64% off hourly PTU pricing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hourly to yearly-reserved gap is huge. A 15-PTU GPT-5 deployment costs $10,800/month hourly, $3,900/month on a monthly reservation, and $3,315/month on a yearly reservation. Same capacity, 70% cost difference, just from the term commitment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Throughput Per PTU: The Number That Drives Everything
&lt;/h2&gt;

&lt;p&gt;Microsoft publishes the input-TPM-per-PTU for each model. This is the number that determines how much PAYG-equivalent traffic your PTU deployment can absorb.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input TPM per PTU&lt;/th&gt;
&lt;th&gt;Output:input ratio&lt;/th&gt;
&lt;th&gt;Min PTUs (Global)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5&lt;/td&gt;
&lt;td&gt;4,750&lt;/td&gt;
&lt;td&gt;1 output = 8 input&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5-mini&lt;/td&gt;
&lt;td&gt;23,750&lt;/td&gt;
&lt;td&gt;1 output = 8 input&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5.4&lt;/td&gt;
&lt;td&gt;2,400&lt;/td&gt;
&lt;td&gt;1 output = 8 input (assumed)&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5.3-codex / 5.2 / 5.2-codex&lt;/td&gt;
&lt;td&gt;3,400&lt;/td&gt;
&lt;td&gt;1 output = 8 input&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5.1 / 5.1-codex&lt;/td&gt;
&lt;td&gt;4,750&lt;/td&gt;
&lt;td&gt;1 output = 8 input&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-4.1&lt;/td&gt;
&lt;td&gt;3,000&lt;/td&gt;
&lt;td&gt;1 output = 4 input&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-4.1-mini&lt;/td&gt;
&lt;td&gt;14,900&lt;/td&gt;
&lt;td&gt;1 output = 4 input&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-4.1-nano&lt;/td&gt;
&lt;td&gt;59,400&lt;/td&gt;
&lt;td&gt;1 output = 4 input&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-4o&lt;/td&gt;
&lt;td&gt;2,500&lt;/td&gt;
&lt;td&gt;1 output = 4 input&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-4o-mini&lt;/td&gt;
&lt;td&gt;37,000&lt;/td&gt;
&lt;td&gt;1 output = 4 input&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;o3&lt;/td&gt;
&lt;td&gt;3,000&lt;/td&gt;
&lt;td&gt;varies&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;o4-mini&lt;/td&gt;
&lt;td&gt;5,400&lt;/td&gt;
&lt;td&gt;varies&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;o1&lt;/td&gt;
&lt;td&gt;230&lt;/td&gt;
&lt;td&gt;varies&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few things jump out from this table:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;gpt-5-nano&lt;/strong&gt; would be a TPM monster except OpenAI did not release nano on Azure at the time of writing. gpt-4.1-nano remains the cheapest high-throughput option on PTU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;gpt-5.4 actually costs more in PTU terms than gpt-5&lt;/strong&gt;, because its TPM per PTU is roughly half (2,400 vs 4,750). If your workload runs the same throughput on either model, you would need almost twice as many PTUs for gpt-5.4 to keep up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;o1 is brutally low&lt;/strong&gt; at 230 TPM per PTU. Reasoning models have high per-request token costs and PTU sizing for them gets expensive fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cached tokens are 100% deducted from utilization&lt;/strong&gt;, meaning cache hits do not consume PTU capacity. That is a significant lever for prompt-caching-friendly workloads.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The output:input ratio matters because it determines how a typical mixed-shape request consumes utilization. For GPT-5, an output token "weighs" 8x an input token toward your TPM-per-PTU budget. So a request with 8K input and 1K output consumes 8,000 + (1,000 × 8) = 16,000 utilization tokens per minute against your 4,750-per-PTU budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Break-Even Table for GPT-5
&lt;/h2&gt;

&lt;p&gt;Run the math on a 15-PTU GPT-5 Global deployment, the smallest possible. Workload assumption: 8K input tokens, 1K output tokens per request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Throughput ceiling:&lt;/strong&gt; 15 PTUs × 4,750 input TPM = 71,250 effective input TPM. Each request consumes 16K weighted (8K input + 8 × 1K output). So the deployment caps at 71,250 / 16,000 = 4.45 requests per minute, or 6,400 requests per day, or roughly 192,000 requests per month at 100% utilization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Token volume at 100% utilization:&lt;/strong&gt; 192,000 requests × 8K input = 1.54B input tokens, plus 192,000 × 1K output = 192.5M output tokens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PAYG cost at 100% utilization:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input: 1.54B × $1.25/M = $1,925&lt;/li&gt;
&lt;li&gt;Output: 192.5M × $10/M = $1,925&lt;/li&gt;
&lt;li&gt;Total PAYG at 100%: ~$3,850/month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PTU costs for the same 15 PTUs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hourly: 15 × $1 × 720 = $10,800/month&lt;/li&gt;
&lt;li&gt;Monthly reserved: 15 × $260 = $3,900/month&lt;/li&gt;
&lt;li&gt;Yearly reserved: 15 × $221 = $3,315/month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now run the table at different utilizations. Math derived from Microsoft published per-PTU TPM specs and 2026 Azure OpenAI list pricing. Calibrate against your own workload telemetry before committing.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Utilization&lt;/th&gt;
&lt;th&gt;PAYG cost ($/mo)&lt;/th&gt;
&lt;th&gt;PTU hourly&lt;/th&gt;
&lt;th&gt;PTU monthly reserved&lt;/th&gt;
&lt;th&gt;PTU yearly reserved&lt;/th&gt;
&lt;th&gt;Best choice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;100% (24/7 saturated)&lt;/td&gt;
&lt;td&gt;$3,850&lt;/td&gt;
&lt;td&gt;$10,800&lt;/td&gt;
&lt;td&gt;$3,900&lt;/td&gt;
&lt;td&gt;$3,315&lt;/td&gt;
&lt;td&gt;Yearly reserved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;80%&lt;/td&gt;
&lt;td&gt;$3,080&lt;/td&gt;
&lt;td&gt;$10,800&lt;/td&gt;
&lt;td&gt;$3,900&lt;/td&gt;
&lt;td&gt;$3,315&lt;/td&gt;
&lt;td&gt;PAYG&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;60%&lt;/td&gt;
&lt;td&gt;$2,310&lt;/td&gt;
&lt;td&gt;$10,800&lt;/td&gt;
&lt;td&gt;$3,900&lt;/td&gt;
&lt;td&gt;$3,315&lt;/td&gt;
&lt;td&gt;PAYG (large gap)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40% (typical production)&lt;/td&gt;
&lt;td&gt;$1,540&lt;/td&gt;
&lt;td&gt;$10,800&lt;/td&gt;
&lt;td&gt;$3,900&lt;/td&gt;
&lt;td&gt;$3,315&lt;/td&gt;
&lt;td&gt;PAYG&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20% (chatbot off-peak)&lt;/td&gt;
&lt;td&gt;$770&lt;/td&gt;
&lt;td&gt;$10,800&lt;/td&gt;
&lt;td&gt;$3,900&lt;/td&gt;
&lt;td&gt;$3,315&lt;/td&gt;
&lt;td&gt;PAYG&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;td&gt;$385&lt;/td&gt;
&lt;td&gt;$10,800&lt;/td&gt;
&lt;td&gt;$3,900&lt;/td&gt;
&lt;td&gt;$3,315&lt;/td&gt;
&lt;td&gt;PAYG (10x gap)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The break-even utilization for yearly-reserved PTU vs PAYG is roughly &lt;strong&gt;86% sustained&lt;/strong&gt;. At 86% sustained 24/7 utilization, PAYG and yearly PTU cost the same. Below that, PAYG wins. Above that, PTU wins.&lt;/p&gt;

&lt;p&gt;86% sustained utilization 24/7 is hard. It means you have ~6.4 GPT-5 requests per minute, every minute, every hour, every day, including 4am Sunday. Real production workloads almost never sustain that profile. They have peaks, valleys, seasonal patterns, weekends that drop to 10% of weekday traffic.&lt;/p&gt;

&lt;p&gt;Hourly PTU never beats PAYG. Monthly reservation breaks even at roughly 100% utilization, which means it never beats PAYG in practice. &lt;strong&gt;The only PTU billing mode that actually wins on cost is the yearly reservation, and only when you can saturate the deployment.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Scenarios Where PTU Actually Wins
&lt;/h2&gt;

&lt;p&gt;PTU is a real bargain in three workloads. If yours fits one of these, sign the yearly reservation. If not, stay on PAYG.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. High-volume customer-facing chatbot at scale.&lt;/strong&gt;&lt;br&gt;
A consumer chatbot serving thousands of concurrent users from peak waking hours can hit 70-90% sustained utilization on a properly-sized PTU deployment. The traffic shape is predictable, the load is steady-state, and the latency floor of PTU (versus PAYG queueing) matters for user experience. Yearly reservation is the right call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Heavy batch processing pipelines.&lt;/strong&gt;&lt;br&gt;
A document processing pipeline that runs continuously through a queue of millions of documents can deliberately saturate a PTU deployment. You design the throughput to match the PTU ceiling. Each worker pulls from the queue at the rate the deployment can serve. Utilization stays at 95%+ by construction.&lt;/p&gt;

&lt;p&gt;That said, &lt;strong&gt;the Batch API at 50% off PAYG often beats this anyway&lt;/strong&gt; if the pipeline is not latency-sensitive. Always cost-compare batch + PAYG against PTU + saturate before signing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Latency-critical real-time applications with predictable traffic.&lt;/strong&gt;&lt;br&gt;
PTU gives you guaranteed latency. PAYG can hit queueing delays at peak. A trading-floor copilot, an emergency dispatch assistant, a real-time fraud-decision system has business reasons to pay for guaranteed latency that the cost calculator does not capture. PTU wins when the cost of a slow response is bigger than the cost of unused capacity.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hybrid Pattern: PTU + PAYG Spillover
&lt;/h2&gt;

&lt;p&gt;The architecture pattern most production teams should look at:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deploy PTU sized for your &lt;strong&gt;baseline&lt;/strong&gt; load (the floor of your traffic graph)&lt;/li&gt;
&lt;li&gt;Configure PAYG spillover for traffic that exceeds the PTU capacity&lt;/li&gt;
&lt;li&gt;Use Azure API Management or Azure Foundry routing to direct traffic to PTU first, then PAYG when PTU is saturated&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This works because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Baseline traffic gets the PTU price (cheap when saturated, predictable latency)&lt;/li&gt;
&lt;li&gt;Spike traffic gets the PAYG price (no commitment, scales with load)&lt;/li&gt;
&lt;li&gt;You only commit to the PTU size you can fully utilize 24/7&lt;/li&gt;
&lt;li&gt;Cache lives on PTU side, free utilization, the most valuable cost lever you have&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sizing the PTU floor is the part most teams get wrong. Look at your historical per-minute traffic. Find the 30th percentile (yes, low). That is your PTU floor for cost-optimal hybrid. Going higher means you over-pay for unused PTU during quiet hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Caching Actually Does to the Math
&lt;/h2&gt;

&lt;p&gt;Cached input tokens are 100% deducted from PTU utilization and cost only ~10% of standard input rate on PAYG. This is the single biggest cost lever in the entire model.&lt;/p&gt;

&lt;p&gt;If 70% of your input is cached (typical for chatbot with system prompt + RAG context):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PAYG effective input cost:&lt;/strong&gt; 0.30 × $1.25 + 0.70 × $0.13 = $0.466/M (62% lower than no cache)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PTU throughput:&lt;/strong&gt; 70% of input load is free, so the same PTU serves 3.3x more total requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The PAYG-to-PTU break-even shifts dramatically when caching is in play. Workloads with heavy prefix caching can saturate a PTU deployment at much lower request volume, because each request consumes less utilization.&lt;/p&gt;

&lt;p&gt;If you are running with 70% cache hits and 8K/1K request shape, the effective PAYG cost drops to ~$2,200/month at the same 192K request count. The PTU yearly reservation at $3,315/month never beats it unless utilization stays at 100%, which caching makes harder because each cached request takes longer to fill the PTU budget.&lt;/p&gt;

&lt;p&gt;In other words: caching makes PAYG dramatically more competitive. Tune caching first, then revisit the PTU question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-Flight Checklist Before Buying a PTU Reservation
&lt;/h2&gt;

&lt;p&gt;Run this before signing anything.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pull historical TPM data from Azure Monitor.&lt;/strong&gt; Look at the last 30 days, p50 / p90 / p99 of input + output TPM, day-of-week and hour-of-day patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calculate sustained utilization.&lt;/strong&gt; Average TPM divided by deployment ceiling. If the answer is below 70%, you do not want PTU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Map workload type.&lt;/strong&gt; Is it customer-facing latency-critical? Heavy batch? Variable RAG agent? PTU wins for the first two, loses for the third.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test the Batch API at 50% off&lt;/strong&gt; for any async work. If batch covers your jobs, PTU is rarely the right answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estimate cache hit rate.&lt;/strong&gt; If you can hit 50%+ prefix cache hits, run the math with cached pricing - PAYG looks much better.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check capacity availability.&lt;/strong&gt; Quota does not equal capacity. Deploy first, confirm capacity, then reserve. Microsoft says it explicitly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick the right reservation term.&lt;/strong&gt; Hourly is for benchmarks. Monthly reservation rarely beats PAYG. Yearly reservation is the real PTU value, but only for workloads you are confident will run for a year.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan for spillover.&lt;/strong&gt; Configure PAYG spillover before you go live, so spike traffic does not get queued or rejected.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How This Generalizes Beyond GPT-5
&lt;/h2&gt;

&lt;p&gt;The same math applies to GPT-5-mini, gpt-4.1, gpt-4o, and the rest of the lineup. Different TPM-per-PTU and different PAYG rates give different break-even points, but the structural answer is the same:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hourly PTU never wins on cost&lt;/strong&gt; (use it for benchmarks only)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly reservation rarely wins&lt;/strong&gt; (60-65% break-even utilization, possible in narrow cases)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yearly reservation wins at high sustained utilization&lt;/strong&gt; (depends on saturation; see the break-even math above)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For mini models like gpt-4o-mini at 37,000 TPM per PTU, the throughput per dollar is much higher, so PTU break-even shifts. But the same utilization caveat applies. You still need to actually use the capacity.&lt;/p&gt;

&lt;p&gt;If you want to skip the spreadsheet, the rule of thumb that holds for GPT-5 family:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If your sustained utilization is below 70%, stay on PAYG with caching. If you can saturate above 85% on a yearly reservation, PTU wins; the magnitude depends on sustained utilization (see the break-even math above). Anywhere in between is a coin flip and depends on workload-specific factors.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What This Tells You About Azure AI Cost Architecture
&lt;/h2&gt;

&lt;p&gt;Two takeaways for architects designing AI cost models in 2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First: cost calculators are sales tools.&lt;/strong&gt; They optimize for "PTU sounds good" not "your actual workload." Every published break-even comparison assumes 100% utilization because that is the chart that sells reservations. Build your own model with your own traffic data, or you are agreeing to the optimistic case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second: caching, batching, and routing matter more than provisioning mode.&lt;/strong&gt; Most teams worry about PTU vs PAYG for weeks before they have implemented prefix caching. Implement caching first. Implement batch routing for async work. Then look at the residual cost shape and decide whether PTU adds value. In many cases, the answer becomes "no" once caching is in.&lt;/p&gt;

&lt;p&gt;The senior architect's role here is to push back on the procurement-first answer. Microsoft sells reservations because they are good for Microsoft's revenue forecasting. Sometimes they are good for your cost picture. Often they are not. The data you need to know which is in your Azure Monitor logs, not in the calculator.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/claude-on-azure-the-marketplace-billing-trap/" rel="noopener noreferrer"&gt;Claude on Azure: The Marketplace Billing Trap&lt;/a&gt; - the third-party model trap that breaks startup credits&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy/" rel="noopener noreferrer"&gt;AI Copilots vs Custom AI on Azure: Build vs Buy&lt;/a&gt; - when first-party Microsoft AI wins vs custom on Foundry&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/building-ai-solutions-azure-architecture/" rel="noopener noreferrer"&gt;Building AI Solutions on Azure: The Architecture That Actually Works&lt;/a&gt; - multi-component AI stack patterns&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;If you are sizing PTU vs PAYG for an enterprise workload and want a sanity check on the utilization curve, &lt;a href="https://az365.ai/about/" rel="noopener noreferrer"&gt;reach out&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/azure-openai-ptu-vs-payg-real-break-even/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>azure</category>
    </item>
    <item>
      <title>AI Governance Framework for Microsoft Enterprises: Operational Controls That Ship</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Sat, 22 Aug 2026 14:13:52 +0000</pubDate>
      <link>https://dev.to/az365ai/ai-governance-framework-for-microsoft-enterprises-operational-controls-that-ship-ll6</link>
      <guid>https://dev.to/az365ai/ai-governance-framework-for-microsoft-enterprises-operational-controls-that-ship-ll6</guid>
      <description>&lt;p&gt;Most AI governance frameworks are PDFs. Two hundred pages of principles, three pages of policy, zero working controls. The IT director gets handed the document, schedules a workshop to "operationalize the framework," and six months later the only thing that has shipped is a slide deck that mentions "responsible AI" eleven times.&lt;/p&gt;

&lt;p&gt;This is not what governance looks like. Governance, when it works, is a set of automatic gates wired into the systems that already run the business. It is the agent identity that gets revoked when an employee leaves. The DLP policy that blocks the high-risk connector before the user finishes the workflow. The Foundry trace that tells the audit team which tenant invoked which model with which prompt at 2am. It is not a slide. It is a control.&lt;/p&gt;

&lt;p&gt;Microsoft sells most of the tools you need: Purview for data governance, Entra for agent identity, Foundry for observability, Agent Governance Toolkit for runtime compliance grading. What Microsoft does not sell is the framework that ties them together. That gap is where most AI governance programs fail, and it is what this article fixes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A working AI governance program for Microsoft enterprises has six operational components: AI inventory + shadow AI discovery, AI Bill of Materials, risk classification with approval gates, data residency + access controls, audit + observability, and incident response. Microsoft Purview + Entra + Foundry + Agent Governance Toolkit cover most of the tooling. ISO 42001 (which Microsoft Azure AI Foundry, Security Copilot, and M365 Copilot have all certified against) is your scope. EU AI Act high-risk obligations land August 2026, so implement now and get audited next. This article gives you the framework, the Microsoft-tool mapping, and a 90-day implementation plan.&lt;/p&gt;
&lt;/blockquote&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%2Fmkm49b41aszde06iln7j.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%2Fmkm49b41aszde06iln7j.png" alt="The six operational components of an AI governance framework, each mapped to the Microsoft tool that delivers it, aligned to ISO 42001 and the EU AI Act with the OWASP agentic risk taxonomy." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The six operational components, each mapped to the Microsoft tool that delivers it. Governance is controls wired into running systems, not a slide deck.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Most AI Governance Programs Fail
&lt;/h2&gt;

&lt;p&gt;Three failure modes account for almost every stalled AI governance program I have audited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failure mode 1: Policy without controls.&lt;/strong&gt; The legal team writes a 40-page Responsible AI policy. It says employees must use AI ethically, must not feed customer data to non-approved models, must classify AI risk before deployment. None of this is enforced anywhere except in the document itself. Six months later, the audit reveals 200 unsanctioned ChatGPT subscriptions on company cards and a Power Automate flow that emails customer financial data to an unapproved Anthropic API endpoint. The policy did not lose. The policy was never connected to anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failure mode 2: Controls without ownership.&lt;/strong&gt; IT enables Microsoft Purview, configures DLP policies on the M365 Copilot rollout, and sets up Foundry observability. Nobody owns the alerts. The Purview audit log fills up with sensitive data classifications nobody reviews. The Foundry trace flags a prompt injection attempt at 3am and the alert goes to a team mailbox that nobody monitors. Tools exist. Operations do not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failure mode 3: The framework is too big to start.&lt;/strong&gt; The team reads NIST AI RMF, Big-4 advisory whitepapers, and the EU AI Act and tries to build a single program covering all of them. Two quarters in, scope creep has the program covering 47 controls, the implementation roadmap is 18 months, and nothing has shipped. Better to ship six controls in 90 days and add the rest in increments.&lt;/p&gt;

&lt;p&gt;The fix for all three is operational governance: small, owned, automatic. Six components, mapped to the Microsoft tools you already have or can buy, each with a named owner and a measurable signal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Six Components of a Working Framework
&lt;/h2&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;What it does&lt;/th&gt;
&lt;th&gt;Microsoft tool that delivers it&lt;/th&gt;
&lt;th&gt;Owner role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. AI Inventory + Shadow AI Discovery&lt;/td&gt;
&lt;td&gt;Knows every AI system in use: sanctioned and unsanctioned&lt;/td&gt;
&lt;td&gt;Purview Data Map + Entra Workload Identity + Defender for Cloud Apps&lt;/td&gt;
&lt;td&gt;IT Director / CoE Lead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. AI Bill of Materials (AIBoM)&lt;/td&gt;
&lt;td&gt;For each AI system, lists the model, training data, prompts, dependencies, and evaluation results&lt;/td&gt;
&lt;td&gt;Foundry model catalog + custom AIBoM templates&lt;/td&gt;
&lt;td&gt;AI Architect / Lead Engineer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Risk Classification + Approval Gates&lt;/td&gt;
&lt;td&gt;Routes AI initiatives to the right governance path: self-serve, IT-approved, board-approved&lt;/td&gt;
&lt;td&gt;Purview Risk + Power Platform managed environments + Entra access reviews&lt;/td&gt;
&lt;td&gt;Risk Officer / Compliance Lead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Data Residency + Access Controls&lt;/td&gt;
&lt;td&gt;Ensures AI sees only the data it should, in the region it should&lt;/td&gt;
&lt;td&gt;Purview DLP + Sensitivity Labels + Copilot data grounding controls + Entra Conditional Access&lt;/td&gt;
&lt;td&gt;Compliance / Privacy Lead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Audit + Observability&lt;/td&gt;
&lt;td&gt;Captures every AI inference, tool call, and decision for review&lt;/td&gt;
&lt;td&gt;Foundry observability + Purview Audit + Sentinel for AI&lt;/td&gt;
&lt;td&gt;Security Operations / SOC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Incident Response for AI&lt;/td&gt;
&lt;td&gt;Red team, jailbreak detection, kill switch when an AI system goes wrong&lt;/td&gt;
&lt;td&gt;Microsoft Agent Governance Toolkit + Foundry safety filters + Sentinel playbooks&lt;/td&gt;
&lt;td&gt;Security Incident Lead&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Six components. Six owners. Each has a Microsoft product that does most of the work. That is the framework.&lt;/p&gt;

&lt;p&gt;The rest of this article walks through each component with what it actually means, what to configure, and what the failure mode looks like when you skip it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Component 1: AI Inventory + Shadow AI Discovery
&lt;/h2&gt;

&lt;p&gt;You cannot govern what you cannot see. Most enterprises think they have 5 to 10 AI systems. The inventory reveals 30 to 200, depending on size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to build:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A central registry of every sanctioned AI system: model, owner, business purpose, data classification, deployment environment, last review date.&lt;/li&gt;
&lt;li&gt;Active discovery for shadow AI: Defender for Cloud Apps to detect SaaS AI tools (ChatGPT, Claude direct, Perplexity, etc.). Power Platform CoE Toolkit inventory for AI features inside flows and apps. Entra Workload Identity inventory for service principals making OpenAI / Anthropic API calls.&lt;/li&gt;
&lt;li&gt;A monthly "drift report": new shadow AI detected, sanctioned systems that drifted out of compliance, decommissioned systems that still hold credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Microsoft tools:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Purview Data Map&lt;/strong&gt; for data flow visibility (which datasets are reaching which AI systems).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Defender for Cloud Apps&lt;/strong&gt; for SaaS AI discovery (the unsanctioned consumer AI side).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Entra Workload Identity&lt;/strong&gt; + &lt;strong&gt;Conditional Access for workload identities&lt;/strong&gt; for service-principal AI access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power Platform CoE Toolkit&lt;/strong&gt; if Power Platform AI is in scope.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The failure mode if you skip this:&lt;/strong&gt; Six months in, the SOC discovers a Power Automate flow that has been emailing customer PII to a free-tier Anthropic API endpoint for the last 90 days. Nobody knew it existed. There was no policy to violate because there was no inventory to register against.&lt;/p&gt;

&lt;h2&gt;
  
  
  Component 2: AI Bill of Materials
&lt;/h2&gt;

&lt;p&gt;Borrowed from the SBOM (Software Bill of Materials) concept, the AIBoM is a per-AI-system disclosure of what is inside.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What an AIBoM contains:&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;Field&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;System name&lt;/td&gt;
&lt;td&gt;Customer Support Triage Copilot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner&lt;/td&gt;
&lt;td&gt;Customer Operations Director&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model(s) used&lt;/td&gt;
&lt;td&gt;Azure OpenAI gpt-5, Claude Sonnet 4.6 (fallback)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Training data sources&lt;/td&gt;
&lt;td&gt;None (inference only); RAG corpus = 12,400 KB articles from /support/kb&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;System prompt&lt;/td&gt;
&lt;td&gt;Linked to repo path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evaluation results&lt;/td&gt;
&lt;td&gt;Foundry agent evaluation: groundedness 0.91, harm under 0.5%, last run 2026-04-20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Risk class&lt;/td&gt;
&lt;td&gt;Medium (customer-facing, no PII exposure, no financial outputs)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compliance scope&lt;/td&gt;
&lt;td&gt;ISO 42001 §6.1.4 risk treatment; EU AI Act limited-risk transparency obligation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Last review&lt;/td&gt;
&lt;td&gt;2026-04-15&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Microsoft tools:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Azure AI Foundry model catalog&lt;/strong&gt; as the model-registry source of truth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foundry evaluation runs&lt;/strong&gt; as the recurring quality signal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub or Azure DevOps repos&lt;/strong&gt; for system prompt versioning and the AIBoM YAML/JSON itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Purview Sensitivity Labels&lt;/strong&gt; applied to the AIBoM so it is audit-discoverable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The failure mode if you skip this:&lt;/strong&gt; Auditor asks "which model does the support triage agent use, and when did you last evaluate it for harm?" Three engineers and the operations director cannot give a consistent answer. Six weeks of cleanup work follows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Component 3: Risk Classification + Approval Gates
&lt;/h2&gt;

&lt;p&gt;Not every AI initiative needs board approval. Most need almost no approval. The framework has to route initiatives to the right governance path or it becomes a bottleneck nobody respects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A working three-tier classification:&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;Risk class&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;th&gt;Approval path&lt;/th&gt;
&lt;th&gt;Controls required&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Internal productivity (M365 Copilot for individuals), draft generation, code completion, internal chat over public docs&lt;/td&gt;
&lt;td&gt;Self-serve with guardrails (DLP, conditional access, license assignment)&lt;/td&gt;
&lt;td&gt;Purview DLP, M365 Copilot grounding controls, no PII flows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Customer-facing agents on internal data, RAG over confidential corpus, agent-to-agent workflows inside the tenant&lt;/td&gt;
&lt;td&gt;IT review + AIBoM + Foundry evaluation gates&lt;/td&gt;
&lt;td&gt;Foundry agent evaluation thresholds, Sentinel monitoring, named owner&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Decisions affecting customers (credit, hiring, healthcare), agent-to-external-system actions, AI in regulated workflows&lt;/td&gt;
&lt;td&gt;Risk Officer + Legal + Compliance review; board notification for new high-risk&lt;/td&gt;
&lt;td&gt;Full ISO 42001 Annex A controls, EU AI Act high-risk obligations, red team + incident response plan&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The point of the tiering is to make low-risk initiatives frictionless and high-risk initiatives genuinely reviewed. A flat policy that requires a 40-page review for every Copilot use case loses to shadow IT. A flat policy that requires no review for high-risk credit decisions loses to the regulator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microsoft tools:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Power Platform managed environments&lt;/strong&gt; to enforce DLP and connector limits per environment tier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Entra Conditional Access&lt;/strong&gt; + &lt;strong&gt;access reviews&lt;/strong&gt; for the service principals running medium and high-risk agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Purview Risk Management&lt;/strong&gt; for the workflow that escalates an initiative from one tier to the next.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Component 4: Data Residency + Access Controls
&lt;/h2&gt;

&lt;p&gt;AI sees what you let it see. Two failure modes here: too restrictive (Copilot is enabled but it cannot find anything useful, adoption stalls) and too permissive (Copilot answers questions using HR salary data the asker should not see).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sensitivity labels&lt;/strong&gt; on every dataset, applied automatically via Purview classification rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;M365 Copilot grounding controls&lt;/strong&gt;: explicitly designate SharePoint sites, Teams, and M365 groups that Copilot can or cannot ground responses on. (Microsoft expanded this control significantly in 2026.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Purview DLP policies&lt;/strong&gt; on Power Platform connectors and Foundry agents, blocking high-sensitivity data from low-tier AI systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Region pinning&lt;/strong&gt; for high-residency workloads: Foundry deployments restricted to the regions your contracts permit. (Note: Claude on Foundry only deploys in East US 2 and Sweden Central. See &lt;a href="https://az365.ai/blog/claude-on-azure-the-marketplace-billing-trap/" rel="noopener noreferrer"&gt;Claude on Azure: The Marketplace Billing Trap&lt;/a&gt; for why this matters for governance scope.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Microsoft tools:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purview Information Protection&lt;/strong&gt; (sensitivity labels, classification, DLP).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft 365 Copilot data grounding controls.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Entra Conditional Access&lt;/strong&gt; with location and device conditions for AI workload identities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Component 5: Audit + Observability
&lt;/h2&gt;

&lt;p&gt;Without audit logs, an AI program cannot answer the basic governance question: "what did the AI do, and when, for whom, with what data?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to capture, in three layers:&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;Layer&lt;/th&gt;
&lt;th&gt;What it logs&lt;/th&gt;
&lt;th&gt;Microsoft tool&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Application&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;User prompt, response, tool calls invoked, latency&lt;/td&gt;
&lt;td&gt;Foundry observability, Application Insights&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What sources the model accessed, which sensitivity labels were touched&lt;/td&gt;
&lt;td&gt;Purview Audit, Purview eDiscovery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Identity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Which user or service principal invoked which model, with what conditional access state&lt;/td&gt;
&lt;td&gt;Entra sign-in logs, Defender for Identity&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The cross-cutting tool: Microsoft Sentinel for AI&lt;/strong&gt;, which correlates the three layers and runs detection rules. The OWASP Top 10 for Agentic Applications (published 2026) maps directly into Sentinel content packs as detection logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Concrete signals to alert on:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompt-injection patterns hitting a customer-facing agent&lt;/li&gt;
&lt;li&gt;Output containing data outside the user's sensitivity label scope&lt;/li&gt;
&lt;li&gt;Service principal making OpenAI API calls outside business hours from non-corporate IP&lt;/li&gt;
&lt;li&gt;Agent tool-call rate spikes (potential runaway loop)&lt;/li&gt;
&lt;li&gt;Foundry evaluation drift (groundedness drops below threshold week-over-week)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The failure mode if you skip this:&lt;/strong&gt; Auditor asks "show me everything Copilot did with customer financial data in Q3." You have nothing. Or you have raw logs in 14 different systems and no way to correlate them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Component 6: Incident Response for AI
&lt;/h2&gt;

&lt;p&gt;When an AI system goes wrong, the response cannot be "we will look into it on Monday." Operational governance includes a tested response plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to have ready:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Red team scope&lt;/strong&gt;: monthly or quarterly adversarial testing of medium and high-risk AI systems. Microsoft's PyRIT (open source) automates a lot of this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jailbreak detection&lt;/strong&gt;: Foundry safety filters at the model level + Sentinel correlation rules at the audit level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kill switch&lt;/strong&gt;: a documented procedure to disable an AI system in under 15 minutes. For Foundry agents, this is a deployment-state change. For Copilot, it is a license assignment removal. For Power Platform AI features, it is a DLP policy promotion to "block."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Communication template&lt;/strong&gt;: who gets told (legal, customer team, regulator if EU AI Act high-risk), in what order, with what severity classification.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Microsoft tools:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Agent Governance Toolkit&lt;/strong&gt; (open source, April 2026) for runtime security and automated compliance grading.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyRIT&lt;/strong&gt; for adversarial testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foundry safety filters&lt;/strong&gt; + &lt;strong&gt;Sentinel playbooks&lt;/strong&gt; for detect + respond.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ISO 42001: Your Scope, Not Your Plan
&lt;/h2&gt;

&lt;p&gt;ISO/IEC 42001:2023 is the world's first AI management system standard. Microsoft Azure AI Foundry Models, Microsoft Security Copilot, and M365 Copilot have all certified against it. The standard does not give you a framework. It gives you a measurable scope.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What ISO 42001 requires (loosely):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A documented AI management system (the six components above are most of it)&lt;/li&gt;
&lt;li&gt;Risk treatment based on AI-specific risks (the OWASP Top 10 for Agentic Applications maps closely)&lt;/li&gt;
&lt;li&gt;Continuous improvement loop (the audit + observability layer feeds this)&lt;/li&gt;
&lt;li&gt;Senior leadership accountability (the risk classification + approval-gates component, escalated)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why it matters even if you do not certify:&lt;/strong&gt; EU AI Act high-risk obligations take effect August 2026. Customers will increasingly require ISO 42001 certification (or equivalent evidence) from vendors as a procurement gate. If you are selling AI-enabled software into regulated industries, you will be asked. Implementing the framework now means you are 70% of the way to certification when you decide to pursue it.&lt;/p&gt;

&lt;p&gt;Microsoft's certification of its own AI products is a meaningful signal. It also means that when you build on top of Foundry, Copilot, or Security Copilot, you can inherit some of the controls. Your AIBoM should explicitly note where you are leveraging Microsoft's certified controls vs implementing your own.&lt;/p&gt;

&lt;h2&gt;
  
  
  EU AI Act: What Changes August 2026
&lt;/h2&gt;

&lt;p&gt;The EU AI Act is in force, and high-risk AI obligations take effect August 2026. If you operate in the EU, sell to EU customers, or process EU residents' data with AI, this matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What "high-risk" means in practice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI used in employment decisions (hiring, performance, dismissal)&lt;/li&gt;
&lt;li&gt;AI used in essential services (credit, insurance, education)&lt;/li&gt;
&lt;li&gt;AI used in critical infrastructure&lt;/li&gt;
&lt;li&gt;AI used in law enforcement, migration, or judicial proceedings&lt;/li&gt;
&lt;li&gt;Biometric identification systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What high-risk obligations require (selected):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Risk management system across the AI system lifecycle&lt;/li&gt;
&lt;li&gt;Data governance covering training data quality and bias&lt;/li&gt;
&lt;li&gt;Technical documentation (read: AIBoM)&lt;/li&gt;
&lt;li&gt;Logging that allows traceability of AI decisions&lt;/li&gt;
&lt;li&gt;Human oversight measures&lt;/li&gt;
&lt;li&gt;Accuracy, robustness, and cybersecurity controls&lt;/li&gt;
&lt;li&gt;Conformity assessment before placing on the market&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your AI inventory has any high-risk systems, the August 2026 deadline is your forcing function. The six-component framework above is the implementation. Microsoft Agent Governance Toolkit explicitly maps to EU AI Act, HIPAA, and SOC2 in its compliance grading.&lt;/p&gt;

&lt;h2&gt;
  
  
  A 90-Day Implementation Plan
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Days&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Deliverable&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1-15&lt;/td&gt;
&lt;td&gt;Inventory&lt;/td&gt;
&lt;td&gt;Working AI inventory (sanctioned + shadow), Defender for Cloud Apps deployed, Purview Data Map mapping confirmed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16-30&lt;/td&gt;
&lt;td&gt;AIBoM&lt;/td&gt;
&lt;td&gt;Template defined, top 10 highest-risk AI systems documented, repos established&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31-45&lt;/td&gt;
&lt;td&gt;Risk classification&lt;/td&gt;
&lt;td&gt;Three-tier policy approved, approval workflows wired into Power Platform managed environments + Entra access reviews&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;46-60&lt;/td&gt;
&lt;td&gt;Data + access&lt;/td&gt;
&lt;td&gt;Sensitivity labels rolled, Copilot grounding controls configured, DLP policies promoted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;61-75&lt;/td&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;Foundry observability + Purview Audit + Sentinel detection content packs deployed and named owners assigned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;76-90&lt;/td&gt;
&lt;td&gt;Incident response&lt;/td&gt;
&lt;td&gt;Red team run on top 3 systems, kill switch tested, communication template approved&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is aggressive. A realistic enterprise lands in 120-180 days for the first cycle, then accelerates as the team learns the toolchain. The point of the 90-day plan is to set the direction. Even partial completion in 90 days beats a complete framework on paper that nobody implements.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Tells You About AI Governance Architecture
&lt;/h2&gt;

&lt;p&gt;Three takeaways for the IT director planning a 2026 governance program.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First: stop looking for the perfect framework.&lt;/strong&gt; NIST AI RMF, ISO 42001, EU AI Act, and Big-4 advisory frameworks all converge on roughly the same operational components. Pick one (ISO 42001 if you might certify, NIST AI RMF if you operate under US federal scope), implement the six components against it, iterate. The differences between frameworks are smaller than the gap between "policy on paper" and "controls in production."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second: Microsoft's tooling is good enough to start.&lt;/strong&gt; Purview + Entra + Foundry + Agent Governance Toolkit covers 80% of the controls a typical enterprise needs. The remaining 20% (deep model evaluation, specialized red-teaming, multi-cloud AI inventory) often requires third-party tools, but you do not need them on day one. Implement what Microsoft ships, then decide where the gaps actually hurt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Third: governance accelerates AI adoption, it does not slow it down.&lt;/strong&gt; The teams I have seen succeed with M365 Copilot at scale all had a working governance program before the rollout. The teams that stalled were the ones treating governance as a Q4 afterthought. Counterintuitively, when employees know there is a clear approval path for medium-risk AI use, they bring more ideas forward, not fewer. Shadow AI thrives in ambiguity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/claude-on-azure-the-marketplace-billing-trap/" rel="noopener noreferrer"&gt;Claude on Azure: The Marketplace Billing Trap&lt;/a&gt; - the third-party model billing rules that affect AI procurement governance scope&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/azure-openai-ptu-vs-payg-real-break-even/" rel="noopener noreferrer"&gt;Azure OpenAI PTU vs PAYG: The Real Break-Even Table&lt;/a&gt; - cost governance and procurement category implications&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy/" rel="noopener noreferrer"&gt;AI Copilots vs Custom AI on Azure: Build vs Buy&lt;/a&gt; - how the build/buy decision affects which controls you inherit vs implement&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;The six-component framework above is the structure to use when designing a Microsoft AI governance program. The supporting articles in this cluster cover each component in more depth.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/ai-governance-framework-microsoft-stack/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>iso42001</category>
      <category>compliance</category>
    </item>
    <item>
      <title>Shadow AI Governance for Microsoft Enterprises: Discovery to Control</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Fri, 21 Aug 2026 14:26:36 +0000</pubDate>
      <link>https://dev.to/az365ai/shadow-ai-governance-for-microsoft-enterprises-discovery-to-control-15ob</link>
      <guid>https://dev.to/az365ai/shadow-ai-governance-for-microsoft-enterprises-discovery-to-control-15ob</guid>
      <description>&lt;p&gt;Almost every enterprise has shadow AI. The numbers are not subtle: 98% of organizations have employees using unsanctioned AI tools. More than 80% of workers admit to using unapproved AI at work. About 45% do not tell their employer. The kicker: 31% of IT teams cannot detect unauthorized AI in real time, and only 30% of organizations have full visibility into employee AI usage.&lt;/p&gt;

&lt;p&gt;The financial exposure is real. The average cost of a shadow AI data breach has reached $4.2M. 52% of firms say shadow AI complicates regulatory compliance, and 44% have already faced compliance violations from unauthorized AI use.&lt;/p&gt;

&lt;p&gt;The C-suite is not as alarmed as the SOC. 69% of executives report being comfortable with shadow AI use, prioritizing speed over privacy. That gap, between executive tolerance and operational risk, is exactly where shadow AI compounds. Until the breach.&lt;/p&gt;

&lt;p&gt;This article is the operational playbook to fix it on a Microsoft stack. Discovery in 30 days. Three-tier graduation. Microsoft tools you already own (Defender for Cloud Apps, Purview, Entra, Power Platform CoE Toolkit). Sentinel detection rules to catch new shadow AI as it emerges.&lt;/p&gt;

&lt;p&gt;It is the operational deep-dive on Component 1 of the framework in &lt;a href="https://az365.ai/blog/ai-governance-framework-microsoft-stack/" rel="noopener noreferrer"&gt;AI Governance Framework for Microsoft Enterprises&lt;/a&gt;. Read that one first if you want the full six-component picture.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shadow AI lives in four distinct layers, each with a different Microsoft tool that finds it: SaaS AI (Defender for Cloud Apps, 31,000-app catalog), browser extensions (Edge management + DLP), Power Platform AI features (CoE Toolkit), and service principal API calls to OpenAI / Anthropic / etc. (Entra Workload ID + Conditional Access). A 30-day sprint produces a baseline inventory. The graduation framework routes findings into three tiers: block (high risk), sanction with controls (medium risk), or self-serve with guardrails (low risk). Block-everything fails because it pushes shadow AI to personal devices. The win is making the sanctioned path easier than the shadow path.&lt;/p&gt;
&lt;/blockquote&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%2Fhvxhuuz7v5sn3h9bhpj8.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%2Fhvxhuuz7v5sn3h9bhpj8.png" alt="The four layers where shadow AI hides (SaaS AI, browser extensions, Power Platform AI features, and service-principal API calls), each mapped to the Microsoft tool that finds it, feeding a 30-day discovery sprint." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The four layers shadow AI hides in, each with the Microsoft tool that surfaces it. The win is making the sanctioned path easier than the shadow path.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Shadow AI Is Different From Shadow IT
&lt;/h2&gt;

&lt;p&gt;Shadow IT is a known governance problem. Marketing buys a SaaS tool, processes customer data through it, the security team finds out at the next audit. The pattern is familiar and the controls are mature: SaaS discovery, IT approval workflows, vendor risk assessment.&lt;/p&gt;

&lt;p&gt;Shadow AI looks similar on the surface and behaves differently in three important ways.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It moves through the browser, not the credit card.&lt;/strong&gt; Most shadow AI is consumed via free-tier ChatGPT, Claude, Perplexity, or browser extensions. There is no SaaS subscription to detect via expense reports. The user opens a tab, pastes data, gets an answer, closes the tab. No procurement signal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It happens fast.&lt;/strong&gt; A marketing analyst can paste a customer list into ChatGPT and get a segmentation analysis in 90 seconds. The "should we use AI for this" conversation never happens. By the time governance asks, the analysis is already in a deck.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is celebrated by leadership.&lt;/strong&gt; Shadow IT was usually a nuisance. Shadow AI is often praised as "innovation" by executives who do not understand that the marketing analyst just trained an external model on customer data. 69% of C-suite is comfortable with it, the surveys say. The CISO is less comfortable.&lt;/p&gt;

&lt;p&gt;The Microsoft tooling story has caught up to this reality, but the operational adoption has not. Most organizations have the licenses for Defender for Cloud Apps, Purview, Entra, and the Power Platform CoE Toolkit. Far fewer have the policies, alerts, and named owners that make those tools work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Four Layers Shadow AI Lives In
&lt;/h2&gt;

&lt;p&gt;Every shadow AI source falls into one of four layers. Each has a different discovery method and a different Microsoft tool that handles it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;th&gt;Microsoft tool that finds it&lt;/th&gt;
&lt;th&gt;Detection signal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. SaaS AI&lt;/td&gt;
&lt;td&gt;ChatGPT, Claude direct, Perplexity, Mistral chat, Hugging Face Spaces, Replit AI&lt;/td&gt;
&lt;td&gt;Defender for Cloud Apps (31,000-app catalog, 90+ risk factors)&lt;/td&gt;
&lt;td&gt;Network traffic from corporate endpoints to known AI domains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Browser AI Extensions&lt;/td&gt;
&lt;td&gt;ChatGPT extensions, Copilot extensions, Notion AI, Grammarly AI, browser-based agents&lt;/td&gt;
&lt;td&gt;Edge for Business management + DLP browser endpoint policies&lt;/td&gt;
&lt;td&gt;Installed extension inventory, DLP detection of paste-to-AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Power Platform / Copilot Studio AI&lt;/td&gt;
&lt;td&gt;Maker-built Copilot Studio agents, AI Builder usage in Power Apps, GPT actions in Power Automate&lt;/td&gt;
&lt;td&gt;Power Platform CoE Toolkit (admin center inventory + governance dashboards)&lt;/td&gt;
&lt;td&gt;AI Builder credit consumption, Copilot Studio agent inventory, AI-tagged connector usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Service Principal API Calls&lt;/td&gt;
&lt;td&gt;Developer service principals calling OpenAI / Anthropic / Cohere APIs from internal apps&lt;/td&gt;
&lt;td&gt;Entra Workload Identity + Conditional Access for workload identities + Defender for Cloud (cloud-native)&lt;/td&gt;
&lt;td&gt;Outbound API calls from Azure/M365 service principals to AI provider endpoints&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Most enterprises focus on layer 1 (SaaS AI) and ignore the other three. Layer 4 is often the highest-risk because it is developers building AI features into internal tools without oversight. Layer 3 is the fastest-growing because Microsoft is actively pushing Copilot Studio and AI Builder to citizen developers.&lt;/p&gt;

&lt;p&gt;A complete shadow AI inventory covers all four layers. A SaaS-only inventory misses 60-70% of the actual exposure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 30-Day Discovery Sprint
&lt;/h2&gt;

&lt;p&gt;A working baseline inventory comes from a focused 30-day discovery effort. This is not "boil the ocean." It is targeted instrumentation per layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Week 1: SaaS AI discovery (layer 1)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; Stand up Defender for Cloud Apps cloud discovery if not already. Configure log collectors against your firewall and proxy logs. Filter the discovered apps to the AI category.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt; A ranked list of every AI service accessed from corporate networks, with user count, traffic volume, and risk score from Microsoft's 90-factor catalog.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Owner:&lt;/strong&gt; SOC analyst + Information Security manager.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common discovery:&lt;/strong&gt; 50-200 distinct AI services accessed per month, with 5-10 services accounting for 80% of usage. The top of the list is almost always ChatGPT, then a long tail of niche tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Week 2: Browser AI discovery (layer 2)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; Inventory installed extensions across managed Edge browsers via Edge for Business. Configure DLP browser endpoint policies to flag paste events into AI-tagged domains. Cross-reference with Defender for Cloud Apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt; Installed-extension inventory by user, plus a stream of paste-into-AI events with source app and content sensitivity classification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Owner:&lt;/strong&gt; Endpoint security team + Information Protection lead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common discovery:&lt;/strong&gt; ChatGPT and Copilot extensions installed by 30-50% of knowledge workers. Grammarly AI nearly universal. Niche extensions (Jasper, Otter.ai meeting capture) clustered in marketing and sales.&lt;/p&gt;

&lt;h3&gt;
  
  
  Week 3: Power Platform AI discovery (layer 3)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; Run the Power Platform CoE Toolkit if not already deployed. Filter the maker inventory for AI Builder usage, Copilot Studio agents, and AI-tagged connectors. Pull the AI consumption credit report.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt; Inventory of every Copilot Studio agent, every AI Builder model, every flow using GPT actions, with maker, environment, and usage metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Owner:&lt;/strong&gt; Power Platform CoE lead + IT Director.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common discovery:&lt;/strong&gt; 10-50 maker-built Copilot Studio agents per enterprise (most undocumented), AI Builder model sprawl across the default environment, GPT actions embedded in flows that nobody knows about.&lt;/p&gt;

&lt;h3&gt;
  
  
  Week 4: Service principal AI discovery (layer 4)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; Pull Entra sign-in logs for workload identities. Filter for outbound calls to OpenAI, Anthropic, Cohere, Azure OpenAI (cross-tenant), and other AI provider endpoints. Cross-reference with Conditional Access policies. Tag service principals that lack a documented owner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt; A ranked list of service principals making AI API calls, by call volume and provider, with named or orphaned ownership.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Owner:&lt;/strong&gt; Identity governance lead + Application security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common discovery:&lt;/strong&gt; 5-20 service principals making OpenAI / Anthropic API calls. About a third are orphaned (the developer left, the credentials persist). About a fifth use personal API keys hardcoded in app config (the worst pattern).&lt;/p&gt;

&lt;p&gt;After 30 days you have a baseline inventory across all four layers. The output is a single dashboard or registry where every shadow AI source is logged with: layer, owner (or "orphan"), risk classification, and recommended action.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Discovery to Control: The Three-Tier Graduation Framework
&lt;/h2&gt;

&lt;p&gt;Discovery alone does not change anything. The framework that turns the inventory into action is a three-tier graduation policy. Every shadow AI source ends up in one of three buckets.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;What goes here&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Microsoft control&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sanction with self-serve guardrails&lt;/td&gt;
&lt;td&gt;Low-risk uses: drafting, summarization over public information, code completion, internal search over non-confidential corpus&lt;/td&gt;
&lt;td&gt;Approve. Onboard to M365 Copilot or other sanctioned alternative. Document in inventory.&lt;/td&gt;
&lt;td&gt;M365 Copilot rollout + Purview DLP for paste-blocking on confidential data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sanction with controls&lt;/td&gt;
&lt;td&gt;Medium-risk uses: customer-facing assistants, RAG over confidential data, agent-to-system actions, AI-augmented analytics with PII&lt;/td&gt;
&lt;td&gt;Move to a sanctioned platform (Foundry, Copilot Studio with governance). AIBoM. Owner. Evaluation gates. Sentinel monitoring.&lt;/td&gt;
&lt;td&gt;Foundry observability + AIBoM templates + Power Platform managed environments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Block + provide alternative&lt;/td&gt;
&lt;td&gt;High-risk uses: regulated decisions (credit, hiring, healthcare), processing of restricted data, agent-to-external-systems with external write access&lt;/td&gt;
&lt;td&gt;Block at the network and DLP layer. Route the user to the sanctioned alternative.&lt;/td&gt;
&lt;td&gt;Defender for Cloud Apps app-blocking + Purview DLP enforce + Entra Conditional Access deny&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The mistake most programs make is starting with tier 3 ("block ChatGPT") as the default. Block-everything fails for one specific reason: it pushes shadow AI from corporate endpoints to personal phones, where you cannot see it at all. Better to make the sanctioned path easier than the shadow path.&lt;/p&gt;

&lt;p&gt;That means M365 Copilot rolled out with low friction (no procurement gate for individual use), Foundry with templates for common business scenarios, Copilot Studio with starter kits for citizen makers. Combine the carrot (sanctioned tools that actually work) with the stick (DLP blocks on confidential data going to unsanctioned destinations).&lt;/p&gt;

&lt;h2&gt;
  
  
  Sentinel Detection Rules: The Ongoing Layer
&lt;/h2&gt;

&lt;p&gt;The 30-day sprint produces a baseline. Shadow AI keeps emerging. Detection content packs in Microsoft Sentinel are the ongoing instrumentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Five detection rules every Microsoft tenant should have:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Spike in outbound traffic to unsanctioned AI domains.&lt;/strong&gt; Catches the "marketing analyst pastes the customer list into a brand-new tool" pattern. Threshold: 50%+ increase in week-over-week volume.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paste of high-sensitivity content into AI-tagged browser tabs.&lt;/strong&gt; From the DLP browser endpoint policy. Severity scaled to sensitivity label.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New Copilot Studio agent created in default environment.&lt;/strong&gt; Power Platform admin signal. Auto-routes to CoE for review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service principal making first call to AI provider endpoint.&lt;/strong&gt; From Entra workload identity sign-in logs. Triggers ownership confirmation flow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Builder consumption spike.&lt;/strong&gt; From Power Platform admin metering. Catches a maker building an AI feature that scales unexpectedly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These five rules cover most net-new shadow AI emergence in the four layers. Each rule should route to a named owner with a 24-48h SLA, not a team mailbox.&lt;/p&gt;

&lt;h2&gt;
  
  
  What NOT to Do
&lt;/h2&gt;

&lt;p&gt;Three failure modes that kill shadow AI programs and how to avoid them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failure 1: Block-everything by default.&lt;/strong&gt; The CISO announces "no AI tools without IT approval" and blocks ChatGPT, Claude, and Perplexity at the firewall on Friday. By Monday, half the marketing team is using their personal phones to paste the same customer data into the same tools. You see less, the risk is the same, the relationship with the business is worse. Ship sanctioned alternatives FIRST.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failure 2: Treat shadow AI as a one-time inventory project.&lt;/strong&gt; A three-month consultant engagement produces a beautiful inventory PDF. Six months later it is stale because nobody owns the ongoing detection. Make discovery a recurring process with named owners and automated alerts, not a project with a deliverable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failure 3: Expose the inventory to the wrong audience too soon.&lt;/strong&gt; The full shadow AI inventory contains business-sensitive information about which teams are using which tools. If you publish it broadly before you have a remediation plan, the result is internal political fallout instead of governance progress. Share with leadership, security, and the CoE first. Build the graduation plan. Then communicate to affected teams with the path forward, not just the violations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting Back to the Six-Component Framework
&lt;/h2&gt;

&lt;p&gt;This article is operational depth on Component 1 of &lt;a href="https://az365.ai/blog/ai-governance-framework-microsoft-stack/" rel="noopener noreferrer"&gt;the AI Governance Framework for Microsoft Enterprises&lt;/a&gt;. Component 1 (AI Inventory + Shadow AI Discovery) is the foundation: you cannot govern what you cannot see.&lt;/p&gt;

&lt;p&gt;The other five components depend on it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Component 2 (AIBoM)&lt;/strong&gt; documents what is in your inventory; it depends on the inventory existing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component 3 (Risk Classification + Approval Gates)&lt;/strong&gt; routes new initiatives, but the policy only works if discovered shadow AI is also routed through the same gates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component 4 (Data Residency + Access Controls)&lt;/strong&gt; enforces what should and should not flow to AI; it needs the inventory to know what is in scope.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component 5 (Audit + Observability)&lt;/strong&gt; captures every AI inference; the SaaS-AI detection layer is most of that observability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component 6 (Incident Response for AI)&lt;/strong&gt; activates on detection signals; the same Sentinel rules described above are where most AI incidents fire first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, fixing shadow AI is the cheapest 30 days you can spend on AI governance because it accelerates everything downstream.&lt;/p&gt;

&lt;h2&gt;
  
  
  A 90-Day Goal
&lt;/h2&gt;

&lt;p&gt;If you only adopt one specific outcome from this article, make it this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Within 90 days, every AI usage in your tenant is either in the sanctioned-with-self-serve tier (M365 Copilot, approved Foundry agents, Copilot Studio agents in managed environments) or it is detected within 24 hours.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That goal is binary, measurable, and rare. Most enterprises today operate at "detected within a quarter, if at all." Hitting 24-hour detection moves the program from compliance theatre to operational governance.&lt;/p&gt;

&lt;p&gt;The 30-day discovery sprint is the first third. The graduation framework and Sentinel detection rules are the next two-thirds. Microsoft Purview, Defender for Cloud Apps, Entra, and the Power Platform CoE Toolkit do most of the heavy lifting if you turn them on, configure them, and assign named owners.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-governance-framework-microsoft-stack/" rel="noopener noreferrer"&gt;AI Governance Framework for Microsoft Enterprises: Operational Controls That Ship&lt;/a&gt; - the parent six-component framework this article extends&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy/" rel="noopener noreferrer"&gt;AI Copilots vs Custom AI on Azure: Build vs Buy&lt;/a&gt; - the build/buy decision affects which controls you inherit vs implement&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/claude-on-azure-the-marketplace-billing-trap/" rel="noopener noreferrer"&gt;Claude on Azure: The Marketplace Billing Trap&lt;/a&gt; - third-party AI procurement governance scope&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;If you are running a shadow AI discovery sprint on a Microsoft tenant and want a sanity check on the four-layer coverage, &lt;a href="https://az365.ai/about/" rel="noopener noreferrer"&gt;reach out&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/shadow-ai-governance-microsoft-enterprises/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>shadowai</category>
      <category>purview</category>
    </item>
  </channel>
</rss>
