<?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/azure/ct-p/Azure</link>
    <description>rss.livelink.threads-in-node</description>
    <pubDate>Fri, 25 Sep 2026 15:48:37 GMT</pubDate>
    <dc:creator>Azure</dc:creator>
    <dc:date>2026-09-25T15:48:37Z</dc:date>
    <item>
      <title>Troubleshooting Azure Storage Deletion: Immutability, WORM, and Version Retention</title>
      <link>https://techcommunity.microsoft.com/t5/azure-paas-blog/troubleshooting-azure-storage-deletion-immutability-worm-and/ba-p/4559051</link>
      <description>&lt;P&gt;One of the most common questions Azure Storage administrators ask after enabling immutable storage is:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;"Why can't I delete my storage account anymore?"&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Azure Immutable Storage is designed to provide WORM (Write Once, Read Many) protection, ensuring that data cannot be modified or deleted during a defined retention period. This capability is essential for compliance, regulatory, legal, and audit requirements, but it can be surprising when administrators later attempt to remove storage resources and discover that Azure refuses to delete them.&lt;BR /&gt;&lt;BR /&gt;In some environments, immutable storage policies may not have been configured directly by Azure Storage administrators. Backup or data protection solutions can automatically enable and manage retention settings, and storage administrators may not always have visibility into these externally managed policies.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This article explains:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Why storage accounts become undeletable&lt;/LI&gt;
&lt;LI&gt;Why containers sometimes appear empty but still cannot be deleted&lt;/LI&gt;
&lt;LI&gt;The difference between Unlocked and Locked policies&lt;/LI&gt;
&lt;LI&gt;How ImmutableStorageWithVersioning changes deletion behavior&lt;/LI&gt;
&lt;LI&gt;What happens when version retention is reduced to one day&lt;/LI&gt;
&lt;LI&gt;A practical step-by-step process to remove protected resources&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Understanding Azure Storage Immutability&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Azure Blob Storage supports immutability through two primary mechanisms:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Time-Based Retention Policies&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A retention policy protects data for a fixed number of days. During this period: read are allowed, deletes are blocked and overwrites are blocked.&lt;/P&gt;
&lt;P&gt;Examples: &lt;SPAN style="color: rgb(30, 30, 30);"&gt;7 days,&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;30 days,&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;180 days,&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;7 years&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Legal Holds&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Legal holds have no expiration date. The data remains protected until the hold is manually removed. Organizations commonly use legal holds when: litigation is in progress, regulatory investigations are occurring and data preservation is legally required&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Where Can Immutability Be Applied?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Azure supports immutability at two different scopes.&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;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Scope&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Description&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Container-level&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Policy protects all blobs within the container&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Version-level&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Individual blob versions receive protection&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Version-level protection requires: Blob Versioning enabled and &lt;SPAN style="color: rgb(30, 30, 30);"&gt;ImmutableStorageWithVersioning enabled&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Important:&lt;/STRONG&gt; A storage account containing immutable data may itself become protected from deletion.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What Happens When You Try to Delete Resources?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Immutability blocks deletion at multiple layers.&lt;/P&gt;
&lt;P&gt;Think of it as a dependency chain:&lt;/P&gt;
&lt;P&gt;Storage Account&lt;BR /&gt;└─ Container&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; └─ Blob&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; └─ Blob Version&lt;/P&gt;
&lt;P&gt;Azure will not allow deletion of a parent resource while protected child resources still exist.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Scenario 1: Deleting the Storage Account&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;You attempt to delete the storage account.&lt;/P&gt;
&lt;P&gt;Azure returns:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Failed to delete storage account 'accountname'.&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;Error: 'accountname' is protected from deletion.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This occurs when at least one container still contains: a&lt;SPAN style="color: rgb(30, 30, 30);"&gt; locked immutability policy, a&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; legal hold or &lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;Immutable blob versions&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Before the account can be deleted: e&lt;SPAN style="color: rgb(30, 30, 30);"&gt;very user container must be removed, e&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;very blob must be removed, e&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;very blob version must be removed and e&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;very snapshot must be removed&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What About System Containers?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;System containers do not block deletion.These are managed automatically by Azure. The containers that matter are user-created containers.&lt;/P&gt;
&lt;P&gt;Examples: $logs, $blobchangefeed and $web&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Scenario 2: Deleting a Container&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;You select Delete Container and Azure returns:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;The storage account container is protected from deletion due to ImmutableStorageWithVersioning.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Even when, the container appears empty and t&lt;SPAN style="color: rgb(30, 30, 30);"&gt;he latest blobs have been deleted. &lt;/SPAN&gt;Deletion may still fail. Why?&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Previous blob versions still exist. &lt;BR /&gt;&lt;/STRONG&gt;This is one of the most common causes of confusion. The Azure Portal normally displays:&amp;nbsp;&lt;STRONG&gt;Only Show Active Blobs&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As a result, previous versions remain hidden. The container looks empty, but Azure still sees h&lt;SPAN style="color: rgb(30, 30, 30);"&gt;istorical versions, s&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;napshots and s&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;oft-deleted objects&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Although the container may appear empty at first glance, it is not actually empty. When &lt;STRONG&gt;"Show active and&amp;nbsp; Deleted blobs"&lt;/STRONG&gt; is enabled, the container displays all blobs that are currently in either the active or deleted state. Therefore, deletion remains blocked.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Deleting containers with immutability (WORM) policies&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Container deletion may fail if an Immutable blob storage policy is applied at the container or version level. These policies keep blobs in a non-modifiable, delete-protected state (WORM) for the duration of the defined retention interval.&lt;/P&gt;
&lt;P&gt;The behavior depends on the policy State:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Unlocked:&amp;nbsp;&lt;/STRONG&gt;the policy can still be edited or removed. You must delete the immutability policy reference from the container before deleting it. Once removed, the container and its blobs can be deleted normally.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Locked:&lt;/STRONG&gt; the policy cannot be deleted or shortened. You must wait until the retention interval expires for all affected blobs. Until that time elapses, the blobs, the container, and the storage account cannot be deleted.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Scenario 3: Deleting Individual Blobs&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;The retention policy prevents deletion of the blob regardless of whether the Delete option appears available in the user interface. Any delete request is rejected by the Storage service until the retention period expires. This indicates that an active retention policy is protecting the blob. Until retention expires: Delete, overwrite and modification are blocked.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Unlocked Policies&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Think of this state as a testing phase. Protection is active, but administrators retain management flexibility. You can, Increase or decrease the retention period, or delete the policy. Once the policy is removed, the data becomes deletable. This allows organizations to validate configurations before committing to compliance requirements.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Locked Policies&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A locked policy represents a compliance commitment. After locking: the policy cannot be deleted, retention cannot be reduced or extended.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Most importantly:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;No user, administrator, or Microsoft Support engineer can bypass or remove a locked retention policy before expiration. i.e If retention is configured for 180 days, deletion becomes possible only after those 180 days have passed.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Hidden Detail: ImmutableStorageWithVersioning&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A common misunderstanding is believing that removing an unlocked retention policy completely disables immutability. It does not.&lt;/P&gt;
&lt;P&gt;Once &lt;STRONG&gt;ImmutableStorageWithVersioning&lt;/STRONG&gt; is enabled: The feature itself cannot be disabled.&lt;/P&gt;
&lt;P&gt;Even if every unlocked policy is deleted, Azure still requires all versions to be removed before containers and storage accounts can be deleted.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why Version Retention Matters&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Blob versioning introduces another important behavior. When you modify version retention and reduce it to a lower value, for example:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Once the version retention period is reduced (for example, from 180 days to 1 day), Azure automatically updates or creates the corresponding Lifecycle Management rule responsible for cleaning up old blob versions.&lt;/P&gt;
&lt;P&gt;At this stage, administrators can manually delete any remaining base blobs, snapshots, or versions that are already eligible for deletion.&lt;/P&gt;
&lt;P&gt;For versions that still exist and exceed the newly configured retention threshold: No additional manual action is required, the Lifecycle Management rule will automatically identify them as eligible for deletion and all versions older than the configured retention period are processed during subsequent Lifecycle Management executions.&lt;/P&gt;
&lt;P&gt;Example, &lt;SPAN style="color: rgb(30, 30, 30);"&gt;If version retention is changed from 180 days to 1 day: &lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;Versions created more than 1 day ago immediately become eligible for cleanup, th&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;e Lifecycle Management engine evaluates those versions during its next execution cycle and o&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;nce the versions are removed, container deletion can proceed provided no other immutable objects remain.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Important Consideration&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Lifecycle Management is an asynchronous service. Therefore, after reducing retention: &lt;SPAN style="color: rgb(30, 30, 30);"&gt;The configuration change is applied immediately, o&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;lder versions become eligible for deletion immediately and a&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;ctual version removal may take 24-48 hours or longer, depending on the Lifecycle Management execution schedule.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;For this reason, it is normal to see containers remain undeletable for a period of time after retention settings are modified. Administrators should allow sufficient time for Lifecycle Management to complete cleanup of all versions that exceed the configured retention threshold before attempting to delete the container or storage account.&lt;/P&gt;
&lt;P&gt;Azure lifecycle rule created automatically after changing the versioning retention. Many administrators are unaware that this happens behind the scenes.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Code View for automatic rule created&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;The purpose is simple: Remove older blob versions once they exceed the configured age.&lt;/P&gt;
&lt;P&gt;Reducing the retention period does not instantly delete existing versions. Instead, it makes existing versions eligible for deletion by Lifecycle Management, which removes them asynchronously during future processing cycles.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Common Misconception&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Many customers assume: "Only versions created after I changed the setting will be deleted." This is incorrect.&lt;/P&gt;
&lt;P&gt;Azure evaluates every version independently using its creation timestamp. If a version is already older than one day when the rule runs: It becomes eligible for deletion. There is no grandfathering mechanism.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Another Important Detail: Deletion Is Not Immediate&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Lifecycle Management follows an asynchronous process.&lt;/P&gt;
&lt;P&gt;Typical behavior:&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;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Action&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Expected Time&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;New rule created&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Immediate&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Rule evaluated&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Within 24–48 hours&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Version cleanup begins&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;During next lifecycle execution&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Because of this delay, containers may remain undeletable for some time even after retention settings are updated.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Recommended Cleanup Process&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;When attempting to remove immutable storage resources:&lt;/P&gt;
&lt;P&gt;Step 1 — Inventory all protection mechanisms: &lt;SPAN style="color: rgb(30, 30, 30);"&gt;Account-level immutability, &lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;Container-level policies, &lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;Blob-level policies,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;Legal holds.&lt;BR /&gt;&lt;/SPAN&gt;Step 2 — Determine policy state: Locked or Unlocked&lt;BR /&gt;Step 3 — Remove unlocked policies.&lt;BR /&gt;Step 4 — Clear legal holds.&lt;BR /&gt;Step 5 — Review versioning and soft delete settings.&lt;BR /&gt;Step 6 — Remove all blobs, snapshots, and versions.&lt;BR /&gt;Step 7 — Allow Lifecycle Management to remove old versions.&lt;BR /&gt;Step 8 — Delete containers.&lt;BR /&gt;Step 9 — Delete the storage account.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Important Note:&amp;nbsp;&lt;/STRONG&gt;The deletion order is always blobs → container → storage account. A parent resource cannot be removed while protected children remain, so if any blob is still under a Locked policy (or an active legal hold), the entire process is blocked until retention expires or the hold is cleared.&lt;/P&gt;
&lt;P&gt;Key Takeaways&lt;/P&gt;
&lt;P&gt;✅ Immutable storage protects data against deletion and modification.&lt;/P&gt;
&lt;P&gt;✅ Locked policies cannot be bypassed, shortened, or removed.&lt;/P&gt;
&lt;P&gt;✅ Legal holds must be manually cleared.&lt;/P&gt;
&lt;P&gt;✅ Containers that appear empty may still contain hidden versions.&lt;/P&gt;
&lt;P&gt;✅ ImmutableStorageWithVersioning cannot be turned off once enabled.&lt;/P&gt;
&lt;P&gt;✅ Blob version retention automatically creates a Lifecycle Management rule.&lt;/P&gt;
&lt;P&gt;✅ Storage account deletion requires every protected object underneath it to be removed first.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;References&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/storage/blobs/immutable-policy-configure-container-scope" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/azure/storage/blobs/immutable-policy-configure-container-scope&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/storage/blobs/immutable-policy-configure-version-scope" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/azure/storage/blobs/immutable-policy-configure-version-scope&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/storage/blobs/data-protection-overview" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/azure/storage/blobs/data-protection-overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-overview" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-overview&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Fri, 25 Sep 2026 04:15:53 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-paas-blog/troubleshooting-azure-storage-deletion-immutability-worm-and/ba-p/4559051</guid>
      <dc:creator>carlosbermudezlopez</dc:creator>
      <dc:date>2026-09-25T04:15:53Z</dc:date>
    </item>
    <item>
      <title>Getting the best out of Azure SRE Agent</title>
      <link>https://techcommunity.microsoft.com/t5/apps-on-azure-blog/getting-the-best-out-of-azure-sre-agent/ba-p/4559745</link>
      <description>&lt;P&gt;A common question that we get from our customers is&amp;nbsp;&lt;EM&gt;"Hey guys, we are excited about SRE agent and we 've created one but whats the best way to configure it?"&lt;/EM&gt;. The below guide aims at sharing some of the best practices that anyone can follow to make the most out of our SRE Agent. This guide is based on SRE Agent's own scoring system and we evaluated production telemetry of the agents performing best vs. the ones performing the worst and we tried understanding the key differences that led to one agent performing better than the other.&lt;/P&gt;
&lt;P&gt;Interestingly, agents doing the best work are usually &lt;STRONG&gt;not&lt;/STRONG&gt; the most heavier ones. Some of the strongest agents we looked at had just one skill. On the other hand, some of the worst performing agents had large skill libraries, plenty of connectors, and insane number of tools. The difference almost always comes down to one thing: &lt;STRONG&gt;"whether the right work reaches the right handler"&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This guide walks through what to set up, roughly in the order you'd do it. It's written for someone configuring an agent for the first time, so it starts simple.&lt;/P&gt;
&lt;H2 id="the-seven-things-that-matter"&gt;The seven things that matter&lt;/H2&gt;
&lt;P&gt;These are written in the order you'll most likely execute on them. "How much it matters" shows how much each aspect makes an agent significantly better (the goal is to help you quickly decide which ones to prioritize).&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;&amp;nbsp;&lt;/th&gt;&lt;th&gt;What to do&lt;/th&gt;&lt;th&gt;How much it matters&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;Connect your data first&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;Critical&lt;/STRONG&gt; — everything else depends on it&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;Start with the problem that annoys you most&lt;/td&gt;&lt;td&gt;How to begin&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;Send the right incidents to the right specialist&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;Critical&lt;/STRONG&gt; — filter incidents in the response plan, not in the agent's instructions&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;Write a few skills that really teach something&lt;/td&gt;&lt;td&gt;Worth getting right&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;Add custom agents when different problems need different help&lt;/td&gt;&lt;td&gt;Worth getting right&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;Decide how much freedom to give, scenario by scenario&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;High&lt;/STRONG&gt; — can leave work waiting for approval&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;Check the agent can finish the job&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;High&lt;/STRONG&gt; — check permissions for the final step&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2 id="start-here-the-one-idea-that-is-worth-internalising"&gt;Start here: The One idea that is worth internalising&lt;/H2&gt;
&lt;P&gt;Think of your agent less like an AI system but more like a new hire in your team, even though its hard to visulaize it that way. Do you burden a new hire with year old documents, PIR investigation reports, architecture documents that have drifted over years, information about systems that have become obsolete or telemetry logging that is long gone? The same hold true for an agent.&lt;/P&gt;
&lt;P&gt;An agent needs access to your systems. They need to know which problems &lt;EM&gt;they&lt;/EM&gt; should be really solving. They need true context about how your service works. And they need to know when to act and when to check with someone first.&lt;/P&gt;
&lt;P&gt;If you get these things right, a fairly plain agent can do excellent work. Otherwise, you are just in a constant loop of updating prompts, changing tools, updating skills and getting frustrated. Everything below is a version of those four things.&lt;/P&gt;
&lt;H2 id="1-connect-your-data-first"&gt;1. Connect your data first&lt;/H2&gt;
&lt;P&gt;You might have heard this phrase before - "Context is the King". Before writing a skill or an agent prompt, "empower" your agent first: your telemetry logs (most important), your incident system, your work tracking, your repositories. Agent without the right data is never going to succeed no matter how good prompt or skill is. Connect the "right" connectors and not "many" connectors.&lt;/P&gt;
&lt;H4 id="these-are-important-so-do-these"&gt;These are important so "do" these&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Connect telemetry and work tracking first&lt;/STRONG&gt; — These help with most of the real investigative work.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Add deployment history and service health next&lt;/STRONG&gt; — this is what links a problem to the change that caused it.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Index the systems where work already happens&lt;/STRONG&gt; — your wiki and work items get used heavily; a separate document store barely gets touched.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Connect Teams or email for delivery&lt;/STRONG&gt; — findings should land where your team already works.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Check connections are healthy, not just configured&lt;/STRONG&gt; — a dead connector fails silently and takes your scheduled runs with it.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4 id="avoid-doing-these"&gt;Avoid doing these&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Don't connect a system until you need it&lt;/STRONG&gt; — extra connections rarely get used, and you still have to keep them working.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Don't treat Teams or email as investigation tools&lt;/STRONG&gt; — they carry a fraction of the traffic because they're output, not input.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Don't treat past incidents as the answer&lt;/STRONG&gt; — use them as a starting point, then confirm with current data.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Don't add connections to fix a struggling agent&lt;/STRONG&gt; — the best and worst agents we studied had nearly identical, fully healthy connection sets. One scored 4.9, the other 2.3. The difference was routing.&lt;/LI&gt;
&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Never let the agent decide the source of truth. Feed it!&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2 id="2-start-with-the-problem-that-annoys-you-most"&gt;2. Start with the problem that annoys you most&lt;/H2&gt;
&lt;P&gt;This goes back to the same new hire principal. Don't try to teach the agent your whole system. Pick an important component that wakes people up, or the investigation everyone dreads because it takes four hours and always ends the same way.&lt;/P&gt;
&lt;P&gt;Work that one scenario with the agent, interactively. The best to do is to "chat" with the agent without writing a new custom agent. Let it dig, correct it when it goes the wrong way, point it at the data it didn't knew about. When you and and the agent solve the issue together, ask the agent to turn what just happened into a skill or a custom agent. This approach is way more effective that perfecting the "correct" agent by starting with a lengthy prompt.&lt;/P&gt;
&lt;P&gt;Once you perfected one problem, move on to the next one.&lt;/P&gt;
&lt;P&gt;Each scenario is small, so it's quick to get right, and the context compounds. After a few weeks, you'll notice that the agent is helping with things you never "explicitly" taught it. It &lt;EM&gt;just&lt;/EM&gt; learns (just like a good new hire).&lt;/P&gt;
&lt;H2 id="3-send-the-right-incidents-to-the-right-specialist"&gt;3. Send the right incidents to the right specialist&lt;/H2&gt;
&lt;P&gt;&lt;EM&gt;If you read only one section, read this one. Sending an agent the wrong work was one of the clearest problems we found.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;A response plan decides which incidents reach an agent. If the plan accepts every incident but sends them all to a specialist built for one problem, many incidents will arrive without the information that specialist needs. It stops without helping, and the incident is marked unresolved. The agent may look broken, but it was given work it wasn’t built to do.&lt;/P&gt;
&lt;P&gt;We saw this with an agent that handled scheduled work well, scoring &lt;STRONG&gt;4.5 out of 5&lt;/STRONG&gt;, but scored &lt;STRONG&gt;1.7 out of 5&lt;/STRONG&gt; on incidents it received through a broad response plan. Another agent used &lt;STRONG&gt;71 response plans&lt;/STRONG&gt;, each directing a specific kind of incident to the right specialist. It scored &lt;STRONG&gt;4.5 out of 5&lt;/STRONG&gt; on incidents, with fewer than 1% failing. These are examples from different agents, not a before-and-after test, but they show why it’s worth checking how incidents are routed.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;We recommend using response plans that match specific incidents to specialists that can handle them.&lt;/STRONG&gt; Having many focused plans is fine; sending every incident through one broad plan to a narrow specialist is the problem.&lt;/P&gt;
&lt;H2 id="4-write-a-few-skills-that-really-teach-something"&gt;4. Write a few skills that really teach something&lt;/H2&gt;
&lt;P&gt;&lt;EM&gt;The number of skills an agent has matters less than what those skills teach it.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;In our study, some agents with no skills performed better than agents with several. The strongest results were associated with skills that gave clear, detailed guidance, while agents with vague or empty skill descriptions struggled. One agent had three skills with no descriptions at all. That doesn’t prove that writing more will improve results, but it does show why adding skills just to increase the count isn’t useful.&lt;/P&gt;
&lt;P&gt;Think of a skill as a briefing for a colleague - It should explain &lt;STRONG&gt;which question it answers&lt;/STRONG&gt;, the words people might use when asking it, how to decide what to do, and when the skill does &lt;STRONG&gt;not&lt;/STRONG&gt; apply. It should also warn about mistakes that are easy to make. We recommend writing a skill when you have specific knowledge or judgment to teach the agent. Make it detailed enough to guide a real decision, rather than adding a short description that only names a topic.&lt;/P&gt;
&lt;P&gt;Here are three examples of how to turn a vague skill description into guidance the agent can actually use. These are &lt;STRONG&gt;illustrative examples&lt;/STRONG&gt;, not descriptions taken from the study.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Billing issue&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Too vague:&lt;/STRONG&gt; “Helps with billing problems.”&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Useful:&lt;/STRONG&gt; “Use this when someone asks whether an order was charged, whether a missing charge will appear later, or how to recover a failed charge. Check the order and billing records before deciding. Don’t suggest creating a new billing record until you’ve ruled out an existing or delayed charge.”&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Deployment failure&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Too vague:&lt;/STRONG&gt; “Investigates failed deployments.”&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Useful:&lt;/STRONG&gt; “Use this when a deployment has failed or stopped making progress. Check its status, the failed step, and recent changes. Don’t recommend retrying until you know whether the previous attempt is still running or left work unfinished.”&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;High error rate&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Too vague:&lt;/STRONG&gt; “Handles service alerts.”&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Useful:&lt;/STRONG&gt; “Use this when a service’s error rate rises. Check when the increase started, which requests are failing, and whether a deployment or dependency changed around the same time. Don’t blame the most recent deployment without evidence that it affected the failing requests.”&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The useful versions tell the agent &lt;STRONG&gt;when to use the skill, what to check, and which mistake to avoid&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2 id="5-add-custom-agents-when-different-problems-need-different-help"&gt;5. Add custom agents when different problems need different help&lt;/H2&gt;
&lt;P&gt;A custom agent has its own instructions, tools, and scope for a particular kind of work. Create one when a problem comes up often enough to need a clear owner—not just because the option is available.&lt;/P&gt;
&lt;P&gt;For example, a &lt;STRONG&gt;deployment custom agent&lt;/STRONG&gt; could check rollout status, failed steps, and recent changes when an alert follows a release. A &lt;STRONG&gt;billing custom agent&lt;/STRONG&gt; could check order and charge records, with instructions to avoid actions that might charge a customer twice. These jobs need different evidence and different safeguards. An occasional question doesn’t necessarily need its own custom agent.&lt;/P&gt;
&lt;P&gt;In our study, agents with one or two custom agents performed much like agents with none; agents with three or more tended to do better. That’s an observation, &lt;STRONG&gt;not a target number&lt;/STRONG&gt;. Add them as distinct, recurring problems emerge.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Be clear about when each custom agent runs.&lt;/STRONG&gt; As the &lt;A href="https://techcommunity.microsoft.com/blog/appsonazureblog/zero-ops-agents-operate-humans-govern/4545151" target="_blank"&gt;Zero Ops guidance&lt;/A&gt; explains, you can call one directly in chat or select it through a response plan or scheduled task. This lets you send a deployment alert to the deployment custom agent without sending every incident there.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Limit access to what the job needs.&lt;/STRONG&gt; Start with read access for investigation, and grant permission to make changes only where needed, with appropriate approval. Give each custom agent an explicit list of tools: for a custom agent, an empty tool list means default tool access, &lt;EM&gt;not&lt;/EM&gt; “no tools.” The agent’s identity and permissions still set the outer boundary; a custom agent’s instructions alone are not a security control.&lt;/P&gt;
&lt;H2 id="6-decide-how-much-freedom-to-give-scenario-by-scenario"&gt;6. Decide how much freedom to give, scenario by scenario&lt;/H2&gt;
&lt;P&gt;&lt;EM&gt;Review mode protects you by asking a person to approve actions. Use it where approval matters, but remember that work can sit unfinished while it waits.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;We saw this in two agents handling busy incident queues. Both followed their instructions well and rarely failed. One ran in review mode: &lt;STRONG&gt;96% of its incident work was waiting for approval&lt;/STRONG&gt;, and its overall score was &lt;STRONG&gt;3.0 out of 5&lt;/STRONG&gt;. The other worked autonomously and scored &lt;STRONG&gt;4.8 out of 5&lt;/STRONG&gt;. These are different agents, so the scores don’t prove that changing the mode alone would close the gap. They do show why it’s worth checking how much work is waiting.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Choose the level of approval for each kind of work.&lt;/STRONG&gt; For example:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Investigating an alert:&lt;/STRONG&gt; Let the agent read logs, check service health, and compare the alert with recent deployments without asking for approval at every step.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Sharing findings:&lt;/STRONG&gt; If your team is comfortable with it, let the agent post an investigation summary to the incident. If posts need review, let it prepare a draft instead.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Restarting a service:&lt;/STRONG&gt; Have the agent explain what it found and ask a person to approve the restart.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Changing a database or network setting:&lt;/STRONG&gt; Keep a person involved. These changes can affect more than the incident the agent is investigating.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The goal isn’t to make the whole agent autonomous or put everything in review mode. &lt;STRONG&gt;Let routine investigation move forward, and require approval where the consequences of a mistake are greater.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2 id="7-check-the-agent-can-finish-the-job"&gt;7. Check the agent can finish the job&lt;/H2&gt;
&lt;P&gt;&lt;EM&gt;An agent can do a good investigation and still fail at the last step.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;We saw several examples where an agent did useful work but couldn't complete the final step:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;One agent found three incidents that needed action, but the incident-management write tools it needed were unavailable. It could explain what to do, but couldn't complete its scheduled task.&lt;/LI&gt;
&lt;LI&gt;Another investigated an incident and found the right team to take over, but the transfer failed with an authorization error. The incident stayed unresolved.&lt;/LI&gt;
&lt;LI&gt;A third gathered evidence for an incident, but couldn't save a lasting update because it lacked permission to write back to the incident system.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These can look like investigation failures when the actual blocker is access. That doesn't mean granting every agent write permission: decide which final steps it should perform, give it only the access those steps require, and make the human handoff clear for anything it shouldn't do itself.&lt;/P&gt;
&lt;P&gt;Before sending an agent to a live incident queue, try one example from start to finish. Check not only that it can find the answer, but that it can deliver the result in the way your team expects.&lt;/P&gt;
&lt;HR /&gt;
&lt;H3 id="troubleshooting-when-something-isnt-working-find-out-why"&gt;Troubleshooting: When something isn't working, find out why&lt;/H3&gt;
&lt;P&gt;Different problems can look alike. Check what happened before changing the agent's instructions.&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;What you see&lt;/th&gt;&lt;th&gt;What to check first&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;An investigation stops quickly without using tools&lt;/td&gt;&lt;td&gt;Did the response plan send it to the wrong custom agent?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;The agent does a lot of work but misses the task&lt;/td&gt;&lt;td&gt;Does it need clearer instructions or a smaller task?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Work is accurate but waiting for approval&lt;/td&gt;&lt;td&gt;Is review mode stopping routine steps?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;The same error keeps appearing&lt;/td&gt;&lt;td&gt;Is a connector broken, or is a permission missing?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Two questions are especially useful: &lt;STRONG&gt;Did the agent use the tools it needed?&lt;/STRONG&gt; And &lt;STRONG&gt;do failures look the same each time?&lt;/STRONG&gt; No tool use during an investigation may point to a routing problem. Repeated identical errors may point to a broken connection or missing permission. If the mistakes vary, look more closely at the instructions, skills, and information the agent received. These are clues, not diagnoses on their own.&lt;/P&gt;
&lt;H3 id="if-you-already-have-an-agent-thats-struggling"&gt;If you already have an agent that's struggling&lt;/H3&gt;
&lt;P&gt;Check the basics before rewriting its skills:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Check routing.&lt;/STRONG&gt; Are unrelated incidents reaching a custom agent built for a narrower problem?&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Check connections.&lt;/STRONG&gt; Can the agent actually reach the systems it needs?&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Check what is waiting.&lt;/STRONG&gt; Is review mode holding up work that could safely continue?&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Check the last step.&lt;/STRONG&gt; Can the agent post its findings or complete an approved action?&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Then review its guidance.&lt;/STRONG&gt; If the agent has the right work, access, and permissions but still makes different mistakes, improve its instructions or skills.&lt;/LI&gt;
&lt;/OL&gt;
&lt;HR /&gt;
&lt;H2 id="how-we-know-this"&gt;How we know this&lt;/H2&gt;
&lt;P&gt;We studied production SRE Agent activity. We set aside test and demo agents, looked at agents doing real scheduled work, incident response, and chat, and compared their results with how they were configured.&lt;/P&gt;
&lt;P&gt;The examples show &lt;STRONG&gt;patterns we observed&lt;/STRONG&gt;, not before-and-after tests. An agent scoring differently on incidents and scheduled work is a useful clue, but it does not prove that routing was the only cause. Scores can also change when the evaluation changes, so use the numbers as context rather than promises of what a configuration change will achieve.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Read scores in context.&lt;/STRONG&gt; Compare incidents with incidents and scheduled tasks with scheduled tasks: open-ended chat often scores lower than work with a clear goal. Greetings aren't investigations, so don't use their scores to judge incident performance. And if an agent is marked down for a wordy answer, check whether its findings were useful before treating it as a failure.&lt;/P&gt;
&lt;P&gt;This is a starting point for teams to review and improve and we really hope this helps!&lt;/P&gt;</description>
      <pubDate>Thu, 24 Sep 2026 20:24:01 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/apps-on-azure-blog/getting-the-best-out-of-azure-sre-agent/ba-p/4559745</guid>
      <dc:creator>puneetguptams</dc:creator>
      <dc:date>2026-09-24T20:24:01Z</dc:date>
    </item>
    <item>
      <title>Introducing bicep docs: generate documentation from your Bicep modules</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/introducing-bicep-docs-generate-documentation-from-your-bicep/ba-p/4559737</link>
      <description>&lt;P&gt;&lt;STRONG&gt;TL;DR:&lt;/STRONG&gt; The Bicep CLI has a new experimental command, &lt;CODE&gt;bicep docs generate&lt;/CODE&gt;. Point it at a Bicep module and it writes a &lt;CODE&gt;README.md&lt;/CODE&gt; next to it that describes the module's resources, parameters, types, outputs and usage examples, all read straight from your code. You can change the layout with your own templates, add details that aren't in the code, and document every module in a repository with one command. It's available now in Bicep CLI v0.47.16 and later.&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;bicep docs generate ./main.bicep&lt;/LI-CODE&gt;
&lt;H2&gt;Why we built it&lt;/H2&gt;
&lt;P&gt;Module documentation has a habit of drifting away from the code it describes. Someone renames a parameter, adds an output or changes an allowed value, and the README quietly goes out of date. Teams that publish a lot of modules often end up writing their own scripts to keep the two in step.&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;bicep docs&lt;/CODE&gt; moves that job into the Bicep CLI. It compiles your module and uses the compiler's own understanding of it, so it picks up the details Bicep already knows: &lt;CODE&gt;metadata&lt;/CODE&gt;, &lt;CODE&gt;@description&lt;/CODE&gt; decorators, default values, allowed values, length limits, user-defined types, exported types, variables and functions, outputs, and the local modules it references. Run it again whenever the module changes, and the documentation will match the code.&lt;/P&gt;
&lt;H2&gt;Get started&lt;/H2&gt;
&lt;P&gt;You need Bicep CLI v0.47.16 or later. Check your version with &lt;CODE&gt;bicep --version&lt;/CODE&gt;, and see &lt;A href="https://learn.microsoft.com/azure/azure-resource-manager/bicep/install" target="_blank"&gt;Install Bicep tools&lt;/A&gt; if you need to upgrade. There's no feature flag to turn on.&lt;/P&gt;
&lt;P&gt;Here's a small storage account module:&lt;/P&gt;
&lt;LI-CODE lang="bicep"&gt;metadata name = 'Storage Account'
metadata description = 'Deploys a storage account with secure defaults.'

@description('Required. The name of the storage account. Must be globally unique.')
@minLength(3)
@maxLength(24)
param name string

@description('Optional. The Azure region to deploy the storage account to.')
param location string = resourceGroup().location

@description('Optional. The storage account SKU.')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
])
param skuName string = 'Standard_LRS'

resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: name
  location: location
  kind: 'StorageV2'
  sku: {
    name: skuName
  }
  properties: {
    allowBlobPublicAccess: false
    minimumTlsVersion: 'TLS1_2'
  }
}

@description('The resource ID of the storage account.')
output resourceId string = storageAccount.id&lt;/LI-CODE&gt;
&lt;P&gt;Generate its documentation:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;bicep docs generate ./modules/storage-account/main.bicep&lt;/LI-CODE&gt;
&lt;P&gt;Bicep writes &lt;CODE&gt;README.md&lt;/CODE&gt; next to &lt;CODE&gt;main.bicep&lt;/CODE&gt;. For this module, the built-in layout includes a list of sections, the resource types, a usage example (more on those below), the parameters with the details of each one, and the outputs. When a module has them, it also covers exported types, variables and functions, and referenced modules. Here's an excerpt:&lt;/P&gt;
&lt;LI-CODE lang="markdown"&gt;# Storage Account

Deploys a storage account with secure defaults.

## Parameters

| Name | Type | Required | Description |
| :-- | :-- | :-- | :-- |
| `location` | `string` | No | Optional. The Azure region to deploy the storage account to. |
| `name` | `string` | Yes | Required. The name of the storage account. Must be globally unique. |
| `skuName` | `string` | No | Optional. The storage account SKU. |

### `location`

- Default value: `resourceGroup().location`

### `name`

- Min length: 3

- Max length: 24

### `skuName`

- Default value: `'Standard_LRS'`

- Allowed values: `Standard_GRS`, `Standard_LRS`, `Standard_ZRS`&lt;/LI-CODE&gt;
&lt;P&gt;A couple of options you'll use often:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;CODE&gt;--stdout&lt;/CODE&gt; prints the result to the terminal instead of writing a file, which is handy for a quick preview.&lt;/LI&gt;
&lt;LI&gt;&lt;CODE&gt;--outfile&lt;/CODE&gt; writes to a file of your choice, and &lt;CODE&gt;--outdir&lt;/CODE&gt; writes the documentation into another folder.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Because the command is experimental, Bicep prints a warning each time you run it.&lt;/P&gt;
&lt;H2&gt;Usage examples are included automatically&lt;/H2&gt;
&lt;P&gt;Examples are often the most useful part of module documentation, so &lt;CODE&gt;bicep docs&lt;/CODE&gt; looks for them next to your module. By default it picks up:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;CODE&gt;.bicep&lt;/CODE&gt; files in an &lt;CODE&gt;examples&lt;/CODE&gt; folder, and &lt;CODE&gt;main.bicep&lt;/CODE&gt; files in its subfolders&lt;/LI&gt;
&lt;LI&gt;&lt;CODE&gt;*.test.bicep&lt;/CODE&gt; files anywhere under a &lt;CODE&gt;tests&lt;/CODE&gt; folder&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Files named &lt;CODE&gt;dependencies*.bicep&lt;/CODE&gt; are skipped. Each example's heading comes from its &lt;CODE&gt;metadata name&lt;/CODE&gt;. Without one, Bicep uses the name of the folder the example is in, or its file name if it's not in a subfolder. The description comes from &lt;CODE&gt;metadata description&lt;/CODE&gt;, or else the &lt;CODE&gt;//&lt;/CODE&gt; comments at the top of the file. For example, this file in &lt;CODE&gt;modules/storage-account/examples&lt;/CODE&gt; becomes a "Zone-redundant storage account" example in the README:&lt;/P&gt;
&lt;LI-CODE lang="bicep"&gt;metadata name = 'Zone-redundant storage account'
metadata description = 'Deploys a storage account that keeps copies of your data in three availability zones.'

module storageAccount '../main.bicep' = {
  params: {
    name: 'stdocsdemo001'
    skuName: 'Standard_ZRS'
  }
}&lt;/LI-CODE&gt;
&lt;P&gt;If your examples live somewhere else, list their locations in &lt;CODE&gt;documentation.examples.sources&lt;/CODE&gt; in &lt;CODE&gt;bicepconfig.json&lt;/CODE&gt;. Your list replaces the default locations.&lt;/P&gt;
&lt;H2&gt;Make it your own with templates&lt;/H2&gt;
&lt;P&gt;The built-in layout is a good start, but you'll probably have your own conventions. &lt;CODE&gt;bicep docs&lt;/CODE&gt; renders documentation with &lt;A href="https://github.com/scriban/scriban" target="_blank"&gt;Scriban&lt;/A&gt;, a lightweight text templating language. Write a template, then point to it from &lt;CODE&gt;bicepconfig.json&lt;/CODE&gt;:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;{
  "documentation": {
    "template": {
      "file": "templates/readme.scriban"
    }
  }
}&lt;/LI-CODE&gt;
&lt;P&gt;The template path is relative to the &lt;CODE&gt;bicepconfig.json&lt;/CODE&gt; file. As with its other settings, Bicep uses the &lt;CODE&gt;bicepconfig.json&lt;/CODE&gt; nearest to each module.&lt;/P&gt;
&lt;P&gt;This template writes a parameters table and an outputs table:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;# {{ module.name }}

{{ module.description }}

## Parameters

| Name | Type | Required | Description |
| :-- | :-- | :-- | :-- |
{{~ for parameter in module.parameters ~}}
| `{{ parameter.name }}` | `{{ parameter.type }}` | {{ if parameter.required }}Yes{{ else }}No{{ end }} | {{ parameter.description }} |
{{~ end ~}}

## Outputs

| Name | Type | Description |
| :-- | :-- | :-- |
{{~ for output in module.outputs ~}}
| `{{ output.name }}` | `{{ output.type }}` | {{ output.description }} |
{{~ end ~}}&lt;/LI-CODE&gt;
&lt;P&gt;The &lt;CODE&gt;~&lt;/CODE&gt; inside the braces removes the spaces and line breaks next to a tag, so the loops don't add blank lines that would break the tables. Your template receives a &lt;CODE&gt;module&lt;/CODE&gt; object with the module's &lt;CODE&gt;name&lt;/CODE&gt;, &lt;CODE&gt;description&lt;/CODE&gt;, &lt;CODE&gt;targetScope&lt;/CODE&gt;, &lt;CODE&gt;resourceTypes&lt;/CODE&gt;, &lt;CODE&gt;parameters&lt;/CODE&gt;, &lt;CODE&gt;exportedTypes&lt;/CODE&gt;, &lt;CODE&gt;exportedVariables&lt;/CODE&gt;, &lt;CODE&gt;exportedFunctions&lt;/CODE&gt;, &lt;CODE&gt;outputs&lt;/CODE&gt;, &lt;CODE&gt;references&lt;/CODE&gt; and &lt;CODE&gt;usageExamples&lt;/CODE&gt;. The &lt;A href="https://github.com/Azure/bicep/blob/main/docs/experimental/docs-commands.md#template-model" target="_blank"&gt;command documentation&lt;/A&gt; lists every field.&lt;/P&gt;
&lt;P&gt;A couple of tips:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Split a big template into smaller files with Scriban's &lt;CODE&gt;include&lt;/CODE&gt;, and set &lt;CODE&gt;documentation.template.includeRoot&lt;/CODE&gt; to the folder that holds them.&lt;/LI&gt;
&lt;LI&gt;The &lt;A href="https://github.com/Azure/bicep/blob/main/src/Bicep.Core/Documentation/Templates/Markdown.scriban" target="_blank"&gt;built-in Markdown template&lt;/A&gt; is a Scriban template too, so it's a good place to start.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Add details that aren't in your code&lt;/H2&gt;
&lt;P&gt;Some information doesn't belong in Bicep, such as the team that owns a module, where to get support, or the module's version. Pass it in as custom values and use them in your template as &lt;CODE&gt;custom.&amp;lt;key&amp;gt;&lt;/CODE&gt;:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;**Owner:** {{ custom.owner }} | **Version:** {{ custom.version }} | [Get support]({{ custom.supportUrl }})&lt;/LI-CODE&gt;
&lt;P&gt;Supply values one at a time with &lt;CODE&gt;--custom-template-value&lt;/CODE&gt;, or load several from a JSON file with &lt;CODE&gt;--custom-template-value-file-path&lt;/CODE&gt;:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;bicep docs generate ./modules/storage-account/main.bicep `
    --custom-template-value owner="Platform Team" `
    --custom-template-value-file-path ./docs-values.json&lt;/LI-CODE&gt;
&lt;P&gt;Where &lt;CODE&gt;docs-values.json&lt;/CODE&gt; contains:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;{
  "supportUrl": "https://contoso.example/support",
  "version": "1.0.0"
}&lt;/LI-CODE&gt;
&lt;P&gt;Both options can be repeated. If the same key is set more than once, the last one on the command line wins.&lt;/P&gt;
&lt;H2&gt;Go beyond Markdown&lt;/H2&gt;
&lt;P&gt;Scriban writes whatever text your template contains, so the output doesn't have to be Markdown. A template could produce JSON for a module catalogue, HTML for an internal portal, or input for another tool. This template produces JSON, and Scriban's &lt;CODE&gt;object.to_json&lt;/CODE&gt; function takes care of quotes and escaping:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;{
  "name": {{ module.name | object.to_json }},
  "description": {{ module.description | object.to_json }},
  "parameters": [
{{~ for parameter in module.parameters ~}}
    {
      "name": {{ parameter.name | object.to_json }},
      "type": {{ parameter.type | object.to_json }},
      "required": {{ parameter.required | object.to_json }}
    }{{ if !for.last }},{{ end }}
{{~ end ~}}
  ]
}&lt;/LI-CODE&gt;
&lt;P&gt;Set &lt;CODE&gt;documentation.template.file&lt;/CODE&gt; to this template, then use &lt;CODE&gt;--outfile&lt;/CODE&gt; to save the result with a &lt;CODE&gt;.json&lt;/CODE&gt; file name:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;bicep docs generate ./modules/storage-account/main.bicep --outfile ./modules/storage-account/module.json&lt;/LI-CODE&gt;
&lt;P&gt;To change the default file name for every module instead, set &lt;CODE&gt;documentation.output.file&lt;/CODE&gt; in &lt;CODE&gt;bicepconfig.json&lt;/CODE&gt;.&lt;/P&gt;
&lt;P&gt;Each module uses the one template set in its nearest &lt;CODE&gt;bicepconfig.json&lt;/CODE&gt;. To get both Markdown and JSON from the same modules, make that template a small switch that includes the right template based on a custom value:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;{{~ if custom.format == "json" ~}}
{{~ include "catalog.scriban" ~}}
{{~ else ~}}
{{~ include "readme.scriban" ~}}
{{~ end ~}}&lt;/LI-CODE&gt;
&lt;P&gt;Set &lt;CODE&gt;documentation.template.includeRoot&lt;/CODE&gt; to the folder that holds the templates. Then run the command as normal for the README, and add &lt;CODE&gt;--custom-template-value format=json --outfile ./modules/storage-account/module.json&lt;/CODE&gt; for the JSON.&lt;/P&gt;
&lt;H2&gt;Document every module in one go&lt;/H2&gt;
&lt;P&gt;Use &lt;CODE&gt;--pattern&lt;/CODE&gt; to document every module that matches a wildcard:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;bicep docs generate --pattern './modules/**/main.bicep'&lt;/LI-CODE&gt;
&lt;P&gt;Each module gets its own &lt;CODE&gt;README.md&lt;/CODE&gt; next to its &lt;CODE&gt;main.bicep&lt;/CODE&gt;. Add &lt;CODE&gt;--outdir ./docs&lt;/CODE&gt; to put them in a separate folder instead, and Bicep recreates the folder structure beneath it. If a module has compile errors, Bicep reports them, carries on documenting the other modules, and returns exit code 1 at the end.&lt;/P&gt;
&lt;P&gt;To see this at scale, the &lt;A href="https://aka.ms/bicep/docs/demo" target="_blank"&gt;demo repository&lt;/A&gt; generates &lt;A href="https://aka.ms/avm" target="_blank"&gt;Azure Verified Modules&lt;/A&gt; (AVM) style documentation for 20 App Service modules, including their child modules, with a single command. Its template works out each module's registry reference and main resource type from the module itself. The AVM team is standardising and consolidating its tooling, and &lt;CODE&gt;bicep docs&lt;/CODE&gt; is part of that work.&lt;/P&gt;
&lt;H2&gt;Keep documentation up to date in CI&lt;/H2&gt;
&lt;P&gt;Because the documentation comes from the code, your pipeline can check that it's current. Regenerate it, then fail the build if anything changed:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;bicep docs generate --pattern './modules/**/main.bicep'
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

$changes = git status --porcelain
if ($changes) {
    $changes
    throw 'Module documentation is out of date. Run bicep docs generate and commit the result.'
}&lt;/LI-CODE&gt;
&lt;P&gt;The generated documentation is only as good as your descriptions, so the new description linter rules in Bicep v0.47 make a good partner. They're off by default and flag missing or empty &lt;CODE&gt;@description&lt;/CODE&gt; decorators. Turn on the ones you need in &lt;CODE&gt;bicepconfig.json&lt;/CODE&gt;:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;{
  "analyzers": {
    "core": {
      "rules": {
        "use-description-params": { "level": "warning" },
        "use-description-outputs": { "level": "warning" },
        "use-description-types": { "level": "warning" },
        "use-description-type-properties": { "level": "warning" }
      }
    }
  }
}&lt;/LI-CODE&gt;
&lt;P&gt;There's also &lt;CODE&gt;use-description-vars&lt;/CODE&gt; for variables. Thanks to &lt;A href="https://github.com/johnlokerse" target="_blank"&gt;@johnlokerse&lt;/A&gt; for contributing these rules!&lt;/P&gt;
&lt;H2&gt;Building tools on top of Bicep?&lt;/H2&gt;
&lt;P&gt;The same generator is available through the Bicep CLI's JSON-RPC interface as &lt;CODE&gt;bicep/generateDocs&lt;/CODE&gt;. It returns the rendered text and leaves writing files to you. For .NET, the &lt;A href="https://www.nuget.org/packages/Azure.Bicep.RpcClient" target="_blank"&gt;Azure.Bicep.RpcClient&lt;/A&gt; package wraps it.&lt;/P&gt;
&lt;H2&gt;It's experimental, and we'd love your feedback&lt;/H2&gt;
&lt;P&gt;&lt;CODE&gt;bicep docs&lt;/CODE&gt; is experimental. The command options, configuration, template model and built-in layout may change between releases without a breaking-change notice.&lt;/P&gt;
&lt;P&gt;One change is already on the way. In v0.47 you can also choose a template with the &lt;CODE&gt;--template-file&lt;/CODE&gt; and &lt;CODE&gt;--template-root&lt;/CODE&gt; options. The next release removes these options, so templates are set only with &lt;CODE&gt;documentation.template.file&lt;/CODE&gt; and &lt;CODE&gt;documentation.template.includeRoot&lt;/CODE&gt; in &lt;CODE&gt;bicepconfig.json&lt;/CODE&gt;. The examples in this post already use &lt;CODE&gt;bicepconfig.json&lt;/CODE&gt;, so they'll keep working.&lt;/P&gt;
&lt;P&gt;Try it on your own modules and tell us what works and what's missing by &lt;A href="https://github.com/Azure/bicep/issues" target="_blank"&gt;opening an issue&lt;/A&gt; in the Bicep repository.&lt;/P&gt;
&lt;H2&gt;Learn more&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://github.com/Azure/bicep/blob/main/docs/experimental/docs-commands.md" target="_blank"&gt;bicep docs command documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://aka.ms/bicep/docs/demo" target="_blank"&gt;Demo repository&lt;/A&gt;, with step-by-step demos from the built-in layout to AVM-style documentation&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/Azure/bicep/releases/tag/v0.47.16" target="_blank"&gt;Bicep v0.47.16 release notes&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://scriban.github.io/docs/language/" target="_blank"&gt;Scriban language reference&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;CODE&gt;bicep docs&lt;/CODE&gt; is also featured in the September 2026 Bicep community call. Community call recordings are on the &lt;A href="https://www.youtube.com/channel/UCZZ3-oMrVI5ssheMzaWC4uQ/videos" target="_blank"&gt;Azure Deployments &amp;amp; Governance YouTube channel&lt;/A&gt;, and you can &lt;A href="https://aka.ms/armnews" target="_blank"&gt;sign up&lt;/A&gt; to join future calls.&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Thu, 24 Sep 2026 19:55:33 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/introducing-bicep-docs-generate-documentation-from-your-bicep/ba-p/4559737</guid>
      <dc:creator>jaredfholgate</dc:creator>
      <dc:date>2026-09-24T19:55:33Z</dc:date>
    </item>
    <item>
      <title>IBC Reflections and Where Media is Headed</title>
      <link>https://techcommunity.microsoft.com/t5/telecommunications-media/ibc-reflections-and-where-media-is-headed/ba-p/4559411</link>
      <description>&lt;P&gt;Over the last several years, it has been easy to focus on the magical experiences produced with AI-generated content. The media industry has responded with growing short-form video, IP licensing for quality AI generated content, and various other approaches, but the core end-to-end workflows and structures of the media industry are intact. In a recent global entertainment and media outlook, &lt;A href="https://www.pwc.com/gx/en/issues/business-model-reinvention/outlook/insights-and-perspectives.html" target="_blank" rel="noopener"&gt;PwC forecasts that technology and live, immersive experiences will fuel global industry growth to $4.2T by 2030&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;New technology imperatives, especially AI, are redefining not just how content is created, but also how it is produced, distributed, and monetized. Following this logic,&lt;STRONG&gt; &lt;/STRONG&gt;it is reasonable to expect that &lt;STRONG&gt;the &lt;/STRONG&gt;&lt;STRONG&gt;future of the media and entertainment industry will&lt;/STRONG&gt;&lt;STRONG&gt; not be defined solely by&lt;/STRONG&gt;&lt;STRONG&gt; AI-&lt;/STRONG&gt;&lt;STRONG&gt;generated content, but by&lt;/STRONG&gt;&lt;STRONG&gt; AI-&lt;/STRONG&gt;&lt;STRONG&gt;orchestrated media operations&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;This was top of mind for customers and partners during &lt;A href="https://show.ibc.org/" target="_blank" rel="noopener"&gt;IBC 2026.&lt;/A&gt; While strategies appear to vary across the media landscape, there is growing consistency in how the Media Industry is assessing, trialing, deploying, and industrializing AI solutions, regardless of whether the focus is on content production (broadcast, streaming), agencies, or data analytics and marketing firms. Social media and shifting consumer engagement patterns are exerting significant pressure on the media industry, forcing organizations to accelerate transformation efforts focused on both operational efficiency and revenue growth.&lt;/P&gt;
&lt;P&gt;However, there are five emerging strategic themes emerging, tied closely to growth, yield, margins, IP returns, advertising outcomes, and trust:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Increase the return on premium content and IP&lt;/LI&gt;
&lt;LI&gt;Industrialize creative and content production&lt;/LI&gt;
&lt;LI&gt;Unify fragmented workflows, data, and decision-making&lt;/LI&gt;
&lt;LI&gt;Make audience engagement and monetization real-time and measurable&lt;/LI&gt;
&lt;LI&gt;Create an AI operating model with trust, rights, governance, and economics built in&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;In simple terms, the industry focus on accelerating content creation and production, running and distributing media operations at-scale, and transforming insights into personalized engagement and monetization highlight the need for a &lt;A href="https://www.microsoft.com/en-us/ai/media-entertainment" target="_blank" rel="noopener"&gt;Connected Media Platform&lt;/A&gt; foundation. There are many clear examples where this is already happening:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The&amp;nbsp;&lt;A href="https://news.microsoft.com/source/2025/07/01/premier-league-and-microsoft-announce-five-year-strategic-partnership-to-personalize-the-fan-experience-with-ai-for-1-8-billion-people/" target="_blank" rel="noopener"&gt;English Premier League Companion&lt;/A&gt; draws on 30 seasons of statistics and supports experiences for 1.8B fans across 189 countries.&lt;/LI&gt;
&lt;LI&gt;The&amp;nbsp;&lt;A href="https://www.microsoft.com/en/customers/story/25537-wnet-azure-virtual-desktop" target="_blank" rel="noopener"&gt;WNET Group&lt;/A&gt; moved 3.6B PB of data (800,000 content hours) to Microsoft Azure, creating the foundation for ongoing management, preservation, and monetization through cloud-first workflows while taking asset recovery from 24 hours to 4 hours.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.microsoft.com/en/customers/story/1646266241611394912-project-gutenberg-nonprofit-azure-synapse-analytics-azure-ai-services" target="_blank" rel="noopener"&gt;Gutenberg&lt;/A&gt; has produced nearly 5,000 audiobooks with AI.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.microsoft.com/en/customers/story/19582-dentsu-azure-kubernetes-service" target="_blank" rel="noopener"&gt;Dentsu&lt;/A&gt; has seen a 90% reduction in time-to-insight for media planning analytics.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.microsoft.com/en/customers/story/20025-mk-systems-usa-azure" target="_blank" rel="noopener"&gt;MediaKind&lt;/A&gt;, Azure-first platform modernization for scalable secure video delivery, is leveraging dynamic dubbing and video captioning to create opportunities with new audiences in minutes.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Similar to other industries, AI is not just perceived as an opportunity, but as a structural capability across the media industry. The future media production platform is a governed, event-driven portfolio of specialized agents operating over a shared media knowledge plane, coordinating people, models, and tools from greenlight through monetization, with every outcome feeding the next creative and commercial decision in parallel.&lt;/P&gt;
&lt;P&gt;Like most operational shifts, this is likely to occur in phases. Today, Phase 1, media production consists of specialized knowledge workers and teams operating highly capable tools chained together into production workflows. The production workflows are sequential with manual handoffs. Each of the stages within the production workflow are increasingly digital, and many of the tools have AI capabilities, but the lifecycle does not operate as one continuous system.&lt;/P&gt;
&lt;P&gt;Phase 2 brings a human-AI hybrid operating model in vertical silos (ex. Development and Greenlight intelligence, Production planning and Finance, Audience feedback into creative optimization), where connected workflows are coordinated between people and agents. What makes this a phase rather than a collection of pilots is the shared media knowledge layer underneath. Agents in different domains read from and write to the same understanding of content, rights, audiences, and performance. The human role changes before the org chart does. People stop executing every step and start supervising: reviewing agent recommendations, handling exceptions, and making the calls that carry creative or financial risk. Coordination still happens across existing systems rather than replacing them, which is why this phase is achievable without a platform migration. The constraint in Phase 2 is rarely model capability. It is the quality of the shared knowledge layer and whether the governance model lets agents act on it.&lt;/P&gt;
&lt;P&gt;AI is starting to arrive in multiple layers of the media value chain.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-style-solid" border="1" style="width: 90.2778%; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Theme&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;AI Outcome&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Creative and Content Supply Workflows&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;AI-powered creation via an industrialized supply chain. The industry opportunity is a repeatable (Deterministic) system that moves an idea through planning, production, enrichment, localization, packaging, distribution, promotion and measurement.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Content and IP intelligence&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Turn every asset into a governed, semantically understood, reusable and monetizable piece of IP. Indexing and retrieval are the technical foundations to enabling reusability of decades of content catalog.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Production Control Plane and orchestration&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;An orchestration layer connecting data, planning, activation, measurement, and monetization. This brings together specialized agents and agentic workflows connecting shared intelligence.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Data, metadata, knowledge and semantic layer&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;A media intelligence fabric as the foundational layer of execution. This is not just a metadata layer, but the intelligence layer for the orchestration layer.&lt;/P&gt;
&lt;P&gt;Every media company we met with at IBC is prioritizing some version of an intelligence substrate.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Real-time delivery, monitoring, and optimization&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;A system that observes live production / delivery / campaign, understands context, predicts opportunity (degradation, for example), recommends and executes an intervention, and measures the result.&lt;/P&gt;
&lt;P&gt;One global broadcaster was most-explicit about prioritizing in-flight performance, near-real-time intelligence, and smarter decisioning.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Real-time Content, Audience, and Monetization Intelligence&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Personalization, directly connected to monetization, including audience engagement, content discovery, and ad yield.&lt;/P&gt;
&lt;P&gt;Archive and Live are sub-patterns that drive different requirements across delivery, content rights, and metadata.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Trust, rights, and governance&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Governance can no longer be viewed as compliance overhead. It’s imperative to retain customer trust.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="https://www.accenture.com/us-en/insights/song/accenture-life-trends" target="_blank" rel="noopener"&gt;Accenture’s Life Trends&lt;/A&gt; highlights that 52% of people have seen deepfake news in the past year; 33% have experienced deepfake attacks or scams targeting personal information.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Phase 3 brings together human ambition and AI, where creative intent, production operations, audience intelligence, and commercial performance operate through a single intelligence layer. &lt;A href="https://www.gartner.com/en/webinar/784381/1775526-gartner-agentic-compass-for-ai-success-aligning-innovation-with-enterprise-needs" target="_blank" rel="noopener"&gt;Gartner&lt;/A&gt; expects a third of enterprise software to include agentic AI by 2028, and &lt;A href="https://www.capgemini.com/news/press-releases/trust-and-human-ai-collaboration-set-to-define-the-next-era-of-agentic-ai-unlocking-450-billion-opportunity-by-2028/" target="_blank" rel="noopener"&gt;Capgemini&lt;/A&gt; puts the economic value in play at $450B on the same timeline, with trust and human-AI collaboration as the gating factor rather than model capability.&lt;/P&gt;
&lt;P&gt;In media, workflows run through one intelligence layer spanning creative intent, production operations, audience intelligence, and commercial performance. Agents assemble their own context and replan continuously as conditions change, so a schedule slip, a rights expiry, and a shift in audience signal are handled as one connected event rather than three disconnected escalations. Creative and financial workflows stop running in sequence and start running in parallel. Audience signal feeds development rather than only post-mortems.&lt;/P&gt;
&lt;P&gt;Humans become creative directors of agent-assisted processes, evaluators of quality, and decisionmakers at high-stakes moments. They are able to establish a creative, commercial, or operational goal, and the agent assembles the context (script, asset, rights, budget, talent, schedule, audience, distribution commitments) then executes, continuously replanning as events trigger (i.e., rights change, budget change, re-shoots). The creative workflow and financial workflow progress in parallel. This is not a shift from human to agentic workflow execution. It is a shift in which humans and agents turn creative intent into outcomes.&lt;/P&gt;
&lt;P&gt;Content is no longer the finished output, but a reusable strategic asset that can be packaged, personalized, promoted, localized, licensed and merchandised through continuous experimentation.&lt;/P&gt;
&lt;P&gt;Customer experience becomes an input into the media production, with audience signals influencing development, content packaged and personalized with companion experiences, and engagement starting before release and continuing after release.&lt;/P&gt;
&lt;P&gt;Phase 3 is not a shift from human to agentic workflow execution. It’s a shift in which humans and agents turn creative intent into outcomes.&lt;/P&gt;
&lt;P&gt;None of this is a prediction about a distant future. Phase 2 is already in production. &lt;A href="https://www.gartner.com/en/webinar/784381/1775526-gartner-agentic-compass-for-ai-success-aligning-innovation-with-enterprise-needs" target="_blank" rel="noopener"&gt;Gartner&lt;/A&gt; expects a third of enterprise software to include agentic AI by 2028, and &lt;A href="https://www.capgemini.com/news/press-releases/trust-and-human-ai-collaboration-set-to-define-the-next-era-of-agentic-ai-unlocking-450-billion-opportunity-by-2028/" target="_blank" rel="noopener"&gt;Capgemini&lt;/A&gt; puts the economic value in play at $450B on the same timeline, with trust and human-AI collaboration as the gating factor rather than model capability. &lt;A href="https://tei.forrester.com/go/microsoft/ai-for-media-and-entertainment/?lang=en-us" target="_blank" rel="noopener"&gt;Forrester's December 2025&lt;/A&gt; modelling of a composite media and entertainment organization puts the return at 118% to 251% ROI, driven not by novel content generation but by time recaptured across content management, creation, localization, and distribution. The technology to run a connected media operation largely exists. What separates the companies that get there from the companies that don't is whether they build the shared knowledge layer and the governance model to act on it or keep buying point solutions that automate individual steps of a broken workflow. That is the choice in front of the industry, and 40% of media CEOs already suspect their current path does not survive the decade.&lt;/P&gt;
&lt;P&gt;We'll be going deeper on all of this at &lt;A href="https://ignite.microsoft.com/en-US/home" target="_blank" rel="noopener"&gt;Microsoft Ignite, November 17-20, 2026&lt;/A&gt; at Moscone Center in San Francisco, where you'll hear it from the media companies doing the work rather than from us. If you're building toward this, come and find us there.&lt;/P&gt;</description>
      <pubDate>Thu, 24 Sep 2026 19:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/telecommunications-media/ibc-reflections-and-where-media-is-headed/ba-p/4559411</guid>
      <dc:creator>kshatzkamer</dc:creator>
      <dc:date>2026-09-24T19:00:00Z</dc:date>
    </item>
    <item>
      <title>Oracle AI Database@Azure Expands with Azure Native Oracle GoldenGate User Experience, Observability</title>
      <link>https://techcommunity.microsoft.com/t5/oracle-on-azure-blog/oracle-ai-database-azure-expands-with-azure-native-oracle/ba-p/4559430</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Customers running mission-critical &lt;STRONG&gt;Oracle &lt;/STRONG&gt;workloads on &lt;STRONG&gt;Azure &lt;/STRONG&gt;want more than database infrastructure in an Azure datacenter. They want their Oracle environments to fit naturally into the way their teams already build, govern, monitor, and purchase services on Azure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Today, &lt;STRONG&gt;Oracle AI Database@Azure&lt;/STRONG&gt; takes another step in that direction with a native Azure experience for Oracle GoldenGate. Customers can provision and manage GoldenGate resources through the Azure portal and APIs, configure connections across databases, clouds, streaming platforms, and Microsoft Fabric, and bring GoldenGate metrics and operational logs into Azure Monitor and Azure Log Analytics.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Together, these capabilities reduce the boundaries between Oracle data replication and the Azure applications, analytics services, operational tools, and governance processes that surround it.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4 aria-level="1"&gt;&lt;SPAN class="lia-text-color-15"&gt;&lt;STRONG&gt;Oracle GoldenGate as a native Azure experience&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Oracle GoldenGate helps enterprises keep operational systems, analytics platforms, and AI workloads synchronized through real-time data replication. The native Azure experience brings GoldenGate provisioning, resource management, connectivity, automation, governance, and observability into the Oracle AI Database@Azure environment.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Customers can create, list, pair, manage, and delete GoldenGate deployments and connections through the Azure portal and incorporate the same lifecycle operations into automated workflows through APIs. Resources are discoverable from the Oracle AI Database@Azure overview and through Microsoft Marketplace search. Because these objects participate in the Azure control plane, teams can apply familiar Azure capabilities such as role-based access control, tags, sizing choices, and Activity Log auditing across the GoldenGate lifecycle.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Provisioning is handled through the Azure experience, while administrators can open the GoldenGate console for detailed replication configuration after deployment. This approach keeps resource deployment, ownership, automation, governance, and auditability in Azure while preserving the specialized GoldenGate experience for configuring replication processes.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5 aria-level="2"&gt;&lt;SPAN class="lia-text-color-15"&gt;Connect Oracle data to the platforms where teams use it&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;The native Azure experience also reflects the breadth of systems that GoldenGate can connect. Customers can configure connections for Oracle Database, Oracle Exadata, OCI Autonomous Database, and Amazon RDS for Oracle, along with Exadata and Autonomous Database services running across Azure, Google Cloud, and AWS.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;For streaming scenarios, supported connection options include Azure Event Hubs, Apache Kafka, Confluent Kafka, Microsoft Fabric Eventstream, and OCI Streaming. GoldenGate can also synchronize Oracle data with Microsoft Fabric destinations including Fabric Lakehouse and Fabric Mirror expediting&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt; your ongoing journey of AI solutioning to build Data agents in Fabric more seamlessly.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;These connection options make GoldenGate a practical bridge between operational Oracle data and the analytics, streaming, and AI services that depend on continuously updated information.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4 aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-15"&gt;Observe GoldenGate with Azure Monitor and Log Analytics&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Provisioning GoldenGate in Azure is only part of the operational experience. As replication environments grow, teams also need a consistent way to monitor service health, identify lag, and investigate operational changes alongside the rest of their Azure estate.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Oracle GoldenGate deployment metrics and operational logs are now generally available in Azure Monitor and Azure Log Analytics for Oracle AI Database@Azure customers. Teams can monitor replication health, create alerts, analyze lifecycle events, and correlate GoldenGate telemetry with Azure applications and infrastructure using the Azure tools they already rely on.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5 aria-level="2"&gt;&lt;SPAN class="lia-text-color-15"&gt;Metrics for health, resource use, lag, and process status&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Azure Monitor provides 18 GoldenGate metrics organized around three operational needs. Deployment health and resource metrics cover CPU, memory, OCPU consumption, file system usage, temporary space, swap space, and overall deployment health.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Replication-lag metrics provide visibility across the deployment and its components, including inbound and outbound deployment lag, Extract and Replicat lag, distribution and receiver path lag, and heartbeat lag. Status metrics show the state of Extract, Replicat, distribution paths, and receiver paths.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Teams can use these signals in Azure alerts, dashboards, workbooks, and queries, helping them spot replication delays or unavailable processes before those issues affect downstream applications and data consumers.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5 aria-level="2"&gt;&lt;SPAN class="lia-text-color-15"&gt;Operational events in Azure Log Analytics&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;GoldenGate lifecycle and operational events can also be sent to an Azure Log Analytics workspace through diagnostic settings. The release includes event categories for deployment updates, deletions, restore workflows, maintenance activity, critical service conditions, and informational state transitions.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Bringing both metrics and operational events into Azure gives operations teams a more complete view. They can see when behavior changed, review the lifecycle or maintenance activity around that change, and correlate the result with signals from Azure applications and infrastructure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4 aria-level="1"&gt;&lt;SPAN class="lia-text-color-15"&gt;&lt;STRONG&gt;A more connected Oracle and Azure experience&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;The native GoldenGate experience brings provisioning, API-driven lifecycle management, connectivity, governance, metrics, and operational logs together as part of Oracle AI Database@Azure. Customers can manage replication resources through Azure, connect Oracle data to the services and platforms where teams use it, and incorporate GoldenGate telemetry into day-to-day Azure operations.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;The result is less operational friction for customers building applications, data platforms, analytics, and AI solutions around Oracle databases on Azure. Oracle AI Database@Azure continues to evolve as an experience that is managed, governed, automated, and observed through the Azure tools customers already use.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Learn more&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:320,&amp;quot;335559739&amp;quot;:120,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:360,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;singleLevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/oracle/oracle-db/oracle-database-get-started" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="List Bullet"&gt;Get started with Oracle AI Database@Azure&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:360,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;singleLevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;A href="https://blogs.oracle.com/dataintegration/announcing-native-ui-for-oracle-goldengate-on-oracle-ai-databaseazure" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="List Bullet"&gt;Learn about the native Azure experience for Oracle GoldenGate&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:269}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Thu, 24 Sep 2026 17:29:07 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/oracle-on-azure-blog/oracle-ai-database-azure-expands-with-azure-native-oracle/ba-p/4559430</guid>
      <dc:creator>RajyaLaxmiYellajosyula</dc:creator>
      <dc:date>2026-09-24T17:29:07Z</dc:date>
    </item>
    <item>
      <title>Migrate Data Ingestion from Data Collector to Log Ingestion - Part 2</title>
      <link>https://techcommunity.microsoft.com/t5/azure-integration-services-blog/migrate-data-ingestion-from-data-collector-to-log-ingestion-part/ba-p/4559649</link>
      <description>&lt;P&gt;In &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/integrationsonazureblog/migrate-data-ingestion-from-data-collector-to-log-ingestion/4510493" data-lia-auto-title="Part1" data-lia-auto-title-active="0" target="_blank"&gt;Part1&lt;/A&gt;, we discussed how to use HTTP action to migrate from the deprecated Data Collector API to Log Ingestion API.&lt;/P&gt;
&lt;P&gt;However, since the deprecated Data Collector API was allowing message payload up to 30MB, some migration scenarios encountered issues; since the new Log Ingestion API has only 1MB payload limit. This applies to both HTTP action, and the preview (Log Ingestion connector)&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-monitor/fundamentals/service-limits#logs-ingestion-api" target="_blank"&gt;Azure Monitor service limits - Azure Monitor | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-left"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-left"&gt;When sending payload larger than 1MB, the HTTP action would fail with the error:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In order to overcome this, we can chunk the array payload, before calling the Ingestion API. We need to chunk the array payload, so each produced chunk is around 800KB&lt;/P&gt;
&lt;P&gt;To do this, you can divide the size of your full payload, by the number of records it has, and this would give an average record size. Then divide 800,000 bytes with the average record size, and this will give you the chunk size.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;For example, if your payload size is 1,200,259 bytes, and the number of records is 2500, then the average record size is:&lt;BR /&gt;1,200,259 / 2,500 =~ 480 bytes&lt;BR /&gt;&lt;BR /&gt;To find the chunk size, we divide 800,000 bytes by 480 bytes&lt;/P&gt;
&lt;P&gt;800,000 / 480 =~ 1666 records.&lt;BR /&gt;&lt;BR /&gt;So if we send around 1600 records, this should be less than 1MB.&lt;/P&gt;
&lt;P&gt;To chunk your array payload, we can use the chunk expression inside a compose action.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;You can use the expression below for chunking inside the compose action:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After the compose action, add for-each action, and use the output of the compose action as an input:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Inside the for-each, use the normal HTTP to send the logs, and in the body, choose the for-each current item&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Sep 2026 15:05:05 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-integration-services-blog/migrate-data-ingestion-from-data-collector-to-log-ingestion-part/ba-p/4559649</guid>
      <dc:creator>mshboul</dc:creator>
      <dc:date>2026-09-24T15:05:05Z</dc:date>
    </item>
    <item>
      <title>Engineering Agentic Recall Controls with MCP and Microsoft Foundry</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/engineering-agentic-recall-controls-with-mcp-and-microsoft/ba-p/4557549</link>
      <description>&lt;ARTICLE&gt;
&lt;P&gt;AI agents become operationally interesting when they can reach real systems. They also become operationally dangerous at exactly the same moment.&lt;/P&gt;
&lt;P&gt;Caldova Recall Control Tower is a developer demonstration built around that tension. It uses a fictional pharmaceutical recall to show how an agent can gather evidence and prepare a decision while deterministic application code retains authority over approval and inventory mutation. The implementation combines the Model Context Protocol (MCP), Microsoft Agent Framework, a Microsoft Foundry Hosted Agent, FastAPI, Microsoft Entra authentication, managed identity, and optimistic concurrency in Azure Blob Storage.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Central design rule:&lt;/STRONG&gt; Let the model interpret and recommend. Make ordinary code authenticate, authorize, mutate, and prove what happened.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Caldova is fictional, all operational data is synthetic, and this sample is not a production recall system or a source of clinical advice.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;The scenario: useful reasoning, consequential action&lt;/H2&gt;
&lt;P&gt;The demo starts with a temperature excursion affecting batch &lt;CODE&gt;B-2408-AX7&lt;/CODE&gt; of Caldova Relief 20 mg tablets. The synthetic inventory contains 2,196 units across two distribution centers and two retail stores. A useful system must establish the notice, locate every affected position, check supplier status, explain uncertainty, and recommend an action.&lt;/P&gt;
&lt;P&gt;That analysis is a good fit for specialized agents. Quarantining inventory is not.&lt;/P&gt;
&lt;P&gt;Quarantine changes operational state. It therefore needs an authenticated human, explicit authorization, a batch-scoped approval, concurrency control, idempotency, and an audit record. None of those guarantees should depend on a prompt being followed.&lt;/P&gt;
&lt;/ARTICLE&gt;
&lt;img /&gt;
&lt;ARTICLE&gt;
&lt;FIGURE&gt;
&lt;FIGCAPTION&gt;The authenticated hosted application at the start of the fictional recall.&lt;/FIGCAPTION&gt;
&lt;/FIGURE&gt;
&lt;H2&gt;Architecture: separate reasoning from authority&lt;/H2&gt;
&lt;P&gt;The solution has two related but deliberately separate paths.&lt;/P&gt;
&lt;img /&gt;
&lt;FIGURE&gt;
&lt;FIGCAPTION&gt;Caldova separates model reasoning from application authority. Official Microsoft service icons identify Foundry Agent Service, App Service, Managed Identity, and Blob Storage.&lt;/FIGCAPTION&gt;
&lt;/FIGURE&gt;
&lt;P&gt;The &lt;STRONG&gt;reasoning path&lt;/STRONG&gt; invokes a Hosted Agent through the Responses protocol. Four agents run in a fixed sequence: triage, inventory impact, supplier/compliance, and supervisor. The first three have narrow read-only tools. The supervisor has no tools and synthesizes the accumulated context into a decision brief.&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;authority path&lt;/STRONG&gt; remains in the web application. It validates the EasyAuth identity claims, checks an approver allowlist, binds approval to the caller, batch, action, and current demo generation, and only then calls deterministic domain code. State is stored per actor in Blob Storage and updated with ETag match conditions so concurrent writes fail instead of silently overwriting each other.&lt;/P&gt;
&lt;P&gt;There is also a deterministic localhost demo. It reuses synthetic domain fixtures and demonstrates MCP contracts, approval, quarantine, and replay without a model or cloud account. It is useful for development, but its typed approver name and in-memory state are not production identity or durable compliance evidence.&lt;/P&gt;
&lt;H2&gt;Building a narrow MCP surface&lt;/H2&gt;
&lt;P&gt;MCP standardizes how an AI application discovers and calls external tools. It does not remove the need to design those tools carefully.&lt;/P&gt;
&lt;P&gt;Caldova exposes small, typed operations such as &lt;CODE&gt;get_recall_notice&lt;/CODE&gt;, &lt;CODE&gt;locate_inventory&lt;/CODE&gt;, and &lt;CODE&gt;get_supplier_status&lt;/CODE&gt;. Inputs are constrained with Pydantic, and tool annotations tell clients that these operations are read-only and closed-world:&lt;/P&gt;
&lt;PRE class="language-python" tabindex="0" contenteditable="false" data-lia-code-value="@mcp.tool(
    title=&amp;quot;Locate affected inventory&amp;quot;,
    annotations=ToolAnnotations(
        read_only_hint=True,
        open_world_hint=False,
    ),
)
def locate_inventory(batch_id: BatchId) -&amp;gt; dict[str, Any]:
    return STORE.locate_inventory(batch_id)"&gt;&lt;CODE&gt;@mcp.tool(
    title="Locate affected inventory",
    annotations=ToolAnnotations(
        read_only_hint=True,
        open_world_hint=False,
    ),
)
def locate_inventory(batch_id: BatchId) -&amp;gt; dict[str, Any]:
    return STORE.locate_inventory(batch_id)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The mutation tool is separately marked destructive and requires a batch-scoped approval token. Those annotations improve discovery and planning, but they are metadata, not an authorization boundary. The real check occurs inside &lt;CODE&gt;quarantine_batch&lt;/CODE&gt;, below the model and below the tool description.&lt;/P&gt;
&lt;P&gt;The Hosted Agent does not receive the mutation tools at all. Its specialists call only three read operations through an isolated MCP stdio subprocess. This is stronger than asking an all-powerful agent to "please remain read-only": capability is constrained by construction.&lt;/P&gt;
&lt;P&gt;The subprocess boundary also keeps MCP v2 dependencies isolated from the Foundry hosting environment. Each call has a timeout, bounded concurrency, structured JSON handling, and a generic failure response that does not leak subprocess details.&lt;/P&gt;
&lt;H2&gt;Fixed workflows beat vague autonomy for this case&lt;/H2&gt;
&lt;P&gt;Multi-agent does not have to mean dynamic routing. Caldova uses an explicit sequence because the business dependency is explicit: validate the notice before locating inventory, locate inventory before checking supplier implications, and synthesize only after all three specialist outputs exist.&lt;/P&gt;
&lt;PRE class="language-python" tabindex="0" contenteditable="false" data-lia-code-value="return (
    WorkflowBuilder(start_executor=triage, output_from=[supervisor])
    .add_edge(triage, inventory)
    .add_edge(inventory, compliance)
    .add_edge(compliance, supervisor)
    .build()
    .as_agent()
)"&gt;&lt;CODE&gt;return (
    WorkflowBuilder(start_executor=triage, output_from=[supervisor])
    .add_edge(triage, inventory)
    .add_edge(inventory, compliance)
    .add_edge(compliance, supervisor)
    .build()
    .as_agent()
)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This topology is easier to test and reason about than an unconstrained planner. Each specialist has one job and one tool allowlist. Full context is passed where synthesis requires it, while the supervisor remains tool-free.&lt;/P&gt;
&lt;P&gt;Request isolation matters too. A hosted process can serve concurrent users, so workflow state must not leak between requests. The sample creates a fresh workflow agent for each request context rather than reusing mutable agent state globally.&lt;/P&gt;
&lt;H2&gt;What the live hosted run showed&lt;/H2&gt;
&lt;P&gt;The hosted application completed a read-only assessment for the synthetic batch. The resulting brief reported:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;2,196 affected units across four locations.&lt;/LI&gt;
&lt;LI&gt;A high-risk inbound temperature excursion.&lt;/LI&gt;
&lt;LI&gt;Supplier acknowledgement, a 36-hour replacement estimate, and a drafted credit note.&lt;/LI&gt;
&lt;LI&gt;Unknown transit temperature details, excursion duration, stability impact, final supplier disposition, and potentially issued stock.&lt;/LI&gt;
&lt;LI&gt;A recommendation to hold or quarantine stock, explicitly stating that no quarantine had occurred.&lt;/LI&gt;
&lt;LI&gt;A required human approval before any inventory restriction.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;FIGURE&gt;
&lt;FIGCAPTION&gt;The live Hosted Agent decision brief. Transient response and correlation identifiers are masked; the operations rail is excluded because it contains actor-scoped audit data.&lt;/FIGCAPTION&gt;
&lt;/FIGURE&gt;
&lt;P&gt;The screenshot also shows an important truthfulness choice: the UI says &lt;STRONG&gt;Hosted workflow trace unavailable&lt;/STRONG&gt;. The application does not invent stage completion or tool-call evidence when the hosted endpoint does not return trustworthy trace data. The answer can be displayed, but it must not be presented as proof of an internal execution path.&lt;/P&gt;
&lt;H2&gt;Approval is a protocol, not a button&lt;/H2&gt;
&lt;P&gt;The hosted web path uses App Service authentication with Microsoft Entra. The application accepts the injected principal only on the configured App Service host, validates tenant and object identifiers, applies a user allowlist, and performs an additional approver check for mutation requests. State-changing calls also require the expected origin and an application request header.&lt;/P&gt;
&lt;P&gt;Approval is then bound to five facts:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The authenticated actor.&lt;/LI&gt;
&lt;LI&gt;The current demo generation.&lt;/LI&gt;
&lt;LI&gt;The affected batch.&lt;/LI&gt;
&lt;LI&gt;The &lt;CODE&gt;quarantine&lt;/CODE&gt; action.&lt;/LI&gt;
&lt;LI&gt;A ten-minute validity window until first use.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Resetting the demo creates a new generation, invalidating old handles. Consuming an approval does not make replay unsafe: the same bound handle can repeat the same quarantine operation, but domain code changes only positions that are not already quarantined. A second call reports an idempotent replay with zero additional positions changed.&lt;/P&gt;
&lt;P&gt;This is the difference between a human-in-the-loop interface and a human-authorized system. A modal dialog provides user experience; identity binding and deterministic policy provide control.&lt;/P&gt;
&lt;H2&gt;Durable state needs concurrency semantics&lt;/H2&gt;
&lt;P&gt;The hosted application stores each actor's synthetic session in a separate Blob object. A load returns both JSON state and its ETag. A save uses &lt;CODE&gt;IfNotModified&lt;/CODE&gt; semantics; if another request updated the same state first, Azure Storage rejects the stale write and the API returns a conflict.&lt;/P&gt;
&lt;PRE class="language-python" tabindex="0" contenteditable="false" data-lia-code-value="conditions = (
    {&amp;quot;etag&amp;quot;: etag, &amp;quot;match_condition&amp;quot;: MatchConditions.IfNotModified}
    if etag else {}
)
await blob.upload_blob(
    json.dumps(state),
    overwrite=etag is not None,
    **conditions,
)"&gt;&lt;CODE&gt;conditions = (
    {"etag": etag, "match_condition": MatchConditions.IfNotModified}
    if etag else {}
)
await blob.upload_blob(
    json.dumps(state),
    overwrite=etag is not None,
    **conditions,
)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Without that condition, two browser requests could both read the same approval state and overwrite one another using last-writer-wins behavior. Agent systems do not get a concurrency exemption: ordinary distributed-systems rules still apply.&lt;/P&gt;
&lt;H2&gt;Fail closed, and make the failure legible&lt;/H2&gt;
&lt;P&gt;The analysis adapter accepts only HTTPS Foundry endpoints with the expected path, uses a managed-identity token for &lt;CODE&gt;https://ai.azure.com/.default&lt;/CODE&gt;, disables redirects, and enforces bounded connect and overall timeouts. It accepts only a completed assistant response with non-empty output text.&lt;/P&gt;
&lt;P&gt;If the endpoint times out, returns partial output, returns malformed data, or becomes unavailable, the application clears the analysis lease and reports that no inventory changed. It does not substitute a local answer and label it as hosted. Approval remains locked until a new hosted analysis succeeds.&lt;/P&gt;
&lt;P&gt;This can feel strict during a demo, but it protects provenance. A degraded fallback is useful only when the UI and audit model can identify it accurately.&lt;/P&gt;
&lt;H2&gt;What is proven, and what is not&lt;/H2&gt;
&lt;P&gt;The sample provides useful evidence for several engineering claims:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Typed MCP tools reject malformed input.&lt;/LI&gt;
&lt;LI&gt;Hosted specialists receive read-only capabilities only.&lt;/LI&gt;
&lt;LI&gt;Approval is checked below the model and bound to identity and session state.&lt;/LI&gt;
&lt;LI&gt;Quarantine is idempotent in the synthetic domain.&lt;/LI&gt;
&lt;LI&gt;Blob ETags prevent stale session writes.&lt;/LI&gt;
&lt;LI&gt;Empty, partial, failed, and timed-out hosted responses fail closed.&lt;/LI&gt;
&lt;LI&gt;Local tests cover domain, MCP, workflow, API, and repository-hygiene behavior.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;It does not prove that the sample is a production recall platform. The scenario is synthetic. The local audit log is not tamper-evident. The hosted UI currently lacks trustworthy per-stage and per-tool trace rendering. Deployment-specific RBAC, EasyAuth configuration, telemetry access, model behavior, load characteristics, costs, and recovery procedures require validation in each environment.&lt;/P&gt;
&lt;P&gt;Evaluation evidence also expires. Golden cases and evaluator configuration are useful assets, but historical results are not a current release certificate. Re-run evaluations against the deployed agent version and inspect failures before making quality claims.&lt;/P&gt;
&lt;H2&gt;Try the pattern&lt;/H2&gt;
&lt;P&gt;Start with the deterministic path before provisioning cloud resources:&lt;/P&gt;
&lt;PRE class="language-powershell" tabindex="0" contenteditable="false" data-lia-code-value="Set-Location (git rev-parse --show-toplevel)
py -3.13 -m venv caldova-recall-control/.venv
./caldova-recall-control/.venv/Scripts/python.exe -m pip install `
  -r caldova-recall-control/requirements-ui.txt
./caldova-recall-control/.venv/Scripts/python.exe -m uvicorn `
  control_tower_api:app `
  --app-dir caldova-recall-control/src `
  --host 127.0.0.1 `
  --port 8091"&gt;&lt;CODE&gt;Set-Location (git rev-parse --show-toplevel)
py -3.13 -m venv caldova-recall-control/.venv
./caldova-recall-control/.venv/Scripts/python.exe -m pip install `
  -r caldova-recall-control/requirements-ui.txt
./caldova-recall-control/.venv/Scripts/python.exe -m uvicorn `
  control_tower_api:app `
  --app-dir caldova-recall-control/src `
  --host 127.0.0.1 `
  --port 8091&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then inspect the MCP server over stdio:&lt;/P&gt;
&lt;PRE class="language-powershell" tabindex="0" contenteditable="false" data-lia-code-value="./caldova-recall-control/.venv/Scripts/python.exe `
  caldova-recall-control/scripts/inspect_mcp.py"&gt;&lt;CODE&gt;./caldova-recall-control/.venv/Scripts/python.exe `
  caldova-recall-control/scripts/inspect_mcp.py&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The inspector discovers the real tool schemas, reads the synthetic inventory, rejects malformed input and an unapproved mutation, and confirms the stock remains unchanged. Only after that local contract is understood should you configure a Foundry project, deployment identity, model deployment, and Hosted Agent.&lt;/P&gt;
&lt;H2&gt;Engineering takeaways&lt;/H2&gt;
&lt;P&gt;The most reusable lesson in Caldova is not the number of agents. It is the placement of authority.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Give each model the smallest useful toolset.&lt;/LI&gt;
&lt;LI&gt;Prefer explicit workflow topology when the business process is known.&lt;/LI&gt;
&lt;LI&gt;Treat tool annotations as descriptive metadata, not access control.&lt;/LI&gt;
&lt;LI&gt;Bind consequential approval to authenticated identity, resource, action, and session generation.&lt;/LI&gt;
&lt;LI&gt;Put mutation and idempotency in deterministic domain code.&lt;/LI&gt;
&lt;LI&gt;Use optimistic concurrency for durable web state.&lt;/LI&gt;
&lt;LI&gt;Preserve provenance by failing closed instead of silently changing execution paths.&lt;/LI&gt;
&lt;LI&gt;Show only evidence the system actually captured.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Agents are excellent at turning fragmented evidence into an actionable brief. Reliable systems make sure the brief and the action remain two different things.&lt;/P&gt;
&lt;H2&gt;References&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://github.com/leestott/mcp-connect" target="_blank"&gt;Caldova source repository&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://modelcontextprotocol.io/docs/getting-started/intro" target="_blank"&gt;Model Context Protocol introduction&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/agent-framework/workflows/" target="_blank"&gt;Microsoft Agent Framework workflow capabilities&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/agents/how-to/deploy-hosted-agent" target="_blank"&gt;Deploy a Hosted Agent in Microsoft Foundry&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad" target="_blank"&gt;Configure Microsoft Entra authentication for Azure App Service&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/storage/blobs/concurrency-manage" target="_blank"&gt;Manage concurrency in Azure Blob Storage&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/ARTICLE&gt;</description>
      <pubDate>Thu, 24 Sep 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/engineering-agentic-recall-controls-with-mcp-and-microsoft/ba-p/4557549</guid>
      <dc:creator>Lee_Stott</dc:creator>
      <dc:date>2026-09-24T07:00:00Z</dc:date>
    </item>
    <item>
      <title>How to Validate That Your BizTalk SB-Messaging Adapter Is Really Using AMQP</title>
      <link>https://techcommunity.microsoft.com/t5/azure-integration-services-blog/how-to-validate-that-your-biztalk-sb-messaging-adapter-is-really/ba-p/4559391</link>
      <description>&lt;P&gt;On September 30, 2026, Azure Service Bus stops accepting the Service Bus Messaging Protocol (SBMP) — the protocol the BizTalk SB-Messaging adapter has always used. The failure mode is not a warning in a log file; it is a refused connection. To keep those integrations running, a BizTalk Server 2020 hotfix adds a new &lt;STRONG&gt;Azure.Messaging.ServiceBus&lt;/STRONG&gt; AMQP implementation to the adapter in place of the legacy SBMP path.&lt;/P&gt;
&lt;P&gt;This post walks through how to validate the hotfix was successfully deployed and is using AMQP and not SBMP.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&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;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Required baseline:&lt;/STRONG&gt; BizTalk Server 2020 with &lt;STRONG&gt;Cumulative Update 6 or Cumulative Update 7&lt;/STRONG&gt; installed, plus the SB-Messaging AMQP hotfix — &lt;STRONG&gt;KB5091379&lt;/STRONG&gt;, obtained by opening a Microsoft support case. The hotfix is not offered through Windows Update or the regular CU download, and it will not install on a CU5 or earlier baseline.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Every node in the BizTalk group needs it.&lt;/STRONG&gt; A multi-server group will happily run the affected host instance on an unpatched node, and your test may land on the one server where the fix is not active. Patch and restart host instances everywhere, then record the edition, CU level, hotfix number, and component build per server.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Hotfix location:&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-8"&gt;https://1drv.ms/f/c/cac4b5f5988b8228/IgCrzn_KTaZ8T5tuKmcdPgXxARuOLcGHDhxVLgeysj44GWE?e=w5AcpM&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once the baseline is confirmed, test in a non-production environment that reproduces production topology, authentication, and the full network path — proxy, firewall, private endpoint, and DNS. And list every materially different configuration you intend to validate: each send port and receive location, queue, topic, and subscription usage, 32-bit versus 64-bit hosts, and features such as sessions, ordered delivery, or transactions. A green result on one port does not validate the others.&lt;/P&gt;
&lt;H1&gt;Method 1: Verify the active connection on port 5671 (recommended)&lt;/H1&gt;
&lt;P&gt;The adapter selects AMQP over TCP, and Azure Service Bus uses TCP port &lt;STRONG&gt;5671&lt;/STRONG&gt; for AMQP over TLS. Correlating an established 5671 connection with the correct BTSNTSvc or BTSNTSvc64 process demonstrates that the BizTalk host is using the AMQP transport. Run elevated PowerShell while the receive location is enabled and actively polling:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;$hostProcesses = Get-Process BTSNTSvc, BTSNTSvc64 -ErrorAction SilentlyContinue Get-NetTCPConnection -State Established -RemotePort 5671 | Where-Object OwningProcess -in $hostProcesses.Id | ForEach-Object { $process = Get-Process -Id $_.OwningProcess [pscustomobject]@{ Process = $process.ProcessName ProcessId = $_.OwningProcess LocalAddress = $_.LocalAddress LocalPort = $_.LocalPort RemoteAddress = $_.RemoteAddress RemotePort = $_.RemotePort State = $_.State } }&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;Expected result:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Process is BTSNTSvc or BTSNTSvc64.&lt;/LI&gt;
&lt;LI&gt;Remote port is 5671.&lt;/LI&gt;
&lt;LI&gt;State is Established.&lt;/LI&gt;
&lt;LI&gt;The remote address resolves to or corresponds to the Service Bus namespace.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;What an empty result means:&lt;/STRONG&gt; not much, on its own. An empty result is inconclusive, not a failure. Confirm the port or receive location is enabled, the host instance is running, traffic is actually flowing during the check, and that DNS, firewall, or private endpoint rules permit the connection — then repeat. One important exception: if your environment routes &lt;STRONG&gt;AMQP over WebSockets on TCP 443&lt;/STRONG&gt;, you should not expect a 5671 connection at all. In that case skip to Method 2.&lt;/P&gt;
&lt;H1&gt;Method 2: Capture adapter traces&lt;/H1&gt;
&lt;P&gt;When the connection view is unavailable or ambiguous, the trace is the more definitive answer, because it shows which code path executed rather than which socket happened to be open. BizTalk adapter tracing uses ETW through &lt;STRONG&gt;BT.Trace.Tracer&lt;/STRONG&gt;, and entries containing &lt;STRONG&gt;[SBMessaging-AMQP]&lt;/STRONG&gt; confirm that the new AMQP-specific implementation executed.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Start BizTalk adapter tracing immediately before the test — not hours earlier.&lt;/LI&gt;
&lt;LI&gt;Send or receive a single, uniquely identifiable test message through the target port or receive location.&lt;/LI&gt;
&lt;LI&gt;Stop tracing as soon as the message completes.&lt;/LI&gt;
&lt;LI&gt;Search the captured output for &lt;STRONG&gt;[SBMessaging-AMQP]&lt;/STRONG&gt; entries inside the test window, and match them to the host instance and configuration you were exercising.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H1&gt;Method 3: Block the legacy SBMP ports&lt;/H1&gt;
&lt;P&gt;Methods 3 and 4 are corroborating tests, not proof, and belong in an isolated environment. Legacy SBMP commonly uses TCP ports 9350 through 9354. If the isolated AMQP workload continues to operate while those ports are blocked and TCP 5671 remains available, the result corroborates that the workload does not depend on SBMP. Record the original firewall rules before you start and restore them immediately afterwards — this test has a real blast radius if it escapes the test subnet.&lt;/P&gt;
&lt;H1&gt;Method 4: Large message functional test&lt;/H1&gt;
&lt;P&gt;In Basic and Standard tiers, the maximum message size is &lt;STRONG&gt;256 KB&lt;/STRONG&gt;, regardless of SDK or protocol, so this test does not apply there. In Premium, the legacy SBMP path supports messages only up to &lt;STRONG&gt;1 MB&lt;/STRONG&gt;, whereas AMQP supports larger messages up to the entity’s configured maximum of &lt;STRONG&gt;100 MB&lt;/STRONG&gt;. Successfully processing a Premium message larger than 1 MB therefore provides supplementary evidence that the adapter is using AMQP.&lt;/P&gt;
&lt;P&gt;Read a failure carefully: entity limits, timeouts, and pipeline constraints all produce the same symptom, so a failed large-message test is not by itself evidence that the hotfix did not take. Verify payload integrity and the event log, then remove the test message and restore any temporary entity settings.&lt;/P&gt;
&lt;H1&gt;Do not stop at the protocol&lt;/H1&gt;
&lt;P&gt;Confirming that AMQP is in use answers the transport question. It does not answer whether your solution still behaves the same way. AMQP and SBMP differ in a handful of behavioural details, so before you call the validation complete, run the scenarios your integrations depend on and compare against a pre-change baseline:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Send and receive across each representative queue, topic, and subscription path, checking message body and application-property fidelity.&lt;/LI&gt;
&lt;LI&gt;Peek-lock completion, abandon, defer, dead-letter, and retry behaviour, plus sessions, ordering, transactions, and duplicate detection where you use them.&lt;/LI&gt;
&lt;LI&gt;Authentication renewal, and recovery after a host instance restart or a brief network interruption.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Throughput and latency within your accepted baseline, with no new event log errors, suspended instances, duplicates, or lost messages.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Sep 2026 04:15:15 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-integration-services-blog/how-to-validate-that-your-biztalk-sb-messaging-adapter-is-really/ba-p/4559391</guid>
      <dc:creator>hcamposu</dc:creator>
      <dc:date>2026-09-24T04:15:15Z</dc:date>
    </item>
    <item>
      <title>How do you know what to optimize next in your AI agent? Ask The Experts!</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/how-do-you-know-what-to-optimize-next-in-your-ai-agent-ask-the/ba-p/4559401</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Join us live to get a demo of the capabilities then engage with the experts in a Q&amp;amp;A. Bring your questions – post them in Discord ahead of time or ask them during the session.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:false,&amp;quot;134233118&amp;quot;:false,&amp;quot;335551550&amp;quot;:0,&amp;quot;335551620&amp;quot;:0,&amp;quot;335559738&amp;quot;:240,&amp;quot;335559739&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Save the date&lt;/STRONG&gt;: 1:30-2:00pm ET, Sep 25, 2026 &lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Join the Discord&lt;/STRONG&gt;: &lt;/SPAN&gt;&lt;A href="https://aka.ms/model-mondays/discord" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;https://aka.ms/model-mondays/discord&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Join the AMA live&lt;/STRONG&gt;: &lt;/SPAN&gt;&lt;A href="https://aka.ms/FoundryFriday-Optimizer-Insights" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;https://aka.ms/FoundryFriday-Optimizer-Insights&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:false,&amp;quot;134233118&amp;quot;:false,&amp;quot;335551550&amp;quot;:0,&amp;quot;335551620&amp;quot;:0,&amp;quot;335559738&amp;quot;:240,&amp;quot;335559739&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;BR /&gt;You shipped an agent. It is running in production. Now comes the harder question: W&lt;STRONG&gt;hat should you optimize first, and how do you move from recurring behaviors in your traces to better instructions, tools, skills, and model choices?&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;That is exactly what we will explore in this week’s Foundry Friday Ask Me Anything (AMA) - let's talk about how insights in Foundry and agent optimizer can help you move from production signals to practical improvements. Join us as we talk to Charles Kim, the Product Lead for these features at Core AI. See a live demo, bring your own agent optimization questions, and get answers and actionable advice from the people who build the product.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Start with the patterns hiding in your traces&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt; ..&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Insights in Foundry&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; analyzes traces from production agents and organizes recurring behaviors into reviewable insights. Instead of combing through isolated runs, you can examine representative traces, see which agent versions are affected, explore likely causes, and identify recommended next actions.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;That changes the developer question from “&lt;EM&gt;What happened in this trace&lt;/EM&gt;?” to “&lt;STRONG&gt;&lt;EM&gt;What keeps happening across my agents at scale, and what should I improve next?&lt;/EM&gt;&lt;/STRONG&gt;”&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/observability/how-to/agent-insights" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more about insights in Foundry&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: rgb(30, 30, 30); font-size: 32px;" data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Then turn those findings into better agent configurations&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30); font-size: 32px;" data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Agent optimizer in Foundry Agent Service&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; helps you improve prompt agents and hosted agents by automatically evaluating their behavior and generating stronger configurations. It can refine instructions, skills, tool descriptions, and model selections, so you can spend less time manually tuning prompts and more time building the experience that makes your agent useful.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Together, insights and optimization create a practical loop: observe how your agent behaves in the real world, identify recurring opportunities, make targeted improvements, and evaluate again.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/agents/concepts/agent-optimizer-overview?source=docs" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more about agent optimizer&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Want to see that loop in action?&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt; Join us for the Foundry Friday AMA.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If you are wondering how these capabilities fit into your own development workflow, or what they can reveal about an agent already in production, &lt;STRONG&gt;bring that question to the people building them&lt;/STRONG&gt;.&lt;/SPAN&gt; &lt;SPAN data-contrast="auto"&gt;The team behind the insights in Foundry and agent optimizer in Foundry Agent Service will join us for a live AMA on the Microsoft Foundry Discord. Join us live to get a demo of the capabilities then engage with the experts in a Q&amp;amp;A. Bring your questions – post them in Discord ahead of time or ask them during the session.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:false,&amp;quot;134233118&amp;quot;:false,&amp;quot;335551550&amp;quot;:0,&amp;quot;335551620&amp;quot;:0,&amp;quot;335559738&amp;quot;:240,&amp;quot;335559739&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Save the date&lt;/STRONG&gt;: 1:30-2:00pm ET, Sep 25, 2026 &lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Join the Discord&lt;/STRONG&gt;: &lt;/SPAN&gt;&lt;A href="https://aka.ms/model-mondays/discord" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;https://aka.ms/model-mondays/discord&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Join the AMA live&lt;/STRONG&gt;: &lt;/SPAN&gt;&lt;A href="https://aka.ms/FoundryFriday-Optimizer-Insights" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;https://aka.ms/FoundryFriday-Optimizer-Insights&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:false,&amp;quot;134233118&amp;quot;:false,&amp;quot;335551550&amp;quot;:0,&amp;quot;335551620&amp;quot;:0,&amp;quot;335559738&amp;quot;:240,&amp;quot;335559739&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Sep 2026 03:41:03 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/how-do-you-know-what-to-optimize-next-in-your-ai-agent-ask-the/ba-p/4559401</guid>
      <dc:creator>nitya</dc:creator>
      <dc:date>2026-09-24T03:41:03Z</dc:date>
    </item>
    <item>
      <title>Catalyst: Frontier stories of AI Infrastructure innovation</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infrastructure-blog/catalyst-frontier-stories-of-ai-infrastructure-innovation/ba-p/4559362</link>
      <description>&lt;H4&gt;In the Catalyst series, we explore the transformative power of AI by showcasing visionary companies driving scientific and industry breakthroughs powered by Azure and NVIDIA. This video series spotlights how innovation ignites action and how today’s visionaries are shaping tomorrow with the power of AI and cloud innovation.&lt;/H4&gt;
&lt;H2&gt;&lt;SPAN class="lia-text-color-10"&gt;&lt;STRONG&gt;Building resilience against extreme weather&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;div data-video-id="https://www.youtube.com/watch?v=-tbRz33WANo&amp;amp;list=PLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP&amp;amp;index=2&amp;amp;t=268s&amp;amp;pp=iAQB/1790179416703" data-video-remote-vid="https://www.youtube.com/watch?v=-tbRz33WANo&amp;amp;list=PLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP&amp;amp;index=2&amp;amp;t=268s&amp;amp;pp=iAQB/1790179416703" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F-tbRz33WANo%3Flist%3DPLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP%26start%3D268&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D-tbRz33WANo&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F-tbRz33WANo%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;P&gt;Tomorrow.io turns space-based data into AI-driven forecasting powered by Azure and NVIDIA at a global scale. Its high-performance AI models deliver real-time weather intelligence that helps governments and enterprises anticipate disruption, optimize operations, and act faster in the face of severe events.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-10"&gt;Expanding access in preventative healthcare&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H2&gt;
&lt;div data-video-id="https://www.youtube.com/watch?v=FZrapwvfkNE&amp;amp;list=PLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP&amp;amp;index=1&amp;amp;t=14s&amp;amp;pp=iAQB/1790179497156" data-video-remote-vid="https://www.youtube.com/watch?v=FZrapwvfkNE&amp;amp;list=PLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP&amp;amp;index=1&amp;amp;t=14s&amp;amp;pp=iAQB/1790179497156" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FFZrapwvfkNE%3Flist%3DPLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP%26start%3D14&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DFZrapwvfkNE&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FFZrapwvfkNE%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;P&gt;Powered by Microsoft Azure and NVIDIA, Helfie uses multimodal AI to transform smartphone selfies into intelligent health screening at scale. By combining advanced models with real-time inference, it delivers rapid biometric insights that help identify risks earlier and expand access to remote and underserved communities.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-10"&gt;How AI is mapping the tree of life&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H2&gt;
&lt;div data-video-id="https://www.youtube.com/watch?v=IbN3ClySZsg&amp;amp;list=PLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP&amp;amp;index=4&amp;amp;t=5s&amp;amp;pp=iAQB/1790179729378" data-video-remote-vid="https://www.youtube.com/watch?v=IbN3ClySZsg&amp;amp;list=PLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP&amp;amp;index=4&amp;amp;t=5s&amp;amp;pp=iAQB/1790179729378" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FIbN3ClySZsg%3Flist%3DPLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP%26start%3D5&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DIbN3ClySZsg&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FIbN3ClySZsg%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;P&gt;Powered by Azure and NVIDIA to build the world’s largest biological databases, Basecamp Research is decoding the complexity of biology to accelerate scientific breakthroughs.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-10"&gt;Building the next frontier of data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H2&gt;
&lt;div data-video-id="https://www.youtube.com/watch?v=IeNwoTAgmsk&amp;amp;list=PLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP&amp;amp;index=5&amp;amp;t=253s&amp;amp;pp=iAQB/1790179786937" data-video-remote-vid="https://www.youtube.com/watch?v=IeNwoTAgmsk&amp;amp;list=PLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP&amp;amp;index=5&amp;amp;t=253s&amp;amp;pp=iAQB/1790179786937" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FIeNwoTAgmsk%3Flist%3DPLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP%26start%3D253&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DIeNwoTAgmsk&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FIeNwoTAgmsk%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;P&gt;Powered by Microsoft Azure and NVIDIA, Global Objects is digitizing the real world by creating high-fidelity digital twins of over 5 million physical items. These photorealistic 3D models are transforming immersive content creation across Hollywood, gaming, robotics, and cultural preservation.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-10"&gt;Changing how doctors diagnose diseases with AI&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H2&gt;
&lt;div data-video-id="https://www.youtube.com/watch?v=yKPu8n42LPs&amp;amp;list=PLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP&amp;amp;index=3&amp;amp;t=20s&amp;amp;pp=iAQB/1790179835555" data-video-remote-vid="https://www.youtube.com/watch?v=yKPu8n42LPs&amp;amp;list=PLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP&amp;amp;index=3&amp;amp;t=20s&amp;amp;pp=iAQB/1790179835555" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FyKPu8n42LPs%3Flist%3DPLFPUGjQjckXGwSzAMLFBXhu9G7PiQyBMP%26start%3D20&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DyKPu8n42LPs&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FyKPu8n42LPs%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;P&gt;Powered by Microsoft Azure and NVIDIA, Pangaea Data is closing care gaps by identifying untreated and under-treated patients across rare and hard-to-diagnose diseases faster, earlier, and more accurately.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN class="lia-text-color-10"&gt;&lt;STRONG&gt;Learn more&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;The Catalyst series explores how organizations are using AI infrastructure to tackle some of their most complex technical and business challenges, from accelerating scientific discovery to advancing autonomous systems and transforming core industries.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Learn more about &lt;A class="lia-external-url" href="https://datacenters.microsoft.com/catalyst-series/" target="_blank" rel="noopener"&gt;Catalyst&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Learn more about &lt;A class="lia-external-url" href="https://azure.microsoft.com/en-us/solutions/high-performance-computing/ai-infrastructure?msockid=2d4dccd6b15a6db43209db0bb0266ca9" target="_blank" rel="noopener"&gt;Azure AI infrastructure&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 23 Sep 2026 17:05:19 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infrastructure-blog/catalyst-frontier-stories-of-ai-infrastructure-innovation/ba-p/4559362</guid>
      <dc:creator>abbyhamilton</dc:creator>
      <dc:date>2026-09-23T17:05:19Z</dc:date>
    </item>
    <item>
      <title>BLOG: Azure Local Tools: Community Projects, Microsoft Official Utilities, and OEM Resources</title>
      <link>https://techcommunity.microsoft.com/t5/azure-arc/blog-azure-local-tools-community-projects-microsoft-official/m-p/4559365#M1562</link>
      <description>&lt;PRE&gt;&lt;STRONG&gt;Disclaimer: &lt;/STRONG&gt;This blog is a community contribution and does not reflect the opinion on behalf of Microsoft. Statements herein should not be understood as an official statement from Microsoft in any way. The community is invited to participate through commenting.&lt;/PRE&gt;
&lt;H4&gt;&lt;BR /&gt;&lt;STRONG&gt;Changelog&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;1.6 - added Azure Arc and Azure version history&lt;BR /&gt;1.5 - added CMTrace projects&lt;BR /&gt;1.4 - Improved readability by including long links into the description, added Lenovo section. Thank you to all contributors via LinkedIn!&lt;BR /&gt;1.3 - moved Azure Local LENS from Microsoft to Community section, added missing TSG Link&lt;BR /&gt;1.2 - Improved readability by including long links into the description, updated Dell and HPE sections&lt;BR /&gt;1.1 - Added LinkedIn Newsletter, added S2DCalc Link&lt;BR /&gt;1.0 - Initial version&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;This blogpost serves as a practical guide and one-stop hub to community and official tooling for Azure Local, with links to GitHub, Microsoft Learn, and OEM docs.&lt;BR /&gt;Azure Local brings Azure services on-premises. This post maps the tooling ecosystem - &lt;STRONG&gt;community GitHub projects&lt;/STRONG&gt;, &lt;STRONG&gt;official Microsoft utilities&lt;/STRONG&gt;, and &lt;STRONG&gt;OEM documentation, &lt;/STRONG&gt;with links to key resources. Use can use community tools for labs and production environments, if your internal regulations allow, or during PoC / deployment phases.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Reasoning&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;Azure Local (Azure services running on local hardware) is evolving rapidly. For teams evaluating or operating Azure Local, the tooling ecosystem matters: community projects accelerate labs and automation, Microsoft tools provide authoritative testing and sizing, and OEM documentation ensures hardware compatibility and supportability and official guidance tailored to OEM specific requirements. This article seperates community projects from Microsoft official tools, providing links to the most useful resources.&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Quick overview table&lt;/STRONG&gt;&lt;/H4&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; height: 666px; border-width: 1px;"&gt;&lt;thead&gt;&lt;tr style="height: 35px;"&gt;&lt;th style="height: 35px;"&gt;&lt;STRONG&gt;Category&lt;/STRONG&gt;&lt;/th&gt;&lt;th style="height: 35px;"&gt;&lt;STRONG&gt;Representative tools&lt;/STRONG&gt;&lt;/th&gt;&lt;th style="height: 35px;"&gt;&lt;STRONG&gt;Primary use&lt;/STRONG&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style="height: 131px;"&gt;&lt;th style="height: 131px;"&gt;&lt;STRONG&gt;Community tools&lt;/STRONG&gt;&lt;/th&gt;&lt;td style="height: 131px;"&gt;&lt;STRONG&gt;Azure Local ODIN&lt;BR /&gt;Azure Local LENS Azure Dashboard&lt;BR /&gt;Azure Local Cluster Manager&lt;BR /&gt;HVTools&lt;BR /&gt;S2DCalc&lt;BR /&gt;CMTrace projects&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 131px;"&gt;Development, local cluster orchestration, hardware validation&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 107px;"&gt;&lt;th style="height: 107px;"&gt;&lt;STRONG&gt;Official Microsoft tools&lt;/STRONG&gt;&lt;/th&gt;&lt;td style="height: 107px;"&gt;&lt;STRONG&gt;VMfleet 2.0&lt;BR /&gt;DiskSPD&lt;BR /&gt;Azure Local Troubleshooting Guide (TSG)&lt;BR /&gt;Azure Local Solutions&lt;BR /&gt;&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 107px;"&gt;Performance testing, official sizing, troubleshooting, cataloging validated configurations&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 203px;"&gt;&lt;th style="height: 203px;"&gt;&lt;STRONG&gt;OEM-specific resources&lt;/STRONG&gt;&lt;/th&gt;&lt;td style="height: 203px;"&gt;&lt;STRONG&gt;Dell user and deployment guides&lt;BR /&gt;Dell OpenManage for WAC&lt;BR /&gt;Dell Azure Local Compatibility Matrix and Azure Local related Downloads incl. factory-images and SBE information.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;HPE user and deployment guides&lt;BR /&gt;HPE Solution Tier description&lt;BR /&gt;HPE SBE Minimal and Standard downloads&lt;BR /&gt;&lt;BR /&gt;Lenovo user and deployment guides&lt;BR /&gt;Lenovo XClarity Integrator extension for WAC&lt;BR /&gt;Lenovo SBE Downloads&lt;BR /&gt;&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 203px;"&gt;Hardware compatibility, licensing, vendor-specific deployment guidance&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 107px;"&gt;&lt;th style="height: 107px;"&gt;
&lt;P&gt;&lt;STRONG&gt;Official learning resources and community content&lt;/STRONG&gt;&lt;/P&gt;
&lt;/th&gt;&lt;td style="height: 107px;"&gt;&lt;STRONG&gt;Microsoft Learn Azure Arc series&lt;BR /&gt;Azure Local documentation&lt;BR /&gt;Azure Local and Azure Arc release notes&lt;BR /&gt;Reach out to MVPs, learn from their blogs&lt;BR /&gt;Recommended Youtube channels&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 107px;"&gt;Training, conceptual grounding, official reference&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 83px;"&gt;&lt;th style="height: 83px;"&gt;
&lt;P&gt;&lt;STRONG&gt;Open Communities&lt;/STRONG&gt;&lt;/P&gt;
&lt;/th&gt;&lt;td style="height: 83px;"&gt;&lt;STRONG&gt;Azure Local Slack&lt;BR /&gt;Azure Local Tech Talk&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 83px;"&gt;Highlighting active and enganging communities with news, voluntary support and answering questions&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.3333%" /&gt;&lt;col style="width: 33.3333%" /&gt;&lt;col style="width: 33.3333%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H4&gt;&lt;STRONG&gt;&lt;BR /&gt;Community tools&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Why community tools matter? &lt;/STRONG&gt;Community projects fill practical gaps, provide automation for labs and PoCs, and iterate quickly to reflect real-world needs. They’re ideal for rapid prototyping and developer workflows, which may not be provided by the vendor to this extend.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Notable community projects&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Local ODIN&lt;/STRONG&gt; - A community toolkit for Azure Local that simplifies cluster setup and DevOps oriented deployment. It also incudes a hardwae and storage sizing tool. Will generate architecture diagrams of the current or a future deployment and support various types of deployment and resources. Documentation and examples are available on the ODIN for Azure Local site.&amp;nbsp; While maintained by Microsoft employees, this project should be considered for use without any product support by Microsoft. Link: &lt;A class="lia-external-url" href="https://azure.github.io/odinforazurelocal" target="_blank" rel="noopener"&gt;https://azure.github.io/odinforazurelocal&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Local LENS &lt;/STRONG&gt;- Azure Local Lifecycle, Events &amp;amp; Notification Status (LENS) workbook brings together the signals you need to understand your Azure Local estate through a fleet lens. Instead of jumping between individual resources, you can use a consistent set of views to compare instances, spot outliers, and drill into the focus areas that need attention. LENS workbook provides comprehensive visibility into cluster health, update readiness, and workload status across your entire Azure Local fleet. JSON file to be imported into an Azure Dashboard. While the repository is hosted in the official Microsoft Azure repository, mind the disclaimer about supportability, indicating the same state as for Azure ODIN. Link: &lt;A class="lia-external-url" href="https://aka.ms/AzureLocalLENS" target="_blank" rel="noopener" aria-label="https://aka.ms/AzureLocalLENS öffnen"&gt;https://aka.ms/AzureLocalLENS&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Local Management Tool &lt;/STRONG&gt;- RBAC compatible community tool that helps with provisioning, upgrades, and lifecycle tasks for Azure Local clusters beyond anything currently available in the Azure Portal. If you have searched for a single website managing and operating Azure Local, search no longer. &lt;BR /&gt;Link:&amp;nbsp;&lt;A class="lia-external-url" href="https://azurelocalmanager.com/" target="_blank" rel="noopener"&gt;https://azurelocalmanager.com/&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;HVTools&lt;/STRONG&gt; - as the name suggests HVTools ports the familiar strengths of a very well-known tool, available for Broadcom's VMware, to Hyper-V administrators, which includes Azure Local. Discover and inventory your Virtual Machine estate and their configuration at a glance. Link:&amp;nbsp;&lt;A class="lia-external-url" href="https://hvtools.app/" target="_blank" rel="noopener"&gt;https://hvtools.app/&lt;/A&gt;.&lt;BR /&gt;Known &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-local/manage/virtual-machine-operations?view=azloc-2609&amp;amp;viewFallbackFrom=azloc-2601?wt.mc_id=MVP_338345" target="_blank" rel="noopener"&gt;Management restrictions&lt;/A&gt; apply to &lt;U&gt;Azure created / deployed VMs&lt;/U&gt; on Azure Local.&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;S2D Calculator&amp;nbsp;&lt;/STRONG&gt;- Prime calulator for Storage Spaces Direct (S2D) for Windows Server and Azure Local, returning reliable and production relevant results for all supported storage configurations. Link: &lt;A class="lia-external-url" href="https://s2d-calculator.com/" target="_blank" rel="noopener"&gt;https://s2d-calculator.com/&lt;/A&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;CMTrace projects&amp;nbsp;&lt;/STRONG&gt;- CMTrace is a well-known tool provided and licensed by Microsoft, greatly simplying reading and understanding logs off many kinds.&lt;BR /&gt;To overcome the licensing limitations, usually shipped as part of the System Center product family the community has established two noteable projects:
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://cmtrace.dev/" target="_blank" rel="noopener"&gt;CMtrace.dev&lt;/A&gt; - A high performance browser-based CMtrace-like parser, which handles different logs, archives on your local device, without uploading them anywhere&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/adamgell/cmtraceopen" target="_blank" rel="noopener"&gt;CMtrace.Open &lt;/A&gt;- an open-source project bringing the capabilites of CMTrace to everyone, requires local installation.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;STRONG&gt;Official Microsoft tools&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Why use official tools:&lt;/STRONG&gt; Microsoft’s tools are the authoritative source for performance testing, sizing, and troubleshooting; they align with Azure Local support boundaries and validated configurations. All tools are supported by the respective vendor, unless stated otherwise.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/microsoft/diskspd/wiki/VMFleet" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Microsoft VMfleet 2.0&lt;/STRONG&gt;&lt;/A&gt; - Scales VM workload generation across nodes for stress and performance testing; ideal for validating cluster behavior under realistic load. &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azurestackblog/next-generation-performance-tools-vmfleet-2-0/2772752?wt.mc_id=MVP_338345" target="_blank" rel="noopener" data-lia-auto-title="Documentation" data-lia-auto-title-active="0"&gt;Documentation&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;&lt;A class="lia-external-url" href="https://github.com/microsoft/diskspd" target="_blank" rel="noopener"&gt;Microsoft DiskSPD&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;- Microsoft’s I/O supported workload generator for storage performance characterization. Use diskspd for storage microbenchmarks and to validate storage subsystem behavior under customizeable and relastic workloads. Works best with VMfleet, with or without Arc Enablement.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/AzureLocal-Supportability" target="_blank" rel="noopener"&gt;Microsoft Azure Local TSG (Troubleshooting Guide)&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; - Official runbooks and troubleshooting steps for common Azure Local issues; consult the Azure Local docs for the latest TSG content. See Azure Local documentation for troubleshooting and operational guidance. In addition the GitHub repository includes the &lt;STRONG&gt;CSSTool for Azure Local&lt;/STRONG&gt;. Community can and should contribute here filing issues, when reproducible, as well as checking before raising support requests, if the issue is a known one, and a remediation description is available.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Microsoft Azure Local Solutions&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="http://&amp;nbsp;https://azurelocalsolutions.azure.microsoft.com/#/catalog" target="_blank" rel="noopener"&gt;Catalog&lt;/A&gt;&lt;/STRONG&gt;- The offical list of certified hardware offerings for Azure Local deployments; always cross-check catalog entries before procurement.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://azurelocalsolutions.azure.microsoft.com/#/Learn" target="_blank" rel="noopener"&gt;Solution categories&lt;/A&gt; &lt;/STRONG&gt;- Understanding differences of Microsoft Azure Local solution categories&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://azurelocalsolutions.azure.microsoft.com/#/sizer" target="_blank" rel="noopener"&gt;Sizing tool&lt;/A&gt; &lt;/STRONG&gt;(rather limited) - Official sizing tool to estimate hardware and configuration needs for target workloads.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;STRONG&gt;OEM-specific resources&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;OEM documentation and compatibility matrices are essential because Azure Local runs on certified hardware stacks. Vendor docs cover firmware, management interfaces, licensing, and validated configurations.&lt;/P&gt;
&lt;H5&gt;&lt;STRONG&gt;Dell&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://infohub.delltechnologies.com/en-us/t/guides-azure-stack-hci-os-24h2-or-ws-2025-and-later/" target="_blank" rel="noopener"&gt;Dell Azure Local Deployment Guides&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;- provides a step-by-step documentation for Dell Azure Local deployments.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://www.dell.com/support/kbdoc/en-us/000177828/support-for-dell-emc-openmanage-integration-with-microsoft-windows-admin-center?msockid=0cba1f1194136ff62047084f95716ef2" target="_blank" rel="noopener"&gt;Dell Open Manage Extension for Windows Admin Center (OMIMSWAC)&amp;nbsp;&lt;/A&gt;&lt;/STRONG&gt;- Management extension and compliance checks for Azure Local clusters and hardware. Also supports Windows Server Standalone and Windows Server S2D clusters.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://democenter.dell.com/interactive/ITD-0243" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Dell Demo Center&lt;/STRONG&gt;&lt;/A&gt; - Interactive demos and product walkthroughs that show Dell hardware and management integration.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learning.dell.com/content/dell/en-us/home/store/search.html?x=azure%20local%26field=by%20Keyword" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Dell Learning&lt;/STRONG&gt;&lt;/A&gt; - Dell’s learning portal includes courses and search for Azure Local–related content.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://dell.github.io/azurestack-docs/docs/hci/supportmatrix/" target="_blank" rel="noopener"&gt;Dell Compatibility Matrix&lt;/A&gt;&lt;/STRONG&gt; - offers information and dowloads about SBE, factory images, driver and firmware best recipes and common HW related settings, that come preconfigured. Caveat: Please ensure checking for the correct version. Classical browser favorites tend to become outdated, rapidly!&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;STRONG&gt;HPE&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://www.hpe.com/us/en/alliance/microsoft/azurelocal.html" target="_blank" rel="noopener"&gt;HPE Azure Local Main Landing Page&lt;/A&gt;&lt;/STRONG&gt; - highlights the HPE platforms and storage platforms supported with Azure Local.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://www.hpe.com/psnow/doc/a50008245enw?jumpid=in_pdfviewer-psnow" target="_blank" rel="noopener"&gt;HPE Azure Local Technical Whitepaper&lt;/A&gt;&lt;/STRONG&gt; - Describes the tiers for Azure Local, the HPE platforms for each, server options that are supported, HPE switches that are supported, critical information relative to deployment, Windows Admin Extensions, available HPE services, and more.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://support.hpe.com/hpesc/public/docDisplay?docId=sd00006156en_us&amp;amp;page=GUID-1FDA2FAC-F436-4FBC-97B7-DEAA53E54AA4.html&amp;amp;docLocale=en_US" target="_blank" rel="noopener"&gt;HPE ProLiant for Azure Local Solutions User Guide&lt;/A&gt;&lt;/STRONG&gt; - Targeting Integrated Systems and Premier Solutions, this guide provides information related to Azure Local hardware, solution management, credential management, system expansion, deployment and redeployment of the OS, known issues, troubleshooting, and more.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://support.hpe.com/hpesc/public/docDisplay?docId=sd00006156en_us&amp;amp;page=GUID-1FDA2FAC-F436-4FBC-97B7-DEAA53E54AA4.html&amp;amp;docLocale=en_US" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;HPE ProLiant for Azure Local Solutions Firmware and Software Compatibility Guide&lt;/STRONG&gt;&lt;/A&gt; - Illustrates the N and N-1 driver, firmware, and software versions included in the Standard Solution Builder Extension for Azure Local.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://support.hpe.com/km/software/MTX-57e08c6fd1c246dd" target="_blank" rel="noopener"&gt;HPE Minimal Solution Builder Extension&lt;/A&gt;&lt;/STRONG&gt; - For Validated Nodes ONLY, includes a Windows Defender Application Control policy enabling deployment of HPE components included in specific releases of the Service Pack for ProLiant. Note that the package does NOT include drivers, firmware, or other software.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://support.hpe.com/km/software/MTX-71c622ae839a4d4f" target="_blank" rel="noopener"&gt;HPE Standard Solution Builder Extension&lt;/A&gt;&lt;/STRONG&gt; - For Integrated Systems and Premier Solutions ONLY, includes a Windows Defender Application Control policy as well as the drivers, firmware, and software necessary for updating an Azure Local instance/cluster.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;STRONG&gt;Lenovo&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://lenovopress.lenovo.com/servers/thinkagile/mx-series" target="_blank" rel="noopener"&gt;Lenovo ThinkAgile MX Series for Microsoft Azure Local &lt;/A&gt;&lt;/STRONG&gt;- Main Lenovo Azure Local landing page featuring ThinkAgile MX solutions, deployment resources, product guides, and customer case studies.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="http://%20https://pubs.lenovo.com/thinkagile-mx/mx_appliances" target="_blank" rel="noopener"&gt;Lenovo ThinkAgile MX Documentation Portal&lt;/A&gt; &lt;/STRONG&gt;- Official deployment, administration, lifecycle management, and operations guidance for Azure Local solutions&lt;STRONG&gt;.&lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://pubs.lenovo.com/thinkagile-mx/xclarity_integrator_for_msw_adc" target="_blank" rel="noopener"&gt;Lenovo XClarity Integrator for Microsoft Windows Admin Center&amp;nbsp;&lt;/A&gt;- &lt;/STRONG&gt;Windows Admin Center Management extension providing hardware monitoring,&lt;STRONG&gt; &lt;/STRONG&gt;compliance checks, firmware lifecycle management, and cluster-aware updates for Windows Server and Azure Local environments.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://pubs.lenovo.com/thinkagile-mx/mx_general_overview_certified_configuration_guide" target="_blank" rel="noopener"&gt;Lenovo ThinkAgile MX Certified Configuration Guides&lt;/A&gt; - &lt;/STRONG&gt;Microsoft-certified hardware guidance including supported server, storage, and networking configurations for Azure Local deployments.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://pubs.lenovo.com/thinkagile-mx/mx_sbe" target="_blank" rel="noopener"&gt;Lenovo Solution Builder Extension (SBE)&lt;/A&gt; &lt;/STRONG&gt;- Support matrix, release notes, firmware and driver update guidance, and supported Azure Local versions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://support.lenovo.com/us/en/solutions/ht507549" target="_blank" rel="noopener"&gt;Lenovo XClarity Integrator Support Portal&lt;/A&gt; &lt;/STRONG&gt;- Support downloads, release notes, and lifecycle management resources for ThinkAgile MX and Azure Local solutions.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;STRONG&gt;Official learning resources and community content&lt;/STRONG&gt;&lt;/H4&gt;
&lt;H5&gt;&lt;STRONG&gt;Microsoft Learning &amp;amp; docs&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-local?wt.mc_id=MVP_338345" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Azure Local documentation&lt;/STRONG&gt;&lt;/A&gt; - The official docs are the &lt;EM&gt;authoritative source &lt;/EM&gt;for deployment steps, architecture guidance, and runbooks. See the Azure Local docs for ESU and other operational topics. Consider using the en-us pages, receiving the timely updates.&lt;BR /&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-local/whats-new?wt.mc_id=MVP_338345" target="_blank" rel="noopener"&gt;What's new? - Connected Deployments&lt;/A&gt;-&lt;/STRONG&gt; describing changes and fixes of each releases for all supported connected scenarios.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-local/manage/disconnected-operations-whats-new?wt.mc_id=MVP_338345" target="_blank" rel="noopener"&gt;What's new? - Disconnected Deyploments&lt;/A&gt; &lt;/STRONG&gt;- describing changes and fixes of each releases for all supported disconnected scenarios (ALDO, M365 etc).&lt;BR /&gt;For both, please consider reading the respective release notes to learn more about version specific fixes and known issues.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/shows/azure-arc-hybrid-infrastructure-technical-event-series?wt.mc_id=MVP_338345" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Azure Arc-enabled Infrastructure Technical Event Series&lt;/STRONG&gt;&lt;/A&gt; - A helpful primer on hybrid infrastructure and Azure Arc concepts; good for teams new to hybrid and Azure Local.&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-arc/servers/agent-release-notes?wt.mc_id=MVP_338345" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Azure Arc Agent Version History&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;/STRONG&gt;- What's new and changed in Azure Arc (Connected Machine Agent)?&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-url="https://learn.microsoft.com/en-us/shows/azure-arc-hybrid-infrastructure-technical-event-series" aria-label="https://learn.microsoft.com/en-us/shows/azure-arc-hybrid-infrastructure-technical-event-series, dadurch gelangen Sie zu learn.microsoft.com"&gt;Microsoft Learning Paths:&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/training/paths/azure-local-accreditation-2025/?wt.mc_id=MVP_338345" target="_blank" rel="noopener"&gt;Azure Local Accreditation 2025&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/training/paths/windows-server-2025-accreditation-2026/?wt.mc_id=MVP_338345" target="_blank" rel="noopener"&gt;Windows Server 2025 and Hybrid Accreditation 2026&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/training/modules/azure-local-small-form-factor/?wt.mc_id=MVP_338345" target="_blank" rel="noopener"&gt;Azure Local Small Form Factor Deployment&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Microsoft Official Announcements &lt;/STRONG&gt;- related to Azure Local and Azure Arc. Link:&amp;nbsp;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-forum" href="https://techcommunity.microsoft.com/category/Azure/discussions/AzureArc/?wt.mc_id=MVP_338345" target="_blank" rel="noopener" data-lia-auto-title="Azure Arc | Microsoft Community Hub" data-lia-auto-title-active="0"&gt;Azure Arc | Microsoft Community Hub&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;STRONG&gt;Community blogs and MVP content&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;How to find MVPs, get in touch, learn from their expierence and contribute myself in a growing community? &lt;BR /&gt;The MVP community hub and its &lt;STRONG&gt;Find an MVP&lt;/STRONG&gt; is an excellent starting point getting in touch with MVPs near you and discover their voluntary contributions to the Microsoft community, e. g. blogs with for real-world deployment stories and troubleshooting tips. &lt;BR /&gt;&lt;BR /&gt;Visit the Microsoft MVP site to find Azure Local and Azure Arc MVPs. Link:&amp;nbsp;&lt;A class="lia-external-url" href="https://mvp.microsoft.com/en-US/search?target=Profile&amp;amp;program=MVP?wt.mc_id=MVP_338345"&gt;https://mvp.microsoft.com&lt;/A&gt;. Find your MVP near to you using the &lt;STRONG&gt;country &lt;/STRONG&gt;filter, then using the &lt;STRONG&gt;technology area&lt;/STRONG&gt; "Azure Hybrid and Migrate". Please keep in mind Azure Local is an Azure product, which means other Azure services and as such other technology areas could be relevant if you'd like to connect and learn about other community contributions.&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;STRONG&gt;YouTube channels and demos&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Carsten Rachfahl&lt;/STRONG&gt; - Excellent recurring topic related shows, walkthroughs and demos for Azure Stack Local and Microsoft HCI and Hybrid Infrastructure.&amp;nbsp;&lt;BR /&gt;Link: &lt;A class="lia-external-url" href="https://www.youtube.com/@CarstenRachfahl" target="_blank" rel="noopener"&gt;https://www.youtube.com/@CarstenRachfahl&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Manfred Helber - Azure Stack HCI basics video&lt;/STRONG&gt; - Example recorded session covering fundamentals and demos. This is a about older releases of Azure Local, yet grants deeper insights and understanding about the technology.&lt;BR /&gt;Link: &lt;A class="lia-external-url" href="https://www.youtube.com/watch?app=desktop&amp;amp;v=ukJ3tvTmO4c&amp;amp;list=PL7cBl3ig-01NKNgTWtDy0KUDW_YNX50_1" target="_blank" rel="noopener"&gt;https://www.youtube.com/watch?app=desktop&amp;amp;v=ukJ3tvTmO4c&amp;amp;list=PL7cBl3ig-01NKNgTWtDy0KUDW_YNX50_1&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;The Hybrid Friends &lt;/STRONG&gt;- YT Channel hosted by a group of technical experts, covering different topics, including Azure Local. &lt;BR /&gt;The content might include videos about older releases of Azure Local, yet grants deeper insights and understanding about the technology. Link: &lt;A class="lia-external-url" href="https://www.youtube.com/@thehybridfriends/playlists" target="_blank" rel="noopener"&gt;https://www.youtube.com/@thehybridfriends/playlists&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Thomas Maurer - Microsoft Global Black Belt Team Sovereign Cloud (EMEA)&lt;/STRONG&gt; - Thomas' Azure Local related playlist. Link:&amp;nbsp;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.youtube.com/watch?v=Z7UorFASe7o&amp;amp;list=PLddMzSrepwAj1DLQg5ydUSmipzC9tI7lf" target="_blank" rel="noopener"&gt;https://www.youtube.com/watch?v=Z7UorFASe7o&amp;amp;list=PLddMzSrepwAj1DLQg5ydUSmipzC9tI7lf&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Protip for Youtube closed captions (CC) - Auto translation:&lt;/STRONG&gt; &lt;BR /&gt;Enable CC &amp;gt; click on CC. Then click on Settings &amp;gt; Subtitles &amp;gt; Automatic Translation &amp;gt; select your language&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Open communities&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Local Slack - News, expert discussions, voluntary community support, occasional surveys from Microsoft&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="list-style-type: none;"&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;access request / registration: &lt;A class="lia-external-url" href="https://aka.ms/azurelocal-slack" target="_blank" rel="noopener"&gt;https://aka.ms/azurelocal-slack&lt;/A&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;server:&amp;nbsp;&lt;/STRONG&gt;azurelocal.slack.com&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;LinkedIn:&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://www.linkedin.com/groups/12885745/" target="_blank" rel="noopener"&gt;Azure Local Tech Talk - news and discussion group&lt;/A&gt;:&amp;nbsp;&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://www.linkedin.com/newsletters/7501208973682040835/" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Azure Local Unlocked Newsletter - technical series&lt;/STRONG&gt;&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://www.linkedin.com/newsletters/azure-local-insider-7094952705042841602/" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Azure Local Insider Newsletter - compact news about Azure Local&lt;/STRONG&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;BR /&gt;----&lt;BR /&gt;&lt;BR /&gt;This blogpost will be updated in the future. Community contributions are very welcome. If you are seeing noteable projects, missing links, like to add anything to the OEM section, please let me know in the comments below.&lt;BR /&gt;&lt;BR /&gt;Community tools - as the name says - live from contribution and feedback provided by the community. Feel invited to contribute using the GitHub repositories or provided contact options.&lt;/P&gt;</description>
      <pubDate>Fri, 25 Sep 2026 01:44:10 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-arc/blog-azure-local-tools-community-projects-microsoft-official/m-p/4559365#M1562</guid>
      <dc:creator>Karl-WE</dc:creator>
      <dc:date>2026-09-25T01:44:10Z</dc:date>
    </item>
    <item>
      <title>Azure Container Apps Express is now Generally Available</title>
      <link>https://techcommunity.microsoft.com/t5/apps-on-azure-blog/azure-container-apps-express-is-now-generally-available/ba-p/4559101</link>
      <description>&lt;P&gt;For many web apps and APIs, a container image should be enough to get started. Developers should not have to choose and configure an environment before the first deployment.&lt;/P&gt;
&lt;P&gt;Today, &lt;STRONG&gt;Azure Container Apps Express&lt;/STRONG&gt; reaches general availability. It is the fastest way to go from a container image to a production-ready app on Azure, with instant provisioning, startup optimized for sub-second performance, and scale-from-zero.&lt;/P&gt;
&lt;P&gt;Customers created many thousands of Express apps during public preview and told us, clearly and often, what was missing. That feedback set the priorities for general availability, and it continues to guide what comes next.&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;From container image to running app&lt;/H2&gt;
&lt;P&gt;Express starts with the application. Bring a container image, choose a region, add the configuration your app needs, and deploy. In the Express experience, there is no environment to stand up first. Azure provisions the underlying compute, ingress, and scaling.&lt;/P&gt;
&lt;P&gt;That shorter path matters when you are shipping a web app or API. It matters even more when the thing doing the shipping is an agent: AI-assisted workflows can create and update apps far faster than anyone can configure infrastructure by hand.&lt;/P&gt;
&lt;P&gt;Speed continues after deployment. Express apps can scale to zero when idle and are optimized for sub-second startup when traffic returns. For a measured look at that experience, &lt;A href="https://techcommunity.microsoft.com/blog/appsonazureblog/azure-container-apps-express-for-shipping-container-apps-fast/4531371" target="_blank" rel="noopener"&gt;see Express scale from zero&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Broad regional availability&lt;/H2&gt;
&lt;P&gt;At general availability, Express is available in more than 40 Azure regions, covering almost every public region where Azure Container Apps is offered. You get the same direct deployment experience while placing applications close to users and data. See the current list in the &lt;A href="https://learn.microsoft.com/azure/container-apps/express-overview#region-availability" target="_blank" rel="noopener"&gt;Express region availability documentation&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Built on Azure Container Apps Sandboxes&lt;/H2&gt;
&lt;P&gt;Azure Container Apps Express runs on &lt;STRONG&gt;Azure Container Apps Sandboxes&lt;/STRONG&gt;, the isolated compute layer behind its provisioning and startup speed.&lt;/P&gt;
&lt;P&gt;Developers can also use Sandboxes directly to build agent platforms, secure code-execution services, and other systems that need isolated compute on demand. The &lt;A href="https://aka.ms/aca/sandbox/launch-blog" target="_blank" rel="noopener"&gt;Azure Container Apps Sandboxes announcement&lt;/A&gt; covers the compute platform underneath Express.&lt;/P&gt;
&lt;H2&gt;Where Express goes next&lt;/H2&gt;
&lt;P&gt;We launched Express in public preview while its focused feature set was still taking shape. That gave customers access sooner and let real usage shape the work that followed.&lt;/P&gt;
&lt;P&gt;Since preview, we have expanded regional availability, strengthened Express for production workloads, and added capabilities that fit its direct application model. General availability makes Express ready for production use. We will continue adding features while preserving its focus on fast, simple deployment.&lt;/P&gt;
&lt;P&gt;Express offers a focused subset of Azure Container Apps capabilities. Choose Express when speed and simplicity matter most. Choose a standard Container Apps environment when you need greater control over networking, GPU compute, advanced configuration, or environment-level capabilities such as Dapr.&lt;/P&gt;
&lt;H2&gt;Deploy your first Express app&lt;/H2&gt;
&lt;P&gt;Ready to try it? &lt;A href="https://containerapps.azure.com/apps/create" target="_blank" rel="noopener"&gt;Create an Azure Container Apps Express app&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Then &lt;A href="https://learn.microsoft.com/azure/container-apps/express-overview" target="_blank" rel="noopener"&gt;read the Express documentation&lt;/A&gt;, &lt;A href="https://techcommunity.microsoft.com/blog/appsonazureblog/azure-container-apps-express-for-shipping-container-apps-fast/4531371" target="_blank" rel="noopener"&gt;see Express scale from zero&lt;/A&gt;, or &lt;A href="https://aka.ms/aca/sandbox/launch-blog" target="_blank" rel="noopener"&gt;learn about Azure Container Apps Sandboxes&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Wed, 23 Sep 2026 15:33:53 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/apps-on-azure-blog/azure-container-apps-express-is-now-generally-available/ba-p/4559101</guid>
      <dc:creator>simonjj</dc:creator>
      <dc:date>2026-09-23T15:33:53Z</dc:date>
    </item>
    <item>
      <title>Azure Container Apps Sandboxes, Now Generally Available</title>
      <link>https://techcommunity.microsoft.com/t5/apps-on-azure-blog/azure-container-apps-sandboxes-now-generally-available/ba-p/4559125</link>
      <description>&lt;H2&gt;Agents Act. You Set the Limits.&lt;/H2&gt;
&lt;P&gt;Your platform needs to run untrusted code. Agents choose actions at runtime, from installing packages to calling APIs. In a multi-tenant service, you have to support both without letting one customer's code reach another customer's data. That requires an execution environment you control for each tenant, session, or task.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://sandboxes.azure.com/" target="_blank" rel="noopener"&gt;Azure Container Apps Sandboxes&lt;/A&gt; is that execution environment, as a service&lt;/STRONG&gt;&lt;STRONG&gt;.&lt;/STRONG&gt; Each sandbox is a hardware-isolated microVM with its own Linux kernel. It starts in under a second, and you decide per sandbox what it can reach, how large it is, and how long it lives.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For each user, controlling which &lt;STRONG&gt;credentials &lt;/STRONG&gt;their agent can use and what it can reach is key. Untrusted code must stay&amp;nbsp;&lt;STRONG&gt;isolated &lt;/STRONG&gt;from other workloads and the host kernel. Preserving a &lt;STRONG&gt;session state&lt;/STRONG&gt; without giving up scale to zero or instant startup is important, as is &lt;STRONG&gt;visibility &lt;/STRONG&gt;into what each agent did. Let's unpack these one at a time.&lt;/P&gt;
&lt;H2&gt;Control What Your Agents Can Reach&lt;/H2&gt;
&lt;P&gt;The first question about an agent is not what it can do, but what it can reach. &lt;STRONG&gt;Per-sandbox egress policies&lt;/STRONG&gt; answer that: an external proxy evaluates every outbound request against rules you set - by host, domain pattern, or CIDR.&amp;nbsp;&lt;STRONG&gt;You can start with a default 'Deny' action&lt;/STRONG&gt;&amp;nbsp;and allow only the endpoints the task needs, so a prompt injection or a compromised dependency has nowhere to go. Network Audit shows you what was allowed and what was denied.&lt;/P&gt;
&lt;P&gt;Approved endpoints usually need credentials, and handing an API key to an agent means the key can be logged, echoed into a response, or carried off somewhere you did not intend.&amp;nbsp;&lt;STRONG&gt;Transform rules can inject authentication headers outside the sandbox&lt;/STRONG&gt;. The agent sends a request with no secret in it, the proxy adds the credential outside the sandbox, and the call goes through. The agent gets access to the service without ever getting the API key.&lt;/P&gt;
&lt;P&gt;When a static allowlist cannot express the rule you need,&amp;nbsp;&lt;STRONG&gt;an egress webhook hands each request to your own service&lt;/STRONG&gt; before it leaves. You can build a service that reviews all outbound calls, approves some and rejects others.&lt;/P&gt;
&lt;P&gt;Good results depend on the agent reaching the right data, and the data that matters usually sits on your private network. Outbound,&amp;nbsp;&lt;STRONG&gt;VNet integration&lt;/STRONG&gt;&amp;nbsp;places the sandbox group on a dedicated subnet, so agents can reach internal APIs, databases, and services behind private endpoints. Egress rules are still enforced: routing is chosen per rule, so a call to an internal database is filtered, transformed, and recorded in Network Audit exactly like a call to the open internet. Inbound,&amp;nbsp;&lt;STRONG&gt;a Private Endpoint brings the sandbox service into your VNet&lt;/STRONG&gt;, so your own applications reach into your sandboxes without crossing the public internet.&lt;/P&gt;
&lt;H2&gt;Run Untrusted Code Without Sharing a Kernel&lt;/H2&gt;
&lt;P&gt;Each sandbox runs in a&amp;nbsp;&lt;STRONG&gt;hardware-isolated microVM with its own Linux kernel&lt;/STRONG&gt;&amp;nbsp;and virtual hardware, with memory separation enforced through CPU virtualization. In contrast, typical container runtimes isolate processes while sharing the host kernel. In a sandbox, code calls into its own guest kernel, so the blast radius of a kernel exploit is one sandbox. You get that boundary with ACA Sandboxes.&lt;/P&gt;
&lt;P&gt;Inside that boundary, the filesystem is yours to choose. The quickest way to start is by creating a sandbox based on a&amp;nbsp;&lt;STRONG&gt;platform-provided disk image:&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 75.2778%; height: 392px; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;&lt;STRONG&gt;Public image&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;&lt;STRONG&gt;Ready for&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;ubuntu&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;General-purpose Linux execution and development tools&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;nginx&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;Running a web server&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;copilot,&amp;nbsp;claude&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;GitHub Copilot CLI or Claude Code workflows&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;azure-dev&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;Azure development with CLI tools and multiple language runtimes&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;python-3.12-code-interpreter&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;Isolated Python execution through REST and MCP&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;python-3.11&amp;nbsp;to&amp;nbsp;python-3.14&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;Python workloads&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;node-22,&amp;nbsp;node-24&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;Node.js workloads&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;dotnet-8&amp;nbsp;to&amp;nbsp;dotnet-10&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;.NET workloads&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="lia-align-left"&gt;
&lt;P&gt;php-8.3,&amp;nbsp;php-8.4&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-align-left"&gt;
&lt;P class=""&gt;PHP-FPM workloads&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 32.3364%" /&gt;&lt;col style="width: 67.6013%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Availability and versions change over time, please check the portal's catalog for the current list. Images are provided as is.&lt;/P&gt;
&lt;P&gt;For a custom environment with your own code and dependencies,&amp;nbsp;you can &lt;STRONG&gt;bring a container image from a public or private registry&lt;/STRONG&gt;. The platform converts it into an optimized, bootable disk image containing your application, agent harness, runtimes, and toolchain. For a private registry, you authenticate with registry credentials or a managed identity for Azure Container Registry.&lt;/P&gt;
&lt;P&gt;You can also start from a sandbox you already have running.&amp;nbsp;&lt;STRONG&gt;A disk snapshot captures the filesystem as a new disk image&lt;/STRONG&gt;, while&amp;nbsp;&lt;STRONG&gt;a memory snapshot captures disk and memory together&lt;/STRONG&gt;, so a sandbox created from it resumes where the original left off. Installed dependencies, or a cloned repo, are set up once, and every sandbox created from the snapshot starts with them.&lt;/P&gt;
&lt;H2&gt;Give Every Task Its Own Sandbox&lt;/H2&gt;
&lt;P&gt;A sandbox starts in&amp;nbsp;&lt;STRONG&gt;under a second&lt;/STRONG&gt;, and that is why it is practical to give every task its own machine. When a machine takes minutes to come up, everything ends up sharing that same space. When it starts instantly, each task, user, or tool call runs in isolation, and gets deleted when the work is done. Thousands at a time.&lt;/P&gt;
&lt;P&gt;Sandboxes are sized when created by selecting a&amp;nbsp;&lt;STRONG&gt;resource tier&lt;/STRONG&gt;. These range from&amp;nbsp;&lt;STRONG&gt;0.25 vCPU with 0.5 GB of memory and a 5 GB disk&lt;/STRONG&gt;, enough for a short script or a quick evaluation, to&amp;nbsp;&lt;STRONG&gt;4 vCPU with 8 GB of memory and an 80 GB disk&lt;/STRONG&gt; for compilation and heavier analysis, with multiple steps in between. Programmatically you can go up to&amp;nbsp;&lt;STRONG&gt;16 vCPU with 32 GB of memory and a 320 GB disk&lt;/STRONG&gt;&amp;nbsp;for the most demanding work.&lt;/P&gt;
&lt;P&gt;Sandboxes do not have to be discarded by hand.&amp;nbsp;&lt;STRONG&gt;Lifecycle policies stop a sandbox once it goes idle&lt;/STRONG&gt;, capturing the disk and optionally the memory. It can &lt;STRONG&gt;resume&lt;/STRONG&gt; on a start command or automatically on arriving network traffic. A policy can also&amp;nbsp;&lt;STRONG&gt;auto-delete&lt;/STRONG&gt;&amp;nbsp;a sandbox that has been stopped long enough, so abandoned work does not linger.&lt;/P&gt;
&lt;H2&gt;Keep State and Bring Your Data&lt;/H2&gt;
&lt;P&gt;Most agent tasks are short - run a script, or return a result. That is not the limit. A long-running agent needs state that outlives single runs, and&amp;nbsp;&lt;STRONG&gt;volumes attach persistent storage to a sandbox at a path you choose&lt;/STRONG&gt;. Code reads and writes to it through ordinary filesystem calls, and the data stays after the sandbox is deleted. There are three kinds:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A&amp;nbsp;&lt;STRONG&gt;Data Disk&lt;/STRONG&gt;&amp;nbsp;mounts to one sandbox at a time and gives it a fast, fully POSIX-compatible filesystem on local disk, which suits a working database, a build cache, or an agent's accumulated memory.&lt;/LI&gt;
&lt;LI&gt;An&amp;nbsp;&lt;STRONG&gt;Azure Blob volume&lt;/STRONG&gt;&amp;nbsp;mounts to many sandboxes at once, for sharing a large read-heavy dataset rather than supporting concurrent writers.&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Blob BYO&lt;/STRONG&gt; &lt;STRONG&gt;volume &lt;/STRONG&gt;(bring your own) does the same for blob storage you already own, referenced by resource ID.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;See What Your Sandboxes Are Doing&lt;/H2&gt;
&lt;P&gt;Observability is how you know what a fleet of short-lived sandboxes did. &lt;STRONG&gt;Telemetry is opt-in and configured per sandbox when you create it&lt;/STRONG&gt;, and it streams out while the sandbox runs, so you can go back to a run that finished hours ago. A sandbox emits four categories of data, and you choose which of them to collect:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 83.2407%; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Category&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;What it carries&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Console logs&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The stdout and stderr streams from each sandbox&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Sandbox metrics (platform)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Platform-managed CPU usage, memory consumption, and network I/O per sandbox, sampled on an interval you set&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;OpenTelemetry&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Signals emitted by your own application; the sandbox injects the OTLP endpoint, so an SDK you already use exports with no extra configuration&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Network egress decisions&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;One record per outbound request, with the allow or deny decision the egress policy made&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 26.9559%" /&gt;&lt;col style="width: 73.007%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Each category is then pointed at a destination: any OTLP-compatible collector, Log Analytics through the Logs Ingestion API, or Application Insights. They mix freely, so console logs can go to your collector while egress decisions go to Log Analytics. &lt;STRONG&gt;&amp;nbsp;The credential that writes to the destination never enters the sandbox.&lt;/STRONG&gt; OTLP resolves their from a sandbox-group secret, Log Analytics authenticates with a managed identity on the group.&lt;/P&gt;
&lt;P&gt;Separate from what a sandbox exports, &lt;STRONG&gt;the platform publishes cores and memory to Azure Monitor&lt;/STRONG&gt; on the sandbox group, and that is what the portal shows for a Sandbox group. Sandbox group totals come by default, and you can opt-in for per sandbox details if you need that level of granularity.&lt;/P&gt;
&lt;H2&gt;Use It From Code, a Shell, or a Browser&lt;/H2&gt;
&lt;P&gt;Every one of these operations is available from &lt;STRONG&gt;code&lt;/STRONG&gt;, &lt;STRONG&gt;a shell&lt;/STRONG&gt;, &lt;STRONG&gt;a template&lt;/STRONG&gt;, or &lt;STRONG&gt;a browser&lt;/STRONG&gt;, so the choice comes down to what you are doing at the time.&lt;/P&gt;
&lt;P&gt;When the sandbox is part of your application, use an&amp;nbsp;&lt;STRONG&gt;SDK. Today available for Python and TypeScript, with .NET on the way&lt;/STRONG&gt;. An app or service you build creates sandboxes, writes and reads files, runs commands, mounts volumes, and captures snapshots as native objects in the language you use.&lt;/P&gt;
&lt;P&gt;When the work is scripted,&amp;nbsp;the&lt;STRONG&gt;&amp;nbsp;ACA&amp;nbsp;CLI &lt;/STRONG&gt;covers the same surface from Bash or PowerShell:&amp;nbsp;&lt;EM&gt;&lt;SPAN class="lia-text-color-21"&gt;aca sandbox create --disk ubuntu &lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN class="lia-text-color-21"&gt;or &lt;/SPAN&gt;&lt;EM&gt;aca sandbox snapshot&lt;/EM&gt;. Commands accept label selectors, so automation and CI act on &lt;EM&gt;-l name=build-agent &lt;/EM&gt;instead of tracking generated IDs.&lt;/P&gt;
&lt;P&gt;When the group itself is managed in source control,&amp;nbsp;&lt;STRONG&gt;define it as infrastructure as code&lt;/STRONG&gt;. &lt;EM&gt;Microsoft.App/sandboxGroups&lt;/EM&gt; is a first-class ARM resource, so a Bicep template attaches a managed identity, links a delegated VNet subnet, and assigns data-plane roles. An &lt;A class="lia-external-url" href="https://github.com/Azure/terraform-provider-aca" target="_blank" rel="noopener"&gt;ACA Terraform provider (Preview) &lt;/A&gt;covers the same group-level controls for teams standardized on Terraform.&lt;/P&gt;
&lt;H2&gt;Sandboxes portal&lt;/H2&gt;
&lt;P&gt;Designing a new resource type from scratch let us rethink the &lt;A class="lia-external-url" href="https://sandboxes.azure.com/" target="_blank" rel="noopener"&gt;portal experience&lt;/A&gt; along with it.&amp;nbsp;&lt;STRONG&gt;The creation flow asks the minimal set of questions&lt;/STRONG&gt;&amp;nbsp;- a disk image and resource tier - and you have a running sandbox. The &lt;STRONG&gt;Advanced&lt;/STRONG&gt; section allows you to go deeper to ports, volumes, lifecycle policies, egress policies, logging and more. All there when you need it.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What you see afterward is tailored the same way. &lt;STRONG&gt;A sandbox group gives you the overview of all sandboxes in that group&lt;/STRONG&gt;: how many exist and how many are running, cores and memory in use over time. The most recent sandboxes with their state and size, and the disk images and snapshots the group can build from.&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A single sandbox gives you the machine&lt;/STRONG&gt;: a terminal, live CPU, memory, storage, and network, a log stream, running processes, the files on disk, mounted volumes, and the egress traffic it generated with each request marked allowed or denied.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;You get that same experience wherever you start.&lt;/STRONG&gt;&amp;nbsp;Reach sandboxes from the &lt;A class="lia-external-url" href="https://portal.azure.com" target="_blank" rel="noopener"&gt;Azure portal&lt;/A&gt;, alongside the rest of your resources and under the same subscriptions, RBAC, and policies, or go straight to the standalone &lt;A class="lia-external-url" href="https://sandboxes.azure.com/" target="_blank" rel="noopener"&gt;ACA Sandboxes portal&lt;/A&gt;. It is the same experience either way, so there is nothing to relearn and nothing you can only do in one of them.&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;How Much Does It Cost?&lt;/H2&gt;
&lt;P&gt;Three types of charges:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;vCPU&lt;/STRONG&gt;, per core-second while the sandbox runs.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Memory&lt;/STRONG&gt;, per GiB-second while the sandbox runs.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Storage&lt;/STRONG&gt;, per GB stored, for as long as you keep it.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The resource tier of the sandbox determines the amount of vCPU and GiB of memory. These rates are on the &lt;A class="lia-external-url" href="https://azure.microsoft.com/pricing/details/container-apps/" target="_blank" rel="noopener"&gt;Container Apps pricing page&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Storage is charged (coming soon) at &lt;A class="lia-external-url" href="https://azure.microsoft.com/pricing/details/storage/blobs/" target="_blank" rel="noopener"&gt;Premium Azure Blob ZRS rates&lt;/A&gt; and covers:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Custom Disk Images&lt;/STRONG&gt;, including Disk Snapshots. The platform converts your OCI container image into a bootable disk image. You pay to store one copy of that image for as long as you keep it, regardless of how many sandboxes boot from it. The OS disk each of those sandboxes runs on is not billed.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Snapshots&lt;/STRONG&gt; are the combined memory and disk snapshots of your sandboxes, including those taken automatically when a sandbox stops.&lt;/LI&gt;
&lt;LI&gt;Optional &lt;STRONG&gt;Data Disk Volumes&lt;/STRONG&gt; and &lt;STRONG&gt;Azure Blob Volumes&lt;/STRONG&gt; that can be attached to sandboxes.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Thank You and What Comes Next&lt;/H2&gt;
&lt;P&gt;General availability is not the destination, it is where many more of you get to start. During public preview that we announced in June 2026, the usage surpassed quickly&amp;nbsp;&lt;STRONG&gt;a million sandboxes created every day&lt;/STRONG&gt;. Our team worked closely with early customers that provided valuable feedback that shaped the product as it's today. From teams running real workloads on sandboxes ranging from cloud-native SaaS companies like &lt;STRONG&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/appsonazureblog/azure-container-apps-sandboxes-preview-giving-ai-agents-a-safe-place-to-work/4545975" target="_blank" rel="noopener" data-lia-auto-title="Templafy" data-lia-auto-title-active="0"&gt;Templafy&lt;/A&gt; &lt;/STRONG&gt;to global organizations like&amp;nbsp;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://kpmg.com/" target="_blank" rel="noopener"&gt;KPMG&lt;/A&gt; &lt;/STRONG&gt;and &lt;A class="lia-external-url" href="https://www.cognite.com/en" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Cognite&lt;/STRONG&gt;&lt;/A&gt;. KPMG built their Cowork AI Agent for their global workforce on ACA Sandboxes. Cognite uses ACA Sandboxes in their industrial &lt;A class="lia-external-url" href="https://www.cognite.com/en/product/atlas" target="_blank" rel="noopener"&gt;Atlas AI system&lt;/A&gt;. Lastly, &lt;STRONG&gt;the Department for Education, South Australia&lt;/STRONG&gt; - uses ACA sandboxes to power their EdChat -&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;SPAN data-teams="true"&gt;&lt;STRONG&gt;A safe place for every learner.&amp;nbsp;&lt;/STRONG&gt;We run the EdChat so students can learn by writing code and exploring data alongside AI, across 60,000 students and more than 40,000 staff. That model only works if every student gets an environment of their own, with clear guardrails, and can come back later to find their work exactly as they left it. Building that in house meant owning the machinery behind it. We estimate that moving to Azure Container Apps Sandboxes lets us retire close to 50,000 lines of code written to manage custom code interpreter and state ourselves. It is the per-user execution model that scales for our school system, and a lower maintenance burden for us.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;STRONG&gt;Cody Little&lt;/STRONG&gt;, AI Technical Lead, Department for Education, South Australia&amp;nbsp;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;In addition, many internal customers at Microsoft adopted ACA Sandboxes to build and enhance their products for their customers. Among those &lt;STRONG&gt;Microsoft Foundry&amp;nbsp;&lt;/STRONG&gt;built &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/foundry/agents/concepts/hosted-agents" target="_blank" rel="noopener"&gt;hosted agents&lt;/A&gt;, &lt;STRONG&gt;Copilot Studio &lt;/STRONG&gt;hosts &lt;A class="lia-external-url" href="https://www.microsoft.com/en-us/microsoft-365-copilot/microsoft-copilot-studio/" target="_blank" rel="noopener"&gt;agents you create&lt;/A&gt; - both on ACA Sandboxes and – our very own&amp;nbsp;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/aca/express/blog" target="_blank" rel="noopener"&gt;Azure Container Apps Express&lt;/A&gt;&lt;/STRONG&gt; built a modern and fast serverless container platform on sandboxes. Their feedback and your feedback set the next priorities, and we are grateful to you for it.&lt;/P&gt;
&lt;P&gt;Three focus areas of work that follow:&amp;nbsp;&lt;STRONG&gt;Sandbox groups get more control and visibility&lt;/STRONG&gt;, so a platform team can observe sandboxes, audit and enforce policies at the sandbox group level. Broad extensibility with more &lt;STRONG&gt;SDKs &lt;/STRONG&gt;and tighter integration with&lt;STRONG&gt; VS Code. &lt;/STRONG&gt;Lastly, extensive interoperability with&lt;STRONG&gt; &lt;/STRONG&gt;&lt;STRONG&gt;Connectors and Triggers&lt;/STRONG&gt; (now in preview) that will provide even larger customizability and on-behalf-of authentication (OBO), so agents securely reach the systems needed to do their job.&lt;/P&gt;
&lt;H2&gt;Next Steps&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;Open the&amp;nbsp;&lt;A class="lia-external-url" href="https://sandboxes.azure.com/" target="_blank" rel="noopener"&gt;ACA Sandboxes portal&lt;/A&gt;&amp;nbsp;and create a group with a sandbox.&lt;/LI&gt;
&lt;LI&gt;Clone the&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/Azure-Samples/azure-container-apps-sandboxes" target="_blank" rel="noopener"&gt;samples repo&lt;/A&gt;&amp;nbsp;and start with the working code.&lt;/LI&gt;
&lt;LI&gt;Read the&amp;nbsp;&lt;A class="lia-external-url" href="https://sandboxes.azure.com/docs/sandboxes/" target="_blank" rel="noopener"&gt;documentation&lt;/A&gt;&amp;nbsp;for the quick starts and the reference behind everything above.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;We appreciate your feedback, please submit it in the &lt;A class="lia-external-url" href="https://sandboxes.azure.com/" target="_blank" rel="noopener"&gt;ACA Sandboxes portal&lt;/A&gt;, or open an issue in the Azure Container Apps repo &lt;A class="lia-external-url" href="https://github.com/microsoft/azure-container-apps/issues" target="_blank" rel="noopener"&gt;Issues · microsoft/azure-container-apps&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Wed, 23 Sep 2026 23:33:57 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/apps-on-azure-blog/azure-container-apps-sandboxes-now-generally-available/ba-p/4559125</guid>
      <dc:creator>Jan-Kalis</dc:creator>
      <dc:date>2026-09-23T23:33:57Z</dc:date>
    </item>
    <item>
      <title>Decoding Environmental Viromes: Amplifying Human Expertise with Microsoft Discovery</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-discovery-blog/decoding-environmental-viromes-amplifying-human-expertise-with/ba-p/4555806</link>
      <description>&lt;H2 style="margin: 36px 0 14px; line-height: 1.3;"&gt;Wastewater and Community Health Monitoring&lt;/H2&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;What we flush down the toilet tells an extraordinary story, not merely about individual biology, but about the collective health of our communities. A sewer network functions as a continuously updated biological sensor across an entire population catchment. As early as 1887, researchers at the &lt;A class="lia-external-url" href="https://en.wikipedia.org/wiki/Lawrence_Experiment_Station" target="_blank" rel="noopener"&gt;Lawrence Experiment Station&lt;/A&gt; north of Boston systematically analyzed wastewater to evaluate bacterial water quality. Over the ensuing century, environmental water sampling became a cornerstone of public health surveillance, monitoring bacterial diseases such as typhoid and viral pathogens such as &lt;A class="lia-external-url" href="https://doi.org/10.1084/jem.71.6.765" target="_blank" rel="noopener"&gt;poliovirus&lt;/A&gt;. More recently, wastewater surveillance provided critical early warnings during the &lt;A class="lia-external-url" href="https://doi.org/10.1016/j.scitotenv.2023.164561" target="_blank" rel="noopener"&gt;COVID-19 pandemic&lt;/A&gt; and is providing signals on the &lt;A class="lia-external-url" href="https://doi.org/10.15585/mmwr.mm7502a2" target="_blank" rel="noopener"&gt;re-emergence of measles in the United States&lt;/A&gt;.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;Throughout my career as an evolutionary biologist and epidemiologist, I have seen how conventional public health reporting remains constrained by healthcare-seeking behavior and clinical diagnostic access. Wastewater surveillance offers an elegant, non-invasive alternative: it captures transmission signals from symptomatic and asymptomatic individuals alike across potentially millions of residents. Historically, this surveillance required culturing specific organisms in the laboratory or deploying targeted assays designed for known targets. Today, high-throughput metagenomic sequencing captures fragments from all genetic material present in an environmental sample, enabling the detection of unexpected and emerging pathogens. For instance, wastewater metagenomics recently succeeded in identifying a &lt;A class="lia-external-url" href="https://evidence.nejm.org/doi/full/10.1056/EVIDpha2600079" target="_blank" rel="noopener"&gt;single case of measles in Cook County, Illinois&lt;/A&gt;, across a catchment area of over one million residents. Laboratory kits can enrich samples for broad categories of organisms of interest, allowing even viruses at a low frequency in the sample to be detected.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;Yet data abundance does not automatically translate into public health understanding. Metagenomic sequencing produces vast, fragmented, and noisy datasets. Sifting through billions of short genomic reads from an environmental sample and comparing them against sprawling reference databases presents formidable computational hurdles and substantial analytical friction. When interpreting signals present at a low frequency in a sample, the context has to be taken into account, as there is a risk that the sample has been contaminated during laboratory processing.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;This blog describes how I used the Microsoft Discovery app to accelerate public health and environmental insights from a large metagenomic study, while remaining grounded in the scientific literature and being methodical in the choice of tools and how they are coordinated to provide auditable, interpretable results.&lt;/P&gt;
&lt;H2 style="margin: 36px 0 14px; line-height: 1.3;"&gt;The Era of Big Data and Metagenomics&lt;/H2&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;To address the initial computational bottleneck of metagenomics, our team, &lt;A class="lia-external-url" href="https://premonition.microsoft.com" target="_blank" rel="noopener"&gt;Microsoft Premonition&lt;/A&gt;, has developed a metagenomic processing service, Premonition Insights. Insights leverages massively parallel workflows on Microsoft Azure to compare raw environmental sequences against comprehensive databases of all known organisms. It uses advanced statistical models to resolve ambiguous sequence alignments and filter taxonomic noise. In partnership with academic collaborators, Insights has been applied across diverse biological samples, including &lt;A class="lia-external-url" href="https://doi.org/10.1038/s41467-023-40247-4" target="_blank" rel="noopener"&gt;human blood&lt;/A&gt;, &lt;A class="lia-external-url" href="https://doi.org/10.1038/s42003-024-06337-9" target="_blank" rel="noopener"&gt;mosquitoes&lt;/A&gt;, &lt;A class="lia-external-url" href="https://doi.org/10.1093/ve/veag032" target="_blank" rel="noopener"&gt;rodents&lt;/A&gt;, and &lt;A class="lia-external-url" href="https://doi.org/10.1016/j.virusres.2023.199174" target="_blank" rel="noopener"&gt;bats&lt;/A&gt;.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;However, even after cloud services process terabytes of FASTQ files into structured taxonomic tables, the human expert faces a secondary, laborious bottleneck: exploratory scientific interpretation. In the case study discussed below, Premonition Insights distilled raw environmental sequencing data into a 6 GB table containing approximately 7.5 million candidate matches across hundreds of samples, each annotated with taxonomic lineages, probabilistic match scores, coverage statistics, sample dates, and collection locations.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;As any computational biologist knows, turning a 7.5-million-row table into defensible epidemiological insights normally requires substantial manual effort. A researcher must write custom data-wrangling scripts, resolve Python and R environment dependencies, query external environmental and meteorological APIs, configure specialized command-line phylogenetic software, filter false positives, and construct visualizations to inspect patterns. This friction often fragments an expert's focus across software engineering and data plumbing rather than epidemiological reasoning.&lt;/P&gt;
&lt;H2 style="margin: 36px 0 14px; line-height: 1.3;"&gt;Accelerating Insights with Domain Expertise and AI Agents&lt;/H2&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;To streamline this exploratory phase, I utilized the&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/microsoft/discovery" target="_blank" rel="noopener"&gt;Microsoft Discovery app&lt;/A&gt;, a localized experience of the Microsoft Discovery platform that enables domain experts to configure and orchestrate collaborating AI agents across complex scientific workflows. Crucially, the Discovery app, as well as the cloud-based platform, is not designed to replace human judgment or automate epidemiological conclusions. Environmental metagenomics is too nuanced and sensitive for autonomous “black box” automation; it demands subject-matter expertise to help distinguish authentic biological signal from sequence artifacts, sample contamination, and environmental background noise, and to suggest further confirmatory laboratory and epidemiological analyses.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;Working with Discovery requires meaningful scientific steering. The platform has real but useful friction: curating the &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/microsoft-discovery/concept-bookshelf-knowledge-bases" target="_blank" rel="noopener"&gt;Scientific Bookshelf&lt;/A&gt;, looking over agent tasks, getting the evaluation rubrics right, and knowing what assumptions and trade-offs were made at critical analytical junctures. As a domain expert, my role was to formulate the epidemiological hypotheses, curate relevant wastewater virology literature, establish quality rubrics, and critically evaluate intermediate outputs. Meanwhile, Discovery's collaborating agents assisted with data preparation, environment configuration, code synthesis, API integration, and interactive visualization. As a consequence of working with Discovery, you can generate documentation of how you work, interpret data, use your favorite tools, and more. Capturing this know-how is especially important when working in large collaborative teams, for reproducibility, as well as for training and educational purposes.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;Using the Discovery app, I completed an exploratory analysis workflow. Agents assisted with data preparation, software setup, visualization, and hypothesis generation, while I remained responsible for scientific interpretation and conclusions. After familiarizing myself with the platform, I estimate that it took me less than half a day, most of which was spent setting up the workflow and reviewing the outputs. This substantial reduction in manual analysis effort demonstrated how agentic assistance can amplify domain expertise across multidisciplinary tasks, as well as turn interactive scientific inquiry into a structured set of tasks leading to outcomes.&lt;/P&gt;
&lt;H2 style="margin: 36px 0 14px; line-height: 1.3;"&gt;Scenario Deep Dive: Environmental Viromes in Gujarat, India&lt;/H2&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;To evaluate this collaborative workflow on a real-world dataset, I examined publicly available environmental surveillance sequencing data from Gujarat, India (&lt;A class="lia-external-url" href="https://www.ncbi.nlm.nih.gov/bioproject/?term=PRJEB102331" target="_blank" rel="noopener"&gt;BioProject PRJEB102331&lt;/A&gt;), originally &lt;A class="lia-external-url" href="https://www.nature.com/articles/s44454-026-00035-3" target="_blank" rel="noopener"&gt;collected and published by regional researchers&lt;/A&gt;. This is a large, high-quality metagenomic dataset, with over 500 wastewater samples gathered from four cities over the course of a year, with separate processing of RNA and DNA to generate over 1,000 sequencing libraries, with enrichment for viruses. My analytical objective was to characterize the prevalence and seasonal dynamics of waterborne enteric viruses that cause gastrointestinal illness.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;Within the Discovery app, the exploratory investigation unfolded across five interconnected analytical stages:&lt;/P&gt;
&lt;OL style="margin: 0 0 18px 24px; padding-left: 18px; line-height: 1.65;"&gt;
&lt;LI&gt;&lt;STRONG&gt;Literature Context &amp;amp; Bookshelf Setup:&lt;/STRONG&gt; I seeded Discovery's Scientific Bookshelf with peer-reviewed publications on wastewater epidemiology, enterovirus taxonomy, and local hydrological surveillance. This gave the agents grounding in the domain to help the subsequent code generation and anchor the terminology used. To blind the analysis to the conclusions of the original study, the scientific manuscript describing the study was omitted from the Bookshelf, helping to ensure that the AI agents operating within Discovery were not simply taking a shortcut and copying and pasting results.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Data Preparation &amp;amp; Taxonomic Filtering:&lt;/STRONG&gt; I directed the agents to parse the 7.5-million-row Premonition Insights summary table. Guided by explicit rubrics and domain filtering criteria, the agents wrote Python routines to isolate matches corresponding to recognized genera of gastrointestinal and waterborne viruses.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Meteorological Data Integration:&lt;/STRONG&gt; To investigate climatic drivers of viral presence, the agents connected to the external &lt;A class="lia-external-url" href="https://open-meteo.com/" target="_blank" rel="noopener"&gt;Open-Meteo API&lt;/A&gt;, programmatically retrieving historical daily rainfall and temperature records corresponding to the geographic coordinates and sampling dates in Gujarat.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Comparative Environmental Dynamics:&lt;/STRONG&gt; The agents synthesized the genomic and meteorological datasets, generating comparative statistical summaries.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Bioinformatics, Phylogenetics &amp;amp; Dynamic Visualization:&lt;/STRONG&gt; To evaluate whether detected enterovirus sequences represented circulating field strains or taxonomic ambiguities, the agents configured local bioinformatics tools, aligned sample consensus sequences against reference enterovirus genomes, and built phylogenetic trees. Like most scientists working with bioinformatics pipelines, I have my own favorite tools to use, such as &lt;A class="lia-external-url" href="https://mafft.cbrc.jp/alignment/software/" target="_blank" rel="noopener"&gt;MAFFT&lt;/A&gt; for sequence alignment and &lt;A class="lia-external-url" href="https://iqtree.github.io" target="_blank" rel="noopener"&gt;IQ-TREE&lt;/A&gt; for reconstructing trees (although other great tools are available). I asked the agents to build pipelines around those tools. In addition to static charts, the agents generated dynamic HTML dashboards incorporating interactive visual components using&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/owebeeone/jowna" target="_blank" rel="noopener"&gt;Jowna&lt;/A&gt;, &lt;A class="lia-external-url" href="https://plotly.com/" target="_blank" rel="noopener"&gt;Plotly.js&lt;/A&gt;, and &lt;A class="lia-external-url" href="https://doi.org/10.1186/s12859-018-2283-2" target="_blank" rel="noopener"&gt;phylotree.js&lt;/A&gt;, enabling immediate visual inspection of temporal trends and evolutionary branching.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;Through an interactive chat with the app, I created a list of tasks, each leading to a separate outcome. For each of these outcomes, the app helped to create a rubric to identify specific criteria for accuracy and robustness, as well as graders to assess whether the generated outcomes met those criteria.&lt;/P&gt;
&lt;img&gt;&lt;STRONG&gt;Figure 1.&lt;/STRONG&gt; Widgets illustrating the tasks involved in the wastewater analysis and the generated outcomes. These can be directly input into the widget or may emerge during unstructured, interactive chats.&lt;/img&gt;
&lt;H2 style="margin: 36px 0 14px; line-height: 1.3;"&gt;Collaborative Breakdown of the Exploratory Workflow&lt;/H2&gt;
&lt;DIV style="width: 100%; max-width: 1000px; margin: 28px auto; overflow-x: auto; border: 0.25px solid #d8dce6; border-radius: 10px; box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08); box-sizing: border-box;"&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; border-width: 1px; border-spacing: 0;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="lia-background-color-custom-1e8bbc lia-vertical-align-middle" scope="col" style="padding: 14px;"&gt;Workflow Phase&lt;/th&gt;&lt;th class="lia-background-color-custom-1e8bbc lia-vertical-align-middle" scope="col" style="padding: 14px;"&gt;Domain Expert Role&lt;/th&gt;&lt;th class="lia-background-color-custom-1e8bbc lia-vertical-align-middle" scope="col" style="padding: 14px;"&gt;Discovery Agent Role&lt;/th&gt;&lt;th class="lia-background-color-custom-1e8bbc lia-vertical-align-middle" scope="col" style="padding: 14px;"&gt;Tools &amp;amp; Artifacts&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="lia-background-color-custom-eef3fb lia-vertical-align-top" scope="row" style="padding: 15px;"&gt;Literature &amp;amp;&lt;BR /&gt;Context Setup&lt;/th&gt;&lt;td class="lia-background-color-22 lia-vertical-align-top" style="padding: 15px;"&gt;Curated wastewater virology papers, established the analysis scope, and set quality rubrics.&lt;/td&gt;&lt;td class="lia-background-color-22 lia-vertical-align-top" style="padding: 15px;"&gt;Indexed papers in the Scientific Bookshelf and extracted relevant domain parameters and terminology.&lt;/td&gt;&lt;td class="lia-background-color-22 lia-vertical-align-top" style="padding: 15px;"&gt;&lt;SPAN style="display: inline-block; max-width: 100%; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #e8e5ff; color: #4f3f8f; border-radius: 12px; font-size: 12px; font-weight: 600; box-sizing: border-box; overflow-wrap: anywhere;"&gt;Scientific Bookshelf&lt;/SPAN&gt; &lt;SPAN style="display: inline-block; max-width: 100%; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #e8e5ff; color: #4f3f8f; border-radius: 12px; font-size: 12px; font-weight: 600; box-sizing: border-box; overflow-wrap: anywhere;"&gt;Markdown rubrics&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th class="lia-background-color-custom-e4edf9 lia-vertical-align-top" scope="row" style="padding: 15px;"&gt;Data Extraction&lt;BR /&gt;&amp;amp; Filtering&lt;/th&gt;&lt;td class="lia-background-color-custom-f8f9fc lia-vertical-align-top" style="padding: 15px;"&gt;Specified virus families of interest and defined filtering thresholds.&lt;/td&gt;&lt;td class="lia-background-color-custom-f8f9fc lia-vertical-align-top" style="padding: 15px;"&gt;Wrote and executed data-wrangling scripts to reduce the 7.5-million-row table to target viral genera.&lt;/td&gt;&lt;td class="lia-background-color-custom-f8f9fc lia-vertical-align-top" style="padding: 15px;"&gt;&lt;SPAN style="display: inline-block; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #e1f3ed; color: #176b57; border-radius: 12px; font-size: 12px; font-weight: 600;"&gt;Python&lt;/SPAN&gt; &lt;SPAN style="display: inline-block; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #e1f3ed; color: #176b57; border-radius: 12px; font-size: 12px; font-weight: 600;"&gt;Pandas&lt;/SPAN&gt; &lt;SPAN style="display: inline-block; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #e1f3ed; color: #176b57; border-radius: 12px; font-size: 12px; font-weight: 600;"&gt;Polars&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th class="lia-background-color-custom-eef3fb lia-vertical-align-top" scope="row" style="padding: 15px;"&gt;Meteorological Integration&lt;/th&gt;&lt;td class="lia-background-color-22 lia-vertical-align-top" style="padding: 15px;"&gt;Hypothesized seasonal and monsoon drivers and identified the required weather metrics.&lt;/td&gt;&lt;td class="lia-background-color-22 lia-vertical-align-top" style="padding: 15px;"&gt;Constructed an API client, retrieved historical rainfall and temperature data for Gujarat, and merged the environmental and genomic datasets.&lt;/td&gt;&lt;td class="lia-background-color-22 lia-vertical-align-top" style="padding: 15px;"&gt;&lt;SPAN style="display: inline-block; max-width: 100%; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #fff0d9; color: #8a4b08; border-radius: 12px; font-size: 12px; font-weight: 600; overflow-wrap: anywhere;"&gt;Open-Meteo API&lt;/SPAN&gt; &lt;SPAN style="display: inline-block; max-width: 100%; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #fff0d9; color: #8a4b08; border-radius: 12px; font-size: 12px; font-weight: 600; overflow-wrap: anywhere;"&gt;Geo-merging&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th class="lia-background-color-custom-e4edf9 lia-vertical-align-top" scope="row" style="padding: 15px;"&gt;Bioinformatics&lt;BR /&gt;&amp;amp; Phylogenetics&lt;/th&gt;&lt;td class="lia-background-color-custom-f8f9fc lia-vertical-align-top" style="padding: 15px;"&gt;Formulated an enterovirus verification plan and inspected tree topologies for biological plausibility.&lt;/td&gt;&lt;td class="lia-background-color-custom-f8f9fc lia-vertical-align-top" style="padding: 15px;"&gt;Installed local sequence-alignment and tree-building tools and constructed phylogenetic trees against GenBank references.&lt;/td&gt;&lt;td class="lia-background-color-custom-f8f9fc lia-vertical-align-top" style="padding: 15px;"&gt;&lt;SPAN style="display: inline-block; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #f2e5f5; color: #713878; border-radius: 12px; font-size: 12px; font-weight: 600;"&gt;MAFFT&lt;/SPAN&gt; &lt;SPAN style="display: inline-block; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #f2e5f5; color: #713878; border-radius: 12px; font-size: 12px; font-weight: 600;"&gt;IQ-TREE&lt;/SPAN&gt; &lt;SPAN style="display: inline-block; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #f2e5f5; color: #713878; border-radius: 12px; font-size: 12px; font-weight: 600;"&gt;GenBank&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th class="lia-background-color-custom-eef3fb lia-vertical-align-top" scope="row" style="padding: 15px;"&gt;Dashboard &amp;amp;&lt;BR /&gt;Visualization&lt;/th&gt;&lt;td class="lia-background-color-22 lia-vertical-align-top" style="padding: 15px;"&gt;Evaluated visual outputs, checked outlier points, and verified spatial patterns between drain and river samples.&lt;/td&gt;&lt;td class="lia-background-color-22 lia-vertical-align-top" style="padding: 15px;"&gt;Created a responsive web dashboard with synchronized time-series charts and an interactive phylogenetic tree viewer.&lt;/td&gt;&lt;td class="lia-background-color-22 lia-vertical-align-top" style="padding: 15px;"&gt;&lt;SPAN style="display: inline-block; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #e3f1fa; color: #185f86; border-radius: 12px; font-size: 12px; font-weight: 600;"&gt;Jowna&lt;/SPAN&gt; &lt;SPAN style="display: inline-block; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #e3f1fa; color: #185f86; border-radius: 12px; font-size: 12px; font-weight: 600;"&gt;Plotly.js&lt;/SPAN&gt; &lt;SPAN style="display: inline-block; max-width: 100%; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #e3f1fa; color: #185f86; border-radius: 12px; font-size: 12px; font-weight: 600; overflow-wrap: anywhere;"&gt;phylotree.js&lt;/SPAN&gt; &lt;SPAN style="display: inline-block; margin: 0 4px 6px 0; padding: 4px 8px; background-color: #e3f1fa; color: #185f86; border-radius: 12px; font-size: 12px; font-weight: 600;"&gt;HTML5&lt;/SPAN&gt;&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;/DIV&gt;
&lt;H2 style="margin: 36px 0 14px; line-height: 1.3;"&gt;Defensible Scientific Findings and Responsible Interpretation&lt;/H2&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;The exploratory analysis revealed compelling biological patterns across the environmental dataset. Across the waterborne viral genera identified, rotavirus and adenovirus exhibited the highest relative abundance and widespread persistence across sampling sites (Figure 1). Both pathogens represent major contributors to pediatric gastrointestinal illness globally and regionally. When temporal signals were correlated with meteorological data, multiple enteric viruses, such as norovirus, displayed pronounced abundance peaks in September, aligning with the late portion of the regional monsoon season, which runs from June through September (Figure 2).&lt;/P&gt;
&lt;img&gt;&lt;STRONG&gt;Figure 2.&lt;/STRONG&gt; Counts of contiguous sequences (“contigs”) generated by assembling short reads that matched common gastrointestinal viruses.&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;&lt;STRONG&gt;Figure 3.&lt;/STRONG&gt; Dynamics over time of common gastrointestinal viruses.&lt;/img&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;A critical test of the workflow arose regarding enteroviruses and poliovirus. The automated taxonomic scan detected low background levels of non-polio enteroviruses, which were subsequently verified through agent-generated phylogenetic trees comparing sample sequences against reference viral genomes (Figure 4). Of particular interest are the closely related clusters of sequences, which may represent a local outbreak and suggest the need for further epidemiological investigation. However, no poliovirus was detected in these samples. This finding is consistent with successful regional control efforts, although additional epidemiological evidence would be required to assess specific drivers.&lt;/P&gt;
&lt;img&gt;&lt;STRONG&gt;Figure 4.&lt;/STRONG&gt; Phylogeny of sequences corresponding to enteroviruses identified in the samples.&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;One of the stated advantages of metagenomics is the ability to detect unexpected signals that may be overlooked by targeted approaches. For example, two separate samples from two cities in July 2024 were positive for Chandipura virus, a rare but virulent vector-borne virus thought to be mainly spread by sandflies. This raises the question of whether this is a real signal. The fact that two samples were positive from different cities makes it less likely that this was due to contamination. That the samples were taken in July 2024, when sandflies are active, and that&amp;nbsp;&lt;A class="lia-external-url" href="https://www.who.int/emergencies/disease-outbreak-news/item/2024-DON529" target="_blank" rel="noopener"&gt;a large outbreak of Chandipura virus was reported in Gujarat at the time&lt;/A&gt; lends further support to this being a real signal.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;The enterovirus and Chandipura virus examples highlight the importance of humans in evidence synthesis in AI-assisted workflows. The Discovery platform makes it easier to integrate multiple datasets and helps to contextualize the results, but, as is typical with scientific workflows, more questions are raised than answered. For example, how much poliovirus transmission could be occurring without it being observed in wastewater? &lt;A class="lia-external-url" href="https://doi.org/10.64898/2026.09.16.26363050" target="_blank" rel="noopener"&gt;Mathematical models&lt;/A&gt; can help us think about this more deeply. Are the matches to Chandipura virus real? While the circumstantial evidence surrounding the epidemiological context may be convincing, an independent laboratory analysis of the positive samples to generate full genomes of these viruses would lend further biological evidence. The “lab-in-the-loop” is becoming an important paradigm for scientific discovery, integrating human domain expertise, AI automation, and wet-lab biology.&lt;/P&gt;
&lt;DIV style="margin: 24px 0; padding: 16px 18px; border-left: 4px solid #5b5fc7; background-color: #f5f5f5; line-height: 1.65;"&gt;&lt;STRONG&gt;Responsible Research &amp;amp; Methodology Notice:&lt;/STRONG&gt; The work presented here focused exclusively on the computational interpretation of publicly available environmental sequencing data (&lt;A class="lia-external-url" href="https://www.ncbi.nlm.nih.gov/bioproject/?term=PRJEB102331" target="_blank" rel="noopener"&gt;BioProject PRJEB102331&lt;/A&gt;) and did not involve the creation, modification, or optimization of biological agents or pathogens. The exploratory workflows operated within a local computational environment with full human oversight at every stage.&lt;/DIV&gt;
&lt;H2 style="margin: 36px 0 14px; line-height: 1.3;"&gt;Horizontal Capability: Empowering the Scientist at the Frontier&lt;/H2&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;What makes this investigation compelling is not solely the specific viral dynamics observed in Gujarat, but what it reveals about a horizontal capability for scientific discovery. In conventional workflows, the sheer friction of software engineering creates substantial drag on exploratory research.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;The Microsoft Discovery app addressed this friction by serving as a multidisciplinary accelerator. Importantly, this success rests on a clear separation of concerns:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Platform Capabilities:&lt;/STRONG&gt; Discovery managed multi-agent coordination, contextual retrieval from the Scientific Bookshelf, safe local code generation, and visualization assembly.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Custom Workflow Engineering:&lt;/STRONG&gt; Modular scripts and API integrations were synthesized specifically for the dataset's unique schema, metadata, and bioinformatics requirements.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Human Domain Judgment:&lt;/STRONG&gt; As the scientist, I formulated the questions, curated the literature, defined analytical constraints, reviewed assumptions, and interpreted the results within established epidemiological principles.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;To ensure full scientific transparency and reproducibility, the software versions, analytical prompts, rubrics, and workflow scripts utilized throughout this exploration are stored within a structured workspace generated by the Discovery app. This ensures that peer researchers can inspect, evaluate, and reproduce the agent-assisted workflow on comparable metagenomic datasets.&lt;/P&gt;
&lt;P style="margin: 0 0 18px; line-height: 1.65;"&gt;At a moment when public health challenges demand rapid responsiveness while preserving accountability, and biological datasets grow exponentially, agent-assisted exploratory platforms offer a transformative path forward. By handling mechanical data wrangling while keeping domain experts firmly in command, Discovery enables scientists to spend more time doing what matters most: generating defensible insights that protect human communities.&lt;/P&gt;
&lt;SECTION style="width: 100%; max-width: 1000px; margin: 44px auto 24px; box-sizing: border-box;"&gt;
&lt;DIV style="padding: 28px 30px; background-color: #f4f9fc; border: 1px solid #cfe4ee; border-left: 6px solid #1E8BBC; border-radius: 10px; box-shadow: 0 4px 14px rgba(0, 0, 0, 0.07); box-sizing: border-box;"&gt;
&lt;H2 style="margin: 0 0 16px; color: #1e8bbc; font-family: 'Segoe UI', Arial, sans-serif; font-size: 24px; font-weight: 600; line-height: 1.3;"&gt;About the Author&lt;/H2&gt;
&lt;P style="margin: 0 0 8px; color: #242424; font-family: 'Segoe UI', Arial, sans-serif; font-size: 18px; font-weight: bold; line-height: 1.4;"&gt;Simon Frost&lt;/P&gt;
&lt;P class="lia-align-left" style="margin: 0; color: #323130; font-family: 'Segoe UI', Arial, sans-serif; font-size: 16px; font-weight: 400; line-height: 1.7;"&gt;Simon Frost is a Principal Scientist at Microsoft Discovery &amp;amp; Quantum and Microsoft Premonition, and Professor of Pathogen Dynamics at the London School of Hygiene &amp;amp; Tropical Medicine. He holds an Sc.D. from the University of Cambridge and a D.Phil. in Mathematical Biology from the University of Oxford. With over 25 years of research in infectious disease dynamics, viral genomics, and molecular epidemiology, his work focuses on integrating real-time biological data with computational and AI models to enhance our understanding of the emergence and spread of global pathogens.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/SECTION&gt;</description>
      <pubDate>Wed, 23 Sep 2026 13:59:06 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-discovery-blog/decoding-environmental-viromes-amplifying-human-expertise-with/ba-p/4555806</guid>
      <dc:creator>sdwfrost</dc:creator>
      <dc:date>2026-09-23T13:59:06Z</dc:date>
    </item>
    <item>
      <title>Microsoft Entra Connect Sync will STOP working on September 30, 2026</title>
      <link>https://techcommunity.microsoft.com/t5/azure/microsoft-entra-connect-sync-will-stop-working-on-september-30/m-p/4559241#M22874</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Due to Microsoft's announcement that Microsoft Entra Connect Sync will stop working on September 30, 2026 if the installed version is below 2.5.79.0, we would like to know whether the other related components will also be affected.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We are currently running Microsoft Entra Connect Sync version 2.6.3.0, which was confirmed by a Microsoft engineer to be unaffected by this change.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, we also have the components listed below, and we would like to confirm whether they will be affected as well:&lt;/P&gt;&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Wed, 23 Sep 2026 09:03:02 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure/microsoft-entra-connect-sync-will-stop-working-on-september-30/m-p/4559241#M22874</guid>
      <dc:creator>MasPAN74</dc:creator>
      <dc:date>2026-09-23T09:03:02Z</dc:date>
    </item>
    <item>
      <title>Microsoft Foundry Hosted Agents and MCP in Practice: Building Fibey Field Ops</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/microsoft-foundry-hosted-agents-and-mcp-in-practice-building/ba-p/4557526</link>
      <description>&lt;P&gt;An agent can produce a convincing answer while the system around it is still difficult to deploy, authorize, debug, and recover. For AI engineers and developers, that is often the real gap between a promising prototype and an application people can depend on.&lt;/P&gt;
&lt;P&gt;Fibey Field Ops makes that gap concrete. It is a synthetic fiber-operations assistant built with Microsoft Foundry Hosted Agents, Model Context Protocol (MCP), and Azure Container Apps. This walkthrough follows one field-service task through the implementation, then examines the deployment and operational decisions behind it.&lt;/P&gt;
&lt;H2 id="introduction-the-application-is-more-than-the-model"&gt;Introduction: the application is more than the model&lt;/H2&gt;
&lt;P&gt;Imagine a technician preparing a fiber work order. Before leaving the depot, they need the job details, available parts, relevant procedures, and network status. Those facts belong to different systems. A useful assistant must retrieve them, combine them, and explain what is missing without inventing an answer.&lt;/P&gt;
&lt;P&gt;The challenge is not simply selecting a capable model. It is establishing reliable contracts between the model, its tools, the hosting platform, and the application. Fibey demonstrates those contracts with &lt;STRONG&gt;one hosted agent, five instruction skills, eleven operational tools, and five supporting Container Apps&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;There is an important qualification: Fibey is a protected, synthetic-data demonstration, not a production-ready field-service system. Its gateway mappings and work orders remain in memory, and it does not enforce per-user session ownership or approval of operational writes. Those limitations are useful teaching material rather than details to hide.&lt;/P&gt;
&lt;P&gt;The &lt;A href="https://github.com/leestott/fibey-toolbox-demo" target="_blank" rel="noopener"&gt;Fibey repository&lt;/A&gt; contains the implementation, infrastructure, documentation, and presentation deck. Repository access depends on its permissions.&lt;/P&gt;
&lt;H2 id="1-separate-reasoning-instructions-and-tool-execution"&gt;1. Separate reasoning, instructions, and tool execution&lt;/H2&gt;
&lt;P&gt;MCP is a standard interface for discovering and invoking tools. In Fibey, the agent connects to one Microsoft Foundry Toolbox MCP endpoint. The toolbox exposes capabilities backed by an inventory MCP server, a work-orders OpenAPI service, and a Search knowledge base.&lt;/P&gt;
&lt;P&gt;That common interface does not make the underlying systems identical. OpenAPI still describes an HTTP API, inventory still implements MCP, and knowledge retrieval still depends on indexed documents. The toolbox centralizes the agent-facing integration and connection configuration while preserving those implementation choices.&lt;/P&gt;
&lt;P&gt;Four terms describe different responsibilities:&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;Concept&lt;/th&gt;&lt;th&gt;Responsibility in Fibey&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Agent&lt;/td&gt;&lt;td&gt;Classifies the request, loads instructions, selects tools, and constructs the response&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Skill&lt;/td&gt;&lt;td&gt;An instruction document for a task such as inventory lookup or field briefing&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tool&lt;/td&gt;&lt;td&gt;An operation with an advertised input schema and a result&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Toolbox&lt;/td&gt;&lt;td&gt;The curated MCP surface and references to downstream connections&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Fibey's five skills cover inventory lookup, work-order management, knowledge retrieval, work-order preparation, and field briefings. The last two coordinate several tools; they do not create additional agents.&lt;/P&gt;
&lt;P&gt;The configured toolbox exposes eleven operational tools directly: six inventory/status operations, four work-order operations, and one knowledge-retrieval operation. The agent uses their actual names and schemas. Discovery wrappers such as &lt;CODE&gt;tool_search&lt;/CODE&gt; and &lt;CODE&gt;call_tool&lt;/CODE&gt; are relevant only when a toolbox exposes them; they are not mandatory steps before every call.&lt;/P&gt;
&lt;P&gt;This distinction matters when debugging. A missing wrapper is not necessarily a broken integration. A skill mentioning a capability is also not proof that the runtime can invoke it. The current tool schema is the executable contract.&lt;/P&gt;
&lt;H2 id="2-follow-the-hosted-azure-architecture"&gt;2. Follow the hosted Azure architecture&lt;/H2&gt;
&lt;P&gt;Microsoft Foundry hosts the agent container and exposes its endpoint. Azure Container Apps (ACA) hosts the application services around it. The deployment source of truth is &lt;CODE&gt;azure.yaml&lt;/CODE&gt;, which declares the GPT-5.4-mini model deployment and the hosted agent's Responses &lt;CODE&gt;2.0.0&lt;/CODE&gt; protocol.&lt;/P&gt;
&lt;P&gt;The design keeps the browser-facing application separate from agent execution and backend integration. That makes it easier to inspect each boundary, but it does not make the whole deployment private or remove the need for application authorization.&lt;/P&gt;
&lt;P&gt;Treat GPT-5.4-mini as the sample's configured baseline, not a claim that it is optimal for every workload. When evaluating another model, measure tool-selection accuracy, schema compliance, grounded answers, latency, and cost per completed task rather than choosing from a fluent demo response alone.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/leestott/fibey-toolbox-demo/blob/main/docs/architecture.md" target="_blank" rel="noopener"&gt;engineering architecture&lt;/A&gt; expands this presentation view with resource ownership, identities, configuration, and telemetry paths.&lt;/P&gt;
&lt;H3 id="the-application-request-path"&gt;The application request path&lt;/H3&gt;
&lt;P&gt;The browser signs in through Microsoft Entra ID at the UI's ACA authentication boundary. An explicit allowlist restricts access to the intended user. Nginx serves the React application and proxies chat requests to the internal FastAPI gateway.&lt;/P&gt;
&lt;P&gt;The gateway invokes the Foundry-hosted agent using its managed identity. Server-sent events (SSE), a streaming HTTP format, carry answer text, tool activity, citations, failures, and completion back to the UI.&lt;/P&gt;
&lt;P&gt;Gateway and dashboard ingress are internal to the ACA environment. Inventory and work orders have external ingress so the toolbox can reach them, but their operational endpoints require separate API keys. External accessibility is not anonymous access, and internal ingress is not a complete network-isolation strategy.&lt;/P&gt;
&lt;H3 id="the-knowledge-and-status-paths"&gt;The knowledge and status paths&lt;/H3&gt;
&lt;P&gt;The knowledge pipeline starts with eight Markdown documents in the repository. A setup script uploads them to a private Blob Storage container, configures a Search data source and indexer, verifies ingestion, and creates the knowledge source and knowledge base used by Foundry IQ.&lt;/P&gt;
&lt;P&gt;This is not an embedding pipeline assembled implicitly by the chat application. The current configuration uses minimal reasoning and extractive retrieval, with defaults of three output documents and 6,000 output tokens. Its knowledge-base configuration and MCP endpoint use preview APIs, which need lifecycle and support review before production adoption.&lt;/P&gt;
&lt;P&gt;Network status takes a different path. Inventory's &lt;CODE&gt;get_network_status&lt;/CODE&gt; tool reads the configured internal HTML dashboard. It is a narrow HTTP fetch, not browser automation, arbitrary website navigation, or a real operational clearance.&lt;/P&gt;
&lt;P&gt;Azure Container Registry supplies container images. ACA logs go to Log Analytics. Hosted code enables OpenTelemetry, the standard instrumentation framework for traces and metrics, but the repository does not provision Application Insights. The project's linked trace destination must be configured and verified separately.&lt;/P&gt;
&lt;H2 id="3-trace-a-work-order-briefing-through-the-implementation"&gt;3. Trace a work-order briefing through the implementation&lt;/H2&gt;
&lt;P&gt;The most useful demonstration starts with one concrete request: prepare a technician for a job. The &lt;CODE&gt;field-briefing&lt;/CODE&gt; skill provides the instructions for combining work-order data, inventory, procedures, and status without pretending that one backend contains everything.&lt;/P&gt;
&lt;P&gt;Use a request such as the following in a prepared synthetic environment. The exact wording and tool order may vary; the important evidence is which operations succeeded and which facts support the answer.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Brief me on WO-007, including stock, relevant procedures, safety, and network status.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The intended flow is:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Load the field-briefing instructions and retrieve WO-007.&lt;/LI&gt;
&lt;LI&gt;Identify required parts and use a batch stock check when several parts need checking.&lt;/LI&gt;
&lt;LI&gt;Combine procedure and safety questions into one focused knowledge retrieval.&lt;/LI&gt;
&lt;LI&gt;Read the configured synthetic status dashboard through inventory MCP.&lt;/LI&gt;
&lt;LI&gt;Produce a briefing grounded in successful results, with source references and explicit gaps.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Batching is a useful engineering choice, not a claim of a measured performance improvement. One batch stock call avoids unnecessary repeated requests. Combining related retrieval questions can also reduce duplicate context and tool traffic.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This screenshot was captured from an authenticated deployment. The displayed briefing identifies an unavailable connector kit and available test equipment. It illustrates a specific synthetic response, not current stock or a benchmark.&lt;/P&gt;
&lt;H3 id="use-the-supported-hosted-integration"&gt;Use the supported hosted integration&lt;/H3&gt;
&lt;P&gt;The relevant implementation is &lt;A class="lia-external-url" href="https://github.com/leestott/fibey-toolbox-demo/blob/main/src/fibey/agent/hosted.py" target="_blank" rel="noopener"&gt;the hosted entrypoint&lt;/A&gt;. It uses &lt;CODE&gt;FoundryToolbox&lt;/CODE&gt; from &lt;CODE&gt;agent_framework_foundry_hosting&lt;/CODE&gt;, a &lt;CODE&gt;FoundryChatClient&lt;/CODE&gt;, a skills provider, and &lt;CODE&gt;ResponsesHostServer.run_async()&lt;/CODE&gt;.&lt;/P&gt;
&lt;P&gt;The hosting helper does more than attach a bearer token. It authenticates MCP requests and forwards the hosted runtime's per-request call ID. Replacing it with a generic transport can lose context that the platform expects. The entrypoint also closes credentials and clients when execution exits.&lt;/P&gt;
&lt;P&gt;Hosted skill discovery prefers published skills when available and retains bundled instructions as a fallback in &lt;CODE&gt;auto&lt;/CODE&gt; mode. Explicit &lt;CODE&gt;mcp&lt;/CODE&gt; mode fails if published skills cannot be loaded; &lt;CODE&gt;file&lt;/CODE&gt; mode uses the bundled documents. This makes the fallback intentional rather than silently running without the task instructions.&lt;/P&gt;
&lt;H3 id="distinguish-history-from-compute-affinity"&gt;Distinguish history from compute affinity&lt;/H3&gt;
&lt;P&gt;The gateway maintains two hosted mappings. &lt;CODE&gt;previous_response_id&lt;/CODE&gt; links conversation history, while &lt;CODE&gt;agent_session_id&lt;/CODE&gt; preserves affinity to the hosted compute session. Losing one is not equivalent to losing the other.&lt;/P&gt;
&lt;P&gt;Both mappings are held in gateway memory, which is why it remains at one replica. A UUID (universally unique identifier) is a conversation handle, not proof of ownership. Reset clears the local mappings but does not reset work orders or delete the old remote compute session.&lt;/P&gt;
&lt;P&gt;There is also a privacy distinction between storage and telemetry. Gateway requests use stored Responses history, while the agent's model-call options use &lt;CODE&gt;store: false&lt;/CODE&gt;. Sensitive tracing being disabled does not mean all conversation persistence is disabled.&lt;/P&gt;
&lt;H2 id="4-run-locally-without-confusing-development-and-cloud-boundaries"&gt;4. Run locally without confusing development and cloud boundaries&lt;/H2&gt;
&lt;P&gt;Local development is useful for inspecting the gateway and agent without rebuilding the hosted image. It still calls a real Foundry project, model, and toolbox. It is not an offline simulation, and tool writes can affect the configured synthetic backend.&lt;/P&gt;
&lt;P&gt;Use Python 3.12+, uv, Node.js 24 LTS, and an authorized Azure developer identity. The commands below run from the repository root in PowerShell. Keep the existing dependency locks and copy &lt;CODE&gt;.env.example&lt;/CODE&gt; only when creating a new local configuration.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;uv sync --frozen Copy-Item .env.example .env&lt;/LI-CODE&gt;
&lt;P&gt;Set &lt;CODE&gt;FOUNDRY_PROJECT_ENDPOINT&lt;/CODE&gt;, &lt;CODE&gt;FOUNDRY_MODEL&lt;/CODE&gt;, and &lt;CODE&gt;TOOLBOX_MCP_URL&lt;/CODE&gt; in the ignored &lt;CODE&gt;.env&lt;/CODE&gt;. Use your environment's actual values. Backend API keys belong in Foundry connections, not in the browser or prompts.&lt;/P&gt;
&lt;P&gt;Start the gateway:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;az login uv run --frozen uvicorn fibey.gateway.api_server:app --host 127.0.0.1 --port 8080&lt;/LI-CODE&gt;
&lt;P&gt;In another terminal, start the UI:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;Set-Location ui npm ci npm run dev&lt;/LI-CODE&gt;
&lt;P&gt;Open &lt;CODE&gt;http://localhost:5173&lt;/CODE&gt;. Vite forwards &lt;CODE&gt;/api&lt;/CODE&gt; to the gateway on port 8080. These development servers do not reproduce the cloud Entra boundary, and a cloud toolbox cannot reach your workstation's &lt;CODE&gt;localhost&lt;/CODE&gt;.&lt;/P&gt;
&lt;H3 id="inspect-the-api-progressively"&gt;Inspect the API progressively&lt;/H3&gt;
&lt;P&gt;With the local gateway running, start with a health request in a separate PowerShell terminal:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;$base = "http://127.0.0.1:8080"
Invoke-RestMethod "$base/api/health"&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Next, create a UUID conversation and submit one synthetic request:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;$session = [guid]::NewGuid().ToString() $body = @{ message = "Show me WO-007."; session_id = $session } | ConvertTo-Json -Compress $response = Invoke-WebRequest "$base/api/chat" -Method Post -ContentType "application/json" -Body $body $response.Headers["X-Session-Id"] $response.Content&lt;/LI-CODE&gt;
&lt;P&gt;This prints the completed SSE body rather than animating the stream. Reuse the same session for a follow-up by extracting a small helper:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;function Invoke-FibeyTurn { param([string] $Message, [string] $SessionId) $payload = @{ message = $Message; session_id = $SessionId } | ConvertTo-Json -Compress $result = Invoke-WebRequest "$base/api/chat" -Method Post ` -ContentType "application/json" -Body $payload return $result.Content } Invoke-FibeyTurn -Message "What parts does that work order need?" -SessionId $session&lt;/LI-CODE&gt;
&lt;P&gt;The helper uses &lt;CODE&gt;$base&lt;/CODE&gt; and &lt;CODE&gt;$session&lt;/CODE&gt; from the preceding examples. It makes continuity explicit without hiding the API contract. The browser remains the better place to watch incremental text and activity. See &lt;A class="lia-external-url" href="https://github.com/leestott/fibey-toolbox-demo/blob/main/docs/local-development.md" target="_blank" rel="noopener"&gt;local development&lt;/A&gt; for reset behavior and supporting-service details.&lt;/P&gt;
&lt;H2 id="5-deploy-artifacts-and-infrastructure-together"&gt;5. Deploy artifacts and infrastructure together&lt;/H2&gt;
&lt;P&gt;Fibey's initial deployment is intentionally staged. A container image, its target port, its health probes, its registry association, and its runtime permissions must agree. Successfully building an image does not establish that agreement.&lt;/P&gt;
&lt;P&gt;The first supporting-infrastructure pass creates placeholder apps on port 80. Once all five real images have been published, a second pass applies the images with their application ports and probes. Plain &lt;CODE&gt;azd deploy&lt;/CODE&gt; of a supporting service is not the initial port-switch mechanism for this sample.&lt;/P&gt;
&lt;P&gt;The &lt;A class="lia-external-url" href="https://github.com/leestott/fibey-toolbox-demo/blob/main/docs/deployment_guide.md" target="_blank" rel="noopener"&gt;deployment guide&lt;/A&gt; gives the complete sequence and prerequisites:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Select the intended environment and provision the Foundry layer.&lt;/LI&gt;
&lt;LI&gt;Configure project aliases, the Entra application, the allowed user, and separate API keys.&lt;/LI&gt;
&lt;LI&gt;Provision placeholder supporting apps and verify scoped access and registry identity associations.&lt;/LI&gt;
&lt;LI&gt;Publish all five supporting images and confirm every image setting is populated.&lt;/LI&gt;
&lt;LI&gt;Provision supporting infrastructure again to apply the matching images, ports, and probes.&lt;/LI&gt;
&lt;LI&gt;Run knowledge setup, then toolbox setup.&lt;/LI&gt;
&lt;LI&gt;Deploy &lt;CODE&gt;fibey-agent&lt;/CODE&gt; and perform protected-path acceptance checks.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;For example, this publication step comes after placeholders and access checks, not at the start of an unconfigured environment:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;azd publish status-dashboard azd publish inventory-mcp azd publish work-orders-api azd publish gateway azd publish ui&lt;/LI-CODE&gt;
&lt;P&gt;Only after all five &lt;CODE&gt;SERVICE_*_IMAGE_NAME&lt;/CODE&gt; settings exist should the next &lt;CODE&gt;azd provision infra&lt;/CODE&gt; apply them. Keep those settings: an empty value selects a placeholder again.&lt;/P&gt;
&lt;P&gt;This is where DevOps becomes tangible. Review source, Bicep, locks, schemas, skills, and configuration together; record accepted image references, model configuration, toolbox version, and hosted-agent version. GitOps adds controlled reconciliation of reviewed desired state. The repository supplies the ingredients, not an existing CI/CD pipeline or GitOps controller.&lt;/P&gt;
&lt;P&gt;Toolbox promotion deserves the same discipline. The unversioned consumer endpoint follows the published default version. A version-specific developer endpoint can test a candidate before promotion. Updating a shared connection or default can affect consumers without rebuilding their images, so Git history alone is not a rollback mechanism.&lt;/P&gt;
&lt;H2 id="6-treat-governance-observability-and-scale-as-separate-concerns"&gt;6. Treat governance, observability, and scale as separate concerns&lt;/H2&gt;
&lt;P&gt;Role-based access control (RBAC) grants an identity permission at a resource scope. The control plane creates and configures Azure resources; the data plane performs application work such as invoking agents, querying Search, or reading blobs.&lt;/P&gt;
&lt;P&gt;The identities used across those operations are not interchangeable. In particular, a successful UI login is not automatic end-user identity passthrough to every tool, and resource provisioning permissions do not establish all runtime permissions.&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;Boundary&lt;/th&gt;&lt;th&gt;Identity or credential&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Browser to UI&lt;/td&gt;&lt;td&gt;Entra user, application registration, and user allowlist&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Gateway to Foundry&lt;/td&gt;&lt;td&gt;Gateway managed identity with project-scoped invocation access&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hosted agent to model and toolbox&lt;/td&gt;&lt;td&gt;Foundry-provided runtime agent identity&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Toolbox to inventory and work orders&lt;/td&gt;&lt;td&gt;Separate API keys stored in project connections&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Toolbox to Search knowledge base&lt;/td&gt;&lt;td&gt;Foundry project managed identity&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Search indexer to documents&lt;/td&gt;&lt;td&gt;Search managed identity with Blob reader access&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Image delivery adds another boundary: each supporting app needs both &lt;CODE&gt;AcrPull&lt;/CODE&gt; and a registry association selecting its identity. The Foundry project identity used for infrastructure operations is also distinct from the hosted agent's runtime identity.&lt;/P&gt;
&lt;H3 id="approval-must-exist-outside-the-prompt"&gt;Approval must exist outside the prompt&lt;/H3&gt;
&lt;P&gt;Fibey's synthetic work-order writes run without an enforced human approval round trip. That is appropriate to understand in a disposable demo and inappropriate to conceal when discussing production.&lt;/P&gt;
&lt;P&gt;The &lt;A href="https://learn.microsoft.com/azure/foundry/agents/how-to/tools/use-toolbox-hosted-agent" target="_blank" rel="noopener"&gt;hosted toolbox documentation&lt;/A&gt; is explicit: approval metadata alone does not block &lt;CODE&gt;tools/call&lt;/CODE&gt;. The runtime must pause, collect a decision, and resume or reject the exact proposed operation. A prompt saying "ask first" is not equivalent to that control.&lt;/P&gt;
&lt;P&gt;Real writes need server-side authorization, approval tied to the arguments, idempotency, and a durable audit record. If a write's response is uncertain, read its state before retrying. Treat tool results as untrusted data rather than instructions.&lt;/P&gt;
&lt;H3 id="debug-the-boundary-that-failed"&gt;Debug the boundary that failed&lt;/H3&gt;
&lt;P&gt;The activity sidebar makes tool use visible, but it is not a durable audit log or access to the model's hidden reasoning. Combine it with timestamps, request/session identifiers, ACA logs, and configured hosted traces.&lt;/P&gt;
&lt;P&gt;Keep sensitive message tracing off unless a controlled investigation explicitly requires it. Verify that a synthetic trace reaches the intended sink; enabled instrumentation alone does not prove ingestion.&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;Symptom&lt;/th&gt;&lt;th&gt;First checks&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;UI returns 502&lt;/td&gt;&lt;td&gt;Gateway revision, target port, fixed Nginx upstream, SNI, and certificate trust&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent or tool returns 401/403&lt;/td&gt;&lt;td&gt;Identity, token audience, role scope, and downstream connection credential&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Knowledge retrieval fails&lt;/td&gt;&lt;td&gt;Indexer completion, project Search role, API version, and advertised input schema&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Briefing receives 429&lt;/td&gt;&lt;td&gt;Model quota, concurrency, retrieval budgets, and repeated tool calls&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Stream ends early&lt;/td&gt;&lt;td&gt;Terminal response event, timeout, malformed SSE, and transport failure&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;The gateway must surface failed or truncated streams rather than treating partial text as a completed action. A final stream terminator after an error is not application success.&lt;/P&gt;
&lt;H3 id="scale-only-after-identifying-state-and-capacity-limits"&gt;Scale only after identifying state and capacity limits&lt;/H3&gt;
&lt;P&gt;Foundry manages hosted runtime capabilities, but it does not externalize Fibey's gateway mappings or in-memory work orders. Adding replicas before redesigning that state would undermine continuity and consistent updates.&lt;/P&gt;
&lt;P&gt;Model throughput, hosted compute, downstream API capacity, Search, and ACA are separate constraints. Measure latency, errors, tokens, tool counts, and recovery under concurrent load. Registry storage/builds, model inference, compute, Search, Blob Storage, and telemetry all have costs; using a managed platform does not remove the need for budgets.&lt;/P&gt;
&lt;H2 id="7-evaluate-the-result-before-adding-more-agents"&gt;7. Evaluate the result before adding more agents&lt;/H2&gt;
&lt;P&gt;The practical result is an inspectable workflow that combines heterogeneous systems into a grounded response. We can demonstrate inventory lookup, a synthetic work order, cited knowledge, a fixed status fetch, and a combined briefing through one agent-facing toolbox.&lt;/P&gt;
&lt;P&gt;That is functional evidence, not a production certification or benchmark. This post does not establish latency percentiles, cost per successful task, throughput, or availability under load. Those measurements should be acceptance criteria for an adaptation, not numbers inferred from a screenshot.&lt;/P&gt;
&lt;P&gt;Multi-agent coordination is a possible next design, not deployed Fibey behavior. A coordinator could delegate read-only inventory and procedure tasks while a restricted specialist handles approved writes. Each handoff would need typed inputs/results, correlation IDs, deadlines, cancellation, and budgets.&lt;/P&gt;
&lt;P&gt;Sharing a toolbox alone does not implement that coordination. Specialists also introduce additional failure paths, identity decisions, and state. Start with them only when task complexity, ownership, or isolation requirements justify the cost. The current five skills already provide modular instructions without creating five independently operated agents.&lt;/P&gt;
&lt;H2 id="8-summary-reuse-the-engineering-boundaries"&gt;8. Summary: reuse the engineering boundaries&lt;/H2&gt;
&lt;P&gt;Fibey's reusable pattern is the separation of model reasoning, task instructions, tool contracts, hosted execution, and operational controls. MCP gives the agent a common tool interface; Foundry supplies managed hosting and integration capabilities. The application team remains responsible for the guarantees around its data and actions.&lt;/P&gt;
&lt;P&gt;Start with one workflow and verify each boundary. Then add durable state, per-user authorization, enforced approvals, secret rotation, appropriate networking, evaluation, and recovery before introducing real operational data or more autonomous behavior.&lt;/P&gt;
&lt;P&gt;For a practical starting point, use the &lt;A href="https://github.com/leestott/fibey-toolbox-demo" target="_blank" rel="noopener"&gt;repository&lt;/A&gt;, follow the &lt;A class="lia-external-url" href="https://github.com/leestott/fibey-toolbox-demo/blob/main/docs/deployment_guide.md" target="_blank" rel="noopener"&gt;deployment guide&lt;/A&gt;, and reproduce the &lt;A class="lia-external-url" href="https://github.com/leestott/fibey-toolbox-demo/blob/main/docs/session-overview.md" target="_blank" rel="noopener"&gt;session walkthrough&lt;/A&gt; with synthetic data. The &lt;A class="lia-external-url" href="https://github.com/leestott/fibey-toolbox-demo/blob/main/slides/fibey-hosted-agents-mcp.pptx" target="_blank" rel="noopener"&gt;presentation deck&lt;/A&gt; provides the same architecture and demo sequence for a team discussion.&lt;/P&gt;
&lt;H2 id="references"&gt;References&lt;/H2&gt;
&lt;P&gt;The repository describes what this sample implements. Microsoft documentation describes the surrounding platform capabilities, responsibilities, and supported integration contracts.&lt;/P&gt;
&lt;P&gt;Read both before adapting the solution, especially where preview APIs, identity behavior, or approval enforcement affect your requirements.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://github.com/leestott/fibey-toolbox-demo" target="_blank" rel="noopener"&gt;Fibey Field Ops repository&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/leestott/fibey-toolbox-demo/blob/main/docs/architecture.md" target="_blank" rel="noopener"&gt;Fibey engineering architecture&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/leestott/fibey-toolbox-demo/blob/main/docs/deployment_guide.md" target="_blank" rel="noopener"&gt;Fibey deployment guide&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/leestott/fibey-toolbox-demo/blob/main/docs/toolbox-integration.md" target="_blank" rel="noopener"&gt;Fibey toolbox integration&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agents" target="_blank" rel="noopener"&gt;Microsoft Foundry hosted agents&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/foundry/agents/how-to/tools/use-toolbox-hosted-agent" target="_blank" rel="noopener"&gt;Use a toolbox with a hosted agent&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/microsoft-foundry/foundry-samples/tree/main/samples/python/hosted-agents/agent-framework/responses/04-foundry-toolbox" target="_blank" rel="noopener"&gt;Official Python hosted-agent toolbox sample&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 23 Sep 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/microsoft-foundry-hosted-agents-and-mcp-in-practice-building/ba-p/4557526</guid>
      <dc:creator>Lee_Stott</dc:creator>
      <dc:date>2026-09-23T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Azure Incident Retrospective - Please register! Session 2 - Tracking ID: SPCX-S1Z</title>
      <link>https://techcommunity.microsoft.com/t5/azure-events/azure-incident-retrospective-please-register-session-2-tracking/ec-p/4559133#M773</link>
      <description>&lt;H2&gt;Join our upcoming live webcast for a transparent discussion about this recent Azure service incident led by our engineering teams.&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-olk-copy-source="MailCompose"&gt;Power issue in Southeast Asia&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Tracking ID: SPCX-S1Z | Impacted: 25-26 August 2026&lt;/P&gt;
&lt;P&gt;Same content presented in both sessions: pick the one that works best for your timezone!&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;What to expect&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;📚 Understand&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;What happened, how we responded, and what we learned&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;💬 Ask&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Live Q&amp;amp;A with our engineering experts throughout the session&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;🛠 Learn&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The fixes we've put in place and guidance for workload resiliency&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Choose your session&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Same content presented at both times: pick the one that works best for your timezone:&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;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG data-olk-copy-source="MailCompose"&gt;Session 1&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;15:30 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Thursday, 24 Sept 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A href="https://aka.ms/air/SPCX-S1Z/1" target="_blank" rel="noopener"&gt;Register now →&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG data-olk-copy-source="MailCompose"&gt;Session 2&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;03:30 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Friday, 25 Sept 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A href="https://aka.ms/air/SPCX-S1Z/2" target="_blank" rel="noopener"&gt;Register now →&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;8:30 AM US Pacific (PDT)&lt;/P&gt;
&lt;P&gt;11:30 AM US Eastern (EDT)&lt;/P&gt;
&lt;P&gt;4:30 PM London (BST)&lt;/P&gt;
&lt;P&gt;11:30 PM Beijing (CST)&lt;/P&gt;
&lt;P&gt;1:30 AM +1 Sydney (AEDT)&lt;/P&gt;
&lt;P&gt;3:30 AM +1 Auckland (NZDT)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;8:30 PM -1 US Pacific (PDT)&lt;/P&gt;
&lt;P&gt;11:30 PM -1 US Eastern (EDT)&lt;/P&gt;
&lt;P&gt;4:30 AM London (BST)&lt;/P&gt;
&lt;P&gt;11:30 AM Beijing (CST)&lt;/P&gt;
&lt;P&gt;1:30 PM Sydney (AEDT)&lt;/P&gt;
&lt;P&gt;3:30 PM Auckland (NZDT)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;&lt;STRONG&gt;Our engineering leaders&lt;/STRONG&gt;&lt;/H2&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-center"&gt;&lt;STRONG&gt;Terry Lo&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="lia-align-center"&gt;Datacenter Operations Manager&lt;/P&gt;
&lt;P class="lia-align-center"&gt;Southeast Asia&lt;/P&gt;
&lt;P class="lia-align-center"&gt;Cloud+AI Engineering&lt;/P&gt;
&lt;P class="lia-align-center"&gt;&lt;STRONG&gt;&lt;A href="https://www.linkedin.com/in/terry-lo-19b58322/" target="_blank" rel="noopener"&gt;LinkedIn &lt;/A&gt;&lt;A href="https://www.linkedin.com/in/terry-lo-19b58322/" target="_blank" rel="noopener"&gt;↗&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;⚠️ Prepare before the livestream&lt;/P&gt;
&lt;P&gt;Read the&amp;nbsp;&lt;A href="https://aka.ms/AzurePIRs" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Post Incident Review (PIR)&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;ahead of time so you can ask any follow up questions during the live Q&amp;amp;A&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Helpful resources&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;🔔&amp;nbsp;&lt;A href="https://aka.ms/ash-alerts" target="_blank" rel="noopener" data-auth="NotApplicable"&gt;Azure Service Health Alerts&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Get alerts for relevant incidents by setting up notifications via email, SMS, or webhook&lt;/P&gt;
&lt;P&gt;🎥&amp;nbsp;&lt;A href="https://aka.ms/air/videos" target="_blank" rel="noopener" data-auth="NotApplicable"&gt;Past Retrospective Recordings&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Watch recordings of previous retrospective livestreams&lt;/P&gt;
&lt;P&gt;📄&amp;nbsp;&lt;A href="https://aka.ms/AzurePIRs" target="_blank" rel="noopener" data-auth="NotApplicable"&gt;Azure Post Incident Reviews&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Learn more about PIRs and the retrospective program&lt;/P&gt;</description>
      <pubDate>Wed, 23 Sep 2026 01:32:54 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-events/azure-incident-retrospective-please-register-session-2-tracking/ec-p/4559133#M773</guid>
      <dc:creator>SaiVai</dc:creator>
      <dc:date>2026-09-23T01:32:54Z</dc:date>
    </item>
    <item>
      <title>Azure Incident Retrospective - Please register! Session 1 - Tracking ID: SPCX-S1Z</title>
      <link>https://techcommunity.microsoft.com/t5/azure-events/azure-incident-retrospective-please-register-session-1-tracking/ec-p/4559132#M772</link>
      <description>&lt;H2&gt;Join our upcoming live webcast for a transparent discussion about this recent Azure service incident led by our engineering teams.&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-olk-copy-source="MailCompose"&gt;Power issue in Southeast Asia&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Tracking ID: SPCX-S1Z | Impacted: 25-26 August 2026&lt;/P&gt;
&lt;P&gt;Same content presented in both sessions: pick the one that works best for your timezone!&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;What to expect&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;📚 Understand&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;What happened, how we responded, and what we learned&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;💬 Ask&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Live Q&amp;amp;A with our engineering experts throughout the session&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;🛠 Learn&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The fixes we've put in place and guidance for workload resiliency&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Choose your session&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Same content presented at both times: pick the one that works best for your timezone:&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;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG data-olk-copy-source="MailCompose"&gt;Session 1&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;15:30 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Thursday, 24 Sept 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/air/SPCX-S1Z/1" target="_blank" rel="noopener"&gt;Register now →&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG data-olk-copy-source="MailCompose"&gt;Session 2&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;03:30 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Friday, 25 Sept 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/air/SPCX-S1Z/2" target="_blank" rel="noopener"&gt;Register now →&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;8:30 AM US Pacific (PDT)&lt;/P&gt;
&lt;P&gt;11:30 AM US Eastern (EDT)&lt;/P&gt;
&lt;P&gt;4:30 PM London (BST)&lt;/P&gt;
&lt;P&gt;11:30 PM Beijing (CST)&lt;/P&gt;
&lt;P&gt;1:30 AM +1 Sydney (AEDT)&lt;/P&gt;
&lt;P&gt;3:30 AM +1 Auckland (NZDT)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;8:30 PM -1 US Pacific (PDT)&lt;/P&gt;
&lt;P&gt;11:30 PM -1 US Eastern (EDT)&lt;/P&gt;
&lt;P&gt;4:30 AM London (BST)&lt;/P&gt;
&lt;P&gt;11:30 AM Beijing (CST)&lt;/P&gt;
&lt;P&gt;1:30 PM Sydney (AEDT)&lt;/P&gt;
&lt;P&gt;3:30 PM Auckland (NZDT)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;&lt;STRONG&gt;Our engineering leaders&lt;/STRONG&gt;&lt;/H2&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-center"&gt;&lt;STRONG&gt;Terry Lo&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="lia-align-center"&gt;Datacenter Operations Manager&lt;/P&gt;
&lt;P class="lia-align-center"&gt;Southeast Asia&lt;/P&gt;
&lt;P class="lia-align-center"&gt;Cloud+AI Engineering&lt;/P&gt;
&lt;P class="lia-align-center"&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://www.linkedin.com/in/terry-lo-19b58322/" target="_blank" rel="noopener"&gt;LinkedIn &lt;/A&gt;&lt;A href="https://www.linkedin.com/in/terry-lo-19b58322/" target="_blank" rel="noopener"&gt;↗&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;⚠️ Prepare before the livestream&lt;/P&gt;
&lt;P&gt;Read the&amp;nbsp;&lt;A href="https://aka.ms/AzurePIRs" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Post Incident Review (PIR)&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;ahead of time so you can ask any follow up questions during the live Q&amp;amp;A&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Helpful resources&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;🔔&amp;nbsp;&lt;A href="https://aka.ms/ash-alerts" target="_blank" rel="noopener" data-auth="NotApplicable"&gt;Azure Service Health Alerts&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Get alerts for relevant incidents by setting up notifications via email, SMS, or webhook&lt;/P&gt;
&lt;P&gt;🎥&amp;nbsp;&lt;A href="https://aka.ms/air/videos" target="_blank" rel="noopener" data-auth="NotApplicable"&gt;Past Retrospective Recordings&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Watch recordings of previous retrospective livestreams&lt;/P&gt;
&lt;P&gt;📄&amp;nbsp;&lt;A href="https://aka.ms/AzurePIRs" target="_blank" rel="noopener" data-auth="NotApplicable"&gt;Azure Post Incident Reviews&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Learn more about PIRs and the retrospective program&lt;/P&gt;</description>
      <pubDate>Wed, 23 Sep 2026 01:32:04 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-events/azure-incident-retrospective-please-register-session-1-tracking/ec-p/4559132#M772</guid>
      <dc:creator>SaiVai</dc:creator>
      <dc:date>2026-09-23T01:32:04Z</dc:date>
    </item>
    <item>
      <title>Azure Retirements Livestream - Please register! Session 2 - Tracking ID: 0P59-60Z</title>
      <link>https://techcommunity.microsoft.com/t5/azure-events/azure-retirements-livestream-please-register-session-2-tracking/ec-p/4559131#M771</link>
      <description>&lt;H2&gt;Join our upcoming live webcast for a transparent discussion about this upcoming Azure retirement — led by our engineering teams.&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-olk-copy-source="MailCompose"&gt;Network Security Group (NSG) flow logs in Azure Network Watcher&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Tracking ID: 0P59-60Z | Retirement Date: 30 September 2027&lt;/P&gt;
&lt;P&gt;Same content presented in both sessions — pick the one that works best for your timezone!&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;What to expect&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;📚 Understand&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;What will happen, the timelines for the change, and how you can manage it&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;💬 Ask&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Live Q&amp;amp;A with our engineering experts throughout the session&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;🛠 Learn&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;How to manage the change smoothly&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Choose your session&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Same content presented at both times — pick the one that works best for your timezone:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG data-olk-copy-source="MailCompose"&gt;Session 1&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;16:30 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Thursday, 24 Sept 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/air/0P59-60Z/1" target="_blank"&gt;Register now →&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG data-olk-copy-source="MailCompose"&gt;Session 2&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;04:30 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Friday, 25 Sept 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/air/0P59-60Z/2" target="_blank"&gt;Register now →&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;9:30 AM US Pacific (PDT)&lt;/P&gt;
&lt;P&gt;12:30 PM US Eastern (EDT)&lt;/P&gt;
&lt;P&gt;5:30 PM London (BST)&lt;/P&gt;
&lt;P&gt;12:30 AM +1 Beijing (CST)&lt;/P&gt;
&lt;P&gt;2:30 AM +1 Sydney (AEDT)&lt;/P&gt;
&lt;P&gt;4:30 AM +1 Auckland (NZDT)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;9:30 PM -1 US Pacific (PDT)&lt;/P&gt;
&lt;P&gt;12:30 AM US Eastern (EDT)&lt;/P&gt;
&lt;P&gt;5:30 AM London (BST)&lt;/P&gt;
&lt;P&gt;12:30 PM Beijing (CST)&lt;/P&gt;
&lt;P&gt;2:30 PM Sydney (AEDT)&lt;/P&gt;
&lt;P&gt;4:30 PM Auckland (NZDT)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;&lt;STRONG&gt;Our engineering leaders&lt;/STRONG&gt;&lt;/H2&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table style="width: 46.3636%;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-center"&gt;&lt;STRONG&gt;Chaithanya Rai&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="lia-align-center"&gt;Senior Product Manager&lt;/P&gt;
&lt;P class="lia-align-center"&gt;Azure Network Security &amp;amp; Observability&lt;/P&gt;
&lt;P class="lia-align-center"&gt;&lt;A href="https://www.linkedin.com/in/chaithanya-rai-21853a62/" target="_blank"&gt;&lt;STRONG&gt;LinkedIn &lt;/STRONG&gt;&lt;/A&gt;&lt;A href="https://www.linkedin.com/in/chaithanya-rai-21853a62/" target="_blank"&gt;&lt;STRONG&gt;↗&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;&lt;STRONG&gt;Helpful resources&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;🔔&amp;nbsp;&lt;A href="https://aka.ms/ash-alerts" data-auth="NotApplicable" target="_blank"&gt;Azure Service Health Alerts&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Get alerts for relevant incidents by setting up notifications via email, SMS, or webhook&lt;/P&gt;
&lt;P&gt;🎥&amp;nbsp;&lt;A href="https://aka.ms/air/videos" data-auth="NotApplicable" target="_blank"&gt;Past Retrospective Recordings&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Watch recordings of previous retrospective livestreams&lt;/P&gt;
&lt;P&gt;📄&amp;nbsp;&lt;A href="https://aka.ms/AzurePIRs" data-auth="NotApplicable" target="_blank"&gt;Azure Post Incident Reviews&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Learn more about PIRs and the retrospective program&lt;/P&gt;</description>
      <pubDate>Wed, 23 Sep 2026 01:14:02 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-events/azure-retirements-livestream-please-register-session-2-tracking/ec-p/4559131#M771</guid>
      <dc:creator>SaiVai</dc:creator>
      <dc:date>2026-09-23T01:14:02Z</dc:date>
    </item>
    <item>
      <title>Azure Retirements Livestream - Please register! Session 1 - Tracking ID: 0P59-60Z</title>
      <link>https://techcommunity.microsoft.com/t5/azure-events/azure-retirements-livestream-please-register-session-1-tracking/ec-p/4559130#M770</link>
      <description>&lt;H2&gt;Join our upcoming live webcast for a transparent discussion about this upcoming Azure retirement — led by our engineering teams.&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-olk-copy-source="MailCompose"&gt;Network Security Group (NSG) flow logs in Azure Network Watcher&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Tracking ID: 0P59-60Z | Retirement Date: 30 September 2027&lt;/P&gt;
&lt;P&gt;Same content presented in both sessions — pick the one that works best for your timezone!&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;What to expect&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;📚 Understand&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;What will happen, the timelines for the change, and how you can manage it&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;💬 Ask&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Live Q&amp;amp;A with our engineering experts throughout the session&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;🛠 Learn&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;How to manage the change smoothly&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Choose your session&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Same content presented at both times — pick the one that works best for your timezone:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG data-olk-copy-source="MailCompose"&gt;Session 1&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;16:30 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Thursday, 24 Sept 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/air/0P59-60Z/1" target="_blank"&gt;Register now →&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG data-olk-copy-source="MailCompose"&gt;Session 2&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;04:30 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Friday, 25 Sept 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/air/0P59-60Z/2" target="_blank"&gt;Register now →&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;9:30 AM US Pacific (PDT)&lt;/P&gt;
&lt;P&gt;12:30 PM US Eastern (EDT)&lt;/P&gt;
&lt;P&gt;5:30 PM London (BST)&lt;/P&gt;
&lt;P&gt;12:30 AM +1 Beijing (CST)&lt;/P&gt;
&lt;P&gt;2:30 AM +1 Sydney (AEDT)&lt;/P&gt;
&lt;P&gt;4:30 AM +1 Auckland (NZDT)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;9:30 PM -1 US Pacific (PDT)&lt;/P&gt;
&lt;P&gt;12:30 AM US Eastern (EDT)&lt;/P&gt;
&lt;P&gt;5:30 AM London (BST)&lt;/P&gt;
&lt;P&gt;12:30 PM Beijing (CST)&lt;/P&gt;
&lt;P&gt;2:30 PM Sydney (AEDT)&lt;/P&gt;
&lt;P&gt;4:30 PM Auckland (NZDT)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;&lt;STRONG&gt;Our engineering leaders&lt;/STRONG&gt;&lt;/H2&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Chaithanya Rai&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Senior Product Manager&lt;/P&gt;
&lt;P&gt;Azure Network Security &amp;amp; Observability&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.linkedin.com/in/chaithanya-rai-21853a62/" target="_blank"&gt;&lt;STRONG&gt;LinkedIn &lt;/STRONG&gt;&lt;/A&gt;&lt;A href="https://www.linkedin.com/in/chaithanya-rai-21853a62/" target="_blank"&gt;&lt;STRONG&gt;↗&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;&lt;STRONG&gt;Helpful resources&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;🔔&amp;nbsp;&lt;A href="https://aka.ms/ash-alerts" data-auth="NotApplicable" target="_blank"&gt;Azure Service Health Alerts&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Get alerts for relevant incidents by setting up notifications via email, SMS, or webhook&lt;/P&gt;
&lt;P&gt;🎥&amp;nbsp;&lt;A href="https://aka.ms/air/videos" data-auth="NotApplicable" target="_blank"&gt;Past Retrospective Recordings&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Watch recordings of previous retrospective livestreams&lt;/P&gt;
&lt;P&gt;📄&amp;nbsp;&lt;A href="https://aka.ms/AzurePIRs" data-auth="NotApplicable" target="_blank"&gt;Azure Post Incident Reviews&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Learn more about PIRs and the retrospective program&lt;/P&gt;</description>
      <pubDate>Wed, 23 Sep 2026 01:10:03 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-events/azure-retirements-livestream-please-register-session-1-tracking/ec-p/4559130#M770</guid>
      <dc:creator>SaiVai</dc:creator>
      <dc:date>2026-09-23T01:10:03Z</dc:date>
    </item>
  </channel>
</rss>

