<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>rss.livelink.threads-in-node</title>
    <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/ct-p/StartupsatMicrosoft</link>
    <description>rss.livelink.threads-in-node</description>
    <pubDate>Wed, 05 Aug 2026 17:08:19 GMT</pubDate>
    <dc:creator>StartupsatMicrosoft</dc:creator>
    <dc:date>2026-08-05T17:08:19Z</dc:date>
    <item>
      <title>From reactive firefighting to proactive operations: custom skills for Azure SRE Agent</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/from-reactive-firefighting-to-proactive-operations-custom-skills/ba-p/4542961</link>
      <description>&lt;P&gt;&lt;STRONG&gt;TL;DR:&lt;/STRONG&gt; Azure SRE Agent is great at reactive incident response, but doesn't cover proactive operations out of the box. I built an &lt;A href="https://github.com/ricmmartins/azure-sre-agent-skills/" target="_blank"&gt;open-source pack of 8 custom skills&lt;/A&gt; that add governance audits, FinOps reporting, capacity planning, postmortems, and more. Combined with Scheduled Investigations, they move your operations from reactive to proactive.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;How a customer conversation revealed the gap between what Azure SRE Agent does out of the box, and what production teams actually need.&lt;/EM&gt;&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="the-conversation-that-started-it-all"&gt;The conversation that started it all&lt;/H2&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Prerequisites:&lt;/STRONG&gt; You need an active &lt;A href="https://sre.azure.com/" target="_blank"&gt;Azure SRE Agent&lt;/A&gt; deployment. If you don't have one yet, the setup takes about 15 minutes.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;A few weeks ago, I sat down with an engineering team that had never heard of Azure SRE Agent. They were running a growing SaaS platform on Azure, handling incidents manually, and burning engineering hours on repetitive diagnostics. The classic "we don't have an SRE team, but we need SRE outcomes" situation.&lt;/P&gt;
&lt;P&gt;I walked them through what Azure SRE Agent brings to the table: AI-powered incident investigation, automated root cause analysis, 40+ MCP connectors, sandboxed code execution, memory across investigations. Their reaction was immediate: &lt;EM&gt;"This solves our reactive problem. But what about the proactive stuff?"&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;That question stuck with me. Because they were right.&lt;/P&gt;
&lt;H2 id="azure-sre-agent-what-it-is-and-what-it-isnt"&gt;Azure SRE Agent: what it is (and what it isn't)&lt;/H2&gt;
&lt;P&gt;For those unfamiliar: &lt;A href="https://learn.microsoft.com/en-us/azure/sre-agent/" target="_blank"&gt;Azure SRE Agent&lt;/A&gt; is Microsoft's AI-powered site reliability agent, generally available since March 2026. Internally at Microsoft, over 1,300 SRE Agents are running in production, handling 35,000+ incidents per month and saving 20,000+ engineering hours monthly.&lt;/P&gt;
&lt;P&gt;Here's what it excels at:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Reactive incident response: an alert fires, the agent investigates, correlates telemetry, identifies root cause, and either resolves or escalates with full context.&lt;/LI&gt;
&lt;LI&gt;Diagnostics automation: KQL queries, resource health checks, dependency mapping, all executed in a sandboxed environment.&lt;/LI&gt;
&lt;LI&gt;Memory and learning: each investigation builds organizational knowledge. The agent remembers past incidents and applies that context to new ones.&lt;/LI&gt;
&lt;LI&gt;Integrations: PagerDuty, ServiceNow, Teams, GitHub (including Bring Your Own GitHub App since June 2026), Azure Monitor, and custom APIs via plugins.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;What it &lt;EM&gt;doesn't&lt;/EM&gt; do out of the box:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Run proactive governance audits&lt;/LI&gt;
&lt;LI&gt;Track cost optimization opportunities on a schedule&lt;/LI&gt;
&lt;LI&gt;Assess architecture quality against Well-Architected Framework&lt;/LI&gt;
&lt;LI&gt;Generate capacity forecasts before you hit quota limits&lt;/LI&gt;
&lt;LI&gt;Produce blameless postmortems with structured 5-Whys analysis&lt;/LI&gt;
&lt;LI&gt;Monitor your Defender Secure Score and suggest improvements&lt;/LI&gt;
&lt;LI&gt;Evaluate whether your AI/OpenAI workloads are production-ready&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;That gap between reactive excellence and proactive operations is exactly what I built the Skills Pack to fill.&lt;/P&gt;
&lt;img /&gt;
&lt;H2 id="custom-skills-the-extensibility-model"&gt;Custom skills: the extensibility model&lt;/H2&gt;
&lt;P&gt;Since June 2026, Azure SRE Agent supports Custom Skills and Plugins. A skill is a structured prompt with instructions, context, and output format that the agent executes using its full toolkit (Azure Resource Graph, KQL, ARM APIs, Cost Management APIs, etc.).&lt;/P&gt;
&lt;P&gt;Think of it this way:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The agent provides the &lt;STRONG&gt;reasoning engine&lt;/STRONG&gt; and &lt;STRONG&gt;tool access&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;A skill provides the &lt;STRONG&gt;domain knowledge&lt;/STRONG&gt; and &lt;STRONG&gt;methodology&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;You write a SKILL.md file describing what to check, how to score findings, and what format to report in. The agent handles execution, data gathering, correlation, and output generation. No SDK, no compiled code, no deployment pipeline. Just structured instructions in Markdown.&lt;/P&gt;
&lt;H2 id="the-proactive-operations-skills-pack"&gt;The proactive operations skills pack&lt;/H2&gt;
&lt;P&gt;I created &lt;A href="https://github.com/ricmmartins/azure-sre-agent-skills/" target="_blank"&gt;8 custom skills&lt;/A&gt; that transform Azure SRE Agent from a reactive incident responder into a proactive operations partner:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://rmmartins.com/img/sre-skills-overview.svg" alt="8 skills across 4 operational domains" /&gt;&lt;/P&gt;
&lt;H3 id="the-skills-at-a-glance"&gt;The skills at a glance&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;#&lt;/th&gt;&lt;th&gt;Skill&lt;/th&gt;&lt;th&gt;What it does&lt;/th&gt;&lt;th&gt;When to run&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;01&lt;/td&gt;&lt;td&gt;Well-Architected Review&lt;/td&gt;&lt;td&gt;5-pillar WAF assessment with maturity scoring&lt;/td&gt;&lt;td&gt;Before production launches, quarterly&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;02&lt;/td&gt;&lt;td&gt;Compliance and Governance&lt;/td&gt;&lt;td&gt;Policy, RBAC, tagging, locks, naming audit&lt;/td&gt;&lt;td&gt;Weekly&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;03&lt;/td&gt;&lt;td&gt;Capacity Planning&lt;/td&gt;&lt;td&gt;Quota utilization, growth projection, scaling prep&lt;/td&gt;&lt;td&gt;Bi-weekly&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;04&lt;/td&gt;&lt;td&gt;FinOps Intelligence&lt;/td&gt;&lt;td&gt;Cost optimization + team chargeback in one report&lt;/td&gt;&lt;td&gt;Monthly&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;05&lt;/td&gt;&lt;td&gt;Incident Postmortem&lt;/td&gt;&lt;td&gt;Blameless postmortem generator with 5-Whys&lt;/td&gt;&lt;td&gt;After every SEV1/SEV2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;06&lt;/td&gt;&lt;td&gt;Defender Secure Score&lt;/td&gt;&lt;td&gt;Score monitoring + prioritized improvement plan&lt;/td&gt;&lt;td&gt;Weekly&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;07&lt;/td&gt;&lt;td&gt;Digital Native Governance&lt;/td&gt;&lt;td&gt;Startup governance maturity (15 checks, scored 0-100)&lt;/td&gt;&lt;td&gt;Monthly&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;08&lt;/td&gt;&lt;td&gt;AI Foundry and OpenAI Posture&lt;/td&gt;&lt;td&gt;Security, reliability and cost posture for AI workloads&lt;/td&gt;&lt;td&gt;Bi-weekly&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Skill 08 pairs well with the architecture patterns in my companion post: &lt;A href="https://rmmartins.com/azure-ai-foundry-zero-to-production/" target="_blank"&gt;Azure AI Foundry: from zero to production&lt;/A&gt;. If you're running Foundry workloads, that guide covers APIM as AI Gateway, spillover architecture, and the production checklist that this skill audits against.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3 id="how-they-differ-from-azure-advisor"&gt;How they differ from Azure Advisor&lt;/H3&gt;
&lt;P&gt;This is the most common question I get:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&amp;nbsp;&lt;/th&gt;&lt;th&gt;Azure Advisor&lt;/th&gt;&lt;th&gt;SRE Agent Skills&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Output&lt;/td&gt;&lt;td&gt;Flat list of per-resource recommendations&lt;/td&gt;&lt;td&gt;Scored reports with maturity levels and priority&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Correlation&lt;/td&gt;&lt;td&gt;None, each recommendation is isolated&lt;/td&gt;&lt;td&gt;Connects findings across domains ("fix 2.2 first, it blocks 2.5")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Remediation&lt;/td&gt;&lt;td&gt;Link to documentation&lt;/td&gt;&lt;td&gt;Ready-to-paste &lt;CODE&gt;az&lt;/CODE&gt; CLI commands&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Scheduling&lt;/td&gt;&lt;td&gt;Passive (you check when you remember)&lt;/td&gt;&lt;td&gt;Runs on your schedule, surfaces issues proactively&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Coverage&lt;/td&gt;&lt;td&gt;Cost, Security, Reliability, OpEx, Performance&lt;/td&gt;&lt;td&gt;+ FinOps chargeback, Postmortem, AI posture, governance maturity&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Context&lt;/td&gt;&lt;td&gt;Generic (same advice for everyone)&lt;/td&gt;&lt;td&gt;Asks about your scenario and adapts&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Advisor is a linter. These skills are closer to a staff SRE who reads everything, correlates findings, and delivers a prioritized action plan.&lt;/P&gt;
&lt;H3 id="example-digital-native-governance-in-action"&gt;Example: Digital Native Governance in action&lt;/H3&gt;
&lt;P&gt;Here's what happens when you tell your SRE Agent: &lt;EM&gt;"Run a governance maturity check on my production subscription"&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The agent:&lt;/P&gt;
&lt;OL type="1"&gt;
&lt;LI&gt;Queries Azure Resource Graph for resource inventory&lt;/LI&gt;
&lt;LI&gt;Checks Azure Policy assignments and compliance state&lt;/LI&gt;
&lt;LI&gt;Audits RBAC role assignments against least-privilege principles&lt;/LI&gt;
&lt;LI&gt;Validates tagging strategy completeness&lt;/LI&gt;
&lt;LI&gt;Checks resource locks on critical resources&lt;/LI&gt;
&lt;LI&gt;Evaluates naming conventions&lt;/LI&gt;
&lt;LI&gt;Assesses network segmentation&lt;/LI&gt;
&lt;LI&gt;Reviews backup and DR configuration&lt;/LI&gt;
&lt;LI&gt;Checks monitoring and alerting coverage&lt;/LI&gt;
&lt;LI&gt;Evaluates secret management practices&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;...and 5 more checks, each scored. You get a single number (e.g., 67/100) plus a prioritized list of what to fix first, with exact commands.&lt;/P&gt;
&lt;P&gt;For a startup heading toward an enterprise customer's security review, this is the difference between "we think we're ready" and "here's our scored assessment with evidence."&lt;/P&gt;
&lt;H2 id="combining-skills-with-scheduled-investigations"&gt;Combining skills with scheduled investigations&lt;/H2&gt;
&lt;P&gt;The real power shows up when you combine custom skills with Scheduled Investigations (GA July 2026). Instead of running skills manually, you configure recurring schedules:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://rmmartins.com/img/sre-weekly-rhythm.svg" alt="Weekly operations rhythm with scheduled skills" /&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Every Monday 8am&lt;/STRONG&gt;: Run Compliance &amp;amp; Governance → Slack results to #platform-ops&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;1st of each month&lt;/STRONG&gt;: Run FinOps Intelligence → Email cost report to engineering leads&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Every other Friday&lt;/STRONG&gt;: Run Capacity Planning → Flag anything above 70% quota utilization&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;After every deployment&lt;/STRONG&gt;: Run AI Foundry Posture → Validate no security regressions&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This is where SRE Agent moves from Level 3 (reactive intelligence) to Level 4 (proactive operations) on the SRE maturity model. You stop waiting for things to break and start finding issues before they become incidents.&lt;/P&gt;
&lt;H2 id="getting-started"&gt;Getting started&lt;/H2&gt;
&lt;OL type="1"&gt;
&lt;LI&gt;Go to &lt;A href="https://sre.azure.com/" target="_blank"&gt;sre.azure.com&lt;/A&gt; → &lt;STRONG&gt;Skill Builder&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Click &lt;STRONG&gt;+ Create skill&lt;/STRONG&gt;, paste any &lt;A href="https://github.com/ricmmartins/azure-sre-agent-skills/tree/main/skills" target="_blank"&gt;SKILL.md from the repo&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Start with &lt;A href="https://github.com/ricmmartins/azure-sre-agent-skills/blob/main/skills/07-digital-native-governance/SKILL.md" target="_blank"&gt;Digital Native Governance&lt;/A&gt; — fastest to see results&lt;/LI&gt;
&lt;LI&gt;Set a schedule or run on-demand&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The repo includes sample outputs for every skill so you can preview what you'll get before installing.&lt;/P&gt;
&lt;H2 id="whats-next"&gt;What's next&lt;/H2&gt;
&lt;P&gt;The skills are open source (MIT) and designed to be customized. Each SKILL.md is self-contained: adjust thresholds, add checks specific to your domain, change scoring weights. The &lt;A href="https://github.com/ricmmartins/azure-sre-agent-skills/blob/main/CONTRIBUTING.md" target="_blank"&gt;CONTRIBUTING.md&lt;/A&gt; has guidelines if you want to add new skills.&lt;/P&gt;
&lt;P&gt;Ideas the community has already suggested:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;SLA/SLO monitoring dashboard&lt;/LI&gt;
&lt;LI&gt;Network topology validator&lt;/LI&gt;
&lt;LI&gt;Migration readiness assessment&lt;/LI&gt;
&lt;LI&gt;Disaster recovery drill runner&lt;/LI&gt;
&lt;LI&gt;Container Apps / AKS health check&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If your team is running Azure SRE Agent and feeling the same gap between reactive and proactive, &lt;A href="https://github.com/ricmmartins/azure-sre-agent-skills/" target="_blank"&gt;the repo is here&lt;/A&gt;. The community response in the first week (dozens of stars, multiple forks and contributions) tells me this resonates.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="next-steps"&gt;Next steps&lt;/H2&gt;
&lt;OL type="1"&gt;
&lt;LI&gt;&lt;STRONG&gt;Install the skills pack&lt;/STRONG&gt; — clone the &lt;A href="https://github.com/ricmmartins/azure-sre-agent-skills/" target="_blank"&gt;repo&lt;/A&gt;, copy the skill folders into your SRE Agent configuration, and enable Skill 01 (Governance Audit) as a Scheduled Investigation running weekly.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Run one investigation manually&lt;/STRONG&gt; — trigger a governance audit against a non-production subscription. Review the output, adjust thresholds in &lt;CODE&gt;SKILL.md&lt;/CODE&gt; to match your environment's tolerance.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Add to your sprint rhythm&lt;/STRONG&gt; — schedule FinOps (Skill 02) bi-weekly and Capacity Planning (Skill 05) monthly. After two cycles, you'll have baseline data to prove proactive value to leadership.&lt;/LI&gt;
&lt;/OL&gt;
&lt;HR /&gt;
&lt;P&gt;&lt;STRONG&gt;Resources:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://github.com/ricmmartins/azure-sre-agent-skills/" target="_blank"&gt;Azure SRE Agent Skills Pack (GitHub)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/sre-agent/" target="_blank"&gt;Azure SRE Agent Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://sre.azure.com/" target="_blank"&gt;Azure SRE Agent Portal&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/your-startup-doesnt-have-an-sre-team-now-what/4540142" target="_blank"&gt;Previous post: Your Startup Doesn't Have an SRE Team, Now What?&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;P&gt;&lt;EM&gt;Questions or want to share how you're using SRE Agent? Leave a comment or open an issue on the repo.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 01 Aug 2026 22:45:21 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/from-reactive-firefighting-to-proactive-operations-custom-skills/ba-p/4542961</guid>
      <dc:creator>rmmartins</dc:creator>
      <dc:date>2026-08-01T22:45:21Z</dc:date>
    </item>
    <item>
      <title>Azure AI Foundry: from zero to production</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/azure-ai-foundry-from-zero-to-production/ba-p/4542960</link>
      <description>&lt;P&gt;&lt;EM&gt;What I cover when a customer asks "we want to build AI applications on Azure, where do we start?"&lt;/EM&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;TL;DR:&lt;/STRONG&gt; Azure AI Foundry is the unified platform for building AI apps on Azure. Start with Standard PAYGO, use Priority Processing selectively when latency matters but traffic is bursty, and move predictable baseline traffic to PTU when utilization exceeds 60-70%. Use &lt;A href="https://ptucalc.com" target="_blank" rel="noopener"&gt;ptucalc.com&lt;/A&gt; to model your costs before committing.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;This guide is for engineering teams moving from prototype to production on Azure AI Foundry. If you're still evaluating whether Foundry is the right platform, start at &lt;A href="https://ai.azure.com" target="_blank" rel="noopener"&gt;ai.azure.com&lt;/A&gt;.&lt;/EM&gt;&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="the-starting-point"&gt;The starting point&lt;/H2&gt;
&lt;P&gt;A few weeks ago, I had a conversation with a customer's engineering team that was ready to build their first AI-powered application on Azure. They had experimented with ChatGPT, prototyped with the OpenAI API directly, and now needed to understand: &lt;EM&gt;how do we go from playground to production at enterprise scale?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;That conversation became a workshop, then a deck, and now this guide. The questions they asked are the same ones I hear from every team making this jump.&lt;/P&gt;
&lt;H2 id="what-is-azure-ai-foundry"&gt;What is Azure AI Foundry?&lt;/H2&gt;
&lt;P&gt;&lt;A href="https://ai.azure.com" target="_blank" rel="noopener"&gt;Azure AI Foundry&lt;/A&gt; is the unified platform for building, deploying, and operating AI applications on Azure. Think of it as the control plane for everything AI in your Azure environment:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Model Catalog: 1,900+ models (OpenAI, Meta Llama, Mistral, Cohere, Phi, others)&lt;/LI&gt;
&lt;LI&gt;Prompt Engineering: playground, prompt flow, evaluation tools&lt;/LI&gt;
&lt;LI&gt;Deployment Options: Standard and Priority pay-per-token processing, Provisioned Throughput (PTU), Global/Data Zone routing&lt;/LI&gt;
&lt;LI&gt;Safety and Governance: content filters, red teaming tools, model monitoring&lt;/LI&gt;
&lt;LI&gt;Agent Framework: multi-step AI agents with tool-calling, code interpreter, file search&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Foundry is not just another Azure service. It is the layer that ties models, data, compute, and governance together into one development surface.&lt;/P&gt;
&lt;H2 id="the-decisions-you-will-face"&gt;The decisions you will face&lt;/H2&gt;
&lt;P&gt;Every team building on Foundry hits the same questions in roughly the same order.&lt;/P&gt;
&lt;H3 id="1-model-selection"&gt;1. Model selection&lt;/H3&gt;
&lt;P&gt;The model landscape in mid-2026:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Model&lt;/th&gt;&lt;th&gt;Best for&lt;/th&gt;&lt;th&gt;Trade-off&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;GPT-5.x&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Orchestration, complex reasoning, multi-step agents&lt;/td&gt;&lt;td&gt;Highest capability, highest cost&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;GPT-5-mini&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Fast tasks, classification, summarization&lt;/td&gt;&lt;td&gt;90% of GPT-5 quality at 20% of cost&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;GPT-4.1&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Legacy workloads (deprecating)&lt;/td&gt;&lt;td&gt;Stable but being superseded&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Phi-4&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Edge deployment, fine-tuning, embedding&lt;/td&gt;&lt;td&gt;Small, fast, cheap, customizable&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Llama 3.x&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Open-weight flexibility, on-prem requirements&lt;/td&gt;&lt;td&gt;Full control, self-managed&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;My recommendation for agentic workloads:&lt;/STRONG&gt; GPT-5.x for the orchestrator (best tool-calling accuracy), GPT-5-mini for sub-tasks (classification, extraction, formatting), and Phi-4 or fine-tuned models for domain-specific components.&lt;/P&gt;
&lt;H3 id="2-model-lifecycle"&gt;2. Model lifecycle&lt;/H3&gt;
&lt;P&gt;Every model in Foundry follows a lifecycle: Preview, GA, Legacy, Deprecated, Retired.&lt;/P&gt;
&lt;P&gt;What matters in practice:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GA lasts roughly 18 months. Sounds like a lot, but it goes fast when you have a system in production.&lt;/LI&gt;
&lt;LI&gt;Legacy means a replacement is available. Start planning migration.&lt;/LI&gt;
&lt;LI&gt;Deprecated gives you about 90 days to migrate. After that, the API returns 410 Gone and your system stops.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The critical detail: if you use Provisioned Throughput (PTU), model migration is NOT automatic. You must do it manually: plan a maintenance window, test the new model with existing prompts, validate quality, and swap. Standard/Global Standard deployments auto-upgrade, but you don't control when.&lt;/P&gt;
&lt;P&gt;My recommendation: create a model governance process. Monitor Azure Updates, maintain automated quality tests per model, and start migration planning at least 60 days before retirement.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://rmmartins.com/img/foundry-model-lifecycle.svg" alt="Model lifecycle in Azure AI Foundry" /&gt;&lt;/P&gt;
&lt;H3 id="3-deployment-type-standard-priority-or-ptu"&gt;3. Deployment type: Standard, Priority, or PTU&lt;/H3&gt;
&lt;P&gt;Most teams overthink this. The rule is simple:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;STRONG&gt;Start with PAYGO (Pay-As-You-Go)&lt;/STRONG&gt; when:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You're in development/testing&lt;/LI&gt;
&lt;LI&gt;Traffic is unpredictable or bursty&lt;/LI&gt;
&lt;LI&gt;You're still figuring out which models you'll use long-term&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Add Priority Processing&lt;/STRONG&gt; when:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The workload is user-facing and sensitive to latency&lt;/LI&gt;
&lt;LI&gt;Traffic is bursty or concentrated in business hours&lt;/LI&gt;
&lt;LI&gt;You want model-specific latency targets without reserving PTU capacity&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Move to PTU (Provisioned Throughput Units)&lt;/STRONG&gt; when:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Sustained utilization exceeds 60-70% of equivalent PTU capacity&lt;/LI&gt;
&lt;LI&gt;You need guaranteed latency (no noisy-neighbor throttling)&lt;/LI&gt;
&lt;LI&gt;You're running production workloads with predictable patterns&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 id="4-where-priority-processing-fits"&gt;4. Where Priority Processing fits&lt;/H3&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/priority-processing" target="_blank" rel="noopener"&gt;Priority Processing&lt;/A&gt; is the middle ground between Standard PAYGO and PTU. It keeps pay-per-token billing and requires no reservation, but eligible requests are handled by a priority service tier with a defined, model-specific latency target. You can enable it for an entire Global Standard or US Data Zone Standard deployment, or select it per request with &lt;CODE&gt;service_tier: "priority"&lt;/CODE&gt;.&lt;/P&gt;
&lt;P&gt;The benefit is simple: more consistent low latency for interactive agents, copilots, and other time-sensitive paths without paying for dedicated capacity during idle periods. A useful pattern is to reserve Priority Processing for requests users are actively waiting on, while background summarization, extraction, and evaluation stay on Standard. For predictable steady-state traffic, PTU is still the stronger economic and capacity choice.&lt;/P&gt;
&lt;P&gt;Priority is not reserved capacity. Azure can process a request on the Standard tier during peak demand, for long-context requests on certain models, or when traffic increases by more than 50% tokens per minute in under 15 minutes. When that happens, the response reports &lt;CODE&gt;service_tier: "default"&lt;/CODE&gt; and the request is billed at the Standard rate. Monitor &lt;CODE&gt;ServiceTierRequest&lt;/CODE&gt; and &lt;CODE&gt;ServiceTierResponse&lt;/CODE&gt; in Azure Monitor so you can see requested versus actual processing instead of assuming every request stayed on Priority.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Rule of thumb:&lt;/STRONG&gt; Standard for flexible general traffic, Priority for latency-sensitive bursts, and PTU for predictable baseline throughput. Many production systems will use all three.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3 id="5-how-ptu-actually-works"&gt;5. How PTU actually works&lt;/H3&gt;
&lt;P&gt;PTU is a token-bucket model. Each PTU reserves a fixed throughput in tokens per minute. The rate varies by model:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;GPT-5-mini&lt;/STRONG&gt;: ~3,500 TPM per PTU&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;GPT-5&lt;/STRONG&gt;: varies by variant&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;GPT-4.1&lt;/STRONG&gt;: 3,000 TPM per PTU (deprecating)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;So 100 PTUs of GPT-5-mini give you roughly 350,000 tokens/minute guaranteed. Go past that and the API returns 429. No queue, no wait. Hard cutoff.&lt;/P&gt;
&lt;H3 id="6-the-cost-math-this-is-where-it-gets-interesting"&gt;6. The cost math (this is where it gets interesting)&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tier&lt;/th&gt;&lt;th&gt;Price (reference Jul/2026)&lt;/th&gt;&lt;th&gt;Commitment&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;On-Demand&lt;/td&gt;&lt;td&gt;~$2/hour/PTU = $14,400/month&lt;/td&gt;&lt;td&gt;None&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Monthly Reserved&lt;/td&gt;&lt;td&gt;~$0.72/hour/PTU = $5,184/month&lt;/td&gt;&lt;td&gt;1 month&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Yearly Reserved&lt;/td&gt;&lt;td&gt;~$0.60/hour/PTU = $4,320/month&lt;/td&gt;&lt;td&gt;1 year&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;The break-even: if sustained utilization is above 60-70% of your PTU capacity, monthly reservation already beats PAYGO.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;⚠️ These are reference prices as of July 2026. EA/MCA negotiated rates may differ. Always validate against your specific agreement.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I built &lt;A href="https://ptucalc.com" target="_blank" rel="noopener"&gt;ptucalc.com&lt;/A&gt; to help with exactly this calculation. It is open source. Plug in your usage patterns and it tells you the optimal tier and PTU count.&lt;/P&gt;
&lt;H3 id="7-spillover-architecture"&gt;7. Spillover architecture&lt;/H3&gt;
&lt;P&gt;The pattern I recommend for production:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://rmmartins.com/img/foundry-spillover-architecture.svg" alt="Spillover Architecture" /&gt;&lt;/P&gt;
&lt;P&gt;Configure your deployment with PTU as primary and PAYGO as spillover. You get:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Guaranteed latency for your baseline traffic (PTU)&lt;/LI&gt;
&lt;LI&gt;No dropped requests during spikes (PAYGO absorbs overflow)&lt;/LI&gt;
&lt;LI&gt;Cost optimization (PTU for steady-state, PAYGO only for peaks)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;You configure this at the deployment level in Foundry. No application code changes.&lt;/P&gt;
&lt;H2 id="part-2-production-hardening"&gt;Part 2: production hardening&lt;/H2&gt;
&lt;P&gt;Everything above gets you running. The sections below get you running safely, at scale, with governance.&lt;/P&gt;
&lt;H2 id="apim-as-your-ai-gateway"&gt;APIM as your AI Gateway&lt;/H2&gt;
&lt;P&gt;For any production AI workload, I recommend putting Azure API Management (APIM) between your applications and the models. APIM acts as a centralized AI Gateway with six capabilities that Foundry alone does not provide:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Load balancing: round-robin or weighted distribution across multiple PTU/PAYGO backends. Enables DR and capacity distribution across regions.&lt;/LI&gt;
&lt;LI&gt;Rate limiting by token: unlike traditional rate limiting by request count, APIM counts actual tokens consumed. A request that uses 10,000 tokens weighs differently than one using 100. Much fairer for consumption control.&lt;/LI&gt;
&lt;LI&gt;Circuit breaker: when a PTU backend returns 429, APIM automatically fails over to the next backend (another PTU or PAYGO). No client-side retry needed.&lt;/LI&gt;
&lt;LI&gt;Semantic caching: caches responses by semantic similarity of the prompt. If someone asked something similar in the last N minutes, it returns from cache. Reduces cost and latency for recurring questions.&lt;/LI&gt;
&lt;LI&gt;Token tracking: consumption metrics per app, per team, per user. Emits to Azure Monitor. Essential for chargeback when multiple teams share the same models.&lt;/LI&gt;
&lt;LI&gt;Content safety: gateway-level policies that block malicious inputs before they reach the model. Defense in depth on top of Foundry's content filters.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The pattern: your applications and agents call APIM, not the model directly. APIM routes, controls, monitors, and protects.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://rmmartins.com/img/foundry-apim-gateway.svg" alt="APIM as AI Gateway architecture" /&gt;&lt;/P&gt;
&lt;H2 id="reference-architecture-for-agentic-workloads"&gt;Reference architecture for agentic workloads&lt;/H2&gt;
&lt;P&gt;For teams building multi-agent systems, this is the reference architecture I recommend:&lt;/P&gt;
&lt;OL type="1"&gt;
&lt;LI&gt;Orchestration layer: a primary agent (typically using the best tool-calling model available, today GPT-5.x) that coordinates sub-agents, maintains conversation state, and decides the next action.&lt;/LI&gt;
&lt;LI&gt;Specialized agents layer: each agent optimized for a specific task using the right model. A data extraction agent on Phi-4, a compliance agent on GPT-4.1, a UX agent on GPT-5. Different models for different tasks, optimizing both cost and quality.&lt;/LI&gt;
&lt;LI&gt;Gateway layer (APIM): sits between agents and models. Each agent has different rate limits, routes to different models, and the circuit breaker protects against throttling. This is where you centralize governance.&lt;/LI&gt;
&lt;LI&gt;Models layer (Foundry): multiple deployments with PTU for base load and PAYGO for burst. Multi-region for DR. Spillover happens automatically via APIM routing.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;IMG src="https://rmmartins.com/img/foundry-agentic-architecture.svg" alt="Agentic reference architecture: 4 layers" /&gt;&lt;/P&gt;
&lt;P&gt;The key point: agents never call models directly. They always go through the gateway. If a misbehaving agent starts consuming too many tokens, you cut it at the gateway without touching the agent's code.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;If you're running Azure SRE Agent alongside your AI workloads, &lt;A href="https://github.com/ricmmartins/azure-sre-agent-skills/blob/main/skills/08-ai-foundry-openai-posture/SKILL.md" target="_blank" rel="noopener"&gt;skill 08 (AI Foundry &amp;amp; OpenAI Posture)&lt;/A&gt; can audit your Foundry deployment against these architecture patterns on a schedule. See my companion post: &lt;A href="https://rmmartins.com/azure-sre-agent-proactive-skills/" target="_blank" rel="noopener"&gt;Custom skills for Azure SRE Agent&lt;/A&gt;.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2 id="anti-patterns-to-avoid"&gt;Anti-patterns to avoid&lt;/H2&gt;
&lt;P&gt;These are mistakes I see repeatedly in production. Most of them seem obvious once pointed out, but they happen all the time:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Don't do this&lt;/th&gt;&lt;th&gt;Do this instead&lt;/th&gt;&lt;th&gt;Impact if ignored&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;API keys in code&lt;/td&gt;&lt;td&gt;Managed Identity + Key Vault&lt;/td&gt;&lt;td&gt;Credential leak, billing attack&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;One endpoint for everything&lt;/td&gt;&lt;td&gt;APIM Gateway + per-app routing&lt;/td&gt;&lt;td&gt;Noisy neighbor, no visibility&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Provision for peak&lt;/td&gt;&lt;td&gt;Spillover (PTU base + PAYGO burst)&lt;/td&gt;&lt;td&gt;60%+ idle capacity, waste&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ignore model lifecycle&lt;/td&gt;&lt;td&gt;Test pipeline + migration plan&lt;/td&gt;&lt;td&gt;410 Gone in production, outage&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Default max_tokens (4096)&lt;/td&gt;&lt;td&gt;Calculate max_tokens per use case&lt;/td&gt;&lt;td&gt;Inflated PTU utilization, capacity waste&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Retry without backoff&lt;/td&gt;&lt;td&gt;Exponential backoff + jitter&lt;/td&gt;&lt;td&gt;Retry storm, cascading 429s&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;The max_tokens one is subtle: Azure calculates PTU utilization based on input tokens PLUS reserved max_tokens, even if the actual response uses fewer. If you set max_tokens to 4096 but your typical response is 200 tokens, you are wasting capacity. &lt;A href="https://ptucalc.com" target="_blank" rel="noopener"&gt;ptucalc.com&lt;/A&gt; has a specific tool for this.&lt;/P&gt;
&lt;H2 id="production-checklist"&gt;Production checklist&lt;/H2&gt;
&lt;P&gt;Things I check before any customer goes live:&lt;/P&gt;
&lt;H3 id="security-and-network"&gt;Security and network&lt;/H3&gt;
&lt;UL class="task-list"&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Private endpoints configured (no public internet exposure)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Managed Identity for authentication (no API keys in code)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Content Safety filters tuned (not just defaults)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;VNet integration if required by compliance&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Data residency: model deployment region matches data requirements&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;APIM as AI Gateway (no direct model access from applications)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 id="reliability"&gt;Reliability&lt;/H3&gt;
&lt;UL class="task-list"&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Multi-region deployment (primary + failover)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Retry logic with exponential backoff and jitter&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Circuit breaker pattern for downstream dependencies&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Health probes and availability monitoring&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Spillover configured (PTU primary, PAYGO overflow)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Priority Processing scoped to latency-sensitive paths, not every request&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;APIM load balancing across PTU backends&lt;/LABEL&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 id="observability"&gt;Observability&lt;/H3&gt;
&lt;UL class="task-list"&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Token consumption metrics in Azure Monitor&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Latency P50/P95/P99 dashboards&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Cost allocation tags on all Foundry resources&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Alerting on 429 rates (throttling indicator)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Model performance evaluation pipeline (drift detection)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;APIM token tracking enabled (per app/team/user)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Priority requests split by &lt;CODE&gt;ServiceTierRequest&lt;/CODE&gt; and &lt;CODE&gt;ServiceTierResponse&lt;/CODE&gt;&lt;/LABEL&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 id="cost-governance"&gt;Cost governance&lt;/H3&gt;
&lt;UL class="task-list"&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Budget alerts configured&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Chargeback tags for multi-team environments&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;PTU utilization monitoring (target: 70-85%)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;max_tokens tuned per use case (not default 4096)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Regular review cadence (monthly) for tier optimization&lt;/LABEL&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 id="model-governance"&gt;Model governance&lt;/H3&gt;
&lt;UL class="task-list"&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Model lifecycle monitoring (Azure Updates subscription)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Automated quality tests per model version&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Migration plan documented (60+ days before retirement)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;PTU migration runbook (manual swap required)&lt;/LABEL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LABEL&gt;&lt;INPUT type="checkbox" /&gt;Semantic caching configured in APIM for recurring queries&lt;/LABEL&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 id="the-typical-progression"&gt;The typical progression&lt;/H2&gt;
&lt;P&gt;Most teams I work with follow this path:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://rmmartins.com/img/foundry-progression.svg" alt="POC to Production" /&gt;&lt;/P&gt;
&lt;P&gt;Don't skip steps. Each phase teaches you something about your workload that informs the next decision.&lt;/P&gt;
&lt;H2 id="where-to-start"&gt;Where to start&lt;/H2&gt;
&lt;OL type="1"&gt;
&lt;LI&gt;Open the &lt;A href="https://ai.azure.com" target="_blank" rel="noopener"&gt;Foundry Playground&lt;/A&gt; and test models against your actual use cases&lt;/LI&gt;
&lt;LI&gt;Model your costs with &lt;A href="https://ptucalc.com" target="_blank" rel="noopener"&gt;ptucalc.com&lt;/A&gt; before committing to PTU&lt;/LI&gt;
&lt;LI&gt;Deploy with spillover from day one. It costs nothing extra when PTU handles the load, but saves you when spikes hit&lt;/LI&gt;
&lt;LI&gt;Set up monitoring early. You cannot optimize what you cannot measure&lt;/LI&gt;
&lt;/OL&gt;
&lt;HR /&gt;
&lt;H2 id="next-steps"&gt;Next steps&lt;/H2&gt;
&lt;OL type="1"&gt;
&lt;LI&gt;&lt;STRONG&gt;Deploy a model in Foundry&lt;/STRONG&gt; — pick GPT-4o on PAYGO, wire it to a single endpoint, and run a test prompt through the REST API. Time: 20 minutes.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Run ptucalc against your traffic&lt;/STRONG&gt; — export your token consumption from Azure Monitor and model the break-even point. If you're above 60% sustained utilization, PTU likely pays for itself.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Add APIM in front&lt;/STRONG&gt; — even in dev. Configure a single policy with token-rate-limit and emit-token-metric. This gives you observability and a retry layer from day one.&lt;/LI&gt;
&lt;/OL&gt;
&lt;HR /&gt;
&lt;P&gt;&lt;STRONG&gt;Resources:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://ai.azure.com" target="_blank" rel="noopener"&gt;Azure AI Foundry&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/priority-processing" target="_blank" rel="noopener"&gt;Priority Processing documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://ptucalc.com" target="_blank" rel="noopener"&gt;PTU Calculator&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-studio/" target="_blank" rel="noopener"&gt;Foundry Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/ai/" target="_blank" rel="noopener"&gt;Well-Architected Framework for AI&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;P&gt;&lt;EM&gt;Questions about deployment strategy or cost modeling? Leave a comment.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 01 Aug 2026 22:46:31 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/azure-ai-foundry-from-zero-to-production/ba-p/4542960</guid>
      <dc:creator>rmmartins</dc:creator>
      <dc:date>2026-08-01T22:46:31Z</dc:date>
    </item>
    <item>
      <title>Your startup doesn't have an SRE team. Now what?</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/your-startup-doesn-t-have-an-sre-team-now-what/ba-p/4540142</link>
      <description>&lt;P&gt;Most startups I work with have between 3 and 15 engineers. None of them have a dedicated SRE. The infrastructure runs on Azure, the team ships fast, and reliability is everyone's job until something breaks at 2 AM and it becomes one person's problem.&lt;/P&gt;
&lt;P&gt;This is not a criticism. It is the rational allocation of scarce engineering time. But it creates a gap: nobody is watching the slow drift toward misconfiguration, overspend, and compliance debt. By the time these surface, they surface as incidents.&lt;/P&gt;
&lt;P&gt;I spent the last few months building something to close that gap, and I want to share both the tool and the thinking behind it.&lt;/P&gt;
&lt;H2&gt;The problem with reactive operations&lt;/H2&gt;
&lt;P&gt;When a 10-person startup hits its first real outage, the postmortem usually reveals the same pattern: a quota was at 94% and nobody checked, a Network Security Group rule was too broad and nobody audited, a storage account had public access enabled six months ago during a debugging session and nobody reverted it.&lt;/P&gt;
&lt;P&gt;The fixes are trivial. The problem is that nobody had the bandwidth to look. Traditional monitoring covers the "is it up?" question well. It does not cover "are we accumulating risk?"&lt;/P&gt;
&lt;P&gt;Azure SRE Agent was built to fill exactly this space. It runs proactive, scheduled checks against your infrastructure and surfaces findings before they become pages. The built-in skills cover common scenarios, but every environment has its own shape. A fintech startup cares about different things than a gaming company.&lt;/P&gt;
&lt;H2&gt;Custom skills: teaching the agent your priorities&lt;/H2&gt;
&lt;P&gt;SRE Agent supports custom skills, which are structured prompts that tell the agent what to check, how to check it, and how to present findings. Think of them as runbooks that execute themselves on a schedule.&lt;/P&gt;
&lt;P&gt;I built a pack of 8 skills that cover the gaps I kept seeing across startup engagements:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;A Well-Architected Framework review that scores all 5 pillars and flags the weakest one&lt;/LI&gt;
&lt;LI&gt;A compliance audit covering RBAC drift, missing resource locks, inconsistent tagging&lt;/LI&gt;
&lt;LI&gt;Capacity planning that checks quota utilization and projects when you will hit limits&lt;/LI&gt;
&lt;LI&gt;FinOps analysis combining cost optimization with chargeback allocation&lt;/LI&gt;
&lt;LI&gt;Blameless postmortem generation using the 5 Whys method&lt;/LI&gt;
&lt;LI&gt;Defender for Cloud Secure Score monitoring with prioritized remediation&lt;/LI&gt;
&lt;LI&gt;A governance maturity assessment designed specifically for Digital Native companies&lt;/LI&gt;
&lt;LI&gt;An AI Foundry and Azure OpenAI posture check for teams running LLM workloads&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Each skill runs read-only. No write operations, no deployments, no changes to your environment. The agent reads your infrastructure state and produces a scored report with specific remediation commands you can choose to run or ignore.&lt;/P&gt;
&lt;H2&gt;Design decisions that matter&lt;/H2&gt;
&lt;P&gt;A few choices shaped how these skills work, and I think they are worth explaining because they apply to anyone building custom skills.&lt;/P&gt;
&lt;H3&gt;Scoring over pass/fail&lt;/H3&gt;
&lt;P&gt;Every skill produces a numeric score. A binary "compliant / not compliant" result is less useful than knowing you are at 41/100 on governance maturity and your weakest area is identity management. Scores let you track improvement over time and prioritize effort.&lt;/P&gt;
&lt;H3&gt;Inline documentation links&lt;/H3&gt;
&lt;P&gt;Each finding includes a link to the relevant Microsoft Learn page. When the agent tells you that your Azure OpenAI deployment lacks a private endpoint, the remediation section includes the exact &lt;CODE&gt;az&lt;/CODE&gt; CLI command and a link to the documentation explaining why it matters. The goal is that an engineer can go from finding to fix without opening a browser to search.&lt;/P&gt;
&lt;H3&gt;Tiered scheduling&lt;/H3&gt;
&lt;P&gt;Not all checks need the same frequency. The capacity planning skill should run daily because quotas can spike fast. The Well-Architected review is a weekly check because architectural drift happens slowly. I organized the 8 skills into three priority tiers so teams can configure schedules that match the volatility of each risk category.&lt;/P&gt;
&lt;H3&gt;No write operations, ever&lt;/H3&gt;
&lt;P&gt;This was a hard line from day one. These skills read infrastructure state through Azure Resource Graph, Azure CLI queries, and REST API calls. They never create, modify, or delete resources. The remediation commands appear in the output as suggestions for a human to review and execute. This constraint makes the skills safe to run on production subscriptions without additional approval workflows.&lt;/P&gt;
&lt;H2&gt;What the output looks like&lt;/H2&gt;
&lt;P&gt;Here is a real example from the Digital Native Governance skill running against a test subscription.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://raw.githubusercontent.com/ricmmartins/azure-sre-agent-skills/main/docs/images/skill-07-governance.png" alt="Digital Native Governance skill output showing a 41/100 maturity score" /&gt;&lt;/P&gt;
&lt;P&gt;The agent checks 6 governance categories: Alerting, Subscription Topology, Cost Controls, Identity, Web Protection, and Operational Foundations. Each category gets a score against its maximum, and the total determines a maturity level (Foundation, Developing, Established, or Optimized).&lt;/P&gt;
&lt;P&gt;In my test run, the subscription scored 41/100, placing it at "Developing" maturity. Web Protection scored 0/15 because there was no WAF, no custom domain, no DDoS protection. Alerting scored 3/20 because Service Health and Resource Health alerts were missing entirely. That is specific enough to act on immediately.&lt;/P&gt;
&lt;P&gt;The FinOps skill found ~$43/month in recoverable waste on a subscription that costs about $177/month. Empty container registries, deallocated VMs still paying for disks and public IPs, overprovisioned Defender plans. Not a huge number, but for a pre-seed startup running lean, that is real money sitting idle.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://raw.githubusercontent.com/ricmmartins/azure-sre-agent-skills/main/docs/images/skill-04-finops.png" alt="FinOps Intelligence skill showing waste detection with prioritized savings" /&gt;&lt;/P&gt;
&lt;P&gt;And here is what the Well-Architected review looks like when it scores all five pillars:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://raw.githubusercontent.com/ricmmartins/azure-sre-agent-skills/main/docs/images/skill-01-waf-review.png" alt="Well-Architected Framework review with 5-pillar scoring" /&gt;&lt;/P&gt;
&lt;H2&gt;Lessons from building this&lt;/H2&gt;
&lt;P&gt;Three things I did not expect when I started.&lt;/P&gt;
&lt;P&gt;First, prompt structure matters more than prompt length. Early versions of these skills were verbose, with long explanations of each check. The agent performed better with terse, structured instructions that clearly separated what to check, how to check it, and how to format the result. Clarity beats volume.&lt;/P&gt;
&lt;P&gt;Second, the LLM behind the agent occasionally rendered emoji shortcodes (&lt;CODE&gt;:red_circle:&lt;/CODE&gt;) as literal text instead of Unicode characters. This sounds minor but it made the output hard to scan visually. The fix was a single line in the skill definition: "Use Unicode emoji characters directly, never use emoji shortcodes." Explicit formatting instructions prevent the model from making stylistic choices that degrade readability.&lt;/P&gt;
&lt;P&gt;Third, scoring philosophy requires intentional calibration. If you weight security checks too heavily, every subscription looks terrible and the report loses signal. If you weight them too lightly, teams ignore real risk. I landed on roughly 35% security, 30% reliability, 25% cost, and 10% architecture for the AI workload skill after testing against several real environments and seeing which distributions produced actionable variance between "good" and "needs work" subscriptions.&lt;/P&gt;
&lt;H2&gt;How to use this&lt;/H2&gt;
&lt;P&gt;The skills are open-source at &lt;A href="https://github.com/ricmmartins/azure-sre-agent-skills" target="_blank" rel="noopener"&gt;github.com/ricmmartins/azure-sre-agent-skills&lt;/A&gt;. Each skill is a single Markdown file you paste into the SRE Agent portal at &lt;A href="https://sre.azure.com" target="_blank" rel="noopener"&gt;sre.azure.com&lt;/A&gt;. Setup takes about five minutes per skill.&lt;/P&gt;
&lt;P&gt;You do not need all eight. If your startup is pre-revenue and running a single subscription, start with Capacity Planning and FinOps. If you are preparing for an enterprise customer's security questionnaire, start with Compliance and Defender Secure Score. Pick the two or three that match your current pain.&lt;/P&gt;
&lt;P&gt;The skills are MIT-licensed and designed to be forked. If your compliance requirements include specific tagging conventions or naming standards, edit the skill to check for those. The structure is documented so you can build your own from scratch if none of mine fit.&lt;/P&gt;
&lt;H2&gt;How this differs from Azure Advisor&lt;/H2&gt;
&lt;P&gt;The first question people ask: why not just use Azure Advisor?&lt;/P&gt;
&lt;P&gt;Advisor gives you a flat list of recommendations per resource. It tells you "this VM could be smaller" or "enable HTTPS on this App Service." Useful, but limited in three ways.&lt;/P&gt;
&lt;P&gt;First, Advisor has no concept of correlation. It does not know that your failing health probe, your missing Resource Health alert, and your absent backup vault are three symptoms of the same problem: nobody set up operational foundations for that workload. These skills connect findings across domains and produce a single maturity score that tells you where you actually stand.&lt;/P&gt;
&lt;P&gt;Second, Advisor does not generate narrative reports. It exports a CSV of individual recommendations, but there is no scored document with correlated findings, maturity levels, and prioritized remediation commands that you can forward to a CTO or attach to a security questionnaire. These skills produce that artifact directly in the chat, ready to copy or download.&lt;/P&gt;
&lt;P&gt;Third, Advisor is passive. You go to the portal and look at it. SRE Agent runs your skills on a schedule and surfaces problems before they surface themselves as incidents. The difference between "there is a recommendation waiting in the portal" and "the agent flagged a quota at 85% utilization this morning" is the difference between a suggestion and a safety net.&lt;/P&gt;
&lt;P&gt;Think of Advisor as a linter. These skills are closer to a staff SRE who reads everything, correlates the findings, and writes you a report with priorities and az CLI commands ready to paste.&lt;/P&gt;
&lt;H2&gt;What this is not&lt;/H2&gt;
&lt;P&gt;This is not a replacement for proper observability, incident management, or SRE staffing. When your startup reaches the scale where you need a dedicated SRE function, you should build one.&lt;/P&gt;
&lt;P&gt;What these skills give you is coverage during the phase when you do not have that function yet. They catch the slow-moving risks that slip through the cracks when everyone is heads-down shipping features. Think of them as a part-time auditor who checks in daily and tells you what drifted since yesterday.&lt;/P&gt;
&lt;P&gt;For startups on Azure, that gap between "we should probably check our security posture" and "we have someone whose job it is to check our security posture" can last years. These skills are one way to fill it.&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jul 2026 15:19:46 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/your-startup-doesn-t-have-an-sre-team-now-what/ba-p/4540142</guid>
      <dc:creator>rmmartins</dc:creator>
      <dc:date>2026-07-29T15:19:46Z</dc:date>
    </item>
    <item>
      <title>Scaling - Startup Onboarding - Microsoft Family Company</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/scaling-startup-onboarding-microsoft-family-company/m-p/4539635#M147</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm wondering if I could get paired with an advisor.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Since we joined Microsoft as a corporation, in 2015, we have been developing a gaming console, we paused development with the defunction of BizSpark and later Microsoft Ventures was tiered up. However, 10 years later, we joined under a new gaming division that also creates software.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Both corporations, Greentwip, whose R&amp;amp;D is part of Microsoft now, and Cybertwip, whose focus is Energy and Games, which makes us a bit esoteric, is at the stage of sales, but we are unable to join the venture network, either by Azure (the platform leads to errors and other not found pages).&amp;nbsp;&lt;/P&gt;&lt;P&gt;Let's start the thread here, and openly showcase.&lt;/P&gt;&lt;P&gt;To start with, we have Andamiro and Titus Interactive under our active assets, and we're partnering with SpaceX, and other undisclosed corporations that are of Microsoft interest and brokerage.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Along the development, we have a few projects for Xbox, and the Virtua console being manufactured by Shenzhen QBuy, I'll post the demos here in the thread.&amp;nbsp;&lt;/P&gt;&lt;P&gt;We have notified the Microsoft board, and so forth. Yeah, but I feel we need to showcase our progress.&amp;nbsp;&lt;/P&gt;&lt;P&gt;So far:&amp;nbsp;&lt;/P&gt;&lt;P&gt;The MediaTek partner has given us Kernels, and drivers, although some are incomplete we managed to get Intel and ARM processors to work, only Intel has internet, no WiFi drivers yet, but the OS if fully compliant, at this stage is implementing Windows applications execution.&amp;nbsp;&lt;/P&gt;&lt;P&gt;The support we have for the MVII OS is cross platform, it runs on Intel and ARM hardware, except for Macintosh.&lt;/P&gt;&lt;P&gt;A few games are natively being ported, such as Evil Zone, Top Gun, to mention a few, we managed to port Street Fighter EX Plus Alpha, and other titles that are considered Lost Media, or whose hardware vendors have been discontinued.&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is important to keypoint, as sales on perpetual media, are to be preserved, instead of just cutting support from.&amp;nbsp;&lt;/P&gt;&lt;P&gt;We at Cybertwip consider that other corporations, such as Sony Corporation, which, when requested; whose source code was not delivered, including our games or partner corporations, must be preserved.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;AI development, PAccel is one the AI tools we have, able to run 3x faster than onnxruntime and llama.cpp, but anyways, we demo here:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img&gt;Titus Interactive signature game, Evil Zone, recovered Lost Media&lt;/img&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img&gt;Example of recovered Lost Media games, Street Fighter EX Plus Alpha&lt;/img&gt;&lt;img&gt;NeoGeo Hub store, via SNK partnership and brokerage&lt;/img&gt;&lt;img&gt;MVII launching&lt;/img&gt;&lt;img&gt;MVII running on MediaTek ARM hardware&lt;/img&gt;</description>
      <pubDate>Wed, 22 Jul 2026 08:06:55 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/scaling-startup-onboarding-microsoft-family-company/m-p/4539635#M147</guid>
      <dc:creator>Andamiro</dc:creator>
      <dc:date>2026-07-22T08:06:55Z</dc:date>
    </item>
    <item>
      <title>Your H100s on Azure won't do distributed training. Here's probably why.</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/your-h100s-on-azure-won-t-do-distributed-training-here-s/ba-p/4537502</link>
      <description>&lt;P&gt;I recently had to dig into why a customer's H100 VMs couldn't do distributed training on Azure. They had ND-series capacity allocated, the hardware was there, but the VMs weren't connected over InfiniBand. The cause turned out to be a deployment configuration issue, not a hardware problem. Finding a single clear explanation of what went wrong and how to fix it was harder than it should have been.&lt;/P&gt;
&lt;P&gt;The cause comes down to one of two things. Either they're on the wrong H100 SKU, or their VMs aren't in the same placement group. Both are fixable, but you have to understand what went wrong first.&lt;/P&gt;
&lt;H2&gt;The naming trap&lt;/H2&gt;
&lt;P&gt;Azure has two H100 VM families. The names look similar enough that people pick the wrong one without realizing it.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&amp;nbsp;&lt;/th&gt;&lt;th&gt;NC40ads H100 v5&lt;/th&gt;&lt;th&gt;ND96isr H100 v5&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;GPUs&lt;/td&gt;&lt;td&gt;1x H100 NVL (94 GB)&lt;/td&gt;&lt;td&gt;8x H100 SXM (80 GB each)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;InfiniBand&lt;/td&gt;&lt;td&gt;None&lt;/td&gt;&lt;td&gt;8x 400 Gb/s (3.2 Tbps per VM)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GPUDirect RDMA&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Intra-VM GPU link&lt;/td&gt;&lt;td&gt;N/A (single GPU)&lt;/td&gt;&lt;td&gt;NVLink 4.0 + NVSwitch&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Network bandwidth&lt;/td&gt;&lt;td&gt;40 Gbps Ethernet&lt;/td&gt;&lt;td&gt;80 Gbps Ethernet + InfiniBand&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;vCPUs&lt;/td&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;96&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RAM&lt;/td&gt;&lt;td&gt;320 GiB&lt;/td&gt;&lt;td&gt;1,900 GiB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The NCads H100 v5 family has two sizes: NC40ads (1 GPU, 40 Gbps) and NC80adis (2 GPUs, 80 Gbps). Neither has InfiniBand. If you deploy 10 of these and try to run a multi-node training job, the GPUs communicate over standard Ethernet. For the all-reduce operations that distributed training depends on, you're looking at 40 Gbps per VM versus 3.2 Tbps aggregate IB on a single ND node, roughly 80x less bandwidth. In practice the gap is worse because Ethernet lacks GPUDirect RDMA, so every transfer bounces through main memory and the CPU.&lt;/P&gt;
&lt;P&gt;The ND is the training machine. Eight H100 SXM GPUs per VM connected by NVLink internally, and each GPU gets its own dedicated 400 Gb/s InfiniBand link for talking to GPUs on other VMs. With GPUDirect RDMA, NCCL sends data directly between GPU memory across nodes, bypassing the CPU entirely.&lt;/P&gt;
&lt;P&gt;If your training job needs more GPUs than fit in one VM, you need ND. No workaround for this.&lt;/P&gt;
&lt;H2&gt;When InfiniBand matters (and when it doesn't)&lt;/H2&gt;
&lt;P&gt;Not every GPU workload needs IB.&lt;/P&gt;
&lt;P&gt;Single-GPU inference or dev work is fine on NC. No inter-node communication involved.&lt;/P&gt;
&lt;P&gt;LoRA and QLoRA fine-tuning up to roughly 70B usually fits inside a single ND VM (8 GPUs with model parallelism). You're not crossing VM boundaries, so IB isn't in the picture.&lt;/P&gt;
&lt;P&gt;Full-parameter SFT or RLHF on 8B+ is where it gets interesting. An 8B model in bf16 is about 16 GB just for the parameters. Full-parameter Adam training typically requires 12 to 16 bytes per parameter when you account for fp32 master weights, gradients, and optimizer first/second moments. That puts an unsharded 8B run at 96 to 128 GB before activations even enter the picture. With FSDP or ZeRO-3 sharding across the 8 GPUs inside a single ND VM, it fits without crossing node boundaries. But if you're trying to do this on standalone VMs without a sharding strategy, you'll need multi-node, and that means fast interconnect.&lt;/P&gt;
&lt;P&gt;Large-scale pre-training at 70B+ runs across dozens or hundreds of GPUs. InfiniBand is not optional at this scale. Gradient synchronization over Ethernet would make the job impractical.&lt;/P&gt;
&lt;P&gt;Rule of thumb: if your training job uses more GPUs than fit in one VM, InfiniBand starts mattering. More than two VMs, it matters a lot.&lt;/P&gt;
&lt;H2&gt;Making the VMs talk to each other&lt;/H2&gt;
&lt;P&gt;Having ND VMs in the same region isn't enough. They need to be on the same InfiniBand fabric to communicate at full speed.&lt;/P&gt;
&lt;P&gt;Azure handles this through placement groups. A placement group is a set of VMs deployed on the same network fabric segment. VMs in the same group get non-blocking, full-bisection IB connectivity. VMs in different placement groups, or standalone VMs not in any VMSS or availability set, do not get InfiniBand communication with each other at all.&lt;/P&gt;
&lt;P&gt;What happens when IB isn't available depends on your NCCL configuration. If&lt;STRONG&gt;&amp;nbsp;NCCL_IB_DISABLE=1&lt;/STRONG&gt;&amp;nbsp;is set, or NCCL can't find IB devices, it falls back to TCP over Ethernet (slow but functional). If IB interfaces exist but aren't connected to peers (the standalone ND case), NCCL may hang indefinitely waiting to establish the IB connection. Set&lt;STRONG&gt;&amp;nbsp;NCCL_DEBUG=INFO&lt;/STRONG&gt;&amp;nbsp;in your environment to see which transport NCCL is actually using and where it gets stuck.&lt;/P&gt;
&lt;P&gt;The following diagram illustrates this specific scenario: same ND hardware, deployed differently, completely different outcomes.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;To get your NDs into a single placement group, deploy them in a Virtual Machine Scale Set (VMSS) with &lt;STRONG&gt;singlePlacementGroup&lt;/STRONG&gt; set to &lt;STRONG&gt;true&lt;/STRONG&gt;:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;{ "type": "Microsoft.Compute/virtualMachineScaleSets", "properties": { "singlePlacementGroup": true } }&lt;/LI-CODE&gt;
&lt;P&gt;This works with both Flexible and Uniform orchestration modes (the&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/setup-infiniband" target="_blank" rel="noopener"&gt;IB setup docs&lt;/A&gt;&amp;nbsp;confirm support for both). The key constraint is the placement group, not the orchestration mode. With&amp;nbsp;&lt;STRONG&gt;singlePlacementGroup=true&lt;/STRONG&gt;, the scale set is capped at 100 VMs by default (expandable to 300 via support request). For most startup training jobs, even the default cap gives you 800 H100 GPUs, which is plenty for post-training and medium-scale pre-training. If you need more than 2,400 GPUs on a single IB fabric, that's a different conversation involving Azure HPC team engagement.&lt;/P&gt;
&lt;P&gt;The important thing: setting&amp;nbsp;&lt;STRONG&gt;singlePlacementGroup=false&lt;/STRONG&gt;&amp;nbsp;(which enables large scale sets beyond 100 VMs) breaks InfiniBand networking entirely. The&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups" target="_blank" rel="noopener"&gt;placement groups documentation&lt;/A&gt;&amp;nbsp;states this explicitly: "Large scale (SPG=false) does not support InfiniBand networking." VMs land in different placement groups, and IB does not work across groups. If you need more than 100 nodes for IB training, open a support request to raise the single placement group limit rather than switching to multi-placement-group mode.&lt;/P&gt;
&lt;P&gt;Once your NDs are in the same placement group, InfiniBand is automatically configured between VMs. No manual fabric setup required. The&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/gpu-accelerated/ndh100v5-series" target="_blank" rel="noopener"&gt;ND H100 v5 documentation&lt;/A&gt;&amp;nbsp;confirms: "These connections are automatically configured between VMs occupying the same virtual machine scale set, and support GPU Direct RDMA."&lt;/P&gt;
&lt;P&gt;Contiguous capacity has to be available in the region at deployment time. If the region is fragmented, the deployment might fail even though individual VMs would succeed. That's a capacity planning conversation, not a technical bug.&lt;/P&gt;
&lt;P&gt;You can also use an availability set for the same purpose. VMs in the same availability set get IB connectivity. VMSS is usually the better option because it gives you scaling and lifecycle management, but availability sets work if you're managing VMs individually.&lt;/P&gt;
&lt;P&gt;Docs:&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/setup-infiniband" target="_blank" rel="noopener"&gt;Set up InfiniBand on HPC VMs&lt;/A&gt;&amp;nbsp;|&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups" target="_blank" rel="noopener"&gt;Placement groups&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;You can't retrofit this without downtime&lt;/H2&gt;
&lt;P&gt;The natural follow-up question: "We already have ND VMs running as standalone instances. Can we rearrange them into a contiguous IB cluster without downtime?"&lt;/P&gt;
&lt;P&gt;No. Azure doesn't offer a customer-facing operation to reposition VMs onto contiguous physical hardware. These H100 VM families do not support live migration, so there's no mechanism (customer-initiated or platform-initiated) that moves a running VM to a different physical host for network topology purposes.&lt;/P&gt;
&lt;P&gt;The path is: deallocate your existing ND VMs, create a VMSS with&amp;nbsp;&lt;STRONG&gt;singlePlacementGroup=true,&lt;/STRONG&gt; and redeploy into the new scale set.&lt;/P&gt;
&lt;P&gt;This means downtime. It also means contiguous capacity needs to be available in the region at that moment. If you're early in your deployment (and most startups are), set this up correctly from the start. Retrofitting later is possible but painful, especially if your region is capacity constrained.&lt;/P&gt;
&lt;P&gt;The worst-case scenario here is real: you deallocate your VMs, try to redeploy into a placement group, and the region doesn't have enough contiguous rack space. Now you have no training cluster running and you're waiting for capacity to free up. If you're in a tight region, coordinate with your Microsoft account team to pre-validate contiguous availability before scheduling the maintenance window.&lt;/P&gt;
&lt;H2&gt;Images and drivers&lt;/H2&gt;
&lt;P&gt;Azure publishes HPC marketplace images (Ubuntu-HPC, AlmaLinux-HPC) that ship with NVIDIA GPU drivers, CUDA, NCCL, and Mellanox OFED pre-installed. Use these. They save you a day of driver debugging.&lt;/P&gt;
&lt;P&gt;If you need a custom image or container, you'll need NVIDIA GPU drivers matching your CUDA version, Mellanox OFED for InfiniBand, and NCCL built with IB and GPUDirect RDMA support.&lt;/P&gt;
&lt;P&gt;After deployment, validate the setup:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;ibstat&lt;/STRONG&gt;&amp;nbsp;should show IB devices in Active state on every VM. Here's what success looks like:&lt;BR /&gt;&lt;BR /&gt;&lt;LI-CODE lang="json"&gt;CA 'mlx5_0' CA type: MT4129 Port 1: State: Active Physical state: LinkUp Rate: 400&lt;/LI-CODE&gt;&lt;BR /&gt;If you see&lt;STRONG&gt; State: Down&lt;/STRONG&gt; or &lt;STRONG&gt;Physical state: Polling&lt;/STRONG&gt;, the IB link isn't established. Check that your VMs are actually in the same placement group.&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;lspci | grep Mellanox&amp;nbsp;&lt;/STRONG&gt;confirms the hardware is visible to the OS. You should see 8 ConnectX-7 devices on an ND96isr.&lt;/LI&gt;
&lt;LI&gt;Run NCCL all-reduce tests across nodes with&amp;nbsp;&lt;STRONG&gt;NCCL_DEBUG=INFO&lt;/STRONG&gt;&amp;nbsp;set:&lt;BR /&gt;&lt;BR /&gt;&lt;LI-CODE lang="bash"&gt;export NCCL_DEBUG=INFO export NCCL_IB_DISABLE=0 mpirun -np 16 --hostfile hosts nccl-tests/build/all_reduce_perf -b 8 -e 8G -f 2 -g 1&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;With GPUDirect RDMA working correctly, you should see bus bandwidth approaching 380+ Gb/s for large messages (8 GB+). If you're seeing numbers well below that, or NCCL logs show &lt;STRONG&gt;NET/Socket&lt;/STRONG&gt; instead of&lt;STRONG&gt; NET/IB,&lt;/STRONG&gt; check that OFED is loaded (&lt;STRONG&gt;ofed_info&lt;/STRONG&gt;), the IB interface is up (&lt;STRONG&gt;ibstat&lt;/STRONG&gt;), and your VMs are in the same placement group.&lt;/P&gt;
&lt;P&gt;Docs:&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/configure" target="_blank" rel="noopener"&gt;Configure HPC VMs&lt;/A&gt;&amp;nbsp;|&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/gpu-accelerated/ndh100v5-series" target="_blank" rel="noopener"&gt;ND H100 v5 specs&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Before you start training&lt;/H2&gt;
&lt;P&gt;A quick checklist before launching your first distributed job:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You're on ND96isr H100 v5, not NC40ads H100 v5&lt;/LI&gt;
&lt;LI&gt;VMs are in a VMSS with&amp;nbsp;&lt;STRONG&gt;singlePlacementGroup=true&lt;/STRONG&gt;&amp;nbsp;(or same availability set). Standalone VMs won't have IB connectivity with each other.&lt;/LI&gt;
&lt;LI&gt;Using Ubuntu-HPC or AlmaLinux-HPC image (or custom with OFED + NCCL)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;ibstat&lt;/STRONG&gt;&amp;nbsp;shows IB Active on all nodes (all 8 ports per VM)&lt;/LI&gt;
&lt;LI&gt;NCCL all-reduce test confirms expected bandwidth for large messages&lt;/LI&gt;
&lt;LI&gt;NCCL logs show&amp;nbsp;&lt;STRONG&gt;NET/IB&amp;nbsp;&lt;/STRONG&gt;transport, not&amp;nbsp;&lt;STRONG&gt;NET/Socke&lt;/STRONG&gt;t&lt;/LI&gt;
&lt;LI&gt;Training framework configured with&amp;nbsp;&lt;STRONG&gt;backend='nccl'&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Further reading&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/gpu-accelerated/ndh100v5-series" target="_blank" rel="noopener"&gt;ND H100 v5 specifications&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/gpu-accelerated/ncadsh100v5-series" target="_blank" rel="noopener"&gt;NC H100 v5 specifications&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/setup-infiniband" target="_blank" rel="noopener"&gt;Set up InfiniBand on HPC VMs&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups" target="_blank" rel="noopener"&gt;VMSS placement groups&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/machine-learning/how-to-train-distributed-gpu" target="_blank" rel="noopener"&gt;Distributed GPU training guide (Azure ML)&lt;/A&gt;&lt;/LI&gt;
&lt;/OL&gt;</description>
      <pubDate>Thu, 16 Jul 2026 21:39:28 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/your-h100s-on-azure-won-t-do-distributed-training-here-s/ba-p/4537502</guid>
      <dc:creator>rmmartins</dc:creator>
      <dc:date>2026-07-16T21:39:28Z</dc:date>
    </item>
    <item>
      <title>Azure Service Health has four alert types. You probably configured one.</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/azure-service-health-has-four-alert-types-you-probably/ba-p/4537501</link>
      <description>&lt;P data-line="2"&gt;Most startups I work with have Service Health alerts configured on at least one subscription. That part's fine. The problem is they usually have it set up for Service Issues only, on their main subscription, while they're running six or seven.&lt;/P&gt;
&lt;P data-line="4"&gt;Service Issues is the "Azure is down" alert. You want it. But it's one of four notification types, and the other three are the ones that catch the problems you could have seen coming.&lt;/P&gt;
&lt;H2&gt;The four types&lt;/H2&gt;
&lt;P data-line="8"&gt;Azure Service Health sends four categories of alertable notifications. (The portal also shows a fifth category, Billing updates, but that one isn't available as an alert rule trigger.) Here's what each alertable type looks like in the portal:&lt;/P&gt;
&lt;P data-line="10"&gt;Service Issues are outages and degraded performance happening right now. This is what most people set up. It tells you something is already broken.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Health Advisories are about changes coming to your services. API deprecations, model retirements, required configuration changes, feature removals. For AI startups running Azure OpenAI, this is where model version retirement notices show up. If you're not subscribed, you find out when your inference calls start returning 410 Gone.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Planned Maintenance covers scheduled maintenance windows that could impact your services. Azure gives advance notice so you can prepare. If you're running GPU training jobs that take 48 hours, knowing about a maintenance window before you start the job matters.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Security Advisories cover vulnerabilities or security incidents affecting services you use. Critical patches, recommended actions, risk assessments for your deployment.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Most startups configure the first one and skip the rest.&lt;/P&gt;
&lt;H2&gt;"But won't I get spammed?"&lt;/H2&gt;
&lt;P data-line="30"&gt;The most common pushback when I suggest enabling all four types: "There are 250+ services in the filter list. If I select all of them, won't I drown in alerts?"&lt;/P&gt;
&lt;P data-line="32"&gt;No. Service Health only fires notifications when Microsoft publishes an event affecting your subscription, for services you have deployed, in regions where you have resources. If you're running Container Apps, Key Vault, Cognitive Services, and Storage in East US, you get alerts for those. Everything else stays quiet.&lt;/P&gt;
&lt;P data-line="34"&gt;I pulled the service list for a customer with 7 subscriptions recently. Across all of them, they had 23 resource types deployed. That's a very manageable alert volume, even with all four event types enabled.&lt;/P&gt;
&lt;H2&gt;The scope trap in the portal&lt;/H2&gt;
&lt;P&gt;This one trips people up. When you create an activity log alert rule, the portal shows a "Resource group" field that looks like it's required. That field is where the alert rule resource itself gets stored, not what it monitors. Service Health alerts are scoped at the subscription level.&lt;/P&gt;
&lt;img /&gt;
&lt;P data-line="42"&gt;You don't need a separate alert rule for each resource group. One rule per subscription covers everything in it. If you already have a Service Issues alert working, you set the scope correctly the first time. Edit that existing rule to enable all four event types, or create a new one and disable the old Service Issues-only rule (otherwise Service Issues fires twice).&lt;/P&gt;
&lt;P data-line="44"&gt;Docs:&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-create-activity-log-alert-rule" data-href="https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-create-activity-log-alert-rule" target="_blank"&gt;Create activity log alert rule&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;You probably have more subscriptions than you think&lt;/H2&gt;
&lt;P data-line="48"&gt;Dev, staging, prod, shared services, maybe MSDN subs for engineers. Each subscription needs its own Service Health alert rule. Alerts on prod don't cover dev.&lt;/P&gt;
&lt;P data-line="50"&gt;If you have 7 subscriptions and alerts on 1, that's 86% of your environment running without health notifications.&lt;/P&gt;
&lt;P data-line="52"&gt;You can fix this at scale with Azure Policy. Microsoft provides a built-in policy called "Configure subscriptions to enable Service Health Monitoring Alert Rules." One policy assignment at the management group level, all current and future subscriptions get alerts automatically. One thing to note: for subscriptions that already exist at the time of assignment, you need to create a remediation task. Without it, the policy only evaluates newly non-compliant resources going forward.&lt;/P&gt;
&lt;P data-line="54"&gt;Docs:&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/service-health/service-health-alert-deploy-policy" data-href="https://learn.microsoft.com/en-us/azure/service-health/service-health-alert-deploy-policy" target="_blank"&gt;Deploy Service Health alerts at scale using Azure Policy&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Why this matters more for AI startups&lt;/H2&gt;
&lt;P data-line="58"&gt;If you're running Azure OpenAI in production, Health Advisories are where model retirement notices land. Azure periodically retires model versions and updates API versions. Without the advisory alert, your team finds out when something breaks in production.&lt;/P&gt;
&lt;P data-line="60"&gt;Same story for GPU VMs. If you have long-running training jobs on ND or NC series, a maintenance window you didn't know about can kill a job that's been running for 3 days. Planned Maintenance alerts give you advance notice to checkpoint or reschedule. Azure typically provides about a 35-day self-service window for maintenance that requires a reboot. Within that window, you choose when to apply it. For more granular in-VM awareness, use&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/linux/scheduled-events" data-href="https://learn.microsoft.com/en-us/azure/virtual-machines/linux/scheduled-events" target="_blank"&gt;Scheduled Events&lt;/A&gt;, which gives your workload about 15 minutes notice before a reboot actually happens. Long-running training jobs should checkpoint periodically regardless, but knowing the window exists lets you plan around it.&lt;/P&gt;
&lt;P data-line="62"&gt;For security-conscious customers (and if you're handling inference at scale, you should be), Security Advisories flag vulnerabilities in services you're actually using. Not theoretical risks across all of Azure, just the ones relevant to your deployment.&lt;/P&gt;
&lt;H2&gt;Setup checklist&lt;/H2&gt;
&lt;P&gt;Open Azure Monitor, go to Alerts, create a new alert rule:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Select Service Health as the signal type:&lt;/P&gt;
&lt;img /&gt;
&lt;P data-line="74"&gt;Then configure:&lt;/P&gt;
&lt;UL data-line="76"&gt;
&lt;LI data-line="76"&gt;Set scope to your subscription (not a resource group)&lt;/LI&gt;
&lt;LI data-line="77"&gt;Signal type: Activity log, then Service Health&lt;/LI&gt;
&lt;LI data-line="78"&gt;Enable all four event types: Service Issues, Health Advisories, Planned Maintenance, Security Advisories&lt;/LI&gt;
&lt;LI data-line="79"&gt;Select all services (you'll only get alerts for ones deployed in your subscription/region)&lt;/LI&gt;
&lt;LI data-line="80"&gt;Create an action group: email, Teams webhook, or both&lt;/LI&gt;
&lt;LI data-line="81"&gt;Repeat for every subscription (or just disable the old rule if updating)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="83"&gt;Or skip the manual work: assign the built-in Azure Policy at your management group level and let it propagate. Remember to create a remediation task for existing subscriptions.&lt;/P&gt;
&lt;H2&gt;Further reading&lt;/H2&gt;
&lt;OL data-line="87"&gt;
&lt;LI data-line="87"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/service-health/" data-href="https://learn.microsoft.com/en-us/azure/service-health/" target="_blank"&gt;Azure Service Health overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="88"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-create-activity-log-alert-rule" data-href="https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-create-activity-log-alert-rule" target="_blank"&gt;Create activity log alert rules&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="89"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/resource-manager-alerts-service-health" data-href="https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/resource-manager-alerts-service-health" target="_blank"&gt;ARM templates for Service Health alerts&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="90"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/service-health/service-health-alert-deploy-policy" data-href="https://learn.microsoft.com/en-us/azure/service-health/service-health-alert-deploy-policy" target="_blank"&gt;Deploy alerts at scale with Azure Policy&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="91"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/linux/scheduled-events" data-href="https://learn.microsoft.com/en-us/azure/virtual-machines/linux/scheduled-events" target="_blank"&gt;Scheduled Events for Azure VMs&lt;/A&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Jul 2026 22:26:55 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/azure-service-health-has-four-alert-types-you-probably/ba-p/4537501</guid>
      <dc:creator>rmmartins</dc:creator>
      <dc:date>2026-07-15T22:26:55Z</dc:date>
    </item>
    <item>
      <title>Business verification auto failed after 5 minutes, can not find the founders hub or support in Azure</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/business-verification-auto-failed-after-5-minutes-can-not-find/m-p/4536518#M146</link>
      <description>&lt;P&gt;Hi team,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Would really appreciate your help here 🙏&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We applied for Microsoft for Startups Level 2 and my business verification was auto rejected.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I entered my Australian Business Number (ABN). The form asked for a 21 character alphanumeric entry, which doesn't match Australia's standard 11 digit format. I adjusted my entry to fit by adding 0's at the start.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now it is telling me that I will move to pay as you go after the inital level of credits expire. One of the reasons I've paid to get a business registered was so we could use level 2 credits to keep building. I have been looking for hours but can not find any way to lodge a ticket or speak to someone. I messages Azure support on X and they said they can not help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does anyone have any guidance here? It would be very much appreciated.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Best regards,&lt;/P&gt;&lt;P&gt;Jake&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Jul 2026 13:53:51 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/business-verification-auto-failed-after-5-minutes-can-not-find/m-p/4536518#M146</guid>
      <dc:creator>Starloop</dc:creator>
      <dc:date>2026-07-13T13:53:51Z</dc:date>
    </item>
    <item>
      <title>Azure OpenAI quota approved but GPT-5.5 still shows 0 quota in Azure AI Foundry (Founders Hub)</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/azure-openai-quota-approved-but-gpt-5-5-still-shows-0-quota-in/m-p/4535755#M144</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;I'm hoping someone from the Microsoft for Startups or Azure AI team can help point me in the right direction. I've reached a point where I believe this is a backend provisioning issue rather than a quota request issue.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Environment&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Microsoft for Startups Founders Hub subscription&lt;/LI&gt;&lt;LI&gt;Active Founders Hub Azure credits&lt;/LI&gt;&lt;LI&gt;Azure AI Foundry&lt;/LI&gt;&lt;LI&gt;Azure OpenAI resource in &lt;STRONG&gt;East US 2&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;Deployment type: &lt;STRONG&gt;Global Standard&lt;/STRONG&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;What happened&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;I submitted a quota request for GPT-5.5.&lt;/LI&gt;&lt;LI&gt;The first request was denied because I selected the wrong region.&lt;/LI&gt;&lt;LI&gt;I resubmitted for &lt;STRONG&gt;East US 2&lt;/STRONG&gt;.&lt;/LI&gt;&lt;LI&gt;The request was approved.&lt;/LI&gt;&lt;LI&gt;I received an email stating my quota was increased to:&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;200 quota&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;200,000 TPM&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;600 RPM&lt;/STRONG&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;However, Azure AI Foundry still shows &lt;STRONG&gt;0 available quota&lt;/STRONG&gt; for GPT-5.5.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;Current behavior&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;GPT-5.5 appears in the Quota page.&lt;/LI&gt;&lt;LI&gt;Available quota is still &lt;STRONG&gt;0&lt;/STRONG&gt;.&lt;/LI&gt;&lt;LI&gt;I cannot create a deployment because no quota is available.&lt;/LI&gt;&lt;LI&gt;This has persisted after waiting and refreshing.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Additional information&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;My Founders Hub credits are active and linked to this subscription.&lt;/LI&gt;&lt;LI&gt;The subscription ID in the approval email matches the subscription I'm using.&lt;/LI&gt;&lt;LI&gt;Azure support suggested I was on a "free tier," but that doesn't appear consistent with an active Founders Hub sponsorship and an approved quota request.&lt;/LI&gt;&lt;LI&gt;This appears to be a case where the quota approval completed, but the quota was never actually applied to the subscription.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Has anyone seen this before, or is there someone from the Azure AI/OpenAI team who can verify the backend quota allocation?&lt;/P&gt;&lt;P&gt;I'd really appreciate any guidance or an internal escalation path.&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;</description>
      <pubDate>Fri, 10 Jul 2026 14:20:18 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/azure-openai-quota-approved-but-gpt-5-5-still-shows-0-quota-in/m-p/4535755#M144</guid>
      <dc:creator>josh_intero</dc:creator>
      <dc:date>2026-07-10T14:20:18Z</dc:date>
    </item>
    <item>
      <title>Microsoft for Startups automated verification repeatedly fails for a legally registered company</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/microsoft-for-startups-automated-verification-repeatedly-fails/m-p/4533143#M141</link>
      <description>&lt;P&gt;I am the founder of LYCI GmbH, a Swiss company legally registered in the Commercial Register of the Canton of Zürich, Switzerland. My Microsoft for Startups business verification has failed on several attempts. All company details are accurate, publicly verifiable, and were checked and confirmed in my support ticket.&lt;/P&gt;&lt;P&gt;Support consulted their Engineering team and confirmed the startup verification process is fully automated by design. There is no team able to manually review, override, or approve verification requests, and no mechanism to identify or disclose which specific check failed. Engineering confirmed no manual verification or exception is possible, and the ticket was then closed.&lt;/P&gt;&lt;P&gt;This leaves a legally registered company, with all information publicly verifiable, no path forward through the standard channel.&lt;/P&gt;&lt;P&gt;Please find closed the ticket: &lt;STRONG&gt;Tracking ID [2606250050001977]&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Request:&lt;/STRONG&gt; Could a moderator please escalate this to the Microsoft for Startups program/verification team for manual review?&lt;/P&gt;</description>
      <pubDate>Thu, 02 Jul 2026 15:53:49 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/microsoft-for-startups-automated-verification-repeatedly-fails/m-p/4533143#M141</guid>
      <dc:creator>AlexanderFaktorovitch-LYCI</dc:creator>
      <dc:date>2026-07-02T15:53:49Z</dc:date>
    </item>
    <item>
      <title>Cannot access startup verification flow</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/cannot-access-startup-verification-flow/m-p/4530749#M140</link>
      <description>&lt;P&gt;I signed up for Azure startup credits (self-service path, no investor code) approximately 83 days ago and received my initial $1,000 in credits on an Azure Sponsorship subscription. My 90-day business verification window to unlock the additional $4,000 closes within the next week.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm writing in hope that either someone from Microsoft can get me in touch with the right team, or a fellow founder has located a viable workflow that I didn't.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I've tried:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Founders Hub portal (portal.startups.microsoft.com):&lt;/STRONG&gt; Redirects to azure portal.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Azure portal home:&lt;/STRONG&gt; Shows a "Build your startup" page with an "Unlock $1,000 in Azure credits — Verify with LinkedIn" prompt. This is the initial $1,000 onboarding step, which I already completed months ago. The portal does not recognize that I am already enrolled. Clicking "Verify with LinkedIn" returns a {"error":{"code":"BadRequest","message":"BadRequest (Conflict)"}} response from startupsweb.production.portalrp.azure.com/api/auth/linkedin/callback.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Azure support ticket:&lt;/STRONG&gt; Filed a ticket under Benefits - Offers / Entitlement check (ticket #2606240010000362). The T1 agent is not reading the content of my messages and keeps directing me back to the Founders Hub portal and the same broken links. He is attempting to close the ticket without resolution.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;email address removed for privacy reasons:&lt;/STRONG&gt; Received an auto-reply that this is an unmonitored inbox directing me to submit a ticket through the Founders Hub portal — which redirects to the aforementioned dead end workflow.&lt;/P&gt;&lt;P&gt;I believe this is related to the program experience migration that went live May 29, 2026. My account was created before this date, so per Microsoft's own documentation I should be on the pre-migration portal experience, but neither the old nor new experience is functional for my account. It seems like those of us with in-progress states are just getting lost in the shuffle of the migration.&lt;/P&gt;</description>
      <pubDate>Wed, 24 Jun 2026 21:36:58 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/cannot-access-startup-verification-flow/m-p/4530749#M140</guid>
      <dc:creator>jhoffmanSpilledInc</dc:creator>
      <dc:date>2026-06-24T21:36:58Z</dc:date>
    </item>
    <item>
      <title>From Error Log to Closed Ticket, Without Leaving Your Terminal</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/from-error-log-to-closed-ticket-without-leaving-your-terminal/ba-p/4526859</link>
      <description>&lt;ARTICLE&gt;&lt;/ARTICLE&gt;
&lt;ARTICLE&gt;
&lt;BLOCKQUOTE&gt;You describe the problem. The assistant pulls the context from what you already have, drafts the ticket, files it, tracks the replies, and closes it out, and it asks before it does anything irreversible.&amp;nbsp;&lt;STRONG&gt;No portal tabs. No re-typing the resource ID Azure already knows.&lt;/STRONG&gt;
&lt;P class="repo-link"&gt;See a quick demo or jump straight to the code: &lt;A href="https://github.com/Azure-Samples/azure_support_ticket_mcp" target="_blank" rel="noopener"&gt;https://github.com/Azure-Samples/azure_support_ticket_mcp&lt;/A&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;The common challenge&lt;/H2&gt;
&lt;P&gt;Every team running on Azure eventually opens a support ticket. Here is the catch: the investigation happens in your terminal or editor, but the ticket frequently happens in a browser. Bridging those two worlds is pure overhead, and you pay it at the worst possible moment, mid-incident.&lt;/P&gt;
&lt;P&gt;Opening one ticket means stepping through:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Confirm the tenant, pick the subscription.&lt;/LI&gt;
&lt;LI&gt;Find the right support service among hundreds.&lt;/LI&gt;
&lt;LI&gt;Drill down a per-service problem-classification tree.&lt;/LI&gt;
&lt;LI&gt;Set severity, enter contact details, write up the issue.&lt;/LI&gt;
&lt;LI&gt;Re-type the resource ID and error you were just looking at.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;And filing is only the start. A support ticket is a conversation: replies to read, follow-up questions to answer, logs to attach, a status to flip when it resolves. Each one is another trip to the portal, another context switch out of the place you actually work.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The value proposition is simple:&lt;/STRONG&gt; collapse that entire lifecycle into the place you already work, in plain language, in seconds. Stay in flow. Let the assistant do the mechanical parts and keep the decisions for yourself.&lt;/P&gt;
&lt;H2&gt;How the lifecycle works&lt;/H2&gt;
&lt;P&gt;Every ticket follows the same path, and the same safety gate sits in the middle of it. Opening a ticket runs left to right; once it exists, the same conversational interface carries it through the rest of its life.&lt;/P&gt;
&lt;/ARTICLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;ARTICLE&gt;
&lt;P&gt;&lt;STRONG&gt;The second lane is the part most ticket tools skip.&lt;/STRONG&gt; Once a ticket is open, support is a two-way conversation, and the server handles that side too: read the full thread of customer and Microsoft replies, get a local summary of where things stand, reply to the support engineer, and attach logs, traces, or screenshots, all without returning to the portal.&lt;/P&gt;
&lt;P&gt;That preview-then-confirm gate is the whole trust model. The first call returns exactly what is about to happen; the second call carries it out, and only if nothing changed in between. Reading, summarizing, and triaging are instant, with nothing to approve; creating, replying, attaching, and closing always pause for your yes.&lt;/P&gt;
&lt;H2&gt;The Solution&lt;/H2&gt;
&lt;P&gt;The Azure Support Ticket MCP is a &lt;A href="https://en.wikipedia.org/wiki/Model_Context_Protocol" target="_blank" rel="noopener"&gt;Model Context Protocol&lt;/A&gt; (MCP) server that exposes the Azure support ticket lifecycle as a set of conversational tools. Three things make it more than a thin API wrapper:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;It infers context.&lt;/STRONG&gt; Give it a resource ID or a portal URL and it reads the subscription, resource group, and service from it, then ranks the right problem classification from your description instead of making you walk the tree.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;It is local-first.&lt;/STRONG&gt; The Azure support catalog, the services and their problem-classification trees, is cached on disk, so the common path is instant and works even on a flaky connection.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;It is safe by design.&lt;/STRONG&gt; Every action that changes something is preview-then-confirm: nothing reaches Azure until you approve the exact payload.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Getting started&lt;/H3&gt;
&lt;OL class="steps"&gt;
&lt;LI&gt;Install the binary (a single command, the repo &lt;A href="https://github.com/Azure-Samples/azure_support_ticket_mcp#readme" target="_blank" rel="noopener"&gt;README&lt;/A&gt; has the current one-liner).&lt;/LI&gt;
&lt;LI&gt;Register it with your MCP-capable assistant.&lt;/LI&gt;
&lt;LI&gt;Start describing problems in plain language.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The fastest way in is to pipe a failure straight from your terminal into a ticket:&lt;/P&gt;
&lt;/ARTICLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;# a failed infra provision
copilot -i "ticket this: $(azd up 2&amp;gt;&amp;amp;1)"
# a misbehaving pod
copilot -i "ticket this: $(kubectl describe pod my-pod)"
# a red CI run
copilot -i "ticket this: $(gh run view &amp;lt;run-id&amp;gt; --log-failed)"&lt;/LI-CODE&gt;
&lt;DIV class="term"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;ARTICLE&gt;
&lt;P&gt;From that raw output, the server extracts the resource IDs, error codes, correlation IDs, and HTTP status, takes a first guess at severity, and scrubs obvious secrets on a best-effort basis. You then review and approve the full draft before any ticket is created, so anything the scrub might miss is still in front of you to catch first. Prefer plain English? That works too:&lt;/P&gt;
&lt;DIV class="term"&gt;&lt;LI-CODE lang="bash"&gt;copilot -i "open a ticket — my AKS cluster prod-aks can’t scale out"&lt;/LI-CODE&gt;&lt;/DIV&gt;
&lt;H2&gt;In short&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;The problem:&lt;/STRONG&gt; filing and managing Azure support tickets pulls you out of your flow into a multi-step portal process, again and again, over the life of each ticket.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;MCP:&lt;/STRONG&gt; an open standard that lets AI assistants take real, permissioned actions through tools, not just answer questions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;The solution:&lt;/STRONG&gt; an open-source MCP server that runs the whole ticket lifecycle from your terminal, context-aware, local-first, and gated by preview-then-confirm.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/ARTICLE&gt;
&lt;ARTICLE&gt;
&lt;DIV class="cta"&gt;
&lt;BLOCKQUOTE&gt;
&lt;H2&gt;Try it, or read the code&lt;/H2&gt;
&lt;P&gt;It is open source under the MIT license. A short demo, installation, the full capability list, and the design notes are all in the repository — issues, ideas, and pull requests welcome.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/Azure-Samples/azure_support_ticket_mcp" target="_blank" rel="noopener"&gt;https://github.com/Azure-Samples/azure_support_ticket_mcp&lt;/A&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;/DIV&gt;
&lt;/ARTICLE&gt;</description>
      <pubDate>Mon, 15 Jun 2026 19:55:53 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/from-error-log-to-closed-ticket-without-leaving-your-terminal/ba-p/4526859</guid>
      <dc:creator>lovanartem</dc:creator>
      <dc:date>2026-06-15T19:55:53Z</dc:date>
    </item>
    <item>
      <title>Azure Startup Credit Issue</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/azure-startup-credit-issue/m-p/4526779#M134</link>
      <description>&lt;P&gt;Hi, I've been trying to verify my LinkedIn account to unlock $1,000 in Azure startup credits for over a week. Every time the OAuth callback hits error and, I get: {"error":{"code":"BadRequest","message":"BadRequest (Conflict)"}}.&lt;BR /&gt;&lt;BR /&gt;I've revoked all LinkedIn app permissions on both LinkedIn and Microsoft sides. I suspect that the issue is an orphaned LinkedIn identity record in your backend from a previous failed attempt. My support ticket has gone unanswered for over a week now and I also created a post in the learn community that went unanswered for days now.&lt;BR /&gt;&lt;BR /&gt;Could you point me to the right person? Happy to provide any account details needed.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Jun 2026 12:28:44 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/azure-startup-credit-issue/m-p/4526779#M134</guid>
      <dc:creator>OzanTuranli</dc:creator>
      <dc:date>2026-06-09T12:28:44Z</dc:date>
    </item>
    <item>
      <title>Urgent Guidance Needed - Azure Credits Exhausted During Active AI Infrastructure Scaling</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/urgent-guidance-needed-azure-credits-exhausted-during-active-ai/m-p/4520553#M129</link>
      <description>&lt;P&gt;Hello Microsoft for Startups Community,&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;My name is Joseph Thomas, and I am currently building our startup through Microsoft for Startups Founders Hub. We have recently exhausted both our initial and extended Azure sponsorship allocations ($1,000 and the subsequent $5,000 sponsorship tier).&lt;/P&gt;&lt;P&gt;Our team is actively scaling AI infrastructure entirely on Azure, including Azure AI Foundry workloads, multi-model orchestration, inference pipelines, and cloud application infrastructure. As development and deployment activity accelerated, our Azure consumption grew significantly faster than originally projected.&lt;/P&gt;&lt;P&gt;We are now beginning to see active billing charges accrue, and I am working proactively to avoid disruption to our ongoing production and development environments. I have already submitted support requests through both the Founders Hub portal and Azure Billing Support.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;I wanted to reach out to the community here to ask:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Has anyone successfully secured additional sponsorship credits or a sponsorship extension after exhausting their initial allocations?&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;&lt;LI&gt;What is the best escalation path for an AI startup heavily invested in Azure AI Foundry and Azure infrastructure?&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;&lt;LI&gt;Has anyone recently gone through the “Level Up” review or higher sponsorship-tier evaluation process, and if so, do you have any recommendations?&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;We are fully committed to building long term on Azure and would greatly appreciate any guidance, recommendations, or insight from other founders or Microsoft team members who have navigated this stage successfully.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Thank you for your time.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Joseph Thomas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 18 May 2026 08:00:54 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/urgent-guidance-needed-azure-credits-exhausted-during-active-ai/m-p/4520553#M129</guid>
      <dc:creator>PLIMSOLL</dc:creator>
      <dc:date>2026-05-18T08:00:54Z</dc:date>
    </item>
    <item>
      <title>Unable to access Founders Hub portal - M365 benefit redemption blocked</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/unable-to-access-founders-hub-portal-m365-benefit-redemption/m-p/4517095#M127</link>
      <description>&lt;P&gt;I am an approved Founders Hub member with an active $1,000 Azure credit and I am unable to access the Founders Hub portal or redeem my Microsoft 365 Business Premium benefit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have already contacted Azure Billing Support regarding this issue, but I believe this falls under your team's remit rather than billing, so I am reaching out directly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The issues I am experiencing:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1.&amp;nbsp;portal.startups.microsoft.com/login&amp;nbsp;only offers a "Log in with LinkedIn" option — my Founders Hub account is not linked to LinkedIn, so this does not work for me.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. Clicking "Log in with your Microsoft account here" redirects me to&amp;nbsp;portal.startups.microsoft.com/signup, which is the new user signup page — not a login page.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;3. Navigating directly to&amp;nbsp;portal.startups.microsoft.com&amp;nbsp;also lands on the signup page with no way to manually enter my Microsoft account email.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;All roads lead back to the same circular loop with no resolution.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My Founders Hub account is registered under a gmail not my custom domain. I am fully signed into the Azure Portal (portal.azure.com) with this account and can confirm my Azure credit is active.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I need help with:&lt;/P&gt;&lt;P&gt;- Accessing my existing Founders Hub account&lt;/P&gt;&lt;P&gt;- Redeeming the Microsoft 365 Business Premium benefit&lt;/P&gt;&lt;P&gt;- Setting up a Microsoft 365 tenant so I can use Teams under my custom domain&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please advise on how to proceed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 05 May 2026 21:03:41 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/unable-to-access-founders-hub-portal-m365-benefit-redemption/m-p/4517095#M127</guid>
      <dc:creator>Macdmacd</dc:creator>
      <dc:date>2026-05-05T21:03:41Z</dc:date>
    </item>
    <item>
      <title>Startup credits expired silently — GPT-5.5 charges — is there any path to resolution?</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/startup-credits-expired-silently-gpt-5-5-charges-is-there-any/m-p/4516223#M119</link>
      <description>&lt;P&gt;I've been in the Microsoft for Startups program since August 2025. My &lt;STRONG&gt;€5,000 credits expired&lt;/STRONG&gt; on April 12 &lt;STRONG&gt;with no notification&lt;/STRONG&gt;. I checked my entire mailbox and there is nothing from Microsoft about it.&lt;/P&gt;&lt;P&gt;On April 27, I deployed GPT-5.5 on Foundry — two days after Microsoft released it — still believing I was covered. I found out on April 29 by checking my own consumption data and shut everything down immediately.&lt;/P&gt;&lt;P&gt;I launched my AI startup in production two weeks ago. The invoice for April hasn't arrived yet but I estimate it at €4,000–5,000. This could end my company.&lt;/P&gt;&lt;P&gt;I've been through two levels of billing support and both say they cannot adjust charges. I've now escalated to the support manager.&lt;/P&gt;&lt;P&gt;My question: has anyone been through this and found a path to resolution? And does anyone have a contact at Microsoft for Startups with actual decision-making authority?&lt;/P&gt;&lt;P&gt;I'm not looking to debate the policy. I'm looking for a human at Microsoft who understands what "startup" means.&lt;/P&gt;</description>
      <pubDate>Thu, 30 Apr 2026 13:00:17 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/startup-credits-expired-silently-gpt-5-5-charges-is-there-any/m-p/4516223#M119</guid>
      <dc:creator>Noviamind</dc:creator>
      <dc:date>2026-04-30T13:00:17Z</dc:date>
    </item>
    <item>
      <title>Can't login to Startup Portal</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/can-t-login-to-startup-portal/m-p/4515674#M117</link>
      <description>&lt;P&gt;When I try to login using my email and password, I keep getting prompted to apply for the start up program. I'm using the same account I use for the Azure portal and it shows my proper credits.&lt;/P&gt;&lt;P&gt;How can I find out what's wrong?&lt;/P&gt;</description>
      <pubDate>Wed, 29 Apr 2026 00:14:13 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/can-t-login-to-startup-portal/m-p/4515674#M117</guid>
      <dc:creator>lspstartup</dc:creator>
      <dc:date>2026-04-29T00:14:13Z</dc:date>
    </item>
    <item>
      <title>The flat-subscription problem</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/the-flat-subscription-problem/ba-p/4513777</link>
      <description>&lt;P&gt;&lt;EM&gt;A real design review: management groups, policies, break-glass accounts, and the five things I'd tweak before going to production.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Here's what I see at most startups when they first show up on Azure: one subscription, one Global Admin, everything in the same resource group, and everyone's an Owner.&lt;/P&gt;
&lt;P&gt;That works when you have three engineers and one environment. It stops working around the time you have a production workload, a dev environment, shared infrastructure, and an engineer who accidentally deleted the wrong resource group on a Friday afternoon.&lt;/P&gt;
&lt;P&gt;The next step is usually "let's create more subscriptions." That's the right instinct. But without management groups and policies tying them together, you end up with four subscriptions, four sets of inconsistent RBAC assignments, no shared tagging strategy, and no audit trail showing who deployed what.&lt;/P&gt;
&lt;P&gt;If you're at this stage and want a starting point, the &lt;A class="lia-external-url" href="https://aka.ms/sslz" target="_blank"&gt;Startup-Scale Landing Zone&lt;/A&gt; gives you an opinionated Bicep template with management groups, policies, and RBAC already wired together. This post goes deeper: what happens when a team takes those concepts and customizes them for their own environment.&lt;/P&gt;
&lt;H2&gt;The design&lt;/H2&gt;
&lt;P&gt;A startup VP of Engineering sent me their proposed management group hierarchy and asked me to review it before going to production. They'd done their homework: read the &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups" target="_blank"&gt;Cloud Adoption Framework&lt;/A&gt; docs, researched config options, and put together a three-level hierarchy with specific policies and RBAC at each level.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Here's the breakdown:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Tenant Root Group&lt;/STRONG&gt; is the automatic top-level MG that Azure creates in every tenant. Be very selective about what you assign here. Anything at this level affects every subscription you'll ever create, including ones that don't exist yet. Some organizations do assign enterprise-wide "must have" policies at root, but for a startup still figuring out its governance posture, keeping root clean and pushing baselines to a company MG one level down gives you more flexibility.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Company MG&lt;/STRONG&gt; sits directly below and carries the baseline that applies to everything: required tags on all resources (env, owner, cost-center, app), allowed regions locked to three US regions, Defender for Cloud enabled everywhere, and all diagnostic logs routed to a central Log Analytics workspace. Engineering gets Reader at this level, so everyone can see everything but can't change anything by default.&lt;/P&gt;
&lt;P&gt;Three child MGs below that:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Nonprod MG&lt;/STRONG&gt; is the relaxed zone. Tags are audited but not denied, so engineers can experiment without being blocked by policy. Public IPs are allowed. Engineering gets Contributor. This is where you iterate fast without filing PIM requests.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Prod MG&lt;/STRONG&gt; is the strict zone. Tags are denied if missing. Public IPs are blocked. Encryption at rest is required. VM SKUs are restricted. Engineering gets Reader by default, and Contributor access is available through &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/entra/id-governance/privileged-identity-management/pim-configure" target="_blank"&gt;PIM&lt;/A&gt; (just-in-time, time-limited activation). You have to explicitly request write access, and it expires.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Platform MG&lt;/STRONG&gt; protects the shared infrastructure that everything depends on. The Terraform state storage account, central Log Analytics workspace, and shared Key Vault all live here. Platform team gets Contributor; everyone else gets Reader. Critical resources are protected from deletion.&lt;/P&gt;
&lt;P&gt;Under each MG, the subscriptions:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;MG&lt;/th&gt;&lt;th&gt;Subscription&lt;/th&gt;&lt;th&gt;Purpose&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Nonprod&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;dev&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Development and testing&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Nonprod&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;devtest&lt;/STRONG&gt; (MSDN)&lt;/td&gt;&lt;td&gt;Engineer's personal scratch (MSDN-bound)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Prod&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;prod&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Production workloads&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Platform&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;cloud-infra&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Terraform state, Log Analytics, Key Vault, workload identity&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;The parts that nail it&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;The hierarchy is flat and functional.&lt;/STRONG&gt; CAF says keep it &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups" target="_blank"&gt;three to four levels deep&lt;/A&gt; and don't create management groups just for the sake of structure. This design does exactly that: a company MG for baselines, then Nonprod/Prod/Platform for the policy gradient. It's not "the one CAF pattern" (CAF deliberately avoids prescribing a single topology), but it's a clean startup pattern that scales to dozens of subscriptions without restructuring.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Audit in dev, deny in prod.&lt;/STRONG&gt; Dev environments that deny everything become unusable. Engineers stop experimenting. Prod environments that only audit become insecure. The split is the right trade-off: visibility without friction in dev, enforcement without exceptions in prod.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The platform subscription for shared services.&lt;/STRONG&gt; Centralizing Terraform state, the Log Analytics workspace, and shared Key Vault into a separate subscription (with its own RBAC) means application teams can't accidentally delete the infrastructure that manages their infrastructure. This is the "trust boundary" pattern, and most startups skip it until they learn the hard way.&lt;/P&gt;
&lt;H2&gt;What i'd change before going live&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;PIM licensing isn't one-seat-fits-all.&lt;/STRONG&gt; They mentioned having "1 P2 seat" for PIM. &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/entra/id-governance/licensing-fundamentals" target="_blank"&gt;PIM requires an Entra ID P2 (or Governance) license&lt;/A&gt; per user who's eligible for activation, plus anyone who approves or reviews PIM access. If four engineers need just-in-time Contributor access to production and one manager approves, that's five P2 licenses (~$9/user/month). Still cheap insurance compared to "everyone has standing Contributor," but budget for it correctly.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Think about SKU restrictions as a trade-off.&lt;/STRONG&gt; Their prod MG had "restrict to approved SKUs." An allow-list gives you strict standardization (only pre-approved SKUs work), but every time Azure launches a new VM series, someone has to update it. A deny-list ("block these specific expensive or unnecessary SKUs") is easier to maintain since new SKUs are available by default. The right choice depends on your team: if you need tight control over what runs in prod, keep the allow-list. If you move fast and want less policy maintenance, a deny-list with periodic reviews is simpler.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Resource locks beat policy for protecting critical infra.&lt;/STRONG&gt; Their Platform MG had "deny deletion of state storage / log workspace" as a policy. &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources" target="_blank"&gt;Azure Resource Locks&lt;/A&gt; (CanNotDelete) are simpler and more visible for this. A lock shows up right on the resource in the portal, so engineers see it immediately. A deny-delete policy is invisible until it blocks you, and the error message doesn't always make it obvious why. Locks are also easier to temporarily remove when you legitimately need to rotate or replace a resource.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Add cost alerts on every subscription from day one.&lt;/STRONG&gt; Their design didn't mention budget alerts. &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-acm-create-budgets" target="_blank"&gt;Azure Cost Management&lt;/A&gt; lets you set budget thresholds per subscription with email and webhook notifications. Set them before any workloads deploy, not after the first surprise bill. Start with 80% and 100% of expected monthly spend. It takes 5 minutes and can save thousands.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Cap the MSDN subscription.&lt;/STRONG&gt; Their devtest sub was MSDN-bound, described as "personal scratch." MSDN subscriptions come with a monthly credit ($50-$150 depending on the license tier), but the &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/devtest/offer/how-to-manage-the-spending-limit" target="_blank"&gt;spending limit can be removed&lt;/A&gt;, which means charges hit a valid payment method with no cap. Keep the spending limit ON for scratch subs. If it's been removed, set a budget alert at the credit amount. Also note that some Marketplace and external services may bill separately regardless of the spending limit.&lt;/P&gt;
&lt;H2&gt;The break-glass question&lt;/H2&gt;
&lt;P&gt;This team was federating their primary domain with Google Workspace as the SAML identity provider (their whole company runs on Google). They asked: "Can I use my .onmicrosoft.com account as a break-glass account while my federated &lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="241535" data-lia-user-login="company" class="lia-mention lia-mention-user"&gt;company&lt;/a&gt;.com is my daily driver?"&lt;/P&gt;
&lt;P&gt;Yes. This is exactly the pattern Microsoft recommends.&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/security/benchmark/azure/mcsb-privileged-access#pa-5-set-up-emergency-access" target="_blank"&gt;Microsoft's security benchmark (PA-5)&lt;/A&gt; specifically calls for cloud-only break-glass accounts that bypass external IdP dependencies. If your Google SAML federation goes down (Google outage, misconfigured SAML cert, domain issues), all federated accounts fail to sign in. Cloud-only .onmicrosoft.com accounts authenticate directly against Entra ID with no external dependency.&lt;/P&gt;
&lt;P&gt;How to harden them:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Create two break-glass accounts.&lt;/STRONG&gt; Microsoft recommends at least two. Store credentials in separate physical locations. One person alone shouldn't be able to access both. Docs: &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/security-emergency-access" target="_blank"&gt;Manage emergency access accounts&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Use phishing-resistant auth.&lt;/STRONG&gt; Passkeys (FIDO2 security keys) are the strongest option: phishing-resistant and no dependency on a phone or authenticator app that might be unavailable during an emergency. If you already run PKI, certificate-based auth is another viable option. The key is diversity across your two accounts so a single authentication method failure doesn't lock out both. Docs: &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/entra/identity/authentication/howto-authentication-passwordless-security-key" target="_blank"&gt;Enable FIDO2 security key sign-in&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Exclude at least one account from ALL Conditional Access policies.&lt;/STRONG&gt; This is the account that guarantees access if a bad CA policy locks everyone out. Microsoft recommends excluding at least one break-glass account from every CA policy. The second account can optionally have phishing-resistant MFA enforced via CA, giving you a safer fallback for non-federation emergencies.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Assign Global Administrator permanently.&lt;/STRONG&gt; Not through PIM. Break-glass accounts need immediate access. PIM activation requires the normal auth flow, which defeats the purpose in an emergency.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Monitor every sign-in.&lt;/STRONG&gt; Set up alerts in Azure Monitor or Microsoft Sentinel for any authentication from a break-glass account. If these accounts show activity outside an emergency, investigate immediately.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Test quarterly.&lt;/STRONG&gt; Actually sign in with the break-glass accounts on a schedule. Verify the credentials work, the FIDO2 keys work, and the monitoring alert fires. Don't wait for a real emergency to discover something is broken.&lt;/P&gt;
&lt;H2&gt;The pre-production governance checklist&lt;/H2&gt;
&lt;P&gt;Before deploying workloads into your new hierarchy, verify:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;All subscriptions are nested under the correct MG (not dangling under Tenant Root Group)&lt;/LI&gt;
&lt;LI&gt;Baseline policies applied at the company MG and verified with &lt;CODE&gt;Get-AzPolicyAssignment&lt;/CODE&gt;&lt;/LI&gt;
&lt;LI&gt;PIM configured with appropriate activation duration (4-8 hours max)&lt;/LI&gt;
&lt;LI&gt;P2 licenses assigned to every user eligible for PIM activation, plus approvers and reviewers&lt;/LI&gt;
&lt;LI&gt;Two break-glass accounts exist, tested, and monitored&lt;/LI&gt;
&lt;LI&gt;At least one break-glass account excluded from all Conditional Access policies&lt;/LI&gt;
&lt;LI&gt;Budget alerts set on every subscription (80% and 100% thresholds)&lt;/LI&gt;
&lt;LI&gt;Resource locks on Terraform state, Log Analytics workspace, and Key Vault&lt;/LI&gt;
&lt;LI&gt;MSDN spending limit verified ON (or budget alert set if removed)&lt;/LI&gt;
&lt;LI&gt;Diagnostic settings routing all activity logs to the central Log Analytics workspace&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Where this fits in the governance journey&lt;/H2&gt;
&lt;P&gt;If you're building Azure governance from zero, here's my recommended reading order:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/demystifying-microsoft-entra-id-tenants-and-azure-subscriptions/4155261" data-lia-auto-title="Demystifying Microsoft Entra ID, Tenants and Azure Subscriptions" data-lia-auto-title-active="0" target="_blank"&gt;Demystifying Microsoft Entra ID, Tenants and Azure Subscriptions&lt;/A&gt; - understand what tenants, subscriptions, and Entra ID actually are&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/azure-has-three-permission-systems-and-youre-probably-confusing-them/4471854" data-lia-auto-title="Azure has three permission systems, and you're probably confusing them" data-lia-auto-title-active="0" target="_blank"&gt;Azure has three permission systems, and you're probably confusing them&lt;/A&gt; - the identity, resource, and billing planes&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;This post&lt;/STRONG&gt; - design your management group hierarchy&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/role-structures-anti-patterns-and-the-10-governance-principles/4510070" data-lia-auto-title="Role Structures, Anti-Patterns, and the 10 Governance Principles" data-lia-auto-title-active="0" target="_blank"&gt;Role Structures, Anti-Patterns, and the 10 Governance Principles&lt;/A&gt; - RBAC patterns and what not to do&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/introducing-the-startup-scale-landing-zone-get-azure-right-from-day-one/4501566" data-lia-auto-title="Introducing the Startup-Scale Landing Zone" data-lia-auto-title-active="0" target="_blank"&gt;Introducing the Startup-Scale Landing Zone&lt;/A&gt; - the full reference architecture&lt;/LI&gt;
&lt;/OL&gt;</description>
      <pubDate>Wed, 22 Apr 2026 19:06:12 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/the-flat-subscription-problem/ba-p/4513777</guid>
      <dc:creator>rmmartins</dc:creator>
      <dc:date>2026-04-22T19:06:12Z</dc:date>
    </item>
    <item>
      <title>Your Azure VM went down and nobody knew why. Here's how to fix that.</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/your-azure-vm-went-down-and-nobody-knew-why-here-s-how-to-fix/ba-p/4513733</link>
      <description>&lt;P&gt;If you've ever had a production VM go unhealthy on Azure and found yourself scrambling to figure out what happened, you're not alone. I work with startups running production workloads on Azure, and this is one of the most common patterns I see: something goes wrong, the team opens a support ticket, and then everyone waits for a root cause while the CTO asks "how do we make sure we know about this before our customers do next time?"&lt;/P&gt;
&lt;P&gt;The good news: Azure already gives you the tools to answer both questions. Most teams just haven't set them up yet.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Scope note:&lt;/STRONG&gt; This post covers &lt;STRONG&gt;platform health and maintenance signals&lt;/STRONG&gt; for Azure VMs. We're not covering guest OS metrics, application telemetry, or Azure Monitor/VM Insights here. If you don't have a dedicated SRE team, these are the highest-leverage Azure-native checks to set up first.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Let's get into it.&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Step 1: Figure out what actually happened (Resource Health)&lt;/H2&gt;
&lt;P&gt;Before you open a support ticket, check &lt;STRONG&gt;Resource Health&lt;/STRONG&gt;. It's the fastest way to determine whether your VM went down because of something Azure did (platform event) or something on your side (user-initiated or config issue).&lt;/P&gt;
&lt;P&gt;Go to your VM in the Azure portal &amp;gt; &lt;STRONG&gt;Resource Health&lt;/STRONG&gt; blade. You'll see:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Current status&lt;/STRONG&gt;: Available, Unavailable, Degraded, or Unknown&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Health history&lt;/STRONG&gt;: 30 days of state transitions with annotations explaining each one&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Root cause&lt;/STRONG&gt;: For platform-initiated outages on VMs, Azure automatically publishes root cause details within 72 hours, directly in this blade&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The annotations often tell you what kind of event occurred: live migration, host reboot, planned maintenance, degraded hardware, etc. In many cases, you get this information without filing a support ticket.&lt;/P&gt;
&lt;P&gt;If your VM was affected by a live migration, the annotation will show it was a platform-initiated event. Live migration is a memory-preserving operation that causes a brief pause, typically no more than 5 seconds (&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/maintenance-and-updates#maintenance-that-doesnt-require-a-reboot" target="_blank" rel="noopener"&gt;docs&lt;/A&gt;). But if your application is sensitive to even short freezes, or if you're seeing them frequently, that's worth investigating further.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Docs:&lt;/STRONG&gt; &lt;A href="https://learn.microsoft.com/en-us/azure/service-health/resource-health-overview" target="_blank" rel="noopener"&gt;Resource Health overview&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Step 2: Get notified when it happens (Service Health + Resource Health Alerts)&lt;/H2&gt;
&lt;P&gt;Checking the portal after an incident is fine. Getting an alert &lt;EM&gt;when&lt;/EM&gt; the incident happens is better.&lt;/P&gt;
&lt;H3&gt;Service Health Alerts&lt;/H3&gt;
&lt;P&gt;These notify you about service issues, planned maintenance, health advisories, and security advisories for the Azure services and regions you're actually using. Service Health is best for subscription-level and region-level awareness. If there's a regional maintenance wave driving elevated live migrations, this is how you'd know about it proactively.&lt;/P&gt;
&lt;P&gt;Set them up to notify your ops channel via email, SMS, webhook (Slack, PagerDuty, Teams), or automation via Logic Apps or Azure Functions.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Docs:&lt;/STRONG&gt; &lt;A href="https://learn.microsoft.com/en-us/azure/service-health/alerts-activity-log-service-notifications-portal" target="_blank" rel="noopener"&gt;Create Service Health alerts&lt;/A&gt; | &lt;A href="https://learn.microsoft.com/en-us/azure/service-health/service-health-alert-webhook-pagerduty" target="_blank" rel="noopener"&gt;PagerDuty integration&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;Resource Health Alerts&lt;/H3&gt;
&lt;P&gt;These fire when a specific resource (or all resources in a resource group) changes health status. The alert includes health-change details such as status, cause type (platform vs. user-initiated), and descriptive event text, so you get more than a generic "VM is unhealthy" notification.&lt;/P&gt;
&lt;P&gt;This is the "never be surprised again" alert. If you only set up one thing from this post, make it this.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Docs:&lt;/STRONG&gt; &lt;A href="https://learn.microsoft.com/en-us/azure/service-health/resource-health-alert-monitor-guide" target="_blank" rel="noopener"&gt;Create Resource Health alerts&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Step 3: See it coming (Scheduled Events API)&lt;/H2&gt;
&lt;P&gt;This is the part most teams don't know about, and it's the most powerful tool for handling live migrations gracefully.&lt;/P&gt;
&lt;P&gt;Azure exposes an &lt;STRONG&gt;Instance Metadata Service (IMDS)&lt;/STRONG&gt; endpoint on every VM that gives your application advance notice of upcoming maintenance events. Live migrations show up as &lt;CODE&gt;EventType: "Freeze"&lt;/CODE&gt;. In typical cases, you get up to ~15 minutes between the event appearing and Azure proceeding with the operation, though exact timing varies and some failures (like hardware issues) can bypass the advance notification entirely.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; Most Azure VM families support live migration, but G, L, N, and H series VMs do not. If you run GPU or HPC workloads on these SKUs, you won't see &lt;CODE&gt;Freeze&lt;/CODE&gt; events. You'll still get &lt;CODE&gt;Reboot&lt;/CODE&gt; or &lt;CODE&gt;Redeploy&lt;/CODE&gt; events for other maintenance types.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The endpoint is available from inside the VM at:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Here's an example response when a live migration is scheduled:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;{
  "DocumentIncarnation": 1,
  "Events": [
    {
      "EventId": "602d9444-d2cd-49c7-8624-8643e7171297",
      "EventType": "Freeze",
      "ResourceType": "VirtualMachine",
      "Resources": ["my-production-vm"],
      "EventStatus": "Scheduled",
      "NotBefore": "Mon, 22 Apr 2026 19:17:47 GMT",
      "Description": "Virtual machine is being paused for a memory-preserving Live Migration operation.",
      "EventSource": "Platform",
      "DurationInSeconds": 5
    }
  ]
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can poll this endpoint and use the lead time to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Drain connections&lt;/STRONG&gt; so active users aren't affected&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Checkpoint application state&lt;/STRONG&gt; to recover faster&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Remove the VM from your load balancer&lt;/STRONG&gt; temporarily&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Log the event&lt;/STRONG&gt; so you have a record of migration frequency&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Here's a simple polling script in Python:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;import requests
import json
import time

ENDPOINT = "http://169.254.169.254/metadata/scheduledevents"
HEADERS = {"Metadata": "true"}
PARAMS = {"api-version": "2020-07-01"}

def get_scheduled_events():
    response = requests.get(ENDPOINT, headers=HEADERS, params=PARAMS)
    return response.json()

def handle_events(data):
    for event in data.get("Events", []):
        print(f"[{event['EventType']}] {event.get('Description', 'No description')}")
        print(f"  Status: {event['EventStatus']}, Not Before: {event['NotBefore']}")
        print(f"  Duration: {event['DurationInSeconds']}s, Source: {event['EventSource']}")
        # Your graceful drain/checkpoint logic here

def approve_event(event_id):
    """Acknowledge the event so Azure can proceed immediately."""
    payload = json.dumps({"StartRequests": [{"EventId": event_id}]})
    requests.post(ENDPOINT, headers=HEADERS, params=PARAMS, data=payload)

# Poll frequently - the official docs recommend every 1 second for production.
# Adjust based on your workload sensitivity.
while True:
    data = get_scheduled_events()
    handle_events(data)
    time.sleep(1)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Or a quick check in Bash:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;curl -s -H "Metadata:true" --noproxy "*" \
  "http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01" | jq .&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;Event approval:&lt;/STRONG&gt; Once your application has drained connections or checkpointed state, it can approve the event by POSTing back with the &lt;CODE&gt;EventId&lt;/CODE&gt;. This tells Azure your app is ready, and the platform can proceed without waiting for the full timeout. If you don't explicitly approve, Azure proceeds when the &lt;CODE&gt;NotBefore&lt;/CODE&gt; time is reached.&lt;/P&gt;
&lt;P&gt;If you're seeing elevated frequency of live migrations, this data lets you quantify the pattern (how often, what times, what durations) and bring hard numbers to a support conversation instead of "it feels like it's happening a lot."&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Docs:&lt;/STRONG&gt; &lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machines/windows/scheduled-events" target="_blank" rel="noopener"&gt;Scheduled Events for VMs&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Step 4: Check your overall posture (Azure Advisor)&lt;/H2&gt;
&lt;P&gt;While you're at it, check &lt;STRONG&gt;Azure Advisor's Reliability recommendations&lt;/STRONG&gt; for your VMs. It flags things like:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;VMs not deployed in availability zones&lt;/LI&gt;
&lt;LI&gt;Deprecated VM images that need updating&lt;/LI&gt;
&lt;LI&gt;Missing backup configurations&lt;/LI&gt;
&lt;LI&gt;Other resiliency gaps that make you more susceptible to availability issues&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Advisor won't explain a past incident, but it can help prevent the next one.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Docs:&lt;/STRONG&gt; &lt;A href="https://learn.microsoft.com/en-us/azure/advisor/advisor-reference-reliability-recommendations" target="_blank" rel="noopener"&gt;Azure Advisor Reliability recommendations&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;A quick note on resilience&lt;/H2&gt;
&lt;P&gt;These tools improve your visibility and response time, but they don't eliminate downtime by themselves. If a VM is truly critical, pair this monitoring with basic resilience patterns: multiple instances behind a load balancer, availability zones, health probes, regular backups, and cross-region recovery where needed. Monitoring tells you what's happening. Architecture determines whether it matters.&lt;/P&gt;
&lt;H2&gt;The setup checklist&lt;/H2&gt;
&lt;H3&gt;Quick wins (15 minutes)&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-style-none" border="1" style="width: 100%; height: 246px; border-width: 1px;"&gt;&lt;thead&gt;&lt;tr style="height: 34.8px;"&gt;&lt;th style="height: 34.8px;"&gt;#&lt;/th&gt;&lt;th style="height: 34.8px;"&gt;What&lt;/th&gt;&lt;th style="height: 34.8px;"&gt;Why&lt;/th&gt;&lt;th style="height: 34.8px;"&gt;Time&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td style="height: 58.8px;"&gt;1&lt;/td&gt;&lt;td style="height: 58.8px;"&gt;Check Resource Health on your production VMs&lt;/td&gt;&lt;td style="height: 58.8px;"&gt;See if there are past events you didn't know about&lt;/td&gt;&lt;td style="height: 58.8px;"&gt;2 min&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td style="height: 58.8px;"&gt;2&lt;/td&gt;&lt;td style="height: 58.8px;"&gt;Create a Service Health alert for your regions/services&lt;/td&gt;&lt;td style="height: 58.8px;"&gt;Get notified about platform issues proactively&lt;/td&gt;&lt;td style="height: 58.8px;"&gt;3 min&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td style="height: 58.8px;"&gt;3&lt;/td&gt;&lt;td style="height: 58.8px;"&gt;Create Resource Health alerts for your VM resource groups&lt;/td&gt;&lt;td style="height: 58.8px;"&gt;Get notified when any VM changes health state&lt;/td&gt;&lt;td style="height: 58.8px;"&gt;3 min&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td style="height: 34.8px;"&gt;4&lt;/td&gt;&lt;td style="height: 34.8px;"&gt;Review Azure Advisor Reliability tab&lt;/td&gt;&lt;td style="height: 34.8px;"&gt;Fix any posture gaps&lt;/td&gt;&lt;td style="height: 34.8px;"&gt;2 min&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3&gt;Advanced hardening (1+ hours depending on your app)&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-style-none" border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;#&lt;/th&gt;&lt;th&gt;What&lt;/th&gt;&lt;th&gt;Why&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Deploy the Scheduled Events polling script on critical VMs&lt;/td&gt;&lt;td&gt;Get advance notice of live migrations and maintenance&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Implement drain/checkpoint logic tied to Scheduled Events&lt;/td&gt;&lt;td&gt;Gracefully handle maintenance with zero user impact&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;Wire event approvals into your automation&lt;/td&gt;&lt;td&gt;Control the timing of when Azure proceeds with maintenance&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;Wrapping up&lt;/H2&gt;
&lt;P&gt;The pattern I keep seeing is teams treating Azure VM monitoring as something they'll get to "later." Then an incident happens, the RCA takes longer than anyone wants, and everyone wishes they had visibility sooner.&lt;/P&gt;
&lt;P&gt;The tools are already there. Resource Health tells you what happened. Service Health and Resource Health alerts tell you when it's happening. Scheduled Events tells you before it happens. And Advisor helps you make sure your setup is resilient in the first place.&lt;/P&gt;
&lt;P&gt;Fifteen minutes of setup for the quick wins, and you're in a fundamentally better place than most teams running VMs on Azure today.&lt;/P&gt;</description>
      <pubDate>Wed, 22 Apr 2026 15:49:46 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/your-azure-vm-went-down-and-nobody-knew-why-here-s-how-to-fix/ba-p/4513733</guid>
      <dc:creator>rmmartins</dc:creator>
      <dc:date>2026-04-22T15:49:46Z</dc:date>
    </item>
    <item>
      <title>$17,493 in Undisclosed Marketplace Charges with No Cost Visibility, No Recourse, No Accountability</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/17-493-in-undisclosed-marketplace-charges-with-no-cost/m-p/4510844#M116</link>
      <description>&lt;P&gt;I'm a co-founder of a 13-person startup in the Microsoft for Startups Founders Hub program. I'm posting here because after two months of support tickets, calls, and emails across both Microsoft and Anthropic, I have been unable to get anyone with decision-making authority to address this issue. I'm hoping this reaches someone at Microsoft who can help, and that other affected founders in the program will share their experiences.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What happened:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;In February 2026, we deployed Claude Opus 4.6 and Sonnet 4.6 through Azure AI Foundry as part of a migration of our AI infrastructure. We are active users of our Azure sponsorship credits and assumed, as anyone would, that these models were covered the same way Azure OpenAI models are. There was no indication otherwise during deployment.&lt;/P&gt;&lt;P&gt;In early March, we received our first invoice: $1,078.07 (invoice G144899694, billing period 02/01–02/28). We were shocked, but we paid it immediately and removed all Anthropic model deployments from our account to prevent further charges.&lt;/P&gt;&lt;P&gt;It didn't matter. On April 9, we received a second invoice: $16,414.94 (invoice G151890529, billing period 03/01–03/31). Despite removing the deployments in mid-March, charges had already accumulated for the first half of the month. We are unable to pay this invoice. Our total exposure across both invoices is $17,493.01.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Why we had no way to prevent this:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;No billing distinction at deployment. Azure AI Foundry presents all models (Microsoft-native and third-party) in the same unified interface. There is no warning, label, or confirmation step indicating that certain models are excluded from sponsorship credits.&lt;/LI&gt;&lt;LI&gt;No cost visibility whatsoever. The Azure AI Foundry monitoring dashboard has an "Estimated Cost" section that is completely blank for these models, with a disclaimer: "Cost monitoring is available for Foundry Models sold directly by Azure only." We could see token counts but had zero visibility into what we were being charged.&lt;/LI&gt;&lt;LI&gt;Token counts that don't explain the charges. The dashboards show our Claude Opus 4.6 deployment used 63.4M tokens and our Sonnet 4.6 deployments used roughly 170M tokens combined. At published rates, that should be in the low thousands, not $17,500. My analysis shows the dashboard hides billions of cached tokens (prompt caching reads and writes) that are invisible in the monitoring UI but account for the vast majority of the bill. There is no view in Azure that provides a breakdown of these charges by token type.&lt;/LI&gt;&lt;LI&gt;No alerts or notifications. There were no cost alerts, no threshold warnings, and no notifications at any point.&lt;/LI&gt;&lt;LI&gt;No indication in any Azure portal that charges were hitting our credit card&lt;STRONG&gt;.&lt;/STRONG&gt; There was no line item, no pending charge, no Marketplace spend summary - nothing anywhere in the Azure ecosystem that showed dollars accumulating against our payment method for these deployments.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;What happened when we asked for help:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Azure Support (TrackingID#2603090040002936): After a month-long wait, a support engineer told us Microsoft cannot issue credits for Marketplace charges and directed us to Anthropic. The first version of the response email referenced "Azure DDoS Protection Standard" instead of our actual issue, suggesting the volume of similar cases in the queue.&lt;/LI&gt;&lt;LI&gt;Anthropic: Their AI support bot responded within one minute with a blanket statement and closed the ticket four hours later. I escalated, but have still not received a response over a month later.&lt;/LI&gt;&lt;LI&gt;Microsoft for Startups Team (TrackingID#2604070040009778): Told us they cannot apply Marketplace charges against sponsorship credits and referred us to a Marketplace billing contact.&lt;/LI&gt;&lt;LI&gt;Azure Marketplace billing contact: Pending response.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;The pattern is clear&lt;/STRONG&gt;: Microsoft directs us to Anthropic. Anthropic directs us to Microsoft. The Microsoft for Startups team directs us to Azure Marketplace billing. No one takes responsibility.&lt;/P&gt;&lt;P&gt;What I'm asking for:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;A full refund of $17,493.01 across invoices G144899694 and G151890529&lt;/LI&gt;&lt;LI&gt;That Microsoft implement clear billing warnings in Azure AI Foundry before deploying models that are excluded from sponsorship credits.&lt;/LI&gt;&lt;LI&gt;That Microsoft provide actual cost visibility in the monitoring dashboard for all models deployed through AI Foundry, not just first-party models.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;To other founders in the program&lt;/STRONG&gt;:&lt;/P&gt;&lt;P&gt;If you have experienced this same issue, please reply to this thread. I know I'm not alone because this has been covered by The Register, InfoWorld, and Computerworld, and at least 20 founders have signed a Change.org petition about it. The more founders who come forward with specific amounts and case numbers, the harder this is to ignore.&lt;/P&gt;&lt;P&gt;We joined Microsoft for Startups because the program was supposed to help early-stage companies manage infrastructure costs during the most financially vulnerable period of our growth. Instead, the program's own platform generated charges within 2 weeks that exceed the total sponsorship credits we've consumed over the past year, with no visibility, no warning, and no path to resolution.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With Further Inc. | Microsoft for Startups Founders Hub&lt;/P&gt;&lt;P&gt;Azure Support TrackingID #2603090040002936&lt;/P&gt;&lt;P&gt;Startup Support TrackingID #2604070040009778&lt;/P&gt;</description>
      <pubDate>Mon, 13 Apr 2026 14:01:05 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/17-493-in-undisclosed-marketplace-charges-with-no-cost/m-p/4510844#M116</guid>
      <dc:creator>chrisbaker2000</dc:creator>
      <dc:date>2026-04-13T14:01:05Z</dc:date>
    </item>
    <item>
      <title>Role Structures, Anti-Patterns, and the 10 Governance Principles</title>
      <link>https://techcommunity.microsoft.com/t5/startups-at-microsoft/role-structures-anti-patterns-and-the-10-governance-principles/ba-p/4510070</link>
      <description>&lt;P&gt;Part 3 of 3: The implementation playbook for engineering, finance, and security teams&lt;/P&gt;
&lt;P&gt;In&amp;nbsp;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/azure-has-three-permission-systems-and-youre-probably-confusing-them/4471854" target="_blank" rel="noopener" data-lia-auto-title="Part 1" data-lia-auto-title-active="0"&gt;Part 1&lt;/A&gt;, we established Azure's three-plane model: Entra for identity, RBAC for resources, Commerce for billing. In&amp;nbsp;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/marketplace-governance-and-the-cross-plane-bridge/4510067" target="_blank" rel="noopener" data-lia-auto-title="Part 2" data-lia-auto-title-active="0"&gt;Part 2&lt;/A&gt;, we explored where those planes collide: Marketplace governance, Managed Identity, and ABAC.&lt;/P&gt;
&lt;P&gt;Now it's time to get practical. This post covers the patterns that work, the anti-patterns that don't, and the governance principles that every digital-native company should adopt&amp;nbsp;&lt;EM&gt;before&lt;/EM&gt;&amp;nbsp;they're forced to adopt them after an incident.&lt;/P&gt;
&lt;H2&gt;7 anti-patterns to avoid&lt;/H2&gt;
&lt;P&gt;These seven anti-patterns appear repeatedly across AI, SaaS, and digital-native customers. Every one of them has caused real incidents — surprise invoices, accidental deletions, compliance failures, or governance breakdowns.&lt;/P&gt;
&lt;H3&gt;❌ Anti-Pattern 1: Giving engineers billing permissions&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;What happens:&lt;/STRONG&gt; Engineers are given Billing Reader or Billing Contributor roles "so they can see costs." They can now see MACC credits, private offer terms, commercial discounts, and Marketplace purchase history, none of which they need.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Symptoms:&lt;/STRONG&gt;&amp;nbsp;Engineers purchasing Marketplace SaaS without oversight. Surprise invoices. Procurement loses visibility into vendor commitments.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fix:&lt;/STRONG&gt;&amp;nbsp;Engineers need&amp;nbsp;&lt;STRONG&gt;Cost Management Reader&lt;/STRONG&gt;&amp;nbsp;(RBAC) for usage-based cost visibility. They do&amp;nbsp;&lt;EM&gt;not&lt;/EM&gt; need billing roles. If they need to understand MACC impact, create a reporting process, don't give them the keys.&lt;/P&gt;
&lt;H3&gt;❌ Anti-Pattern 2: Giving finance subscription owner access&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;What happens:&lt;/STRONG&gt;&amp;nbsp;Finance teams are given Owner or Contributor roles on subscriptions "so they can track spending." They now have the ability to deploy, modify, and delete production resources.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Symptoms:&lt;/STRONG&gt; Massive over-permissioning. Finance can accidentally delete production resources. Audit risk, regulators will flag this.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fix:&lt;/STRONG&gt;&amp;nbsp;Finance roles belong in the&amp;nbsp;&lt;STRONG&gt;Billing plane&lt;/STRONG&gt;, not the resource plane. Give finance&amp;nbsp;&lt;STRONG&gt;Billing Reader&lt;/STRONG&gt;&amp;nbsp;for credit and invoice visibility. If they also need resource cost data, add&amp;nbsp;&lt;STRONG&gt;Cost Management Reader&lt;/STRONG&gt;&amp;nbsp;(RBAC) scoped to the appropriate subscriptions — that's a read-only, resource-plane role.&lt;/P&gt;
&lt;H3&gt;❌ Anti-Pattern 3: Too many subscription owners&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;What happens:&lt;/STRONG&gt;&amp;nbsp;Every senior engineer, team lead, and sometimes product managers get Owner on subscriptions. The logic: "they need to unblock themselves."&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Symptoms:&lt;/STRONG&gt; No accountability, when everyone is Owner, nobody is. High blast radius. Hard to trace role assignments when troubleshooting.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fix:&lt;/STRONG&gt;&amp;nbsp;Maximum&amp;nbsp;&lt;STRONG&gt;2–3 Owners&lt;/STRONG&gt;&amp;nbsp;per subscription: Platform Lead, SRE Lead, and optionally the Cloud Architect. Everyone else gets Contributor or scoped roles. Use PIM for emergency elevation.&lt;/P&gt;
&lt;H3&gt;❌ Anti-Pattern 4: Believing Entra Global Admin = Azure Owner&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;What happens:&lt;/STRONG&gt; Leadership assumes Global Admin has universal access: subscriptions, resources, billing. They don't. Global Admin controls the identity plane only.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Symptoms:&lt;/STRONG&gt;&amp;nbsp;Security teams thinking they can see all resources (they can't). Incorrect governance designs that assume Entra = RBAC.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fix:&lt;/STRONG&gt;&amp;nbsp;Train leadership explicitly:&amp;nbsp;&lt;STRONG&gt;Entra ≠ RBAC ≠ Billing&lt;/STRONG&gt;. Three planes, three sets of roles, zero overlap. A Global Admin who needs resource access must be separately granted RBAC roles.&lt;/P&gt;
&lt;H3&gt;❌ Anti-Pattern 5: Deploying marketplace SaaS without finance&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;What happens:&lt;/STRONG&gt;&amp;nbsp;Engineers purchase Marketplace tools directly because they have billing permissions (see Anti-Pattern 1) or because the org hasn't restricted Marketplace purchases.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Symptoms:&lt;/STRONG&gt;&amp;nbsp;Incorrect MACC burn. Licensing duplicates. Vendor lock-in without legal review. Private offer terms not applied.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fix:&lt;/STRONG&gt;&amp;nbsp;Require finance approval for all paid Marketplace purchases. Follow the five-step workflow from&amp;nbsp;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/marketplace-governance-and-the-cross-plane-bridge/4510067" target="_blank" rel="noopener" data-lia-auto-title="Part 2" data-lia-auto-title-active="0"&gt;Part 2&lt;/A&gt;: Engineer requests → Finance reviews → Billing executes → Engineering deploys → Cost monitoring activated.&lt;/P&gt;
&lt;H3&gt;❌ Anti-Pattern 6: Mixed dev/test/prod in one subscription&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;What happens:&lt;/STRONG&gt;&amp;nbsp;To save time, teams put all environments in one subscription.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Symptoms:&lt;/STRONG&gt;&amp;nbsp;Can't isolate production costs. A Contributor on the sub can modify both dev and prod. Can't enforce stricter policies on prod without affecting dev. Compliance teams can't get clean boundaries.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fix:&lt;/STRONG&gt;&amp;nbsp;Separate subscriptions by environment. Pattern:&amp;nbsp;&lt;STRONG&gt;1 subscription per environment per workload&lt;/STRONG&gt;&amp;nbsp;(or at minimum per environment). Use cross-subscription networking via Hub &amp;amp; Spoke or Landing Zones.&lt;/P&gt;
&lt;H3&gt;❌ Anti-Pattern 7: Not using Azure Policy&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;What happens:&lt;/STRONG&gt;&amp;nbsp;Teams deploy freely with no guardrails. Over time: VMs in unapproved regions, GPU SKUs in non-production, storage accounts without encryption, missing tags, public IP drift.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Symptoms:&lt;/STRONG&gt;&amp;nbsp;Inconsistent regions. Wrong VM families. Missing tags make cost attribution impossible. Non-compliant configurations.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fix:&lt;/STRONG&gt; Adopt Azure Policy early, at Management Group scope. Critical policies: allowed locations, allowed VM SKUs, enforce HTTPS, enforce private endpoints, enforce tagging (environment, owner, cost-center).&lt;/P&gt;
&lt;H2&gt;Recommended role structure&lt;/H2&gt;
&lt;P&gt;Based on experience with dozens of digital-native customers, here's the role structure that works across the three planes.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;H3&gt;Engineering plane (RBAC)&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;2–3 subscription Owners:&amp;nbsp;&lt;/STRONG&gt;Platform Lead, SRE Lead, Cloud Architect&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Platform/SRE team&lt;/STRONG&gt;&amp;nbsp;as&amp;nbsp;&lt;STRONG&gt;Contributors:&amp;nbsp;&lt;/STRONG&gt;deploy and manage infrastructure&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Developers&lt;/STRONG&gt;&amp;nbsp;as&amp;nbsp;&lt;STRONG&gt;RG-scoped Contributors or Readers:&amp;nbsp;&lt;/STRONG&gt;limited to their workload's resource group&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Cost Management Reader&lt;/STRONG&gt; for budget owners: usage visibility without deployment rights&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Policy&lt;/STRONG&gt; for guardrails: VM SKUs, regions, encryption, tags&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Management Groups&lt;/STRONG&gt;&amp;nbsp;for organizational structure&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Finance plane (Commerce)&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Billing Account Owner&lt;/STRONG&gt;&amp;nbsp;= CFO or Finance Director&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Billing Contributor&lt;/STRONG&gt;&amp;nbsp;= Finance Operations&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Billing Reader&lt;/STRONG&gt;&amp;nbsp;= FP&amp;amp;A and financial analysts&lt;/LI&gt;
&lt;LI&gt;All Marketplace-paid offers require finance approval&lt;/LI&gt;
&lt;LI&gt;MACC visibility restricted to finance roles&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Identity/Security plane (Entra)&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;2–4 Global Admins&lt;/STRONG&gt;&amp;nbsp;(break-glass accounts included)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;PIM enforced&lt;/STRONG&gt; for all privileged roles, no permanent admin access&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Conditional Access&lt;/STRONG&gt;&amp;nbsp;for all admin roles (MFA, compliant device, block legacy auth)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Groups&lt;/STRONG&gt; used for RBAC assignment, never assign RBAC to individual users&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Workload identities&lt;/STRONG&gt;&amp;nbsp;(Managed Identity) preferred over service principals&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Role mapping templates&lt;/H2&gt;
&lt;P&gt;Copy these into your onboarding documentation.&lt;/P&gt;
&lt;H3&gt;Engineering Team&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-style-none" border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;Azure Role&lt;/th&gt;&lt;th&gt;Plane&lt;/th&gt;&lt;th&gt;Allowed actions&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Cloud Architect&lt;/td&gt;&lt;td&gt;Owner (2–3 per sub)&lt;/td&gt;&lt;td&gt;RBAC&lt;/td&gt;&lt;td&gt;Govern workloads, assign roles, manage infrastructure&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Platform / SRE&lt;/td&gt;&lt;td&gt;Contributor&lt;/td&gt;&lt;td&gt;RBAC&lt;/td&gt;&lt;td&gt;Deploy and manage infrastructure&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Developer&lt;/td&gt;&lt;td&gt;Contributor or Reader (RG-scoped)&lt;/td&gt;&lt;td&gt;RBAC&lt;/td&gt;&lt;td&gt;Deploy to specific resource groups&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Budget Owner&lt;/td&gt;&lt;td&gt;Cost Management Reader&lt;/td&gt;&lt;td&gt;RBAC&lt;/td&gt;&lt;td&gt;View usage-based cost, manage budgets — not billing&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3&gt;Finance Team&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-style-none" border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;Azure Role&lt;/th&gt;&lt;th&gt;Plane&lt;/th&gt;&lt;th&gt;Allowed actions&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Finance Lead&lt;/td&gt;&lt;td&gt;Billing Account Owner&lt;/td&gt;&lt;td&gt;Billing&lt;/td&gt;&lt;td&gt;View and manage credits, invoices, MACC, payment methods&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Finance Analyst&lt;/td&gt;&lt;td&gt;Billing Reader&lt;/td&gt;&lt;td&gt;Billing&lt;/td&gt;&lt;td&gt;Read-only billing visibility&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FP&amp;amp;A&lt;/td&gt;&lt;td&gt;Billing Reader&lt;/td&gt;&lt;td&gt;Billing&lt;/td&gt;&lt;td&gt;Read-only; no deployments, no resource access&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3&gt;Leadership&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-style-none" border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;Azure Role&lt;/th&gt;&lt;th&gt;Plane&lt;/th&gt;&lt;th&gt;Actions&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CTO / VP Engineering&lt;/td&gt;&lt;td&gt;Reader or Cost Mgmt Reader&lt;/td&gt;&lt;td&gt;RBAC&lt;/td&gt;&lt;td&gt;Visibility into platform and resource costs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CFO&lt;/td&gt;&lt;td&gt;Billing Reader&lt;/td&gt;&lt;td&gt;Billing&lt;/td&gt;&lt;td&gt;Visibility into credits, invoices, MACC, commitments&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;RACI Matrix&lt;/H2&gt;
&lt;P&gt;Adapted from the Microsoft&amp;nbsp;&lt;A href="https://learn.microsoft.com/azure/cloud-adoption-framework/organize/raci-alignment" target="_blank" rel="noopener"&gt;Cloud Adoption Framework&lt;/A&gt;.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-style-none" border="1" style="width: 72.1296%; border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Function&lt;/th&gt;&lt;th&gt;Accountable&lt;/th&gt;&lt;th&gt;Responsible&lt;/th&gt;&lt;th&gt;Consulted&lt;/th&gt;&lt;th&gt;Informed&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Billing account roles &amp;amp; access&lt;/td&gt;&lt;td&gt;Finance Lead&lt;/td&gt;&lt;td&gt;Finance Ops&lt;/td&gt;&lt;td&gt;Cloud Architect&lt;/td&gt;&lt;td&gt;Engineering&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Subscription role assignments&lt;/td&gt;&lt;td&gt;Cloud Architect&lt;/td&gt;&lt;td&gt;Platform / SRE&lt;/td&gt;&lt;td&gt;Finance, Security&lt;/td&gt;&lt;td&gt;Engineering&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cost monitoring &amp;amp; budgets&lt;/td&gt;&lt;td&gt;Finance&lt;/td&gt;&lt;td&gt;Engineering&lt;/td&gt;&lt;td&gt;Leadership&lt;/td&gt;&lt;td&gt;All teams&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Marketplace purchases&lt;/td&gt;&lt;td&gt;Finance Lead&lt;/td&gt;&lt;td&gt;Finance Ops&lt;/td&gt;&lt;td&gt;Engineering, Legal&lt;/td&gt;&lt;td&gt;CFO&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;IaC / Deployment governance&lt;/td&gt;&lt;td&gt;Platform Lead&lt;/td&gt;&lt;td&gt;Engineers&lt;/td&gt;&lt;td&gt;Security&lt;/td&gt;&lt;td&gt;Finance&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Policies &amp;amp; guardrails&lt;/td&gt;&lt;td&gt;Security / Cloud Architect&lt;/td&gt;&lt;td&gt;Platform Team&lt;/td&gt;&lt;td&gt;Engineering&lt;/td&gt;&lt;td&gt;Leadership&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Identity &amp;amp; access governance&lt;/td&gt;&lt;td&gt;Security Lead&lt;/td&gt;&lt;td&gt;Identity Admin&lt;/td&gt;&lt;td&gt;Cloud Architect&lt;/td&gt;&lt;td&gt;All teams&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;PIM &amp;amp; Conditional Access&lt;/td&gt;&lt;td&gt;Security Lead&lt;/td&gt;&lt;td&gt;Identity Admin&lt;/td&gt;&lt;td&gt;Platform Lead&lt;/td&gt;&lt;td&gt;Engineering&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MACC tracking &amp;amp; credit visibility&lt;/td&gt;&lt;td&gt;Finance Lead&lt;/td&gt;&lt;td&gt;Finance Ops&lt;/td&gt;&lt;td&gt;Cloud Architect&lt;/td&gt;&lt;td&gt;Leadership&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 20.00%" /&gt;&lt;col style="width: 20.00%" /&gt;&lt;col style="width: 20.00%" /&gt;&lt;col style="width: 20.00%" /&gt;&lt;col style="width: 20.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Include this template in your onboarding documentation and review it quarterly.&lt;/P&gt;
&lt;H2&gt;Best Practices&lt;/H2&gt;
&lt;H3&gt;Use Entra Groups for RBAC assignment, never assign directly to users&lt;/H3&gt;
&lt;P&gt;Benefits: clear separation of identity and resource planes, easy onboarding/offboarding, predictable RBAC inheritance, enables PIM for group-based elevation.&lt;/P&gt;
&lt;P&gt;Naming pattern:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;grp-sub-&amp;lt;SubscriptionName&amp;gt;-Owner&lt;/LI&gt;
&lt;LI&gt;grp-sub-&amp;lt;SubscriptionName&amp;gt;-Contributor&lt;/LI&gt;
&lt;LI&gt;grp-rg-&amp;lt;WorkloadName&amp;gt;-Reader&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Assign the&amp;nbsp;&lt;STRONG&gt;group&lt;/STRONG&gt;&amp;nbsp;to the role, not individual users.&lt;/P&gt;
&lt;H3&gt;Enforce PIM + Conditional Access for all privileged roles&lt;/H3&gt;
&lt;P&gt;Key CA policies: MFA required for all admins, compliant device requirement, block legacy authentication, block sign-in from high-risk locations, require phishing-resistant MFA.&lt;/P&gt;
&lt;P&gt;No permanent admin access. Use time-based elevation for every privileged operation.&lt;/P&gt;
&lt;H3&gt;Separate subscriptions by environment and workload&lt;/H3&gt;
&lt;P&gt;Subscriptions are a security boundary. Pattern: 1 subscription per environment per workload. Platform teams get their own subscription. Use Hub &amp;amp; Spoke or Landing Zones for cross-subscription networking.&lt;/P&gt;
&lt;H3&gt;Keep billing data confidential&lt;/H3&gt;
&lt;P&gt;Only Billing roles should see credits, commitments, discounts, invoices, and MACC balance. Engineers should never have access to commercial data.&lt;/P&gt;
&lt;H2&gt;The 10 Principles of Azure Governance&lt;/H2&gt;
&lt;P&gt;After working with digital natives across AI, SaaS, and infrastructure companies, I can summarize Azure governance into these principles:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-style-none" border="1" style="width: 100%; border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;#&lt;/th&gt;&lt;th&gt;Principle&lt;/th&gt;&lt;th&gt;Summary&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Separate identity, resources, and billing. Always.&lt;/td&gt;&lt;td&gt;Never mix roles across planes. An engineer should never hold billing roles. A finance analyst should never hold subscription Owner.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Engineering owns the resource plane.&lt;/td&gt;&lt;td&gt;Give them Contributor and Cost Management Reader. Don't burden them with billing or identity administration.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;3&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Finance owns the billing plane.&lt;/td&gt;&lt;td&gt;Credits, MACC, invoices, private offers. Every Marketplace purchase flows through Finance.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;4&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Security owns identity and governance.&lt;/td&gt;&lt;td&gt;PIM, Conditional Access, Azure Policy. Identity decisions should not be made by engineering or finance.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;5&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Keep subscription Owners scarce.&lt;/td&gt;&lt;td&gt;Maximum 2–3 per subscription. Use PIM for emergency elevation. Everyone else gets Contributor or scoped roles.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;6&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Lock down Marketplace.&lt;/td&gt;&lt;td&gt;Every SaaS purchase approved by Finance. No exceptions. Use the five-step workflow.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;7&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Use Infrastructure as Code.&lt;/td&gt;&lt;td&gt;Manual deployments don't scale and can't be audited. Use Bicep, Terraform, or Pulumi.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;8&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Use budgets early.&lt;/td&gt;&lt;td&gt;Set budgets at Management Group, Subscription, and Resource Group levels. Configure alerts to email, Teams, or automation.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;9&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Use Management Groups from day one.&lt;/td&gt;&lt;td&gt;Every startup that scales beyond a single subscription regrets not using them. Recommended hierarchy: Tenant Root → OrgName → Platform / Production / NonProduction / Sandbox / Shared Services.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;10&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Build governance before scale.&lt;/td&gt;&lt;td&gt;The companies that scale successfully treat Azure governance as infrastructure, not bureaucracy.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 5.46701%" /&gt;&lt;col style="width: 34.5824%" /&gt;&lt;col style="width: 59.932%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;References&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/role-based-access-control/overview" target="_blank" rel="noopener"&gt;Azure RBAC Overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/role-based-access-control/rbac-and-directory-admin-roles" target="_blank" rel="noopener"&gt;Entra Directory &amp;amp; Admin Roles&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/cost-management-billing/manage/understand-mca-roles" target="_blank" rel="noopener"&gt;Billing Roles (Microsoft Customer Agreement)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/cost-management-billing/costs/assign-access-acm-data" target="_blank" rel="noopener"&gt;Assign Access to Cost Management Data&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/marketplace/azure-purchasing-invoicing" target="_blank" rel="noopener"&gt;Marketplace Purchases &amp;amp; Invoicing&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/marketplace/private-offers" target="_blank" rel="noopener"&gt;Private Offers in Azure Marketplace&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/role-based-access-control/conditions-overview" target="_blank" rel="noopener"&gt;Azure RBAC Conditions (ABAC)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/governance/policy/overview" target="_blank" rel="noopener"&gt;Azure Policy Overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/cloud-adoption-framework/organize/raci-alignment" target="_blank" rel="noopener"&gt;Cloud Adoption Framework RACI&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview" target="_blank" rel="noopener"&gt;Managed Identities Overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/aks/workload-identity-overview" target="_blank" rel="noopener"&gt;AKS Workload Identity&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Closing thoughts&lt;/H2&gt;
&lt;P&gt;Azure's three permission planes aren't a problem to solve, they're a framework to leverage.&lt;/P&gt;
&lt;P&gt;The confusion happens when teams try to treat Azure as if it has a single permission system. It doesn't, and it never will. Because identity, billing, and resource deployment are fundamentally different domains that must be operated and secured differently.&lt;/P&gt;
&lt;P&gt;But when organizations understand these three planes and structure their roles accordingly, something powerful happens:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Engineering moves faster.&lt;/STRONG&gt;&amp;nbsp;Clear RBAC scopes mean teams deploy without waiting for approvals they don't need.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Finance gains real oversight.&lt;/STRONG&gt;&amp;nbsp;Billing roles provide full commercial visibility without the risk of touching production resources.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Security gets a clean, enforceable boundary model.&lt;/STRONG&gt;&amp;nbsp;Entra controls identity; PIM and Conditional Access control elevation; Azure Policy controls the guardrails.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Leadership sees clarity instead of chaos.&lt;/STRONG&gt;&amp;nbsp;The right roles in the right planes mean dashboards, reports, and alerts actually reflect what each stakeholder needs.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Good governance doesn't slow down innovation.&amp;nbsp;&lt;STRONG&gt;Bad governance does.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The companies that scale successfully, whether AI-native, SaaS platforms, or global digital-first organizations, are the ones that adopt a clean, intentional model early. They treat Azure governance as infrastructure, not bureaucracy.&lt;/P&gt;
&lt;P&gt;The model is simple:&amp;nbsp;&lt;STRONG&gt;Entra for who. RBAC for what. Commerce for how you pay.&lt;/STRONG&gt;&amp;nbsp;Start with that, and everything else becomes easier.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This concludes the 3-part series on Azure Governance for Digital Natives. For the full model, start with&amp;nbsp;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/azure-has-three-permission-systems-and-youre-probably-confusing-them/4471854" target="_blank" rel="noopener" data-lia-auto-title="Part 1: The Three Permission Planes" data-lia-auto-title-active="0"&gt;Part 1: The Three Permission Planes&lt;/A&gt;. For collision points and Managed Identity, read&amp;nbsp;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/marketplace-governance-and-the-cross-plane-bridge/4510067" target="_blank" rel="noopener" data-lia-auto-title="Part 2: Marketplace Governance and the Cross-Plane Bridge" data-lia-auto-title-active="0"&gt;Part 2: Marketplace Governance and the Cross-Plane Bridge&lt;/A&gt;.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 09 Apr 2026 21:25:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/startups-at-microsoft/role-structures-anti-patterns-and-the-10-governance-principles/ba-p/4510070</guid>
      <dc:creator>rmmartins</dc:creator>
      <dc:date>2026-04-09T21:25:00Z</dc:date>
    </item>
  </channel>
</rss>

