<?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>New blog articles in Microsoft Community Hub</title>
    <link>https://techcommunity.microsoft.com/</link>
    <description>Microsoft Community Hub</description>
    <pubDate>Tue, 28 May 2024 05:47:11 GMT</pubDate>
    <dc:creator>Community</dc:creator>
    <dc:date>2024-05-28T05:47:11Z</dc:date>
    <item>
      <title>Check This Out! (CTO!) Guide (April 2024)</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-april-2024/ba-p/4153388</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hi everyone! &lt;A href="https://aka.ms/BrandonWilson" target="_blank" rel="noopener"&gt;Brandon Wilson&lt;/A&gt; here once again with this month’s “Check This Out!” (CTO!) guide.&lt;/P&gt;
&lt;P&gt;These posts are only intended to be your guide, to lead you to some content of interest, and are just a way we are trying to help our readers a bit more, whether that is learning, troubleshooting, or just finding new content sources! We will give you a bit of a taste of the blog content itself, provide you a way to get to the source content directly, and help to introduce you to some other blogs you may not be aware of that you might find helpful.&lt;/P&gt;
&lt;P&gt;From all of us on the Core Infrastructure and Security Tech Community blog team, thanks for your continued reading and support!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_1-1716869488395.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586392i4C1434ED2B47C460/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_1-1716869488395.jpeg" alt="BrandonWilson_1-1716869488395.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/speaking-in-ciphers-and-other-enigmatic-tongues-fresh-content/ba-p/4103506" target="_blank" rel="noopener"&gt;Speaking in Ciphers and other Enigmatic tongues fresh content update!&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/bg-p/AskDS" target="_blank" rel="noopener"&gt;&lt;EM&gt;Ask the Directory Services Team&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Jim Tierney&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/3/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;So, your company purchases this new super awesome vulnerability and compliance management software suite, and they just ran a scan on your Windows Server 2008 domain controllers and lo! The software reports back that you have weak ciphers enabled, highlighted in&amp;nbsp;&lt;STRONG&gt;RED&lt;/STRONG&gt;&lt;STRONG&gt;,&lt;/STRONG&gt;&amp;nbsp;flashing, with that "you have failed" font, and including a link to the following Microsoft documentation…&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_2-1716869516948.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586393iF63378BAA4F92623/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_2-1716869516948.jpeg" alt="BrandonWilson_2-1716869516948.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/ntlm-vs-kerberos/ba-p/4120658" target="_blank" rel="noopener"&gt;NTLM vs Kerberos&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/bg-p/AskDS" target="_blank" rel="noopener"&gt;&lt;EM&gt;Ask the Directory Services Team&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Josh Mora&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/23/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;In this post, we will go through the basics of NTLM and Kerberos.&amp;nbsp;We will explain using the three Ws, covering&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;what&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;the main differences between them are, how to identify&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;when&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;a protocol is being used over the other, and&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;why&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;one is safer than the other.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_3-1716869527937.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586394i2EEB74B361B6C18F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_3-1716869527937.jpeg" alt="BrandonWilson_3-1716869527937.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-arc-blog/coming-soon-transition-to-ws2012-r2-esus-enabled-by-azure-arc/ba-p/4104060" target="_blank" rel="noopener"&gt;Coming Soon: Transition to WS2012 ESUs enabled by Azure Arc&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-arc-blog/bg-p/AzureArcBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Arc&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Aurnov Chattopadhyay&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/3/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Announced during last week’s Windows Server Summit 2024, customers will be able to transition to Azure Arc for WS2012 Extended Security Updates enabled by Azure Arc for Year 2 if they had purchased Year 1 of Extended Security Updates for Volume Licensing. This experience will ask customers to supply their Invoice Id, corresponding to WS2012 ESU purchases from Volume Licensing.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;With its pay as you go flexibility as an Azure billed service and inclusion of Azure management services like Azure Update Manager and Machine Configuration at no additional cost, WS2012 ESUs enabled by Azure Arc offer financial and experience benefits to customers. This is especially critical to support customers in their journey of migrating and modernizing End of Life infrastructure to Azure.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_4-1716869535347.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586395i588FC045206D7C67/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_4-1716869535347.jpeg" alt="BrandonWilson_4-1716869535347.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-arc-blog/public-preview-of-azure-arc-site-manager/ba-p/4118023" target="_blank" rel="noopener"&gt;Public Preview of Azure Arc Site Manager&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-arc-blog/bg-p/AzureArcBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Arc&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Nathan Parikh&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/22/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This week we are excited to announce the&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;Public Preview of Azure Arc site manager. We designed site manager to meet the needs of customers who manage solutions on the adaptive cloud and want to view and monitor their resources according to their physical locations, such as stores, restaurants, and factories. Within site manager, customers can create Arc sites to represent their on-premises environments and see centralized monitoring information across their edge infrastructure.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_5-1716869543167.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586396iDFB0B68706A28BCC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_5-1716869543167.jpeg" alt="BrandonWilson_5-1716869543167.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-unlink="true"&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-architecture-blog/announcing-new-cloud-governance-guidance-in-the-microsoft-cloud/ba-p/4105787" target="_blank" rel="noopener"&gt;Cloud Governance Guidance in Microsoft's Cloud Adoption Framework&lt;/A&gt;Cloud Governance Guidance in Microsoft's Cloud Adoption Framework&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-architecture-blog/bg-p/AzureArchitectureBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Architecture&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Stephen Sumner&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/8/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;We are thrilled to announce the latest enhancement to Microsoft's Cloud Adoption Framework for Azure. We comprehensively updated our cloud governance guidance in the&amp;nbsp;Govern section of the Cloud Adoption Framework (CAF). The updated governance guidance represents Microsoft's commitment to supporting your organization's cloud journey, offering a clearer, more accessible, and comprehensive path to effective cloud governance. It encompasses identity, cost, resource, data, and AI governance among other areas of governance categories.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Whether you're a startup looking to scale efficiently or a large enterprise aiming to refine your governance practices, we designed this governance guidance to meet your needs and guide you to where you need to be.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_6-1716869555660.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586397i76F59E6FE37F0D4C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_6-1716869555660.jpeg" alt="BrandonWilson_6-1716869555660.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-compute-blog/on-demand-capacity-reservation-is-now-available-in-azure-for-us/ba-p/4126530" target="_blank" rel="noopener"&gt;On Demand Capacity Reservation is now available in Azure for US Government&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-compute-blog/bg-p/AzureCompute" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Compute&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Megan Pennie&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/29/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Today, we're announcing the general availability of&amp;nbsp;on demand capacity reservations&amp;nbsp;for Azure Virtual Machines in Azure for US Government Cloud . You can now manage and reserve capacity with guaranteed SLA for VM sizes available on Azure for US Government Cloud.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;As part of our ongoing commitment to expanding our global reach and providing On Demand Capacity Reservation benefits to our customers, we have diligently worked hard for months to bring this feature to Azure for US Government Cloud.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_7-1716869563576.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586398i44262534233A781C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_7-1716869563576.jpeg" alt="BrandonWilson_7-1716869563576.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-governance-and-management/azure-billing-meters-what-you-need-to-know-about-the-upcoming/ba-p/4106465" target="_blank" rel="noopener"&gt;Azure billing meters: What you need to know about the upcoming changes&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-governance-and-management/bg-p/AzureGovernanceandManagementBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Governance and Management&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Vahe Minasyan&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/8/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This article is to inform you of some important changes that we are making as part of our ongoing efforts to improve your Azure experience and increase pricing transparency. We are making changes to the billing meters that could affect some Azure services and resources that you may use, and we want to make sure you understand what the changes are, why we are doing them, and how they will impact your billing.&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;These updates will not impact your prices,&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt;but you may notice some changes in how your Azure consumption is shown on your invoice, price sheet, API, and other Cost Management tools.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_8-1716869571868.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586399iA3EB1919503566FA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_8-1716869571868.jpeg" alt="BrandonWilson_8-1716869571868.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-infrastructure-blog/perform-bulk-nsg-rule-rollout-across-multiple-target-nsgs/ba-p/4120673" target="_blank" rel="noopener"&gt;Perform bulk NSG rule rollout across multiple target NSGs&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-infrastructure-blog/bg-p/AzureInfrastructureBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Infrastructure&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Sourav Bera&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/22/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Network Security Groups (NSGs) are a fundamental aspect of Azure networking, providing a layer of security to control traffic flow within virtual networks. However, managing NSG rules across multiple NSGs can be a daunting task, especially when done manually. This article introduces a powerful PowerShell script that allows you to perform bulk NSG rule rollouts across multiple target NSGs, saving you time and ensuring consistency across your network.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_9-1716869578658.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586400iD68A5AF6A68050E3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_9-1716869578658.jpeg" alt="BrandonWilson_9-1716869578658.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-infrastructure-blog/enhancing-azure-connectivity-sharing-paas-instance-across/ba-p/4125648" target="_blank" rel="noopener"&gt;Enhancing Azure Connectivity: Sharing PaaS instance across customer tenants on Azure&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-infrastructure-blog/bg-p/AzureInfrastructureBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Infrastructure&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Aquib Qureshi&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/28/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;I’ve come across a scenario where one of my customer using Azure SQL DB wanted to share their Database with other customer who was also hosted on Azure. They were struggling to establish site-to-site connectivity so that Customer B could access Customer A’s network, enabling them to connect to the Azure SQL DB via the site-to-site tunnel. Though this can be achieved, there are better ways to connect to Azure SQL DB, or any PaaS instance for that matter, with another customer who is using Azure. This can also be used by customers who have multiple Azure AD tenants.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_10-1716869589775.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586401i0DF3727A95217960/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_10-1716869589775.jpeg" alt="BrandonWilson_10-1716869589775.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-migration-and/vmware-hcx-troubleshooting-with-azure-vmware-solution/ba-p/4109114" target="_blank" rel="noopener"&gt;VMware HCX Troubleshooting with Azure VMware Solution&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-migration-and/bg-p/AzureMigrationBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Migration and Modernization&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Rene van den Bedem&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/8/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;VMware HCX is one of the Azure VMware Solution components that generates a large number of service requests from our customers. The Azure VMware Solution product group has worked to cover the most common troubleshooting considerations that you should know about when using VMware HCX with the Azure VMware Solution.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_11-1716869597438.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586402i706C4B2C6985BE62/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_11-1716869597438.jpeg" alt="BrandonWilson_11-1716869597438.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-networking-blog/microsoft-azure-expressroute-overview-cheat-sheet/ba-p/4110389" target="_blank" rel="noopener"&gt;Microsoft Azure ExpressRoute Overview Cheat Sheet&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-networking-blog/bg-p/AzureNetworkingBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Networking&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Gene Whitaker&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/9/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Microsoft Azure ExpressRoute&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;lets you extend your on-premises networks into the Microsoft Cloud over a private connection with the help of a connectivity provider. With ExpressRoute, you can establish connections to Microsoft Cloud services, such as Microsoft Azure and Microsoft 365.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Use this&amp;nbsp;ExpressRoute Overview Cheat Sheet&amp;nbsp;to quickly learn and gain access to the following information:&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;ExpressRoute Main Components&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Key Benefits and Features&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;The Different Connectivity Models&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Various Helpful Links&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Diagram demonstrating ExpressRoute circuits along with features such as Global Reach and FastPath&lt;/EM&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;This cheat sheet is compiled with important and most common information to learn ExpressRoute.&lt;/EM&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_12-1716869606128.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586403iAFEE43F002476A24/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_12-1716869606128.jpeg" alt="BrandonWilson_12-1716869606128.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-networking-blog/network-traffic-observability-with-virtual-network-flow-logs/ba-p/4112907" target="_blank" rel="noopener"&gt;Network traffic observability with virtual network flow logs&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-networking-blog/bg-p/AzureNetworkingBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Networking&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; HarshaCS&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/24/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Azure&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;Network Watcher&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;provides network monitoring and troubleshooting capabilities to increase observability and actionable insights with out-of-box health metrics &amp;amp;&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;topology&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;visualization,&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;connectivity&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;monitoring,&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;traffic&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;monitoring and&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;diagnostics&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;suite. For on-premises workloads, network administrators rely on NetFlow or IPFIX to address these use cases.&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;Virtual network flow logs&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;are a capability of Network Watcher service to address these scenarios for Azure and hybrid networks and we are excited to announce that virtual network flow logs are now transitioning from&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;public preview&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;to general availability.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_13-1716869613907.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586404i5684E652D88A6DFC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_13-1716869613907.jpeg" alt="BrandonWilson_13-1716869613907.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-networking-blog/understanding-the-core-concept-and-routing-of-vwan-with-example/ba-p/4081473" target="_blank" rel="noopener"&gt;Understanding the core concept and routing of vWAN with Example&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-networking-blog/bg-p/AzureNetworkingBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Networking&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Sourav Das&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/26/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;What is virtual WAN? Azure Virtual WAN is a NAAS (networking as a service) to enable simplified global transit networking architecture that brings many networking, security, and routing functionalities together to provide a single operational interface…&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_14-1716869621656.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586405iCFCB5476799F06C8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_14-1716869621656.jpeg" alt="BrandonWilson_14-1716869621656.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-networking-blog/new-and-improved-network-topology-experience-in-network-watcher/ba-p/4125625" target="_blank" rel="noopener"&gt;New and improved network topology experience in Network Watcher and Azure Monitor Network Insights&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-networking-blog/bg-p/AzureNetworkingBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Networking&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Sagar Gupta&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/28/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Azure&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;Network Watcher&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;provides network monitoring and troubleshooting capabilities to increase observability and actionable insights.&amp;nbsp;&lt;SPAN data-contrast="none"&gt;Network Watcher supports four main scenarios:&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;EM&gt;Connectivity&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;Monitoring detects packet loss and latency, built-in health metrics and&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;topology&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;visualization help to locate issues,&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;traffic&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;monitoring tracks network communication pattern, and&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;diagnostics&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;suite enables troubleshooting.&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:6,&amp;quot;335551620&amp;quot;:6,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_15-1716869629426.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586406i3FFBE647B212CC4D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_15-1716869629426.jpeg" alt="BrandonWilson_15-1716869629426.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-stack-blog/apply-critical-update-for-azure-stack-hci-vms-to-maintain-azure/ba-p/4115023" target="_blank" rel="noopener"&gt;Apply critical update for Azure Stack HCI VMs to maintain Azure verification&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-stack-blog/bg-p/AzureStackBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Stack&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Kimberly Lam&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/18/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Azure verification for VMs on Azure Stack HCI&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;makes it possible for Azure-exclusive benefits to work outside of the cloud and in on-premises and edge environments. These benefits include&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;Azure Virtual Desktop for Azure Stack HCI&lt;/EM&gt;&lt;EM&gt;,&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;Windows Server Datacenter: Azure Edition&lt;/EM&gt;&lt;EM&gt;,&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;Extended Security Updates (ESUs) for SQL and Windows Server Virtual Machines (VMs)&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;on Azure Stack HCI, and&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;Azure Policy guest configuration&lt;/EM&gt;&lt;EM&gt;. To keep these workloads continuing to function, periodic updates are required to maintain their security and functionality.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_16-1716869636170.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586407iB0308502F2DF854D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_16-1716869636170.jpeg" alt="BrandonWilson_16-1716869636170.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-stack-blog/sneak-peek-at-new-azure-edge-infrastructure-at-hannover-messe/ba-p/4120256" target="_blank" rel="noopener"&gt;Sneak peek at new Azure edge infrastructure at Hannover Messe 2024&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-stack-blog/bg-p/AzureStackBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Stack&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Cosmos Darwin&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/22/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This week is Hannover Messe 2024, the world’s biggest industrial trade fair. Microsoft is there, including members of the Azure Stack team, showcasing how the Microsoft Cloud enables end-to-end manufacturing solutions that help securely connect people, assets, and business processes, empowering organizations to be more resilient.&lt;BR /&gt;Near the center of our booth, you can watch a robotic assembly line put together battery parts. The line features standard OT assets from our partner Rockwell Automation and shows how an adaptive cloud approach together with open standards like OPC UA can accelerate industrial transformation. Azure IoT Operations enabled by Azure Arc flows data from the production line into Microsoft Fabric, enabling real-time monitoring and analysis in the cloud.&lt;BR /&gt;And if you look closer, you may spot an exciting new infrastructure solution hosting it all…&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_17-1716869642644.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586408i265D01F7C7AB3F34/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_17-1716869642644.jpeg" alt="BrandonWilson_17-1716869642644.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-virtual-desktop-blog/azure-virtual-desktop-for-azure-stack-hci-now-has-autoscale/ba-p/4111284" target="_blank" rel="noopener"&gt;Azure Virtual Desktop for Azure Stack HCI now has autoscale&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/azure-virtual-desktop-blog/bg-p/AzureVirtualDesktopBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Azure Virtual Desktop&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Jessie Duan&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/11/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;On February 2024, we announced the general availability of&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;Azure Virtual Desktop for Azure Stack HCI&lt;/EM&gt;&lt;EM&gt;, which extends the capabilities of the Microsoft Cloud to your datacenters and edge locations. Today, we’re happy to announce that autoscale support on Azure Virtual Desktop for Azure Stack HCI is now in public preview. With the Azure Virtual Desktop autoscale feature, organizations running virtualized desktops and apps on-premises, at the edge or in their datacenter, can optimize costs by turning off idle Azure Virtual Desktop session hosts running on Azure Stack HCI.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_18-1716869656484.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586409iED65AC40EE236CE9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_18-1716869656484.jpeg" alt="BrandonWilson_18-1716869656484.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/get-azure-reservations-and-savings-plans-insights-with-the-azure/ba-p/4100750" target="_blank" rel="noopener"&gt;Get Azure Reservations and Savings Plans Insights with the Azure Optimization Engine&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/bg-p/CoreInfrastructureandSecurityBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Core Infrastructure and Security&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Helder Pinto&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/1/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Azure Reservations and Savings Plans commitments have been adopted by many customers with a predictable and steady Azure consumption to achieve considerable savings over on-demand prices. Depending on your on-demand Azure Compute consumption patterns, you may choose one over the other, or even have both working in tandem…&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_19-1716869664395.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586410i30B9F5F3A344EDFB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_19-1716869664395.jpeg" alt="BrandonWilson_19-1716869664395.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/configmgr-avoiding-remote-management-point-pitfalls/ba-p/4102508" target="_blank" rel="noopener"&gt;ConfigMgr: Avoiding Remote Management Point Pitfalls&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/bg-p/CoreInfrastructureandSecurityBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Core Infrastructure and Security&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Pavel Yurenev&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/4/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I’m Pavel Yurenev, a Support Escalation Engineer specializing in Microsoft Configuration Manager at Microsoft Customer Service &amp;amp; Support (CSS).&amp;nbsp;As Reactive Support, we assist customers with issues arising from Microsoft software products. Unfortunately, some&amp;nbsp;supported&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;product configurations are poorly&amp;nbsp;supportable.&lt;/P&gt;
&lt;P&gt;Today, I want to discuss certain design features of Configuration Manager Management Points (MPs) and provide guidance for architects and administrators.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_20-1716869670826.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586411i1841BE3B9516DBCA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_20-1716869670826.jpeg" alt="BrandonWilson_20-1716869670826.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/proxies-proxies-everywhere-but-still-no-internet-overview-of-the/ba-p/4108939" target="_blank" rel="noopener"&gt;Proxies, proxies everywhere but still no Internet. Overview of the Windows Proxies&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/bg-p/CoreInfrastructureandSecurityBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Core Infrastructure and Security&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Will Aftring&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/8/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Howdy everyone, a quick tangent from our regularly scheduled Introduction to Network Trace Analysis series to talk about the Windows Proxy ecosystem. A Windows Proxy configuration can be a little tricky, so I wanted to add clarity for configuration methods. Scoping things a bit here I will also only be referring to 64-bit applications.&amp;nbsp;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;But first, let’s explain what I mean when I say proxy…&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_21-1716869677508.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586412i48509A8FE381E8EF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_21-1716869677508.jpeg" alt="BrandonWilson_21-1716869677508.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/active-directory-hardening-series-part-4-enforcing-aes-for/ba-p/4114965" target="_blank" rel="noopener"&gt;Active Directory Hardening Series - Part 4 – Enforcing AES for Kerberos&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/bg-p/CoreInfrastructureandSecurityBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Core Infrastructure and Security&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Jerry Devore&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/15/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Hi everyone, Jerry Devore here again with another installment in my series on Active Directory hardening.&amp;nbsp; This time I want to revisit a topic I previously wrote about in September of 2020 which is enforcing AES for Kerberos.&amp;nbsp; Since I wrote that&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;blog post&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;a few new tips have come my way.&amp;nbsp; Before we dive in here is a quick re-cap of what was previously discussed…&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_22-1716869684055.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586413i5C7332BD023256CC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_22-1716869684055.jpeg" alt="BrandonWilson_22-1716869684055.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/controlling-aks-egress-using-an-http-proxy/ba-p/4119407" target="_blank" rel="noopener"&gt;Controlling AKS egress using an HTTP Proxy&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/bg-p/CoreInfrastructureandSecurityBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Core Infrastructure and Security&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Houssem Dellai&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/22/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Azure Kubernetes Service (AKS) clusters, whether deployed into a managed or custom virtual network, have certain outbound dependencies necessary to function properly. Previously, in environments requiring internet access to be routed through HTTP proxies, this was a problem. Nodes had no way of bootstrapping the configuration, environment variables, and certificates necessary to access internet services.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This feature adds HTTP proxy support to AKS clusters, exposing a straightforward interface that cluster operators can use to secure AKS-required network traffic in proxy-dependent environments.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Both AKS nodes and Pods will be configured to use the HTTP proxy. Here is an architecture diagram showing the different components.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_23-1716869690585.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586414i0C6A0FB3236DCCFA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_23-1716869690585.jpeg" alt="BrandonWilson_23-1716869690585.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/building-your-own-copilot-for-credit-card-selection/ba-p/4125697" target="_blank" rel="noopener"&gt;Building Your Own Copilot for Credit Card Selection&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/bg-p/CoreInfrastructureandSecurityBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;Core Infrastructure and Security&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Felipe Binotto&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/28/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Have you ever found yourself lost in the maze of credit card options, navigating through countless comparison websites, unsure of the accuracy and timeliness of their information? I certainly have. Recently, I embarked on a quest to find the perfect credit card, one that rewards my spending habits with frequent flyer points. However, relying solely on popular comparison platforms left me questioning the reliability of their data, often overshadowed by biased advertisements.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;But then, a beacon of hope emerged: the realization that all bank product information is accessible through a common API. With this revelation, I set out to craft my own solution – a personalized Copilot to guide me through the sea of credit card offerings.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_24-1716869696954.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586415i89201DA07783E4D1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_24-1716869696954.jpeg" alt="BrandonWilson_24-1716869696954.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/finops-blog/cost-allocation-is-imperative-for-cloud-resource-optimization/ba-p/4114921" target="_blank" rel="noopener"&gt;Cost allocation is imperative for cloud resource optimization&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/finops-blog/bg-p/FinOpsBlog" target="_blank" rel="noopener"&gt;FinOps&lt;/A&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Antonio Ortoll&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/15/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Like most enterprises, you are probably&amp;nbsp;managing your Azure resources and services centrally and need a way to distribute and “showback” or reallocate the cost of services back to the organizational units that use those services.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Sharing cloud services provides greater flexibility and scalability when they can be dynamically allocated. But as your cloud adoption grows, the&amp;nbsp;quantity of billing and usage data and the speed at which it is delivered can make allocation and reporting a challenge without a strategy and a system to efficiently assign the costs of cloud resources to their specific users.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_25-1716869703819.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586416i142B37064F345121/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_25-1716869703819.jpeg" alt="BrandonWilson_25-1716869703819.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/itops-talk-blog/7-steps-for-a-successful-azure-migration/ba-p/4108598" target="_blank" rel="noopener"&gt;7 steps for a successful Azure migration&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/itops-talk-blog/bg-p/ITOpsTalkBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;ITOps Talk&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Sonia Cuff&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/9/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;EM&gt;Migrating an on-premises environment to Azure requires preparation, planning, and time. Join Microsoft MVP Gregor Reimling and learn&amp;nbsp;&lt;/EM&gt;&lt;/SPAN&gt;seven key steps for a successful Azure migration.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;In this video, you will learn…&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_26-1716869711233.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586417i17AFCF3182CF8F91/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_26-1716869711233.jpeg" alt="BrandonWilson_26-1716869711233.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/itops-talk-blog/wired-for-hybrid-what-s-new-in-azure-networking-april-2024/ba-p/4120775" target="_blank" rel="noopener"&gt;Wired for Hybrid - What's New in Azure Networking - April 2024 edition&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/itops-talk-blog/bg-p/ITOpsTalkBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;ITOps Talk&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Pierre Roman&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/22/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Azure Networking is the foundation of your infrastructure in Azure. Each month we bring you an update on What’s new in Azure Networking.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;In this blog post, we’ll cover what's new with&amp;nbsp;Azure Networking&amp;nbsp;in April 2024.&amp;nbsp; In this blog post, we will cover the following announcements and how they can help you.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_27-1716869718535.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586418i135E51F214B77E54/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_27-1716869718535.jpeg" alt="BrandonWilson_27-1716869718535.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/itops-talk-blog/dual-region-azure-vmware-solution-design-with-global-reach-using/ba-p/4120511" target="_blank" rel="noopener"&gt;Dual-Region Azure VMware Solution design with Global Reach, using Secure Virtual WAN&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/itops-talk-blog/bg-p/ITOpsTalkBlog" target="_blank" rel="noopener"&gt;&lt;EM&gt;ITOps Talk&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Jason Medina&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/24/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This article describes the best practices for connectivity, traffic flows, and high availability of dual-region Azure VMware Solution when using Azure Secure Virtual WAN with Routing Intent and Global Reach. This article breaks down Virtual WAN with Routing Intent topology from the perspective of Azure VMware Solution private clouds, on-premises sites, and Azure native. The implementation and configuration of Secure Virtual WAN with Routing Intent are beyond the scope and are not discussed in this document.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_28-1716869726086.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586419iBE6732D1F4CFEC5F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_28-1716869726086.jpeg" alt="BrandonWilson_28-1716869726086.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/microsoft-entra-blog/important-update-deprecation-of-azure-ad-powershell-and-msonline/ba-p/4094536" target="_blank" rel="noopener"&gt;Important update: Deprecation of Azure AD PowerShell and MSOnline PowerShell modules&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/microsoft-entra-azure-ad-blog/bg-p/Identity" target="_blank" rel="noopener"&gt;&lt;EM&gt;Microsoft Entra (Azure AD)&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Kristopher Bash&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/1/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;In 2021, we&amp;nbsp;described our plans&amp;nbsp;to invest in Microsoft Graph PowerShell SDK as the PowerShell provider for Microsoft Entra and transition away from Azure AD and MSOnline PowerShell modules. In 2023, we&amp;nbsp;announced&amp;nbsp;that the deprecation of Azure AD and MSOnline PowerShell modules would occur on March 30, 2024. We’ve since made substantial progress closing remaining parity gaps in Microsoft Graph PowerShell SDK, and&amp;nbsp;as of March 30, 2024, these PowerShell modules are now deprecated:&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;Azure AD PowerShell&amp;nbsp;(AzureAD)&amp;nbsp;&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Azure AD PowerShell Preview&amp;nbsp;(AzureADPreview)&amp;nbsp;&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;MS Online&amp;nbsp;(MSOnline)&amp;nbsp;&lt;/EM&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;You should migrate your scripts to Microsoft Graph PowerShell SDK as soon as possible. Information about the retirement of these modules can be found below.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_29-1716869733384.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586420iAE410896535FE009/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_29-1716869733384.jpeg" alt="BrandonWilson_29-1716869733384.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/microsoft-entra-blog/what-s-new-in-microsoft-entra/ba-p/3796391" target="_blank" rel="noopener"&gt;What's new in Microsoft Entra&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/microsoft-entra-azure-ad-blog/bg-p/Identity" target="_blank" rel="noopener"&gt;&lt;EM&gt;Microsoft Entra (Azure AD)&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Shobhit Sahay&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/1/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;With the ever-increasing sophistication of cyber-attacks, the increasing use of cloud-based services, and the proliferation of mobile devices, it’s essential that organizations secure access for both human and non-human identities to all on-premises and cloud resources, while working continuously to improve their security posture.&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:60,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:60,&amp;quot;335559740&amp;quot;:240}"&gt;&lt;EM&gt;Today, we’re sharing feature release information for January – March 2024, and first quarter change announcements. We also communicate these via&amp;nbsp;release notes&lt;/EM&gt;&lt;/SPAN&gt;, email, and the&amp;nbsp;Microsoft Entra admin center.&amp;nbsp;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:60,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_30-1716869739710.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586421i60622D26D39207CF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_30-1716869739710.jpeg" alt="BrandonWilson_30-1716869739710.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/microsoft-entra-blog/introducing-new-and-upcoming-entra-recommendations-to-enhance/ba-p/3796390" target="_blank" rel="noopener"&gt;Introducing new and upcoming Entra Recommendations to enhance security and productivity&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/microsoft-entra-azure-ad-blog/bg-p/Identity" target="_blank" rel="noopener"&gt;&lt;EM&gt;Microsoft Entra (Azure AD)&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Shobhit Sahay&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/2/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Managing the myriad settings and resources within your tenant can be daunting. In an era of escalating security risks and an unprecedented global threat landscape, organizations seek trusted guidance to enhance their security posture That’s why we introduced&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;Microsoft Entra Recommendations&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;to diligently monitor your tenant’s status, ensuring it remains secure and healthy. Moreover, they empower you to extract maximum value from the features offered by Microsoft Entra ID. Since the launch of Microsoft Entra recommendations, thousands of customers have adopted these recommendations and resolved millions of resources.&amp;nbsp;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335557856&amp;quot;:16777215,&amp;quot;335559738&amp;quot;:240,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_31-1716869746294.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586422iB4ECA10A240D330B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_31-1716869746294.jpeg" alt="BrandonWilson_31-1716869746294.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/microsoft-entra-blog/introducing-quot-what-s-new-quot-in-microsoft-entra/ba-p/3796389" target="_blank" rel="noopener"&gt;Introducing "What's New" in Microsoft Entra&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/microsoft-entra-azure-ad-blog/bg-p/Identity" target="_blank" rel="noopener"&gt;&lt;EM&gt;Microsoft Entra (Azure AD)&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Shobhit Sahay&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/15/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Today, I’m thrilled to announce the public preview of&amp;nbsp;&lt;/EM&gt;&lt;EM&gt;What’s New in Microsoft Entra. This new hub in the Microsoft Entra admin center offers you a centralized view of our roadmap and change announcements across the Microsoft Entra identity and network access portfolio. In this article, I’ll show you how admins can get the most from what’s new to stay informed about Entra product updates and actionable insights.&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:60,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_32-1716869753260.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586424i44E0CF4BD0CD3B27/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_32-1716869753260.jpeg" alt="BrandonWilson_32-1716869753260.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-unlink="true"&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;A href="https://techcommunity.microsoft.com/t5/microsoft-entra-blog/enforce-least-privilege-for-entra-id-company-branding-with-the/ba-p/4115772" target="_blank" rel="noopener"&gt; Enforce least privilege for Entra ID company branding with the new organizational branding role&lt;/A&gt;&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/microsoft-entra-azure-ad-blog/bg-p/Identity" target="_blank" rel="noopener"&gt;&lt;EM&gt;Microsoft Entra (Azure AD)&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; James Mantu&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/18/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;I&lt;SPAN data-contrast="none"&gt;’&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;m pleased to announce General Availability (GA) of the o&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;rganizational branding role for Microsoft Entra ID company branding.&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;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This new role is part of our ongoing efforts to implement Zero Trust network access by enforcing the principle of least privilege for users when customizing their authentication user experience (UX) via Entra ID company branding.&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Previously, users w&lt;SPAN data-contrast="none"&gt;anting&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;to configure Entra ID company branding required the Global Admin role. This role, though, has sweeping privileges beyond what’s necessary for configuring Entra ID company branding.&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_33-1716869759705.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586425iF69EEACE387D267B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_33-1716869759705.jpeg" alt="BrandonWilson_33-1716869759705.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Title:&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt; &lt;A href="https://techcommunity.microsoft.com/t5/security-compliance-and-identity/onboard-to-azure-arc-with-security-in-mind/ba-p/4114267" target="_blank" rel="noopener"&gt;Onboard to Azure Arc with Security in Mind&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Source:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/t5/security-compliance-and-identity/bg-p/MicrosoftSecurityandCompliance" target="_blank" rel="noopener"&gt;&lt;EM&gt;Security, Compliance, and Identity&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Author:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; Simone Oor&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Publication Date:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; 4/17/24&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Content excerpt&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Azure Arc allows certain on-premises resources, typically servers, to be managed from Azure, depending on the configuration mode selected and currently available features.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;While this allows for a more integrated approach to hybrid environments, it also further blurs the administrative boundary between on-premises and cloud.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This increases the risk that a vulnerability on either side lowers the level of security across the entire plane. This article contains tips for managing this risk and approaching Arc Onboarding with security in mind.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BrandonWilson_34-1716869766617.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586426iF9C0CAA0BFF7B6DD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="BrandonWilson_34-1716869766617.jpeg" alt="BrandonWilson_34-1716869766617.jpeg" /&gt;&lt;/span&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;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Previous CTO! Guides:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/bg-p/CoreInfrastructureandSecurityBlog/label-name/CTO" target="_blank" rel="noopener"&gt;CIS Tech Community-Check This Out! (CTO!) Guides&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Additional resources:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/?product=popular" target="_blank" rel="noopener noreferrer"&gt;Azure documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://azure.microsoft.com/en-us/pricing/calculator/" target="_blank" rel="noopener noreferrer"&gt;Azure pricing calculator&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;(VERY handy!)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/architecture/framework/" target="_blank" rel="noopener noreferrer"&gt;Microsoft Azure Well-Architected Framework&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/" target="_blank" rel="noopener noreferrer"&gt;Microsoft Cloud Adoption Framework&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/windows-server/" target="_blank" rel="noopener noreferrer"&gt;Windows Server documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/windows/resources/" target="_blank" rel="noopener noreferrer"&gt;Windows client documentation for IT Pros&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/powershell/" target="_blank" rel="noopener noreferrer"&gt;PowerShell documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://aka.ms/cistechcomm" target="_blank" rel="noopener noreferrer"&gt;Core Infrastructure and Security blog&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://techcommunity.microsoft.com/t5/custom/page/page-id/Blogs" target="_blank" rel="noopener"&gt;Microsoft Tech Community blogs&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/" target="_blank" rel="noopener noreferrer"&gt;Microsoft technical documentation&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;(Microsoft Docs)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://techcommunity.microsoft.com/t5/sysinternals-blog/bg-p/Sysinternals-Blog" target="_blank" rel="noopener"&gt;Sysinternals blog&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/learn/" target="_blank" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://support.microsoft.com/en-US" target="_blank" rel="noopener noreferrer"&gt;Microsoft Support&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;(Knowledge Base)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/archive/" target="_blank" rel="noopener noreferrer"&gt;Microsoft Archived Content&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;(MSDN/TechNet blogs, MSDN Magazine, MSDN Newsletter, TechNet Newsletter)&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 28 May 2024 04:16:34 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-april-2024/ba-p/4153388</guid>
      <dc:creator>BrandonWilson</dc:creator>
      <dc:date>2024-05-28T04:16:34Z</dc:date>
    </item>
    <item>
      <title>Load Testing RAG based Generative AI Applications</title>
      <link>https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/load-testing-rag-based-generative-ai-applications/ba-p/4086993</link>
      <description>&lt;DIV&gt;&lt;SPAN&gt;When developing applications for Language Models (LLMs), we usually spend a lot of time on both the development and evaluation phases to ensure the app delivers high-quality responses that are not only accurate but also safe for users.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;However, a great user experience with an LLM application isn't just about the quality of responses—it's also about how quickly these responses are provided. So, in this discussion, we'll focus on how to evaluate LLM applications for their response times.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;The aim of &lt;STRONG&gt;p&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;erformance evaluation&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;is to proactively test the application to identify and address performance issues before they impact end-users. In the subsequent sections, we will explore performance evaluation in detail. We will discuss building an effective strategy, mastering evaluation techniques, and provide practical guides. Here's what you can expect:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="#building-effective" target="_self"&gt;&lt;SPAN&gt;Building an Effective Strategy&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="#mastering-evaluation" target="_self"&gt;&lt;SPAN&gt;Mastering Evaluation Techniques&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="#how-to-guides" target="_self"&gt;&lt;SPAN&gt;How-To Guides&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 id="building-effective"&gt;&lt;SPAN&gt;Building an Effective Strategy&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN&gt;Each application has unique characteristics, such as user count, transaction volume, and expected response time. Therefore, it's crucial for you to establish an effective evaluation strategy tailored to the specific application you're evaluating.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;DIV&gt;&lt;SPAN&gt;Before initiating the tests, you need to outline your strategy, which includes determining the aspects to test and the methods to use. This section provides a detailed discussion on these considerations.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;H3&gt;&lt;SPAN&gt;Identifying What to Evaluate&lt;/SPAN&gt;&lt;/H3&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;DIV&gt;&lt;SPAN&gt;Let's start by defining what you are going to test. For example, if the application is fully implemented and running in an environment similar to production, you can conduct a comprehensive load test. This allows you to measure performance and anticipate the user experience before the application is released to end users.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;DIV&gt;&lt;SPAN&gt;Testing the entire application is a good idea as it provides a measure of response times that closely mirrors what a user will experience when interacting with the application. However, a user's interaction with a Large Language Model (LLM) App involves several elements. These include the application frontend, backend, networking, the LLM model, and other cloud services like databases and AI services.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;With that in mind, you have the chance to conduct performance evaluations on particular services even before the whole application is finalized and prepared for deployment. For instance, you can proactively assess the performance of the Large Language Model (LLM) that you plan to incorporate in the application, even if it isn't fully ready yet. In the &lt;STRONG&gt;Mastering Evaluation Techniques&lt;/STRONG&gt; section, you will see how you can test the performance of a model deployed in the Azure OpenAI service.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Let's examine an example of an application structure where multiple services cooperate to deliver a user response. One frequently used architectural design in Large Language Model (LLM) Applications like ChatGPT is the &lt;STRONG&gt;Retrieval Augmented Generation (RAG)&lt;/STRONG&gt;. This architecture involves a retrieval step before invoking the LLM to generate content, which is essential for providing grounding data. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;The &lt;A href="https://aka.ms/gpt-rag" target="_self"&gt;Enterprise RAG Solution Accelerator architecture&lt;/A&gt;&amp;nbsp;offers a practical example of the RAG pattern implemented in an enterprise setting. In the &lt;A href="#how-to-guides" target="_self"&gt;How-To Guides&lt;/A&gt; section, you can find an example of load testing on an LLM application that uses the RAG pattern.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;The following image illustrates the orchestration flow within an LLM application based on RAG. For simplicity, we have not depicted the return messages in the diagram.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;DIV&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="perftest-GPT-RAG-Basic-communication.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/579938i233032CCDD6C0C93/image-size/large?v=v2&amp;amp;px=999" role="button" title="perftest-GPT-RAG-Basic-communication.png" alt="perftest-GPT-RAG-Basic-communication.png" /&gt;&lt;/span&gt;&lt;/DIV&gt;
&lt;DIV class="lia-align-center"&gt;&lt;EM&gt;Example of communication between the components of an LLM App based on the RAG pattern.&lt;/EM&gt;&lt;/DIV&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;DIV&gt;&lt;SPAN&gt;Here's how it works:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN&gt;The user interacts with the frontend UI to pose a question.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;The frontend service forwards the user's question to the Orchestrator.&lt;/LI&gt;
&lt;LI&gt;The Orchestrator retrieves the user's conversation history from the database.&lt;/LI&gt;
&lt;LI&gt;The Orchestrator accesses the AI Search key stored in the Key Vault.&lt;/LI&gt;
&lt;LI&gt;The Orchestrator retrieves relevant documents from the AI Search index.&lt;/LI&gt;
&lt;LI&gt;The Orchestrator uses Azure OpenAI to generate a user response.&lt;/LI&gt;
&lt;/OL&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Optional connections (dashed arrows):&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;The connection from the App Service to Storage Account indicates the scenario when the user wants to view the document that grounds the provided answer.&lt;/LI&gt;
&lt;LI&gt;The connection from the App Service to Speech Services indicates the cases when the user wishes to interact with the application through audio.&lt;/LI&gt;
&lt;/UL&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Each step in the process involves data transfer and processing across various services, all contributing to the total response time. In such scenarios, you can evaluate not just the overall application response time, but also the performance of individual components, like the response times of the Azure OpenAI model deployment.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Ultimately, the scope of testing depends on each application's specific requirements. For instance, an internal application and a public-facing application may have different performance needs. While a response time of 15 seconds might be acceptable in an internal HR application used to view paychecks, a contact center app with hundreds of users might need to respond much faster due to its high user demand and SLAs. Make sure you know the requirements of your application before starting your performance evaluation.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;H3&gt;&lt;SPAN&gt;Test Scenario&lt;/SPAN&gt;&lt;/H3&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;After determining what you will evaluate in your application, it's essential to define your test scenario. During the LLM App development, we often start our performance tests in a simple way, with a single request. This first test might include measuring the time it takes for completions to appear in the playground, gauging the time a Prompt flow takes to execute in AI Studio, or calculating the time necessary for code execution in VS Code. The data from this single run can help detect potential performance issues in specific components early on.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;However, for a genuine perspective on the application's performance, you will need to establish a test scenario that mirrors the actual user load on the application. This entails conducting tests under circumstances that closely resemble real-world usage. By doing so, your assessments will accurately depict how the application would perform under standard operational conditions. We will offer some suggestions on how to accomplish this shortly.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;First, we need to determine the load that will be placed on the application. This load is defined in terms of throughput, which is the number of requests the application will receive within a specific time frame, such as &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Requests per Minute&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;(RPM).&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;There are multiple ways to estimate the expected throughput. If the application is already operational, you can use its current usage data, gathered from monitoring tools, as a reference.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;The subsequent figure illustrates this approach. If you foresee an increase in usage due to the integration of LLM into the solution, you should adjust your throughput estimation to accommodate this anticipated growth.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="perftest-users-per-hour.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/579945i2B2E8CF7D9A7AA26/image-size/large?v=v2&amp;amp;px=999" role="button" title="perftest-users-per-hour.png" alt="perftest-users-per-hour.png" /&gt;&lt;/span&gt;&lt;/DIV&gt;
&lt;DIV class="lia-align-center"&gt;&lt;EM&gt;Example of usage scenario, see the peak load from 10h to 13h hours.&lt;/EM&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;When dealing with a new application, estimating the expected throughput can be approached through benchmarking or usage modeling. Benchmarking involves comparing your application with similar ones that serve the same target audience. By studying their usage patterns, you can get a rough estimate of the expected throughput for your application.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Usage modeling, on the other hand, requires you to create a model of the expected usage patterns of your application. This can be achieved by interacting with stakeholders or potential users in the specific field for which the application is being developed. Their insights can provide a better understanding of how the application might be used, which can assist in estimating the Requests Per Minute (RPM).&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;One approach to model your application usage is starting by identifying the &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;total number of users&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;. This should encompass all registered, or potential users of your application. Then, identify the number of these &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;users&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;who are active &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;during peak usage times&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;. Focusing on peak usage times is crucial as off-peak data may not accurately reflect system performance, particularly for systems with distinct high usage periods.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Next, estimate the average number of times a user will use the application during peak times. This is referred to as &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;sessions&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;. Also, estimate the number of actions or &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;interactions&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;a user makes during a session. Each interaction corresponds to a request made to the application. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;For example, consider a mobile app for a shopping mall. Users are likely to have multiple interactions in a single session. They might first search for recommended restaurants, then ask about the operating hours of a specific restaurant. Each of these actions is an interaction.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="perftest-sample-sequence-diagram2.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/579973i44176FE78F99064B/image-size/large?v=v2&amp;amp;px=999" role="button" title="perftest-sample-sequence-diagram2.png" alt="perftest-sample-sequence-diagram2.png" /&gt;&lt;/span&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="lia-align-left"&gt;&lt;EM&gt;Example of a user session.&lt;/EM&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Once you have the total number of users (&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;u&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;), the percentage (&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;p&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;) of them that will use the application during the&amp;nbsp;peak usage hours&amp;nbsp;(&lt;STRONG&gt;n&lt;/STRONG&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, the average number of user sessions (&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;s&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;), and the typical number of interactions (&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;i&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;) each user has per session, you can use the following formula to derive the RPM to run your load test.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;PRE&gt;RPM = (u * p * s * i) / n / 60&lt;/PRE&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Taking the previous example of the Mall App, let's consider a set of &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;10,000 registered users&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;on the App. We expect that during peak hours, &lt;/SPAN&gt;&lt;STRONG&gt;10%&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;of the users will interact at least once with the application to obtain information, such as store locations or product details.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;In this case, we have:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;u=10000&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;(total users)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;p=0.1&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;(percentage of active users during peaktime)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;s=1&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;(sessions per user)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;i=2&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;(interactions per session)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;n=1&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;(peaktime duration in hours)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Therefore, the expected throughput for the peak hours is approximately &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;17 RPM&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;During testing, you may want to reproduce a load that is about 10% higher than estimated to be more conservative.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Defining the scenario for larger applications can become complex, requiring the identification of distinct user roles and their usage behavior. However, if exact modeling is challenging due to lack of information, just keep things simple, make an educated guess, and validate it with the application's stakeholders.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Another factor to consider when defining your test scenario is that LLM response times depend on the sizes of prompts and completions. Accurate testing requires replicating real usage scenarios, matching these sizes. For instance, RAG prompts are typically larger due to context text, while proofreading apps usually have similar prompt and completion sizes.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;It's worth noting that the examples provided here are primarily based on the perspective of a real-time application user. However, it's also possible to design other performance test scenarios, such as for applications operating in batch mode. In this case, for example, one would need to consider the volume of data to be processed within a specific time window to determine if the application can handle the load within the given time frame. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Whether your application is real-time or batch-oriented, it's crucial to accurately define your test scenario to reflect actual usage conditions. This will ensure that your performance tests yield meaningful results that can help optimize your application's performance.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;H4&gt;&lt;SPAN&gt;Test Data&lt;/SPAN&gt;&lt;/H4&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Performance testing heavily relies on the data used during the test execution. It's crucial to use data that closely mirrors real-world scenarios. For instance, if we're testing an application like a copilot, the test results would be more accurate if each user asks different questions. Even if users ask the same questions, they should phrase them differently.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Consider a scenario where each virtual user asks the exact same question during the test. This could lead to results that don't accurately represent real-world usage. Certain components of the application might leverage caching mechanisms to deliver faster responses, skewing the results. Furthermore, the final metric, typically an average or a percentile, will be biased towards the repeated question.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Having experts in the App domain contribute to the creation of the test data set can greatly enhance its quality and relevance. Their knowledge can help shape more realistic and relevant examples. Alternatively, a Large Language Model (LLM) can be utilized to generate a synthetic dataset. This approach can be particularly useful for running tests, as it allows for the creation of diverse and comprehensive data scenarios. This practice not only enhances the quality of the tests but also ensures that they cover a wide range of potential real-world situations.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;H4&gt;&lt;SPAN&gt;Test Measurements&lt;/SPAN&gt;&lt;/H4&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Performance testing requires identifying key metrics. A common one is &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Response Time&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;, the total time from sending a request to receiving a response. Performance requirements are typically determined by this metric, such as needing an average response time under ten seconds, or 95% of responses within ten seconds.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;However, response time is not the only metric of interest. To gain a holistic understanding of the application's performance and the factors affecting it, we can categorize the metrics into two groups.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The first group comprises metrics that can be measured from the client's perspective - what the client can observe and capture. The second group consists of metrics that are measured by monitoring the server's performance. Let's explore each of these groups in detail:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;H5&gt;&lt;SPAN&gt;Client metrics&lt;/SPAN&gt;&lt;/H5&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;When testing an LLM App, we usually obtain the following client metrics:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="35%" height="30px"&gt;&lt;STRONG&gt;Metric&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="65%" height="30px"&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="35%" height="57px"&gt;Number of Virtual Users&lt;/TD&gt;
&lt;TD width="65%" height="57px"&gt;This metric shows the virtual user count during a load test, helping assess application performance under different user loads.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="35%" height="57px"&gt;Requests per Second&lt;/TD&gt;
&lt;TD width="65%" height="57px"&gt;This is the rate at which requests are sent to the LLM App during the load test. It's a measure of the load your application can handle.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="35%" height="30px"&gt;Response Time&lt;/TD&gt;
&lt;TD width="65%" height="30px"&gt;This refers to the duration between sending a request and receiving the full response. It does not include any time spent on client-side response processing or rendering.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD height="57px"&gt;Latency&lt;/TD&gt;
&lt;TD height="57px"&gt;The latency of an individual request is the total time from just before sending the request to just after the first response is received.&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="35%" height="57px"&gt;Number of Failed Requests&lt;/TD&gt;
&lt;TD width="65%" height="57px"&gt;This is the count of requests that failed during the load test. It helps identify the reliability of your application under stress.&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Response time, often referred to as "end-to-end response time," includes all processing time within the system. However, this measurement only covers the interval between sending a request and receiving the response. It does not account for any client-side processing time, such as rendering a webpage or executing JavaScript in a web application.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;Note:&amp;nbsp;&lt;/STRONG&gt;&lt;SPAN&gt;Latency and response time are terms that are often used interchangeably, and their definitions can vary depending on the context. In the&lt;/SPAN&gt;&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/latency#latency-the-per-call-response-times" target="_blank" rel="noopener"&gt;Azure OpenAI documentation&lt;/A&gt;&lt;SPAN&gt;, latency is defined as "the amount of time it takes to get a response back from the model." For consistency, we will use the definition provided in the previous table, which is based on the concepts from&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/load-testing/concept-load-testing-concepts#latency" target="_blank" rel="noopener"&gt;Azure Load Testing&lt;/A&gt;.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The diagram below illustrates how processing and communication times add up to the total response time. In the figure, each Tn marks a specific time during processing. T1 is when the user initiates a request through a client, such as a browser or MS Teams. T10 is when the user gets the full response. Note that the total response time (from T1 to T10) depends on the processing and response times of all components involved in the request.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="lia-align-center"&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="perftest-response-time.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/579942iA8BFDE1B014A2A70/image-size/large?v=v2&amp;amp;px=999" role="button" title="perftest-response-time.png" alt="perftest-response-time.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;SPAN&gt;Simplified example of the breakdown of request response time.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;H5&gt;&lt;STRONG&gt;Performance Metrics for a LLM&lt;/STRONG&gt;&lt;/H5&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;When conducting performance testing directly on a specific service, we can collect specific client-side metrics for the target service. In the context of performance testing a Language Model (LLM), we should consider metrics related to prompt tokens and response tokens. For instance, consider the deployment of an OpenAI model on Azure. The following table presents some of these metrics, which offer valuable insights into the client's interaction with the model deployment and its performance under load.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="30%"&gt;&lt;STRONG&gt;Metric&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="70%"&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="30%"&gt;Number Prompt Tokens per Minute&lt;/TD&gt;
&lt;TD width="70%"&gt;Rate at which the client sends prompts to the OpenAI model.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="30%"&gt;Number Generated Tokens per Min&lt;/TD&gt;
&lt;TD width="70%"&gt;Rate at which the OpenAI model generates response tokens.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="30%"&gt;Time to First Token (TTFT)&lt;/TD&gt;
&lt;TD width="70%"&gt;The time interval between the start of the client's request and the arrival of the first response token.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="30%"&gt;Time Between Tokens (TBT)&lt;/TD&gt;
&lt;TD width="70%"&gt;Time interval between consecutive response tokens being generated.&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;To examine the time intervals between tokens in Azure OpenAI's responses, you can utilize its streaming feature. Unlike conventional API calls that deliver the entire response at once, streaming sends each token or a set of tokens to the client as soon as they are produced. This allows for real-time performance monitoring and detailed analysis of the dynamics of response generation.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The diagram below provides a simplified view of a client's interaction with a model endpoint. The interaction commences at the moment (&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;T0&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;) when the client sends a request to the model's endpoint. The model responds in streaming mode, with &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;T1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;T2&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;, and &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;TN&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;representing the moments when the first, second, and last tokens are received, respectively. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="perftest-aoai-response-time.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/579948i30C093F4F8E73F8F/image-size/large?v=v2&amp;amp;px=999" role="button" title="perftest-aoai-response-time.png" alt="perftest-aoai-response-time.png" /&gt;&lt;/span&gt;&lt;/DIV&gt;
&lt;DIV class="lia-align-center"&gt;&lt;EM&gt;AOAI deployment response in streaming mode.&lt;/EM&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;In this scenario, we define several key metrics: &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Time to First Token (TTFT)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;is &lt;/SPAN&gt;&lt;STRONG&gt;T1 - T0&lt;/STRONG&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Time Between Tokens (TBT)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;is &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;T2 - T1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;, and the &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;end-to-end response time&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;is &lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;TN - T0&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;. It's important to note that in streaming mode, the model's responses can arrive in multiple parts, each with several tokens. This makes both the diagram and the metrics an approximate representation of real-world scenarios.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;H5&gt;&lt;SPAN&gt;Server metrics&lt;/SPAN&gt;&lt;/H5&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;During performance testing, we focus on two types of metrics. The first type is client metrics, which directly affect the user experience. The second type is server metrics, which give us insights into the performance of server components.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Server metrics encompass a wide range of measurements. For instance, we might look at the CPU and memory usage of the application service running the frontend. We could also monitor the utilization of resources like the Azure OpenAI PTU deployment. These are just a few examples; there are many other server metrics we could potentially examine.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;By collecting these measurements, we can create a detailed performance profile of the entire solution. This profile helps us identify any bottlenecks and tune any components that are not performing optimally.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;LLM Apps consist of various services, and the server metrics we utilize will vary based on these services. To give you an idea, here are some examples of the metrics we might gather, depending on the specific service in use:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;&lt;STRONG&gt;Service Name&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="30%"&gt;&lt;STRONG&gt;Metric&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="50%"&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure OpenAI&lt;/TD&gt;
&lt;TD width="30%"&gt;Azure OpenAI Requests&lt;/TD&gt;
&lt;TD width="50%"&gt;Total calls to Azure OpenAI API.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure OpenAI&lt;/TD&gt;
&lt;TD width="30%"&gt;Generated Completion Tokens&lt;/TD&gt;
&lt;TD width="50%"&gt;Output tokens from Azure OpenAI model.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure OpenAI&lt;/TD&gt;
&lt;TD width="30%"&gt;Processed Inference Tokens&lt;/TD&gt;
&lt;TD width="50%"&gt;The number of input and output tokens that are processed by the Azure OpenAI model.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure OpenAI&lt;/TD&gt;
&lt;TD width="30%"&gt;Provision-managed Utilization V2&lt;/TD&gt;
&lt;TD width="50%"&gt;The percentage of the provisioned-managed deployment that is currently being used.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure App Service&lt;/TD&gt;
&lt;TD width="30%"&gt;CPU Percentage&lt;/TD&gt;
&lt;TD width="50%"&gt;The percentage of CPU used by the App backend services.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure App Service&lt;/TD&gt;
&lt;TD width="30%"&gt;Memory Percentage&lt;/TD&gt;
&lt;TD width="50%"&gt;The percentage of memory used by the App backend services.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure Cosmos DB&lt;/TD&gt;
&lt;TD width="30%"&gt;Total Requests&lt;/TD&gt;
&lt;TD width="50%"&gt;Number of requests made to Cosmos DB.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure Cosmos DB&lt;/TD&gt;
&lt;TD width="30%"&gt;Provisioned Throughput&lt;/TD&gt;
&lt;TD width="50%"&gt;The amount of throughput that has been provisioned for a container or database.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure Cosmos DB&lt;/TD&gt;
&lt;TD width="30%"&gt;Normalized RU Consumption&lt;/TD&gt;
&lt;TD width="50%"&gt;The normalized request unit consumption based on the provisioned throughput.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure API Management&lt;/TD&gt;
&lt;TD width="30%"&gt;Total Requests&lt;/TD&gt;
&lt;TD width="50%"&gt;Total number of requests made to APIM.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Azure API Management&lt;/TD&gt;
&lt;TD width="30%"&gt;Capacity&lt;/TD&gt;
&lt;TD width="50%"&gt;Percentage of resource and network queue usage in APIM instance.&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;BR /&gt;
&lt;H3&gt;&lt;SPAN&gt;When should I evaluate performance?&lt;/SPAN&gt;&lt;/H3&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;You might be wondering when to execute performance tests. To help us in this discussion, let's take a look at the Enterprise LLM Lifecycle, illustrated in the following image.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="perftest-llmlifecycle.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/579949i106FF8061E90CC61/image-size/large?v=v2&amp;amp;px=999" role="button" title="perftest-llmlifecycle.png" alt="perftest-llmlifecycle.png" /&gt;&lt;/span&gt;
&lt;P class="lia-align-center"&gt; &lt;EM style="font-family: inherit;"&gt;Enterprise LLM Lifecycle.&lt;/EM&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The Enterprise LLM Lifecycle with Azure AI involves ideating and exploring, building and augmenting, operationalizing, and managing loops to develop, enhance, deploy, and govern large language model (LLM) applications. You can learn more about the Enterprise LLM Lifecycle by reading this blog: &lt;/SPAN&gt;&lt;SPAN&gt;&lt;A href="https://azure.microsoft.com/es-es/blog/building-for-the-future-the-enterprise-generative-ai-application-lifecycle-with-azure-ai/" target="_blank" rel="noopener"&gt;Building for the future: The enterprise generative AI application lifecycle with Azure AI&lt;/A&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Performance testing is crucial and should start as early as possible during the development process. This early start provides enough time for making necessary adjustments and optimizations. The exact timing, however, depends on what aspects of the application you're testing.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;If your goal is to evaluate the performance of the entire LLM App before it's used by end-users, the application must be fully developed and deployed to a staging environment. Typically, this load testing of the LLM App occurs during the initial iterations of the Operationalization loop in the Enterprise LLM Lifecycle.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Keep in mind that there are scenarios where performance evaluations can be conducted before Operationalization. For instance, during the Experimenting and Ideating phase, you might be exploring various LLMs for use. If you're considering using one of the models available on Azure OpenAI, this could be an excellent time to conduct a performance benchmark test using the Azure OpenAI benchmarking tool.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The following figure illustrates the moments in the LLM lifecycle where the two types of performance tests mentioned earlier are usually conducted.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="perftest-llmlifecycle-with-tests.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/579950i5C9FBD4133F678FA/image-size/large?v=v2&amp;amp;px=999" role="button" title="perftest-llmlifecycle-with-tests.png" alt="perftest-llmlifecycle-with-tests.png" /&gt;&lt;/span&gt;&lt;/DIV&gt;
&lt;DIV class="lia-align-center"&gt;&lt;EM&gt;Performance tests in the LLM Lifecycle.&lt;/EM&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;H2 id="mastering-evaluation"&gt;&lt;SPAN&gt;Mastering Evaluation Techniques&lt;/SPAN&gt;&lt;/H2&gt;
&lt;BR /&gt;
&lt;DIV&gt;
&lt;DIV role="listitem"&gt;
&lt;DIV class="sc-imWYAI bMASkr"&gt;
&lt;DIV class="sc-imWYAI sc-hzhJZQ bMASkr bhgIfe" data-is-focusable="true"&gt;
&lt;DIV class="sc-imWYAI bMASkr bubble ai" aria-atomic="true"&gt;
&lt;DIV class="sc-jXbUNg emaryz content"&gt;
&lt;DIV class="sc-imWYAI bMASkr" aria-description="chatbot"&gt;
&lt;DIV class="bubbleContent"&gt;
&lt;P&gt;Great job on your journey so far in learning the essentials of your testing strategy! As we proceed in this section, we will be examining two distinct evaluation techniques. The first technique will concentrate on the performance testing of the entire LLM application, while the second will be primarily focused on testing the deployed LLM. It's important to remember that these are just two popular instances from a wide-ranging list. Depending on your unique performance requirements, integrating other techniques into your testing strategy may prove beneficial.&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;H3&gt;&lt;SPAN&gt;LLM App Load Testing&lt;/SPAN&gt;&lt;/H3&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Azure Load Testing is a fully managed load-testing service that enables you to generate high-scale LLM App load testing. The service simulates traffic for your applications, regardless of where they're hosted. You can use it to test and optimize application performance, scalability, or capacity of your application. You have the flexibility to create and execute load tests either through the Azure portal or via the Azure Command Line Interface (CLI), managing and running your tests in the way that suits you best.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Azure Load Testing helps you simulate a large number of users sending requests to a server to measure how well an application or service performs under heavy load. You can use Apache JMeter scripts to set up and run these tests. These scripts can act like real users, doing things like interacting with the service, waiting, and using data. In the &lt;/SPAN&gt;&lt;A href="#how-to-guides" target="_self"&gt;How-To Guides&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;section, you will find a guide on how you can test your LLM App with a practical example.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The diagram below shows the high-level architecture of Azure Load Testing. It uses JMeter to simulate heavy server loads and provides detailed performance metrics. You can adjust the number of test engine instances to meet your load test requirements, making the system scalable and robust.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="perftest-azure-load-testing.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/579951i5105A2DACF88C034/image-size/large?v=v2&amp;amp;px=999" role="button" title="perftest-azure-load-testing.png" alt="perftest-azure-load-testing.png" /&gt;&lt;/span&gt;&lt;/DIV&gt;
&lt;DIV class="lia-align-center"&gt;&lt;EM&gt;Azure Load Testing Overview.&lt;/EM&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;LLM App load testing is crucial for identifying performance issues and ensuring that your application and its Azure dependencies (like the App Service, Function App, and Cosmos DB) can handle peak loads efficiently.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The following table offers an explanation of important concepts associated with Azure Load Testing. Grasping these concepts is essential for effectively using Azure's load testing features to evaluate the performance of the LLM App under various load scenarios.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;&lt;STRONG&gt;Concept&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="80%"&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Test&lt;/TD&gt;
&lt;TD width="80%"&gt;Refers to a performance evaluation setup that assesses system behavior under simulated loads by configuring load parameters, test scripts, and target environments.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Test Run&lt;/TD&gt;
&lt;TD width="80%"&gt;Represents the execution of a Test.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Test Engine&lt;/TD&gt;
&lt;TD width="80%"&gt;Engine that runs the JMeter test scripts. Adjust load test scale by configuring test engine instances.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Threads&lt;/TD&gt;
&lt;TD width="80%"&gt;Are parallel threads in JMeter that represent virtual users. They are limited to a maximum of 250.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Virtual Users (VUs)&lt;/TD&gt;
&lt;TD width="80%"&gt;Simulate concurrent users. Calculated as threads * engine instances.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Ramp-up Time&lt;/TD&gt;
&lt;TD width="80%"&gt;Is the time required to reach the maximum number of VUs for the load test.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Latency&lt;/TD&gt;
&lt;TD width="80%"&gt;The latency of an individual request is the total time from just before sending the request to just after the first response is received.&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;Response Time&lt;/TD&gt;
&lt;TD width="80%"&gt;This refers to the duration between sending a request and receiving the full response. It does not include any time spent on client-side response processing or rendering.&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Azure Load Testing allows for the definition of parameters, which include environment variables, secrets, and certificates. Among its features are test scaling, the setting of failure criteria, and the monitoring of server metrics for application components. Additionally, you can use CSV files to define your test data and upload JMeter configurations for flexible, customizable test scripts. &lt;BR /&gt;&lt;BR /&gt;You can securely store keys and credentials used during the test as &lt;A href="https://learn.microsoft.com/en-us/azure/load-testing/how-to-parameterize-load-tests#secrets" target="_self"&gt;Azure Key Vault secrets&lt;/A&gt;, and Azure Load Testing can also have its managed identity for access to Azure resources. When deployed within your virtual network, it can generate load directed at your application's &lt;A href="https://learn.microsoft.com/en-us/azure/load-testing/how-to-test-private-endpoint" target="_self"&gt;private endpoint&lt;/A&gt;. Application &lt;A href="https://learn.microsoft.com/en-us/azure/load-testing/how-to-test-secured-endpoints" target="_self"&gt;authentication&lt;/A&gt; through access tokens, user credentials, or client certificates is also supported, depending on your application's requirements.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;H4&gt;&lt;SPAN&gt;Monitoring Application Resources&lt;/SPAN&gt;&lt;/H4&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;With Azure Load Testing, you can monitor your server-side performance during load tests. You can specify which Azure application components to monitor in the test configuration. You can view these server-side metrics both during the test and afterwards on the load testing dashboard. The following figure shows an example of server-side metrics obtained from an App Service after running a test. You can see the Azure services from which you can obtain server-side metrics &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/load-testing/resource-supported-azure-resource-types" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;in this link&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="perftest-server-metrics.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/579952i441D03945A245F80/image-size/large?v=v2&amp;amp;px=999" role="button" title="perftest-server-metrics.png" alt="perftest-server-metrics.png" /&gt;&lt;/span&gt;
&lt;P&gt; &lt;/P&gt;
&lt;/DIV&gt;
&lt;DIV class="lia-align-center"&gt;&lt;EM&gt;Azure Load Testing Server-side Performance Metrics.&lt;/EM&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;H4&gt;&lt;SPAN&gt;Load Testing Automation&lt;/SPAN&gt;&lt;/H4&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Integrating Azure Load Testing into your CI/CD pipeline is a key step in enhancing your organization's adoption of &lt;STRONG&gt;LLMOps&lt;/STRONG&gt; practices. This integration enables automated load testing, ensuring consistent performance checks at crucial points in the development lifecycle. You can trigger Azure Load Testing directly from Azure DevOps Pipelines or GitHub Actions workflows, providing a simplified and efficient approach to performance testing. Below are some examples of commands to automate the creation and execution of a load test.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;LI-CODE lang="bash"&gt;# Sample command to create a load test
az loadtest create \
  --name $loadTestResource \
  --resource-group $resourceGroup \
  --location $location \
  --test-file @path-to-your-jmeter-test-file.jmx \
  --configuration-file @path-to-your-load-test-config.yaml&lt;/LI-CODE&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;LI-CODE lang="bash"&gt;# Sample command to run the load test
az loadtest run \
  --name $loadTestResource \
  --resource-group $resourceGroup \
  --test-id $testId&lt;/LI-CODE&gt;&lt;/DIV&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;DIV&gt;&lt;SPAN&gt;For more information on configuring a load test and automating these steps using the Azure Command Line Interface (CLI), refer to the &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/load-testing/how-to-configure-load-test-cicd" target="_self"&gt;&lt;SPAN&gt;Azure Load Testing CI/CD configuration guide&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;and the &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/cli/azure/load" target="_self"&gt;&lt;SPAN&gt;Azure CLI reference for load testing&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;H5&gt;&amp;nbsp;&lt;/H5&gt;
&lt;H5&gt;&lt;SPAN&gt;Key Metrics to Monitor During Load Tests&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN&gt;When conducting load tests, it's crucial to monitor certain key metrics to understand how your application performs under stress. These metrics will help you identify any potential bottlenecks or areas that need optimization. Here are some of the most important ones to keep an eye on:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Request Rate&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Monitor the request rate during load testing. Ensure that the LLM application can handle the expected number of requests per second.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Response Time&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Analyze response times under different loads. Identify bottlenecks and optimize slow components.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Throughput&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Measure the number of successful requests per unit of time. Optimize for higher throughput.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Resource Utilization&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Monitor CPU, memory, and disk usage. Ensure efficient resource utilization.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN&gt;Best Practices for Executing Load Tests&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN&gt;To ensure your load tests are effective and yield meaningful insights, it's worthwhile to review the following recommendations. Here are some key strategies to consider:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Test Scenarios&lt;/STRONG&gt;&lt;SPAN&gt;: Create realistic test scenarios that mimic actual user behavior&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Ramp-Up Strategy&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Gradually increase the load to simulate real-world traffic patterns. The warm-up period typically lasts between 20 to 60 seconds. After the warm-up, the actual load test begins&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Think Time&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Include think time between requests to simulate user interactions.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Geographical Distribution&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Test from different Azure regions to assess global performance.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN&gt;Performance Tuning Strategies for LLM Apps&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN&gt;This section discusses performance tuning for LLM Apps. Application performance is heavily influenced by design and architecture. Effective structures can manage high loads, while poor ones may struggle. We'll cover various performance tuning aspects, not all of which may be universally applicable.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H6&gt;&lt;STRONG&gt;Application Design&lt;/STRONG&gt;&lt;/H6&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Optimize Application Code&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Examine and refine the algorithms and backend systems of your LLM application to increase efficiency. Utilize asynchronous processing methods, such as Python's async/await, to elevate application performance. This method allows data processing without interrupting other tasks.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Batch Processing&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Batch LLM requests whenever possible to reduce overhead. Grouping multiple requests for simultaneous processing improves throughput and efficiency by allowing the model to better leverage parallel processing capabilities, thereby optimizing overall performance.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Implement Caching&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;:&amp;nbsp;Use caching for repetitive queries to reduce the application's load and speed up response times. This is especially beneficial in LLM applications where similar questions are frequently asked. Caching answers to common questions minimizes the need to run the model repeatedly for the same inputs, saving both time and computational resources. Some examples of how you can implement this include using &lt;A href="https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-tutorial-semantic-cache" target="_blank" rel="noopener"&gt;Redis&lt;/A&gt; as a semantic cache or &lt;A href="https://learn.microsoft.com/en-us/azure/api-management/azure-openai-semantic-cache-lookup-policy" target="_blank" rel="noopener"&gt;Azure APIM&lt;/A&gt;&amp;nbsp;policies.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Revisit your Retry Logic&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: LLM model deployments might start to operate at their capacity, which can lead to 429 errors. A well-designed retry mechanism can help maintain application responsiveness. With the OpenAI Python SDK, you can opt for an exponential backoff algorithm. This algorithm gradually increases the wait time between retries, helping to prevent service overload. Additionally, consider the option of falling back on another model deployment. For more information, refer to the load balance item in the Solution Architecture section.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H6&gt;&lt;BR /&gt;&lt;STRONG&gt;Prompt Design&lt;/STRONG&gt;&lt;/H6&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Generate Less Tokens&lt;/STRONG&gt;&lt;SPAN&gt;: To reduce model latency, create concise prompts and limit token output. According to the OpenAI &lt;A href="https://platform.openai.com/docs/guides/latency-optimization" target="_blank" rel="noopener"&gt;latency optimization guide&lt;/A&gt;, cutting 50% of your output tokens can reduce latency by approximately 50%. Utilizing the 'max_tokens' parameter can also expedite response time.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Optimize Your Prompt&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: If dealing with large amounts of context data, consider prompt compression methods. Approaches like those offered by &lt;/SPAN&gt;&lt;A href="https://llmlingua.com/llmlingua2.html" target="_self"&gt;&lt;SPAN&gt;LLMLingua-2&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;, fine-tuning the model to reduce lengthy prompts, eliminating superfluous RAG responses, and removing extraneous HTML can be efficient. Trimming your prompt by 50% might only yield a latency reduction of 1-5%, but these strategies can lead to more substantial improvements in performance.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Refine Your Prompt&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Optimize the prompt text by placing dynamic elements, such as RAG results or historical data, toward the end of your prompt. This enhances compatibility with the &lt;/SPAN&gt;&lt;A href="https://arxiv.org/pdf/2211.05102" target="_self"&gt;&lt;SPAN&gt;KV cache system&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;commonly used by most large language model providers. As a result, fewer input tokens need processing with each request, increasing efficiency.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Use Smaller Models&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Whenever possible, pick smaller models because they are faster and more cost-effective. You can improve their responses by using detailed prompts, a few examples, or by fine-tuning.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;H6&gt;&lt;STRONG&gt;Solution Architecture&lt;/STRONG&gt;&lt;/H6&gt;
&lt;BR /&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Provisioned Throughput Deployments&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: When using Azure OpenAI use &lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/provisioned-throughput" target="_self"&gt;provisioned throughput&lt;/A&gt; in scenarios requiring stable latency and predictable performance, avoiding the 'noisy neighbor' issue in regular standard deployments.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Load Balancing LLM Endpoints&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Implement &lt;/SPAN&gt;&lt;A href="https://github.com/Azure-Samples/openai-aca-lb/" target="_self"&gt;&lt;SPAN&gt;load balancing&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;for LLM deployment endpoints. Distribute the workload dynamically to enhance performance based on endpoint latency. Establish suitable rate limits to prevent resource exhaustion and ensure stable latency.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Resource Scaling&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: If services show strain under increased load, consider scaling up resources. Azure allows seamless scaling of CPU, RAM, and storage to meet growing demands.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Network Latency&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;: Position Azure resources, like the Azure OpenAI service, near your users geographically to minimize network latency during data transmission to and from the service.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Azure OpenAI Benchmarking&lt;/SPAN&gt;&lt;/H3&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The &lt;/SPAN&gt;&lt;A href="https://github.com/michaeltremeer/azure-openai-benchmark" target="_self"&gt;Improved Azure OpenAI Benchmarking Tool&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;enables you to assess the performance of Azure OpenAI deployments and choose the ideal model and deployment approach (PTU vs. pay-as-you-go) for your specific needs. It simulates various traffic patterns and provides detailed latency metrics. &lt;/SPAN&gt;&lt;SPAN&gt;This tool is particularly useful during model selection and experimentation in the initial phases of a project, as it assists developers in determining whether the model deployment is appropriately sized for your project needs.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The Benchmarking tool works by creating traffic patterns that mirror the expected test load. The tool can either automatically&lt;/SPAN&gt;&amp;nbsp;generate test requests with random words in the prompt (simulating a workload with a certain number of context tokens), or it can be used with pre-generated messages data, such as data captured or generated from an existing production application. By default, each request is also given a random prefix to ensure that the serving engine processes each request, which is designed to avoid overly positive results that might come from server-side engine optimizations like caching.&amp;nbsp;&lt;SPAN&gt;When conducting the test, it is important to make sure each test runs for long enough for the throughput to reach a stable state, especially when the utilization is close to or at 100%. 180 seconds is generally long enough for most tests. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;
&lt;DIV id="chatGptChatRegion" class="sc-jXbUNg emaryz" role="region" aria-label="Chat area"&gt;
&lt;DIV class="sc-imWYAI sc-jsJBEP bMASkr izzlnU my-custom-scrollbar" data-is-scrollable="true"&gt;
&lt;DIV role="list"&gt;
&lt;DIV role="listitem"&gt;
&lt;DIV class="sc-imWYAI bMASkr"&gt;
&lt;DIV class="sc-imWYAI sc-hzhJZQ bMASkr bhgIfe" data-is-focusable="true"&gt;
&lt;DIV class="sc-imWYAI bMASkr bubble ai" aria-atomic="true"&gt;
&lt;DIV class="sc-jXbUNg emaryz content"&gt;
&lt;DIV class="sc-imWYAI bMASkr" aria-description="chatbot"&gt;
&lt;DIV class="bubbleContent"&gt;
&lt;DIV&gt;
&lt;P&gt;This kind of load test is particularly useful for deployments that are provisioned managed. By altering the number of units of provisioned throughput (PTUs) that are deployed, you can fine-tune the design of your solution. The results of the analysis may require you to change the number of PTUs, or even the whole structure of the solution. For instance, you may decide to use a combination of PTU and Standard deployments for the Azure OpenAI service, and balance the load between two or more deployments.&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;H4&gt;&lt;STRONG&gt;Test Parameters&lt;/STRONG&gt;&lt;/H4&gt;
The benchmarking tool contains a number of configuration parameters to configure the test, as well as two script entry points. The &lt;EM&gt;benchmark.bench&lt;/EM&gt; entry point is the basic script point, while the &lt;EM&gt;benchmark.contrib.batch_runner&lt;/EM&gt;&amp;nbsp;entry point can run batches of multiple workload configurations, and will automatically warm up the model endpoint prior to each test workload. It is recommended to use the &lt;EM&gt;batch_runner&lt;/EM&gt; entry point to ensure accurate results and a much simpler testing process, especially when running tests for multiple workload profiles or when testing with PTU model deployments.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The &lt;A href="https://github.com/michaeltremeer/azure-openai-benchmark" target="_self"&gt;README&lt;/A&gt; details the many different options for configuring and running benchmark tests, but some of the key parameters are as follows:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="35%"&gt;&lt;STRONG&gt;Parameter&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="65%"&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="35%"&gt;rate&lt;/TD&gt;
&lt;TD width="65%"&gt;Controls the frequency of requests in Requests Per Minute (RPM), allowing for detailed management of test intensity.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="35%"&gt;clients&lt;/TD&gt;
&lt;TD width="65%"&gt;Enables you to specify the number of parallel clients that will send requests simultaneously, providing a way to simulate varying levels of user interaction.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;context-generation-method&lt;/TD&gt;
&lt;TD&gt;Allows you to select whether to automatically generate the context data for the test (--context-generation-method generate), or whether to use existing messages data for the test (--context-generation-method replay)&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="35%"&gt;shape-profile&lt;/TD&gt;
&lt;TD width="65%"&gt;Adjusts the request characteristics based on the number of context and generated tokens, enabling precise testing scenarios that reflect different usage patterns. Options include "balanced", "context", "custom" or "generation".&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="35%"&gt;context-tokens (for custom shape-profile)&lt;/TD&gt;
&lt;TD width="65%"&gt;When &lt;EM&gt;context-generation-method = generate&lt;/EM&gt; and &lt;EM&gt;shape-profile = custom&lt;/EM&gt;, this allows you to specify the number of context tokens in the request.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="35%"&gt;max-tokens (for custom shape-profile)&lt;/TD&gt;
&lt;TD width="65%"&gt;This allows you to specify the maximum number of tokens that should be generated in the response.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="35%"&gt;aggregation-window&lt;/TD&gt;
&lt;TD width="65%"&gt;Defines the duration, in seconds, for which the data aggregation window spans. Before the test hits the aggregation-window duration, all stats are computed over a flexible window, equivalent to the elapsed time. This ensures accurate RPM/TPM stats even if the test ends early due to hitting the request limit. A value of 60 seconds or more is recommended.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;log-save-dir&lt;/TD&gt;
&lt;TD&gt;If provided, the test log will be automatically saved to the directory, making analysing and comparing different benchmarking runs simple.&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;STRONG&gt;Warming up PTU endpoints&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;When testing PTU deployments, it is important to warm up the endpoint prior to the benchmarking workload. This is because PTU endpoints &lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/provisioned-throughput#how-does-the-service-decide-when-to-send-a-429" target="_self"&gt;offer a short period of burst capacity&lt;/A&gt; until their utilization reaches 100%, after which they will revert back to providing the same throughput as can be calculated with the PTU capacity calculator (accessible in the Quotas tab of &lt;A href="https://oai.azure.com/portal" target="_self"&gt;Azure OpenAI Studio&lt;/A&gt;). To make this process easier, the &lt;EM&gt;benchmark.bench.batch_runner&lt;/EM&gt; entry point will automatically detect and warm-up PTU endpoints, ensuring accurate and realistic results with minimal effort.&lt;BR /&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;STRONG&gt;Retry Strategy&lt;/STRONG&gt;&lt;/H4&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;The &lt;/SPAN&gt;&lt;STRONG&gt;retry&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;parameter allows you to set the retry strategy for requests, offering options such as "none" or "exponential", which can be crucial for handling API request failures effectively. When setting up a retry strategy for Azure OpenAI benchmarking, it's crucial to select an approach that carefully balances resource capacity to avoid skewing latency statistics. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;When running a test with retry=&lt;STRONG&gt;none&lt;/STRONG&gt;, throttled requests are immediately retried with a reset start time, and latency metrics only reflect the final successful attempt, which may not represent the end user's experience. Use this setting for workloads within resource limits without throttling or to assess how many requests need redirecting to a backup during peak loads that surpass the primary resource’s capacity.&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Conversely, with retry=&lt;STRONG&gt;exponential&lt;/STRONG&gt;, failed or throttled requests are retried with exponential backoff, up to 60 seconds. This approach is only recommended when testing endpoints that have automatic rerouting to a backup resource, and can result in unrealistic latency metrics if used with a test configuration that would ordinarily result in throttling. In general, &lt;U&gt;always use retry=&lt;STRONG&gt;none&lt;/STRONG&gt;&lt;/U&gt; unless you have backup resources configured behind an endpoint.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;H4&gt;&lt;STRONG&gt;Output Metrics&lt;/STRONG&gt;&lt;/H4&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;When you run the test, you will obtain average and 95th percentile metrics from the following measures:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;&lt;STRONG&gt;measure&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="80%"&gt;&lt;STRONG&gt;description&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;ttft&lt;/TD&gt;
&lt;TD width="80%"&gt;Time to First Token. Time in seconds from the beginning of the request until the first token was received.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;tbt&lt;/TD&gt;
&lt;TD width="80%"&gt;Time Between Tokens. Time in seconds between two consecutive generated tokens.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;e2e&lt;/TD&gt;
&lt;TD width="80%"&gt;End to end response time.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;context_tpr&lt;/TD&gt;
&lt;TD&gt;Number of context tokens per request.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;gen_tpr&lt;/TD&gt;
&lt;TD&gt;Number of generated tokens per request.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;util&lt;/TD&gt;
&lt;TD width="80%"&gt;Azure OpenAI deployment utilization percentage as reported by the service (only for PTU deployments).&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;H4&gt;&lt;STRONG&gt;Sample Scenarios &lt;/STRONG&gt;&lt;/H4&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H5&gt;&lt;STRONG&gt;1. Using the &lt;EM&gt;benchmark.bench&lt;/EM&gt; entrypoint&lt;/STRONG&gt;&lt;/H5&gt;
&lt;DIV&gt;&lt;SPAN&gt;In the following example, taken from the tool's README, the benchmarking tool tests a traffic pattern that sends requests to the gpt-4 deployment in the 'myaccount' Azure OpenAI resource at a rate of 60 requests per minute, with the retry set to none, and with all logs saved to the &lt;EM&gt;logs/&lt;/EM&gt; directory. The default traffic shape is used, where each request contains 1000 context tokens, and the maximum response size is limited to 500 tokens.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;LI-CODE lang="bash"&gt;$ python -m benchmark.bench load \
    --deployment gpt-4 \
    --rate 60 \
    --retry none \
    --log-save-dir logs/ \
    https://myaccount.openai.azure.com

2023-10-19 18:21:06 INFO     using shape profile balanced: context tokens: 500, max tokens: 500
2023-10-19 18:21:06 INFO     warming up prompt cache
2023-10-19 18:21:06 INFO     starting load...
2023-10-19 18:21:06 rpm: 1.0   requests: 1     failures: 0    throttled: 0    ctx tpm: 501.0  gen tpm: 103.0  ttft avg: 0.736  ttft 95th: n/a    tbt avg: 0.088  tbt 95th: n/a    e2e avg: 1.845  e2e 95th: n/a    util avg: 0.0%   util 95th: n/a   
2023-10-19 18:21:07 rpm: 5.0   requests: 5     failures: 0    throttled: 0    ctx tpm: 2505.0 gen tpm: 515.0  ttft avg: 0.937  ttft 95th: 1.321  tbt avg: 0.042  tbt 95th: 0.043  e2e avg: 1.223 e2e 95th: 1.658 util avg: 0.8%   util 95th: 1.6%  
2023-10-19 18:21:08 rpm: 8.0   requests: 8     failures: 0    throttled: 0    ctx tpm: 4008.0 gen tpm: 824.0  ttft avg: 0.913  ttft 95th: 1.304  tbt avg: 0.042  tbt 95th: 0.043  e2e avg: 1.241 e2e 95th: 1.663 util avg: 1.3%   util 95th: 2.6% &lt;/LI-CODE&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;H5&gt;&lt;STRONG&gt;2. Using the &lt;EM&gt;benchmark.contrib.batch_runner&lt;/EM&gt; entrypoint&lt;/STRONG&gt;&lt;/H5&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;In the following example, taken from the tool's README, the batch_runner executes the following two traffic patterns for 120 seconds each,&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;making sure to automatically warm up the endpoint prior to each run, and also saving all request input and output content from each run:&lt;/SPAN&gt;
&lt;UL dir="auto"&gt;
&lt;LI&gt;context_tokens=500, max_tokens=100, rate=20&lt;/LI&gt;
&lt;LI&gt;context_tokens=3500, max_tokens=300, rate=7.5&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;With the &lt;EM&gt;num-batches&lt;/EM&gt; and &lt;EM&gt;batch-start-interval&lt;/EM&gt; parameters, it will also run the same batch of tests every hour over the next 4 hours:&lt;/SPAN&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;LI-CODE lang="bash"&gt;$ python -m benchmark.contrib.batch_runner https://myaccount.openai.azure.com/ \
    --deployment gpt-4-1106-ptu --context-generation-method generate \
    --token-rate-workload-list 500-100-20,3500-300-7.5 --duration 130 \
    --aggregation-window 120 --log-save-dir logs/ \
    --start-ptum-runs-at-full-utilization true --log-request-content true \
    --num-batches 5 --batch-start-interval 3600&lt;/LI-CODE&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;P&gt;For more detailed examples, refer to &lt;A href="https://github.com/michaeltremeer/azure-openai-benchmark" target="_self"&gt;the README&lt;/A&gt; within the repository.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Processing and Analyzing the Log Files&lt;/STRONG&gt;&lt;/H4&gt;
After running the tests, the separate logs can be automatically processed and combined into a single output CSV. This CSV will contain all configuration parameters, aggregate performance metrics, and the timestamps, call status and content of every individual request.&lt;/DIV&gt;
&lt;DIV&gt;&lt;LI-CODE lang="bash"&gt;$ python -m benchmark.contrib.combine_logs logs/ combined_logs.csv --load-recursive&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With the combined CSV file, the runs can now easily be compared to each other, and with the individual request data, more detailed graphs that plot all request activity over time can be generated.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;SPAN&gt;Monitoring AOAI Resource&lt;/SPAN&gt;&lt;/H4&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Configuring &lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/monitoring#configure-diagnostic-settings" target="_self"&gt;diagnostic settings&lt;/A&gt; for Azure OpenAI Service is a good practice for monitoring the availability, performance, and operation of your Azure resources during performance tests. These settings allow the collection and analysis of metrics and log data from your Azure OpenAI resource.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;After configuring the diagnostic settings, you can start querying the generated logs. Simply access your Azure OpenAI resource in the portal and then select Logs in the Monitoring section. Next, click on the Log Analytics Workspace that you selected during the diagnostic settings configuration and select the workspace's Logs option.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Below is a query example that retrieves logs from AzureDiagnostics for "ChatCompletions_Create" operations, conducted between 3:30 PM and 4:30 PM on April 26, 2024. It selects logs with details such as timestamp, resource, operation, duration, response code, and additional properties, enabling a detailed analysis of the operation's performance and outcomes during that hour.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;LI-CODE lang="sql"&gt;AzureDiagnostics
| where TimeGenerated between(datetime(2024-04-26T15:30:00) .. datetime(2024-04-26T16:30:00))
| where OperationName == "ChatCompletions_Create"
| project TimeGenerated, _ResourceId, Category, OperationName, DurationMs, ResultSignature, properties_s​&lt;/LI-CODE&gt;&lt;BR /&gt;&lt;BR /&gt;
&lt;DIV&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="perftest-azure-diagnostics.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/579953iE23F78B6376BF956/image-size/large?v=v2&amp;amp;px=999" role="button" title="perftest-azure-diagnostics.png" alt="perftest-azure-diagnostics.png" /&gt;&lt;/span&gt;&lt;/DIV&gt;
&lt;DIV class="lia-align-center"&gt;&lt;EM&gt;Analyzing Azure OpenAI Metrics with Azure Monitor.&lt;/EM&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;H2 id="how-to-guides"&gt;&lt;SPAN&gt;How-To Guides&lt;/SPAN&gt;&lt;/H2&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;SPAN&gt;Now that you understand the concepts for conducting performance tests, you can refer to the following sections where we provide a detailed guide on how to use the tools mentioned in the text to test your LLM App or your Azure OpenAI model deployment.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://github.com/Azure/GPT-RAG/blob/insiders/docs/LOAD_TESTING.md" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;LLM RAG application testing with Azure Load Testing&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://github.com/microsoft/llmops-workshop/blob/development/labs/performance/docs/AOAI_BENCH_TOOL.md" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Model deployment testing with AOAI Benchmarking Tool&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;Wrapping Up&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In conclusion, performance evaluation is crucial in optimizing LLM applications. By understanding your application's specifics, creating an efficient strategy, and utilizing appropriate tools, you can tackle performance issues effectively. This boosts user experience and ensures that your application can handle real-world demands. Regular performance evaluations using methods such as load testing, benchmarking, and continuous monitoring can lead to your LLM application's ultimate success.&lt;/P&gt;
&lt;/DIV&gt;</description>
      <pubDate>Mon, 27 May 2024 18:10:31 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/load-testing-rag-based-generative-ai-applications/ba-p/4086993</guid>
      <dc:creator>ogkranthi</dc:creator>
      <dc:date>2024-05-27T18:10:31Z</dc:date>
    </item>
    <item>
      <title>Optimizing ETL Workflows: A Guide to Azure Integration and Authentication with Batch and Storage</title>
      <link>https://techcommunity.microsoft.com/t5/azure-data-factory-blog/optimizing-etl-workflows-a-guide-to-azure-integration-and/ba-p/4138729</link>
      <description>&lt;H2&gt;&lt;FONT size="5"&gt;Introduction&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT size="3"&gt;When it comes to building a robust foundation for ETL (Extract, Transform, Load) pipelines, the trio of Azure Data Factory or Azure Synapse Analytics, Azure Batch, and Azure Storage is indispensable. These tools enable efficient data movement, transformation, and processing across diverse data sources, thereby helping us achieve our strategic goals.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="3"&gt;This document provides a comprehensive guide on how to authenticate Azure Batch with SAMI and Azure Storage with Synapse SAMI. This enables user-driven connectivity to storage, facilitating data extraction. Furthermore, it allows the use of custom activities, such as High-Performance Computing (HPC), to process the extracted data.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="3"&gt;The key enabler of these functionalities is the Synapse Pipeline. Serving as the primary orchestrator, the Synapse Pipeline is adept at integrating various Azure resources in a secure manner. Its capabilities can be extended to Azure Data Factory (ADF), providing a broader scope of data management and transformation.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="3"&gt;Through this guide, you will gain insights into leveraging these powerful Azure services to optimize your data processing workflows.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;FONT size="5"&gt;Services Overview&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT size="3"&gt;During this procedure we will use different services, below you have more details about each of them.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Azure Synapse Analytics / Data Factory&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Azure Synapse Analytics&amp;nbsp;is an enterprise analytics service that accelerates time to insight across data warehouses and big data systems. Azure Synapse brings together the best of SQL technologies used in enterprise data warehousing, Spark technologies used for big data, Data Explorer for log and time series analytics, Pipelines for data integration and ETL/ELT, and deep integration with other Azure services such as Power BI, CosmosDB, and AzureML.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Documentation:&lt;/FONT&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/synapse-analytics/overview-what-is" target="_blank" rel="noopener"&gt;What is Azure Synapse Analytics? - Azure Synapse Analytics | Microsoft Learn&lt;/A&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/data-factory/introduction" target="_blank" rel="noopener"&gt;&lt;FONT size="3"&gt;Introduction to Azure Data Factory - Azure Data Factory | Microsoft Learn&lt;/FONT&gt;&lt;/A&gt;&lt;BR /&gt;&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/UL&gt;
&lt;H4&gt;Azure Batch&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Azure Batch&amp;nbsp;is a powerful platform service designed for running large-scale parallel and high-performance computing (HPC) applications in the cloud.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Documentation: &lt;/FONT&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/batch/batch-technical-overview" target="_blank" rel="noopener"&gt;&lt;FONT size="3"&gt;Azure Batch runs large parallel jobs in the cloud - Azure Batch | Microsoft Learn&lt;/FONT&gt;&lt;/A&gt;&lt;BR /&gt;&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;FONT size="4"&gt;Azure Storage&lt;/FONT&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Azure Storage&amp;nbsp;provides scalable and secure storage services for various data types, including services like&amp;nbsp;&lt;STRONG&gt;Azure Blob storage&lt;/STRONG&gt;,&amp;nbsp;&lt;STRONG&gt;Azure Table storage&lt;/STRONG&gt;, and&amp;nbsp;&lt;STRONG&gt;Azure Queue storage&lt;/STRONG&gt;.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Documentation: &lt;/FONT&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/storage/common/storage-introduction" target="_blank" rel="noopener"&gt;&lt;FONT size="3"&gt;Introduction to Azure Storage - Cloud storage on Azure | Microsoft Learn&lt;/FONT&gt;&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;Managed Identities&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Azure Managed Identities are a feature of Azure Active Directory that automatically manages credentials for applications to use when connecting to resources that support Azure AD authentication. They eliminate the need for developers to manage secrets, credentials, certificates, and keys.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;There are two types of managed identities:&lt;/FONT&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;System-assigned: Tied to your application.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;User-assigned: A standalone Azure resource that can be assigned to your app&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Documentation:&amp;nbsp;&lt;/FONT&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview" target="_blank" rel="noopener"&gt;&lt;FONT size="3"&gt;Managed identities for Azure resources - Managed identities for Azure resources | Microsoft Learn&lt;/FONT&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H6&gt;&amp;nbsp;&lt;/H6&gt;
&lt;H2&gt;&lt;FONT size="5"&gt;Scenario&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT size="3"&gt;Run an ADF / Synapse Pipeline that pulls a script located in a Storage Account and execute it into the Batch nodes using User Assigned Managed Identities (UAMI) for Authentication to Storage and System Assigned Managed Identity (SAMI) to authenticate with Batch.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;FONT size="5"&gt;Prerequisites&lt;/FONT&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;&lt;EM&gt;ADF / Synapse Workspace&lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Documentation: &lt;A href="https://learn.microsoft.com/en-us/azure/synapse-analytics/quickstart-create-workspace" target="_blank" rel="noopener"&gt;Quickstart: create a Synapse workspace - Azure Synapse Analytics | Microsoft Learn&lt;/A&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;&lt;EM&gt;UA Managed Identity&lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Documentation: &lt;A href="https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-manage-user-assigned-managed-identities?pivots=identity-mi-methods-azp" target="_blank" rel="noopener"&gt;Manage user-assigned managed identities - Managed identities for Azure resources | Microsoft Learn&lt;/A&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Blog Documentation: &lt;A href="https://techcommunity.microsoft.com/t5/azure-data-factory-blog/support-for-user-assigned-managed-identity-in-azure-data-factory/ba-p/2841013" target="_blank" rel="noopener"&gt;https://techcommunity.microsoft.com/t5/azure-data-factory-blog/support-for-user-assigned-managed-identity-in-azure-data-factory/ba-p/2841013&lt;/A&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;&lt;EM&gt;Storage Account&lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Documentation: &lt;/FONT&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/storage/common/storage-account-create?tabs=azure-portal" target="_blank" rel="noopener"&gt;&lt;FONT size="3"&gt;Create a storage account - Azure Storage | Microsoft Learn&lt;/FONT&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/UL&gt;
&lt;H6&gt;&amp;nbsp;&lt;/H6&gt;
&lt;H4&gt;&lt;FONT size="5"&gt;Procedure Overview&lt;/FONT&gt;&lt;/H4&gt;
&lt;P&gt;&lt;FONT size="3"&gt;During this procedure we will walk through step by step to complete the following actions:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Create UAMI Credentials&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Create Linked Services for Storage and Batch Accounts&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Add UAMI and SAMI to Storage and Batch Accounts&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Create, Configure and Execute an ADF / Synapse Pipeline&lt;/FONT&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;We will refer to ADF (Portal, Workspace, Pipelines, Jobs, Linked Services) as Synapse during all the exercise and examples to avoid redundancy.&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Debugging&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;FONT size="5"&gt;Procedure&lt;/FONT&gt;&lt;/H4&gt;
&lt;H5&gt;&lt;FONT size="4"&gt;Create UAMI Credentials&lt;/FONT&gt;&lt;/H5&gt;
&lt;P&gt;&lt;FONT size="3"&gt;1. In your Synapse Portal, go to Manage -&amp;gt; Credentials -&amp;gt; New and fill in the details and click&amp;nbsp;Create.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_0-1715603461051.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580310i6FD6FB91A1B0EF62/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_0-1715603461051.png" alt="Josedobla_0-1715603461051.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;FONT size="4"&gt;Create Linked Services Connections for Storage and Batch&lt;/FONT&gt;&lt;/H5&gt;
&lt;P&gt;2. In your Synapse Portal, go to Manage - Linked Services -&amp;gt; New -&amp;gt; Azure Blob Storage -&amp;gt; Continue and complete the form&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;a. Authentication Type: UAMI&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;b. Azure Subscription: Choose your one&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;c. Storage Account name: Choose your one where the script to be used is allocated&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;d. Credentials: choose the created into the Step #1&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;e. Click on Create&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_1-1715603461052.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580311iB0C161193D6D1C67/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_1-1715603461052.png" alt="Josedobla_1-1715603461052.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="3"&gt;3. In Azure Portal go to your Batch Account -&amp;gt; Keys and Copy the Batch Account name &amp;amp; Account Endpoint to be used in next step, also copy the Pool Name to be used for this example.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_2-1715603461052.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580312i5C005CDEF8F6352C/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_2-1715603461052.png" alt="Josedobla_2-1715603461052.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="3"&gt;4. In your Synapse Portal, go to Manage -&amp;gt; Linked Services -&amp;gt; New -&amp;gt; Azure Batch -&amp;gt; Continue and fill in the information&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="3"&gt;a. Authentication Method: SAMI (Copy the Managed Identity Name to be used later)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="3"&gt;b. Account Name, Batch URL and Pool Name: Paste on here the values copied from Step#3&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="3"&gt;c. Storage linked service Name: Choose the one created from Step#2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_3-1715603461053.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580315i5F05F69710119097/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_3-1715603461053.png" alt="Josedobla_3-1715603461053.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;FONT size="3"&gt;5. Publish all your changes&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_4-1715603461054.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580314iAADC4BE20BB8BFC3/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_4-1715603461054.png" alt="Josedobla_4-1715603461054.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;FONT size="4"&gt;Adding UAMI RBAC Roles to Storage Account&lt;/FONT&gt;&lt;/H5&gt;
&lt;P&gt;&lt;FONT size="3"&gt;6. In the Azure Portal, go to your Storage Account -&amp;gt; Access Control (IAM)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="3"&gt;a. Click on Add Option and then on Add role assignment and search for "Storage Blob Data Contributor", then click on Next.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_5-1715603461055.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580313iB353BA26ACE9B42D/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_5-1715603461055.png" alt="Josedobla_5-1715603461055.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_6-1715603461055.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580316i6D8075F5C95014E4/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_6-1715603461055.png" alt="Josedobla_6-1715603461055.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="3"&gt;b. Choose Managed Identity and select your UAMI click on Select and then click Next, Next and Review + assign.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_7-1715603461055.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580318iDF40517D6C32AF8B/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_7-1715603461055.png" alt="Josedobla_7-1715603461055.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_8-1715603461056.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580317i63ADB2D9F12B19C6/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_8-1715603461056.png" alt="Josedobla_8-1715603461056.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;FONT size="4"&gt;Adding SAMI RBAC Roles to Batch Account&lt;/FONT&gt;&lt;/H5&gt;
&lt;P&gt;&lt;FONT size="3"&gt;7. In the Azure Portal, go to your Batch Account -&amp;gt; Access Control (IAM)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="3"&gt;a. Click on Add Option and then on Add role assignment&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_9-1715603461057.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580319iF53D9E9009FABA6D/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_9-1715603461057.png" alt="Josedobla_9-1715603461057.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="3"&gt;b. Click on "Privileged administrator roles" tab and then choose the Contributor role and click Next.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_10-1715603461057.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580320i15910DC23F29803D/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_10-1715603461057.png" alt="Josedobla_10-1715603461057.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="3"&gt;c. Choose Managed Identity and under Managed Identity lookup for "Synapse workspace" and then choose the SAMI same as it is added into the step 4a., then click on Select and Next, Next and Review and Assign.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_11-1715603461057.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580321i8C87F30891FDFB1A/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_11-1715603461057.png" alt="Josedobla_11-1715603461057.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_12-1715603461058.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580324i8BC94C9FD53EB0EF/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_12-1715603461058.png" alt="Josedobla_12-1715603461058.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;FONT size="4"&gt;Adding UAMI to Batch Pool&lt;/FONT&gt;&lt;/H5&gt;
&lt;P&gt;&lt;FONT size="3"&gt;If you need to create a new Batch Pool, you can follow the following procedure:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Documentation: &lt;A href="https://learn.microsoft.com/en-us/azure/batch/managed-identity-pools" target="_blank" rel="noopener"&gt;Configure managed identities in Batch pools - Azure Batch | Microsoft Learn&lt;/A&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="3"&gt;Make sure to select the UAMI configured into the Step 1&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;FONT size="3"&gt;8. If you already have a Batch Pool created follow the next steps:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="3"&gt;a. Into the Azure Portal go to your Batch Account -&amp;gt; Pools -&amp;gt; Choose your Pool -&amp;gt; Go to Identity&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_13-1715603461058.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580325i1965F0E41A9A5EFF/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_13-1715603461058.png" alt="Josedobla_13-1715603461058.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="3"&gt;b. Click on Add then choose the necessary UAMI (on this example it was selected the one used by the Synapse Linked Services for Storage and another one used for other integrations) and click on Add.&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="3"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="3"&gt;&lt;EM&gt;&lt;STRONG&gt;Important&lt;/STRONG&gt;&lt;/EM&gt;: &lt;EM&gt;In case your Batch Pool use multiples UAMI's (as example to connect with Key Vault or other services), you have first to remove the existing one and then add all of them together.&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_14-1715603461059.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580323i4546226AA1D8F59F/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_14-1715603461059.png" alt="Josedobla_14-1715603461059.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_15-1715603461060.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580327i578B18E3E6F3CD60/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_15-1715603461060.png" alt="Josedobla_15-1715603461060.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;c. Then, it is required to Scale in and Scale out the Pool to apply the changes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_16-1715603461060.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580328i9690FFA09850BFDC/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_16-1715603461060.png" alt="Josedobla_16-1715603461060.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;FONT size="4"&gt;Setting up the Pipeline&lt;/FONT&gt;&lt;/H5&gt;
&lt;P&gt;9. In your Synapse Portal, go to Integrate -&amp;gt; Add New Resource -&amp;gt; Pipeline&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_17-1715603461061.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580326i297AC612565EE3F1/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_17-1715603461061.png" alt="Josedobla_17-1715603461061.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;10. Into the right panel Activities -&amp;gt; Batch Services -&amp;gt; Drag and drop the Custom activities&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_18-1715603461061.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580331iB14096F6D6356B2D/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_18-1715603461061.png" alt="Josedobla_18-1715603461061.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;11. In the Azure Batch tab details for the Custom Activities, click on the Azure Batch linked service and click the one created in Step &lt;/SPAN&gt;&lt;SPAN&gt;4 and test the connection (if you receive a connection error, please go to the Troubleshooting scenario 1)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_19-1715603461062.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580329i60F01CBD333A10CD/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_19-1715603461062.png" alt="Josedobla_19-1715603461062.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_20-1715603461062.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580330iEFE1379C23C0B2D2/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_20-1715603461062.png" alt="Josedobla_20-1715603461062.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;12. Then go to Settings tab and add your script. Ffor this example, we will use a Powershell script previously uploaded to a Storage Blob Container and send the output to txt file.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;a. Command: your script details&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;b. Resource linked Service: The Storage Service Linked connection configured previously on Step#2&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;c. Browse Storage: lookup for the Container where your script was uploaded&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_21-1715603461062.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580334iE078194D9EF07EE8/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_21-1715603461062.png" alt="Josedobla_21-1715603461062.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d. Publish your Changes and perform a Debug&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_22-1715603461063.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580332i7ADB82D15CEB6A44/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_22-1715603461063.png" alt="Josedobla_22-1715603461063.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_23-1715603461063.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580333iDA87970D396F856F/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_23-1715603461063.png" alt="Josedobla_23-1715603461063.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_24-1715603461064.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580336i0284E3BEE276FAF0/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_24-1715603461064.png" alt="Josedobla_24-1715603461064.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;FONT size="4"&gt;Debugging&lt;/FONT&gt;&lt;/H5&gt;
&lt;P&gt;12. Check the Synapse Jobs Logs and outputs&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;a. Copy the Activity Run ID&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_25-1715603461065.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580337i8612F6BC6EB67584/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_25-1715603461065.png" alt="Josedobla_25-1715603461065.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;b. Then, in the Azure Portal Go to your Storage Account -&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt; Containers -&amp;gt; adfjobs -&amp;gt; select the folder with the activityID -&amp;gt; output.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c. On here you will find two files, "stderr.txt" and "stdout.txt" both of them contains information about the errors or the outputs of the commands executed during the task execution&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_26-1715603461065.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580335i4C6895E380DA2BD6/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_26-1715603461065.png" alt="Josedobla_26-1715603461065.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;13. Check the Batch Logs and outputs. To get the Batch logs you have different ways:&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;a. Over Nodes: In Azure Portal go to your Batch Account -&amp;gt; Pools -&amp;gt; Choose your Pool -&amp;gt; Nodes -&amp;gt; then into the Folders details go to the folder for this Synapse execution -&amp;gt; job-x -&amp;gt; lookup for the activityID &lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_27-1715603461066.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580338i3C40099CE8ED7E21/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_27-1715603461066.png" alt="Josedobla_27-1715603461066.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;b. Over Jobs: In Azure Portal go to your Batch Account -&amp;gt; Jobs -&amp;gt; Select a pool with a name of adfv2-yourPoolName -&amp;gt; click on the Task with the ID same as it was the ActivityID of the Synapse Pipeline from step 12a.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Josedobla_28-1715603461067.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/580339i37102BD2270E1A60/image-size/large?v=v2&amp;amp;px=999" role="button" title="Josedobla_28-1715603461067.png" alt="Josedobla_28-1715603461067.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;What we have learned&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;During this walkthrough procedure we have learned and implemented about&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Authentication&lt;/STRONG&gt;: Utilizing User Assigned Managed Identities (UAMI) and System Assigned Managed Identity (SAMI) for secure connections.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Linked Services&lt;/STRONG&gt;: Creation and configuration of linked services for Azure Storage and Azure Batch accounts.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Pipeline Execution&lt;/STRONG&gt;: Steps to create, configure, and execute an ADF/Synapse Pipeline, emphasizing the use of Synapse as a unified term to avoid redundancy.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Debugging&lt;/STRONG&gt;: Detailed instructions for creating credentials, adding RBAC roles, and setting up pipelines, along with troubleshooting tips.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Logs Analysis&lt;/STRONG&gt;: How to access and analyze Synapse Jobs logs and Azure Batch logs for troubleshooting.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Error Handling&lt;/STRONG&gt;: Understanding the significance of ‘stderr.txt’ and ‘stdout.txt’ files in identifying and resolving errors during task execution.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If you have any questions or feedback, please leave a comment below!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 27 May 2024 17:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-data-factory-blog/optimizing-etl-workflows-a-guide-to-azure-integration-and/ba-p/4138729</guid>
      <dc:creator>Josedobla</dc:creator>
      <dc:date>2024-05-27T17:00:00Z</dc:date>
    </item>
    <item>
      <title>Microsoft Outlook introduces SMS on Outlook Lite</title>
      <link>https://techcommunity.microsoft.com/t5/outlook-blog/microsoft-outlook-introduces-sms-on-outlook-lite/ba-p/4089543</link>
      <description>&lt;P&gt;Since its launch in 2022, Outlook Lite has provided a way to enjoy the key features of Outlook in a small download size for low-resource phones. We are continuously looking for ways to meet the communication needs of our core users. Now, we are excited to bring SMS on Outlook Lite to users worldwide. With SMS on Outlook Lite, you can enjoy the convenience and security of sending and receiving SMS messages from your Outlook Lite app. SMS is integrated with your email, calendar, and contacts, so you can stay in touch with your contacts in one app.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;SMS on Outlook Lite is now available in the latest version of the app, which you can download from the &lt;A href="https://play.google.com/store/apps/details?id=com.microsoft.outlooklite&amp;amp;pcampaignid=web_share" target="_self"&gt;Google Play Store&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;How to get started with SMS on Outlook Lite?&lt;/P&gt;
&lt;P&gt;Getting started with SMS on Outlook Lite is easy and fast. Just follow these steps:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1. Download Outlook Lite from the Google Play Store (&lt;A href="https://play.google.com/store/apps/details?id=com.microsoft.outlooklite&amp;amp;pcampaignid=web_share" target="_self"&gt;here&lt;/A&gt;). If you already have Outlook Lite, make sure you update to the latest version.&lt;/P&gt;
&lt;P&gt;2. Open Outlook Lite and click on the bottom tab icon named “SMS”&lt;/P&gt;
&lt;P&gt;3. Give required permissions to activate SMS.&lt;/P&gt;
&lt;P&gt;4. That's it! You can now send and receive SMS messages from Outlook Lite.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Keerthana_AK_0-1710839794868.png" style="width: 385px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/562828iC32806D62C2C0691/image-dimensions/385x684?v=v2" width="385" height="684" role="button" title="Keerthana_AK_0-1710839794868.png" alt="Keerthana_AK_0-1710839794868.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P aria-level="1"&gt;&lt;STRONG&gt;What's next for SMS on Outlook Lite?&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We are working on adding more features and improvements to SMS on Outlook Lite, such as:&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;:279}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559683&amp;quot;:0,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&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;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Tighter integration with Email, Calendar and Contacts&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:false,&amp;quot;134233118&amp;quot;:false,&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:1,&amp;quot;335551620&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559737&amp;quot;:0,&amp;quot;335559738&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:279,&amp;quot;335559991&amp;quot;:360}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559683&amp;quot;:0,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&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;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Cloud backup of messages&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:false,&amp;quot;134233118&amp;quot;:false,&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:1,&amp;quot;335551620&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559737&amp;quot;:0,&amp;quot;335559738&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:279,&amp;quot;335559991&amp;quot;:360}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559683&amp;quot;:0,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&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;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;Enhanced Security features.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We would love to hear your feedback and suggestions on SMS on Outlook Lite. You can contact us through the app, or by leaving a comment on this blog post. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Thank you for using Outlook Lite!&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;:279}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:279}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 27 May 2024 16:30:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/outlook-blog/microsoft-outlook-introduces-sms-on-outlook-lite/ba-p/4089543</guid>
      <dc:creator>Keerthana_AK</dc:creator>
      <dc:date>2024-05-27T16:30:00Z</dc:date>
    </item>
    <item>
      <title>Lesson Learned #494: High number of Executions Plans for a Single Query</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-support-blog/lesson-learned-494-high-number-of-executions-plans-for-a-single/ba-p/4152942</link>
      <description>&lt;P&gt;Today, I worked on a service request where our customer detected a high number of execution plans consuming resources in the plan cache for a single query. I would like to share my lessons learned and experience to prevent this type of issue.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;We have the following table definition:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;CREATE Table TestTable(ID INT IDENTITY(1,1), string_column NVARCHAR(500))

--We added dummy data in the table running the following script. 
DECLARE @Total INT = 40000;
DECLARE @I int =0
DECLARE @Fill INT;
DECLARE @Letter INT;
WHILE @i &amp;lt;= @Total
BEGIN
    SET @I=@I+1
	SET @Letter = CAST((RAND(CHECKSUM(NEWID())) * (90 - 65 + 1)) + 65 AS INT)
    set @Fill = CAST((RAND(CHECKSUM(NEWID())) * 500) + 1 AS INT)
	INSERT INTO TestTable (string_column) values(REPLICATE(CHAR(@Letter),@Fill))
end

-- Finally, we created a new index for this column.
create index TestTable_Ix1 on TestTable (String_column)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Our customer identified that the application is generating this query:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;SELECT TOP 1 * FROM TestTable WHERE string_column = N'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To reproduce the issue and understand the impact about how many execution plan our customer reported,&amp;nbsp;we started running the demo function called&amp;nbsp;&lt;STRONG&gt;StartAdhocNoParam&lt;/STRONG&gt;: This function executes a non-parameterized query. Running the following DMV to identify the number of plans we could see around 13K cached plans.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;-- dbcc freeproccache --Only to clear the cache.

WITH XMLNAMESPACES (DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan')
SELECT
    qs.sql_handle,
    qs.execution_count,
    qs.total_elapsed_time,
    qs.total_logical_reads,
    qs.total_logical_writes,
    qs.total_worker_time,
    qs.creation_time,
    qs.last_execution_time,
    st.text AS sql_text,
    qp.query_plan
FROM
    sys.dm_exec_query_stats AS qs
CROSS APPLY
    sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY
    sys.dm_exec_query_plan(qs.plan_handle) AS qp
WHERE
    st.text LIKE '%SELECT TOP 1 * FROM TestTable%'&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jose_Manuel_Jurado_0-1716816236755.png" style="width: 656px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586206iA1EBA78F9764A0A3/image-dimensions/656x324?v=v2" width="656" height="324" role="button" title="Jose_Manuel_Jurado_0-1716816236755.png" alt="Jose_Manuel_Jurado_0-1716816236755.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this situation, we changed the property of the database called &lt;STRONG&gt;Parameterization to Force&lt;/STRONG&gt;, to&amp;nbsp; This resulted in only one execution plan with a parameter. That's is great but our customer wants to modify the source code and avoiding using&amp;nbsp;&lt;STRONG&gt;Parameterization to Force.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jose_Manuel_Jurado_1-1716817250447.png" style="width: 667px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586212i8AEE0A80AE81607B/image-dimensions/667x40?v=v2" width="667" height="40" role="button" title="Jose_Manuel_Jurado_1-1716817250447.png" alt="Jose_Manuel_Jurado_1-1716817250447.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Additionally:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;OPTIMIZE_FOR_AD_HOC_WORKLOADS&lt;/STRONG&gt; might reduce the memory usage, altohough it may not promote the plan reuse -&amp;nbsp;&lt;A href="https://techcommunity.microsoft.com/t5/sql-server-blog/database-scoped-optimizing-for-ad-hoc-workloads/ba-p/385808" target="_blank" rel="noopener"&gt;Database scoped optimizing for ad hoc workloads - Microsoft Community Hub&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jose_Manuel_Jurado_0-1716819284361.png" style="width: 568px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586223iB25AB1D94D3838D3/image-dimensions/568x206?v=v2" width="568" height="206" role="button" title="Jose_Manuel_Jurado_0-1716819284361.png" alt="Jose_Manuel_Jurado_0-1716819284361.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Also, review the &lt;STRONG&gt;option called plan guides that might help on that&lt;/STRONG&gt; -&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/sql/relational-databases/performance/create-a-new-plan-guide?view=sql-server-ver16" target="_blank" rel="noopener"&gt;Create a New Plan Guide - SQL Server | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When our customer finished the modification of their code, we noticed that their application is not specifing the size of parameter or specifing the length of the text that the application is searching, like we could see in the function demo&amp;nbsp;&lt;STRONG&gt;StartAdhocWithParam&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This function is going to run a parametrized query using different length for the parameter, because, for example, if the application is not specifying the length of the parameter or the text that is looking for. In this situation, running the DMV to identify the number of plans we could see around 500 cached plans.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jose_Manuel_Jurado_0-1716818008479.png" style="width: 666px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586215iD57734422155E761/image-dimensions/666x237?v=v2" width="666" height="237" role="button" title="Jose_Manuel_Jurado_0-1716818008479.png" alt="Jose_Manuel_Jurado_0-1716818008479.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this situation, we suggested using the function &lt;STRONG&gt;StartParametrize, specifying&amp;nbsp;&lt;/STRONG&gt;the max length of the column (500), we could have only an action plan. This reduced the cached plan usage.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jose_Manuel_Jurado_1-1716818259220.png" style="width: 663px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586217i71603EAA161645B5/image-dimensions/663x53?v=v2" width="663" height="53" role="button" title="Jose_Manuel_Jurado_1-1716818259220.png" alt="Jose_Manuel_Jurado_1-1716818259220.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This exercise highlights the importance of specifying the length of the parameter,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Finally,&lt;/STRONG&gt; I would like to share two new functions:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;ImprovedVersionStartParametrize&lt;/STRONG&gt; that helps us to reduce the roundtrips of the text sent to the database, only sending values.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;GetColumnLength&lt;/STRONG&gt; that connects to the database to determine the total size of the column base on the internal table INFORMATION_SCHEMA.columns to perform this more dynamic.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;sing System;
using System.Data;
using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        // Parámetros de conexión
        string connectionString = "Server=tcp:servername.database.windows.net,1433;User Id=username;Password=pwd!;Initial Catalog=dbname;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Pooling=true;Max Pool size=100;Min Pool Size=1;ConnectRetryCount=3;ConnectRetryInterval=10;Application Name=ConnTest";

        //ImprovedVersionStartParametrize(connectionString);
        for (int j = 65; j &amp;lt;= 90; j = j + 1)
        {
            Console.WriteLine("Letter:" + (char)j);
            for (int i = 1; i &amp;lt;= 500; i = i + 1)
            {
                if (i % 10 == 0)
                {
                    Console.Write(" {0} ,", i);
                }
                //StartAdhocWithParam(connectionString, (char)j, i);
                //StartAdhocWithGuide(connectionString, (char)j, i);
                StartAdhocNoParam(connectionString, (char)j,i);
                //StartParametrize(connectionString, (char)j, i);
            }
        }
    }

    static void StartAdhocWithParam(string connectionString, char Letter, int Length)
    {
        string query = "SELECT TOP 1 * FROM TestTable WHERE string_column = @stringParam --Adhoc with Param";
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            using (SqlCommand cmd = new SqlCommand(query, conn))
            {
                string stringParam = new string(Letter, Length);
                cmd.Parameters.Add(new SqlParameter("@stringParam", SqlDbType.NVarChar, Length) { Value = stringParam });
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
            }
        }
    }

    static void StartAdhocNoParam(string connectionString, char Letter, int Length)
    {
        string stringParam = new string(Letter, Length);
        string query = "SELECT TOP 1 * FROM TestTable WHERE string_column = N'" + stringParam + "' --Adhoc without Param";
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            using (SqlCommand cmd = new SqlCommand(query, conn))
            {
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
            }
        }
    }

    static void StartParametrize(string connectionString, char Letter, int Length)
    {
        string query = "SELECT TOP 1 * FROM TestTable WHERE string_column = @stringParam --Adhoc with Max Length";
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            using (SqlCommand cmd = new SqlCommand(query, conn))
            {
                string stringParam = new string(Letter, Length);
                cmd.Parameters.Add(new SqlParameter("@stringParam", SqlDbType.NVarChar, 500) { Value = stringParam });
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
            }
        }
    }

    static void ImprovedVersionStartParametrize(string connectionString)
    {
        string query = "SELECT TOP 1 * FROM TestTable WHERE string_column = @stringParam --Adhoc with Max Length";
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            using (SqlCommand cmd = new SqlCommand(query, conn))
            {
                cmd.Parameters.Add(new SqlParameter("@stringParam", SqlDbType.NVarChar, GetColumnLength(connectionString, "dbo", "TestTable", "string_column")));
                conn.Open();
                cmd.Prepare();
                for (int j = 65; j &amp;lt;= 90; j = j + 1)
                {
                    Console.WriteLine("Letter:" + (char)j);
                    for (int i = 1; i &amp;lt;= 500; i = i + 1)
                    {
                        if (i % 10 == 0)
                        {
                            Console.Write(" {0} ,", i);
                        }
                        cmd.Parameters[0].Value = new string((char)j, i);
                        SqlDataReader reader = cmd.ExecuteReader();
                        reader.Close();
                    }
                }
            }
        }
    }

    static void StartAdhocWithGuide(string connectionString, char Letter, int Length)
    {
        string query = @"
                DECLARE @sqlQuery NVARCHAR(MAX) = N'SELECT TOP 1 * FROM TestTable WHERE string_column = @stringColumn';
                EXEC sp_executesql @sqlQuery, N'@stringColumn NVARCHAR(500)', @stringColumn = @stringParam";

        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            using (SqlCommand cmd = new SqlCommand(query, conn))
            {
                string stringParam = new string(Letter, Length);
                cmd.Parameters.Add(new SqlParameter("@stringParam", SqlDbType.NVarChar, Length) { Value = stringParam });
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
            }
        }
    }
    static int GetColumnLength(string connectionString, string schemaName, string tableName, string columnName)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {

            using (SqlCommand cmd = new SqlCommand(@"
                SELECT CHARACTER_MAXIMUM_LENGTH
                FROM INFORMATION_SCHEMA.COLUMNS
                WHERE TABLE_SCHEMA = @SchemaName AND TABLE_NAME = @NameT AND COLUMN_NAME = @ColumnName", connection))
            {
                cmd.Parameters.Add("@SchemaName", SqlDbType.NVarChar, 128);
                cmd.Parameters.Add("@NameT", SqlDbType.NVarChar, 128);
                cmd.Parameters.Add("@ColumnName", SqlDbType.NVarChar, 128);

                cmd.Parameters["@SchemaName"].Value=schemaName;
                cmd.Parameters["@NameT"].Value = tableName;
                cmd.Parameters["@ColumnName"].Value = columnName;

                connection.Open();
                var result = cmd.ExecuteScalar();
                if (result != null)
                {
                    return Convert.ToInt32(result);
                }
                else
                {
                    return 0;
                }
            }
        }
    }
}&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Disclaimer&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;The use of this application and the provided scripts is intended for educational and informational purposes only. The scripts and methods demonstrated in this guide are provided "as is" without any warranties or guarantees. It is the user's responsibility to ensure the accuracy, reliability, and suitability of these tools for their specific needs.&lt;/P&gt;</description>
      <pubDate>Mon, 27 May 2024 16:29:14 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-support-blog/lesson-learned-494-high-number-of-executions-plans-for-a-single/ba-p/4152942</guid>
      <dc:creator>Jose_Manuel_Jurado</dc:creator>
      <dc:date>2024-05-27T16:29:14Z</dc:date>
    </item>
    <item>
      <title>Remember better with the new Sticky Notes experience from OneNote</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-365-blog/remember-better-with-the-new-sticky-notes-experience-from/ba-p/4127624</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="This is a screenshot of new Sticky Notes experience illustrating the new notes creation, 1-click screenshot capture and automatic source capture capabilities" style="width: 975px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584821iA2AED9432DF5553C/image-size/large?v=v2&amp;amp;px=999" role="button" title="DylanSnodgrass_0-1716405123250.png" alt="This is a screenshot of new Sticky Notes experience illustrating the new notes creation, 1-click screenshot capture and automatic source capture capabilities" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;This is a screenshot of new Sticky Notes experience illustrating the new notes creation, 1-click screenshot capture and automatic source capture capabilities&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;We are excited to announce that the new Sticky Notes experience for Windows is now rolling out to all users. We had first announced the new Sticky Notes experience in this &lt;A href="https://insider.microsoft365.com/en-us/blog/introducing-the-new-sticky-notes-app-for-windows" target="_self"&gt;Insiders blog post&lt;/A&gt; earlier this year and the response was incredibly positive. Many of you have already started exploring new capabilities of the new Sticky Notes and sharing your feedback, which has been incredibly helpful – thank you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-unlink="true"&gt;The new Sticky Notes experience is a fresh feature from OneNote to help you remember more seamlessly than ever. With 1-click screenshot capture, automatic source capture and automatic recall of the notes when you revisit the same source, remembering what matters just got easier! You can also access Sticky Notes on the go with your OneNote &lt;A href="https://www.microsoft.com/en-in/microsoft-365/onenote/mobile-app" target="_self"&gt;Android&amp;nbsp;and iOS&lt;/A&gt;&amp;nbsp;mobile apps, ensuring that your notes are always at your fingertips.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How to launch the new Sticky Notes experience&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To launch the new Sticky Notes experience, open the ‘OneNote app on Windows’ and click the new Sticky Notes button on top.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="This is a screenshot of OneNote ribbon which illustrates the entry point for new Sticky Notes from within the OneNote Windows app" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584813i8A071D10DF576C24/image-size/large?v=v2&amp;amp;px=999" role="button" title="DylanSnodgrass_0-1716404169621.png" alt="This is a screenshot of OneNote ribbon which illustrates the entry point for new Sticky Notes from within the OneNote Windows app" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;This is a screenshot of OneNote ribbon which illustrates the entry point for new Sticky Notes from within the OneNote Windows app&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; After launching the new Sticky Notes experience, you can pin it to the taskbar. You can also press the Win + Alt + S keys to launch the app anytime.&lt;/P&gt;
&lt;P&gt;Soon, you’ll also be able to try the new Sticky Notes experience from the Windows Start menu.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How can new Sticky Notes help you remember better&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;With the new Sticky Notes, you can create notes or capture screenshots with a single click. If you’ve taken a note or screenshot from a website, you can easily return to the original source by clicking the auto-captured link. When you revisit the same document or website, we'll conveniently bring up the relevant notes for you. Need to multi-task? You can dock the new Sticky Notes to your desktop for a convenient side-by-side experience while using other apps. Search is versatile, including the text within your notes as well as images (using OCR).&amp;nbsp;You can pop out any Sticky Note and view it in a larger window.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;For more details, please read the &lt;A href="https://insider.microsoft365.com/en-us/blog/introducing-the-new-sticky-notes-app-for-windows" target="_blank" rel="noopener"&gt;Insiders blog post&lt;/A&gt;&lt;SPAN&gt; on&lt;/SPAN&gt; new Sticky Notes.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Scenarios to try&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;At work&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;When a presentation is shared in a Teams meeting, take screenshots of important slides with a single click, while staying focused on the meeting.&lt;/LI&gt;
&lt;LI&gt;For a recurring meeting, take notes during the meeting and your past notes will automatically surface to the top when you open the new Sticky Notes experience during the next instance of the same meeting series.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;When learning&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Save important takeaways while watching an educational YouTube video or reading an article. Your previous notes will rise to the top in the app when you return to the same website later.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;At home&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;When planning a trip, take notes and screenshots of potential destinations. The next time you open your notes, click the source link to go back to the website in question for more details or to complete your booking.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Tips and tricks&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Pin the new Sticky Notes experience to your taskbar for easy access in the future—no need to launch OneNote.&lt;/LI&gt;
&lt;LI&gt;If you’re already a signed in Sticky Notes user, all your existing notes will appear in the new Sticky Notes experience.&lt;/LI&gt;
&lt;LI&gt;in OneNote app for Windows (click on the profile picture on the top-right) to switch the account associated with your new Sticky Notes .&lt;/LI&gt;
&lt;LI&gt;Sign in to your Microsoft 365 account to sync your notes across your .&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Known limitations&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;“Dock to Desktop” feature does not work well with extended monitor. We’re working to fix this issue soon.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Availability&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The new Sticky Notes experience is available to Current Channel users running Windows 10 Version 1903 (SDK 18362) or later, and have OneNote app Version 2402 (Build 17328.20000) or later.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;The rollout of this experience is still in progress, and you will get it soon if you haven’t already.&lt;/P&gt;</description>
      <pubDate>Mon, 27 May 2024 16:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-365-blog/remember-better-with-the-new-sticky-notes-experience-from/ba-p/4127624</guid>
      <dc:creator>chetnadas</dc:creator>
      <dc:date>2024-05-27T16:00:00Z</dc:date>
    </item>
    <item>
      <title>Getting Started with Reliability on Azure: Ensuring Cloud Applications Stay Up and Running</title>
      <link>https://techcommunity.microsoft.com/t5/azure-architecture-blog/getting-started-with-reliability-on-azure-ensuring-cloud/ba-p/4152905</link>
      <description>&lt;P class="lia-align-justify"&gt;As businesses increasingly rely on cloud services, the imperative for robust cloud solutions has never been greater. Azure stands at the forefront of this realm, offering architects and technology leaders a platform where reliability is not just a feature — it's a core tenet.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 class="lia-align-justify"&gt;The Essence of Reliability in Azure&lt;/H2&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Reliability is the bedrock upon which cloud architectures stand, indicative of a system's robustness to persistently deliver expected outcomes. It's defined not only by a service’s uptime but also by its stringent adherence to defined Service Level Objectives (SLOs) and Service Level Agreements (SLAs). These crucial benchmarks encompass aspects such as Recovery Time Objective (RTO)—the time within which functions must be restored post-disruption—and Recovery Point Objective (RPO)—the maximum amount of data that can be lost or corrupted post disruption for normal operations to resume. RPO applies not only to storage services but also to other data services such as databases, caches, and queues.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;In Azure, reliability means crafting services that are inherently designed to mitigate failures and swiftly rebound from them, with minimal-to-no disruptions experienced by end-users. This is achieved through a &lt;A href="https://learn.microsoft.com/en-us/azure/security/fundamentals/shared-responsibility" target="_blank" rel="noopener"&gt;shared responsibility model:&lt;/A&gt; while Microsoft ensures the underlying infrastructure’s resilience, customers architect their solutions responsibly to exploit these provisions—fusing their understanding of business requirements with Azure's powerful capabilities to uphold service continuity and meet or exceed their RTO and RPO.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 class="lia-align-justify"&gt;The Pillars of Cloud Reliability&lt;/H2&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;The pillars of cloud reliability are critical components of Azure's architecture, designed to ensure dependable service delivery:&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL class="lia-align-justify"&gt;
&lt;LI&gt;&lt;STRONG&gt;Robust Infrastructure&lt;/STRONG&gt;: Azure operates a globally distributed network of data centers equipped with advanced redundancy capabilities. This infrastructure is pivotal in providing the resilient physical and virtual resources required for the high availability of applications.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Resilience by Design&lt;/STRONG&gt;: Azure's reliability is rooted in its strategic design choices. Solutions architected with resilience in mind are capable of withstanding operational pressures and rapidly recovering from disruptions, ensuring minimal impact on service continuity.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Continuous Operations&lt;/STRONG&gt;: Rigorous monitoring, timely incident management, and ongoing system refinement are integral to maintaining the operational health of Azure services. This commitment to continuous operational excellence fortifies service reliability and addresses the evolving demands of cloud workloads.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 class="lia-align-justify"&gt;The Frameworks and Tools Supporting Azure Reliability&amp;nbsp;&lt;/H2&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Azure's commitment to reliability is underpinned by two foundational frameworks: the &lt;A href="https://azure.microsoft.com/en-us/solutions/cloud-enablement/cloud-adoption-framework/" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Cloud Adoption Framework (CAF)&lt;/STRONG&gt;&lt;/A&gt; and the &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Well-Architected Framework (WAF)&lt;/STRONG&gt;&lt;/A&gt;. These frameworks guide organizations through best practices, methodologies, and tools essential for building and maintaining reliable cloud solutions.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Cloud Adoption Framework (CAF):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;The CAF provides an extensive set of guidelines, blueprints, and best practices that help streamline the journey to the cloud. It offers insights into readiness and planning, ensuring that foundational decisions support reliability from the outset. Key components include &lt;A href="https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/landing-zone/" target="_blank" rel="noopener"&gt;Azure Landing Zones&lt;/A&gt;, which configure networking, security, identity, and governance in line with Azure reliability principles.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Well-Architected Framework (WAF):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;The WAF focuses on five key areas – cost optimization, operational excellence, performance efficiency, reliability, and security. It empowers architects to design resilient systems by adhering to five principles of architectural excellence in Azure. The reliability pillar of WAF emphasizes the importance of designing systems that are highly available, resilient, and can recover rapidly from failures.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Azure Service Reliability Features&lt;/SPAN&gt;&lt;STRONG&gt;:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Each Azure service offers built-in features and tools tailored for enhancing reliability. Some of the important tools are:&lt;/P&gt;
&lt;UL class="lia-align-justify"&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Site Recovery&lt;/STRONG&gt;: This service ensures business continuity by replicating workloads from primary to secondary regions, facilitating quick failover and minimizing service disruption during outages.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Monitor and Application Insights&lt;/STRONG&gt;: Combined, these services provide advanced monitoring, analytics, and diagnostics capabilities, affording real-time operational intelligence that supports swift and proactive incident management.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Automation&lt;/STRONG&gt;: With a focus on reducing manual intervention, Azure Automation offers process automation, update management, and configuration features that enhance the reliability of services by eliminating human error.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 class="lia-align-justify"&gt;Architecting for Reliability&lt;/H2&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Leveraging strategic design choices, Azure enables systems to recover rapidly from disruptions while ensuring continuous operations—a testament to Azure's dedication to non-stop service excellence &lt;SPAN&gt;following our &lt;A href="Reliability%20design%20principles%20-%20Microsoft%20Azure%20Well-Architected%20Framework%20|%20Microsoft%20Learn" target="_blank" rel="noopener"&gt;reliability design principles&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 class="lia-align-justify"&gt;Azure Landing Zones: Building Blocks for Reliable Cloud Operations&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Azure Landing Zones are pre-defined, customizable environments that follow Microsoft's Cloud Adoption Framework. They provide a structured setup process that incorporates best practices for security, compliance, and governance—forming a reliable foundation for your cloud journey. When setting up your landing zones, consider these reliability-focused factors:&lt;/P&gt;
&lt;UL class="lia-align-justify"&gt;
&lt;LI&gt;&lt;STRONG&gt;Network Topology&lt;/STRONG&gt;: Utilize Azure's robust networking features to design a topology that emphasizes redundancy and failover capabilities.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Resource Organization&lt;/STRONG&gt;: Structure your resources for coherence and ease of management, aligning them with your reliability objectives.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identity and Access Management&lt;/STRONG&gt;: Implement tight security controls to prevent unauthorized access which can compromise reliability.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Governance&lt;/STRONG&gt;: Establish policies that enforce operational consistency and compliance, adding another layer of reliability protection.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;For more information refer to &lt;A href="https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/landing-zone/design-area/subscription-vending" target="_blank" rel="noopener"&gt;Azure Landing Zones&lt;/A&gt;.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 class="lia-align-justify"&gt;Mission-Critical Reliability: Ensuring Resilience at Scale&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;For mission-critical services where the stakes are especially high, and reliability is imperative, Azure provides a robust toolkit and strategic methodologies to ensure resilience:&lt;/P&gt;
&lt;OL class="lia-align-justify"&gt;
&lt;LI&gt;&lt;STRONG&gt;Geo-Redundancy&lt;/STRONG&gt;: Implementing a multi-region architecture is pivotal for mission-critical applications. Azure facilitates the distribution of services across several geographic locations, safeguarding against regional failures. This approach not only enhances fault tolerance but also enables applications to remain functional and accessible, regardless of localized disruptions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Disaster Recovery&lt;/STRONG&gt;: To safeguard against significant and unexpected disasters, Azure Site Recovery offers a seamless replication service for virtual machines (VMs). It enables swift and structured failovers to alternate regions, ensuring critical applications experience minimal downtime. The service's replication granularity empowers businesses to achieve their specific recovery objectives, be they related to RTO or RPO targets.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Auto-Scaling&lt;/STRONG&gt;: Azure's auto-scaling capabilities dynamically adjust resource counts to meet the workload's current demands without human intervention for the services that support this feature. This is essential for meeting performance expectations during usage spikes or unpredicted load increases and for optimizing resource utilization during quieter periods. Such elasticity is vital for maintaining consistent performance levels and operational efficiency.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Monitoring and Diagnostics&lt;/STRONG&gt;: Provisioning powerful monitoring tools like Azure Monitor and Azure Application Insights affords organizations real-time visibility into their operational landscape. With these tools, you gain actionable insights, can set up automated alerts for anomaly detection, and pre-empt potential issues based on trends and patterns. The detailed diagnostics provided support rapid issue identification and resolution, which is crucial for mission-critical systems.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="lia-align-justify"&gt;By integrating these practices within the architectural fabric, mission-critical services on Azure can achieve the sought-after continuous reliability—delivering consistent service levels and fostering user trust and satisfaction.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;For more information refer to &lt;A href="https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/containers/aks-mission-critical/mission-critical-intro" target="_blank" rel="noopener"&gt;Mission Critical Guidance&lt;/A&gt;.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 class="lia-align-justify"&gt;Reference Architecture for Reliability&lt;/H2&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DRP.png" style="width: 953px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586202i1F66F0E68BF64835/image-size/large?v=v2&amp;amp;px=999" role="button" title="DRP.png" alt="DRP.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Reliability in the cloud isn't just about having the right tools and services; it's about weaving those elements into an architecture that inherently embodies resilience and fault tolerance. A strategic approach towards crafting a reliable Azure architecture requires a holistic view that spans compute, storage, database, and networking resources.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;To illustrate, let's delve into a reference architecture that showcases Azure's reliability principles in action. This architecture demonstrates how various Azure services interconnect to establish a dependable cloud infrastructure, ensuring seamless, continuous operations.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 class="lia-align-justify"&gt;Detailing the Reference Architecture for Reliability&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;The reference architecture encompasses various Azure services, each contributing to the overall reliability in different ways. Below, we dissect this architecture to understand how the components interrelate and support each other to create a reliable and resilient environment:&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Azure Compute Services:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class="lia-align-justify"&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Virtual Machines (VMs)&lt;/STRONG&gt;: These serve as the backbone, hosting applications and services. To ensure their reliability, leverage &lt;STRONG&gt;Azure Backup&lt;/STRONG&gt;, a service offering automated backup solutions that protect VMs from data loss and facilitate easy recovery. Integrating frequent and consistent backups safeguards your data against accidental deletions, corruption, or attacks.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Site Recovery (ASR)&lt;/STRONG&gt;: Complementing Azure Backup, ASR provides a disaster recovery solution by replicating your Azure VMs to a different availability zone or region. In the event of an outage, you can orchestrate a failover to the replicated VMs situated in the secondary site. This setup ensures minimal downtime and adherence to RTOs (Recovery Time Objectives).&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Azure Kubernetes Service (AKS):&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class="lia-align-justify"&gt;
&lt;LI&gt;&lt;STRONG&gt;Backup and Recovery&lt;/STRONG&gt;: The fabric of modern applications often includes containerized solutions orchestrated by AKS. Reliable operation means deploying consistent backups of AKS cluster data, including Persistent Volume (PV) backups, Kubernetes resource configurations, and databases running within the cluster.&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL class="lia-align-justify"&gt;
&lt;LI&gt;&lt;STRONG&gt;Multi-Zone Clusters&lt;/STRONG&gt;: AKS supports pod distribution across Availability Zones within a region, ensuring workload continuity in case of a failure in one zone. You can also use services such as Azure Load Balancer or Azure Application Gateway to balance the traffic across zones.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Multi-Regional Clusters&lt;/STRONG&gt;: AKS supports deploying clusters across multiple regions, enhancing the resilience and scalability of your applications. You can use services such as Azure Traffic Manager and CosmosDB to distribute the user traffic and data across regions, and orchestrate failover scenarios using Azure Site Recovery.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Azure Storage Services:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class="lia-align-justify"&gt;
&lt;LI&gt;&lt;STRONG&gt;Geo-replication&lt;/STRONG&gt;: Storage services such as &lt;STRONG&gt;Azure Blob Storage&lt;/STRONG&gt; and &lt;STRONG&gt;Azure Queue Storage&lt;/STRONG&gt; employ geo-replication strategies to synchronize data across geographically distributed data centers. By doing so, they provide data availability protection against regional outages.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Redundant Storage&lt;/STRONG&gt;: Redundancy options, such as Locally-Redundant Storage (LRS) or Zone-Redundant Storage (ZRS), ensure that copies of your data are safely stored within a region or across multiple locations within a region, further fortifying data protection measures.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Azure Database Services:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class="lia-align-justify"&gt;
&lt;LI&gt;&lt;STRONG&gt;Automated Backups&lt;/STRONG&gt;: Azure services like &lt;STRONG&gt;Azure SQL Database&lt;/STRONG&gt; and &lt;STRONG&gt;Azure Cosmos DB&lt;/STRONG&gt; offer automated backup features. Automated backups provide a low maintenance approach to protect your databases, enabling the ability to restore databases to a previous point in time quickly in case of data corruption or loss.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Geo-Restore&lt;/STRONG&gt;: In addition to regular backups, geo-restore functionalities allow restoration of databases across different geographical regions. In disaster events, this ability is pivotal in maintaining operational continuity and data availability.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;By following these architectural principles, you design a robust system that inherently includes resilience and reliability into every layer of its stack. From compute resources down to data storage, the architecture facilitates a cohesive approach to disaster recovery, high availability, and operational effectiveness.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;A well-constructed architecture is a critical element in the journey to achieving high reliability on Azure. A reference architecture serves as the blueprint for integrating Azure's resilience principles into your applications. By doing so, you design an ecosystem that not only copes with adverse events but also sustains service continuity and data integrity, thereby meeting high availability standards.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 class="lia-align-justify"&gt;Azure Verified Modules for Reliability&lt;/H2&gt;
&lt;DIV id="tinyMceEditorFreddyAyala_1" class="mceNonEditable lia-copypaste-placeholder lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;A href="https://azure.github.io/Azure-Verified-Modules/" target="_blank" rel="noopener"&gt;Azure Verified Modules (AVM)&lt;/A&gt; is an initiative to consolidate and set the standards for what a good Infrastructure-as-Code module looks like. AVM is a common code base, a toolkit for our Customers, our Partners to accelerate consistent solution development and delivery of cloud-native by codifying Microsoft guidance (WAF), with best practice configurations.&lt;BR /&gt;&lt;BR /&gt;In this article we want to highlight a sample AVM module designed to set up a reliable Azure-to-Azure replication for disaster recovery. It supports replication across regions or within the same region across zone. It’s located at &lt;A href="https://github.com/Azure/terraform-azurerm-avm-ptn-bcdr-vm-replication/tree/main" target="_blank" rel="noopener"&gt;GitHub - Azure/terraform-azurerm-avm-ptn-bcdr-vm-replication: AVM Pattern Module to use Azure Site Recovery to replicate Virtual Machines at Scale between locations.&lt;/A&gt;&amp;nbsp; The module replicates virtual machines within Azure from a source to a target location, handling all intermediary replication policies, and resource configurations.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;This module provides functionality for:&lt;/P&gt;
&lt;UL class="lia-align-justify"&gt;
&lt;LI&gt;Creating or using an existing Recovery Services Vault.&lt;/LI&gt;
&lt;LI&gt;Replicating virtual machines between Azure regions or between zones within the same region.&lt;/LI&gt;
&lt;LI&gt;Handling recovery policies, replication policies, and protection container mappings.&lt;/LI&gt;
&lt;LI&gt;Dealing with resource dependencies for orderly creation and deletion.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 class="lia-align-justify"&gt;Conclusion&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Commencing your reliability journey on Azure signals a commitment to operational excellence. By leveraging Azure's global infrastructure, proactive design strategies, and a comprehensive suite of tools and best practices, you can pave the way for reliable, scalable, and resilient cloud environments. Elevate your cloud solutions to be ready for any challenge with the power of Azure's reliability features.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;EM&gt;Become a champion of reliability and let Azure be the silent force empowering you to deliver steadfast cloud solutions to your stakeholders and customers—today, tomorrow, and into the future.&lt;/EM&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Thanks to the people that contributed to this article:&amp;nbsp;&lt;SPAN&gt;&lt;SPAN class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak"&gt;Harshitha Putta,&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;Laura Grob, Zach Olinske and the PaceSetter reliability team.&lt;/P&gt;</description>
      <pubDate>Mon, 27 May 2024 13:15:05 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-architecture-blog/getting-started-with-reliability-on-azure-ensuring-cloud/ba-p/4152905</guid>
      <dc:creator>FreddyAyala</dc:creator>
      <dc:date>2024-05-27T13:15:05Z</dc:date>
    </item>
    <item>
      <title>Small Language Models with Phi-3 Cookbook: A Guide</title>
      <link>https://techcommunity.microsoft.com/t5/educator-developer-blog/small-language-models-with-phi-3-cookbook-a-guide/ba-p/4149864</link>
      <description>&lt;H2&gt;&lt;STRONG&gt; Small Language Models and Phi-3: A Guide&amp;nbsp;&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;Small language models (SLMs) are a powerful tool that has gained significant attention in recent years. They are used to generate text, images, and other forms of content with great precision. In this blog post, we will explore the concept of small language models and how you can use them using the &lt;A href="https://github.com/microsoft/Phi-3CookBook/?WT.mc_id=aiml-138230-leestott" target="_self"&gt;Phi-3 cookbook&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;What are Small Language Models?&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Small language models are a type of neural network that is trained on a large corpus of text data. They are designed to generate new text that is similar to the training data, but they can also be used for tasks like image generation and more.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;&lt;BR /&gt;How do Small Language Models Work?&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Small language models work by predicting the next word in a sequence based on the previous words. This process is known as autoregressive prediction. The model learns to generate text by repeatedly predicting the next word in a sequence and comparing its predictions with the actual word.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;The &lt;A href="https://github.com/microsoft/Phi-3CookBook/?WT.mc_id=aiml-138230-leestott" target="_self"&gt;Phi-3 Cookbook&lt;/A&gt;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LeeStott_0-1716453922782.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585054i66D46200CD6E4ED1/image-size/large?v=v2&amp;amp;px=999" role="button" title="LeeStott_0-1716453922782.png" alt="LeeStott_0-1716453922782.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The &lt;A href="https://github.com/microsoft/Phi-3CookBook/?WT.mc_id=aiml-138230-leestott" target="_self"&gt;Phi-3 cookbook&lt;/A&gt; is an open-source repository that provides a collection of code examples for working with small language models. It includes tutorials, recipes, and other resources that will help you learn how to use these powerful models in your own projects.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;&lt;BR /&gt;What can you Learn from the &lt;A href="https://github.com/microsoft/Phi-3CookBook/?WT.mc_id=aiml-138230-leestott" target="_self"&gt;Phi-3 Cookbook&lt;/A&gt;?&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LeeStott_1-1716453955103.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585055i47107397F8C26EFB/image-size/large?v=v2&amp;amp;px=999" role="button" title="LeeStott_1-1716453955103.png" alt="LeeStott_1-1716453955103.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The &lt;A href="https://github.com/microsoft/Phi-3CookBook/?WT.mc_id=aiml-138230-leestott" target="_self"&gt;Phi-3 cookbook&lt;/A&gt; is a great resource for technical students who want to learn more about small language models. Here are some of the things you can learn from it:&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;BR /&gt;&lt;SPAN&gt;Generating Text with Small Language Models&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;You can use the &lt;A href="https://github.com/microsoft/Phi-3CookBook/?WT.mc_id=aiml-138230-leestott" target="_self"&gt;Phi-3 cookbook&lt;/A&gt; to generate text using small language models. You can learn how to train your own model on a specific dataset, or you can use one of the pre-trained models that is included in the repository. Once you have generated some text, you can use it for tasks like summarization, machine translation, and more.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Generating Images with Small Language Models&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;You can also use small language models to generate images. The &lt;A href="https://github.com/microsoft/Phi-3CookBook/?WT.mc_id=aiml-138230-leestott" target="_self"&gt;Phi-3 cookbook&lt;/A&gt; provides examples of how to use these models to create images from text descriptions. This is a great way to learn about computer vision and image generation.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Applying Small Language Models in Real-World Scenarios&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;The &lt;A href="https://github.com/microsoft/Phi-3CookBook/?WT.mc_id=aiml-138230-leestott" target="_self"&gt;Phi-3 cookbook i&lt;/A&gt;ncludes examples of how small language models can be applied in real-world scenarios. You can learn about how these models are used in applications like chatbots, virtual assistants, and more. This will give you a better understanding of the practical applications of this technology.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Conclusion&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Small language models are a powerful tool that is becoming increasingly popular in the tech industry. The &lt;A href="https://github.com/microsoft/Phi-3CookBook/?WT.mc_id=aiml-138230-leestott" target="_self"&gt;Phi-3 cookbook&lt;/A&gt; is an excellent resource for technical students who want to learn more about these models and how they can be used in their own projects. By working through the recipes and tutorials in this repository, you will gain valuable knowledge and skills that will help you succeed in your future career.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 27 May 2024 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/educator-developer-blog/small-language-models-with-phi-3-cookbook-a-guide/ba-p/4149864</guid>
      <dc:creator>Lee Stott</dc:creator>
      <dc:date>2024-05-27T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Customize percentiles for response time in Azure Load Testing</title>
      <link>https://techcommunity.microsoft.com/t5/apps-on-azure-blog/customize-percentiles-for-response-time-in-azure-load-testing/ba-p/4152559</link>
      <description>&lt;H1&gt;Introduction&lt;/H1&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/load-testing/overview-what-is-azure-load-testing?wt.mc_id=azloadtesting_techcomm20240527_blog_cnl" target="_self"&gt;Azure Load Testing&lt;/A&gt; is a cloud-based service that lets you test the performance and scalability of your web applications and APIs. You can create and run load tests, analyze and compare the results, and define test fail criteria based on metrics like response time, error percentage, and throughput.&lt;/P&gt;
&lt;P&gt;Response time is the time your application takes to respond to a user request. It depends on factors like network latency, server load, and application logic. To measure the performance of your application, you need to look at the response time distribution across different percentiles, which show how many requests are completed within a certain time limit. For example, the 90th percentile response time means that 90% of the requests are completed within that time, and the remaining 10% take longer.&lt;/P&gt;
&lt;H1&gt;What's new in Azure Load Testing?&lt;/H1&gt;
&lt;P&gt;Until now, Azure Load Testing only supported three percentiles for response time analysis: Min, Max, Average, Median(50&lt;SUP&gt;th&lt;/SUP&gt;), 90th, 95th, and 99th. These percentiles are common in the industry, but they may not match your SLA requirements. For instance, you may want to track the response time at the 75th percentile, which is a standard for web performance, or the 99.9th percentile, which is a stricter measure of the tail latency.&lt;/P&gt;
&lt;P&gt;That's why we are happy to announce that Azure Load Testing now supports more percentiles for response time analysis. You can configure the percentiles you want for response time metrics in Azure Load Testing and meet your SLA goals. You can choose from these percentiles:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Min&lt;/LI&gt;
&lt;LI&gt;Max&lt;/LI&gt;
&lt;LI&gt;Average&lt;/LI&gt;
&lt;LI&gt;Median (50th)&lt;/LI&gt;
&lt;LI&gt;75th&lt;/LI&gt;
&lt;LI&gt;90th&lt;/LI&gt;
&lt;LI&gt;95th&lt;/LI&gt;
&lt;LI&gt;96th&lt;/LI&gt;
&lt;LI&gt;97th&lt;/LI&gt;
&lt;LI&gt;98th&lt;/LI&gt;
&lt;LI&gt;99th&lt;/LI&gt;
&lt;LI&gt;99.9th&lt;/LI&gt;
&lt;LI&gt;99.99th&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;You can use these percentiles in different ways to analyze and compare your test results. For example, you can:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/load-testing/how-to-define-test-criteria?tabs=portal?wt.mc_id=azloadtesting_techcomm20240527_blog_cnl" target="_self"&gt;Define test fail criteria&lt;/A&gt; based on the percentiles you want for response time metrics.&lt;/LI&gt;
&lt;LI&gt;Filter the ‘Sampler Statistics’ UI by the percentiles you want for response time metrics.&lt;/LI&gt;
&lt;LI&gt;Filter the response time graphs by the percentiles you want for response time metrics.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;How to configure percentiles in Azure Load Testing?&lt;/H1&gt;
&lt;P&gt;Configuring percentiles in Azure Load Testing is easy and intuitive. You can do it in two ways:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Using the Azure portal&lt;/LI&gt;
&lt;LI&gt;Using the YAML file&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Using the Azure portal, you can configure the percentiles for response time metrics in the test criteria and the test results pages. In the test criteria page, you can select the aggregate function for the response time metric from the drop-down list that includes all the percentiles as shown below.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SaloniAgrawal12_0-1716784636468.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586089i633B751E219E17D8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SaloniAgrawal12_0-1716784636468.png" alt="SaloniAgrawal12_0-1716784636468.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the test results page, you can filter the sampler statistics UI and the response time graphs by the percentiles you want using the filters.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SaloniAgrawal12_1-1716784636476.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586091i760AB3F56CB66C51/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SaloniAgrawal12_1-1716784636476.png" alt="SaloniAgrawal12_1-1716784636476.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SaloniAgrawal12_2-1716784636486.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586090iF5238FBD828CF7D3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SaloniAgrawal12_2-1716784636486.png" alt="SaloniAgrawal12_2-1716784636486.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Using the YAML file, you can configure the percentiles for response time when running tests from your CI/CD pipelines. You can find more details on how to configure the YAML in our &lt;A href="https://learn.microsoft.com/en-us/azure/load-testing/reference-test-config-yaml?wt.mc_id=azloadtesting_techcomm20240527_blog_cnl" target="_self"&gt;documentation.&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Next Steps&lt;/H1&gt;
&lt;P&gt;If you haven't tried Azure Load Testing yet, you can &lt;A href="https://learn.microsoft.com/en-us/azure/load-testing/quickstart-create-and-run-load-test?tabs=portal?wt.mc_id=azloadtesting_techcomm20240527_blog_cnl" target="_self"&gt;create a resource&lt;/A&gt; and start testing your application today. If you are already using Azure Load Testing, you can configure the percentiles for your new tests and see the difference. Don't miss this chance to optimize your application performance and deliver a great user experience.&lt;/P&gt;
&lt;P&gt;Thank you for choosing Azure Load Testing!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 27 May 2024 04:42:49 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/apps-on-azure-blog/customize-percentiles-for-response-time-in-azure-load-testing/ba-p/4152559</guid>
      <dc:creator>SaloniAgrawal12</dc:creator>
      <dc:date>2024-05-27T04:42:49Z</dc:date>
    </item>
    <item>
      <title>Analyze data using Log Analytics Simple mode</title>
      <link>https://techcommunity.microsoft.com/t5/azure-observability-blog/analyze-data-using-log-analytics-simple-mode/ba-p/4152447</link>
      <description>&lt;H2&gt;Introduction&amp;nbsp;&lt;/H2&gt;
&lt;P&gt;Azure Monitor Logs offer a powerful set of capabilities for users to explore their logs and derive meaningful insights from their data estate.&lt;/P&gt;
&lt;P&gt;Until now, Azure Monitor Logs relied on KQL for users to express their questions as queries.&lt;BR /&gt;KQL is a powerful, easy to learn query language, however, as any query language it requires some knowledge to operate.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Simple mode&lt;/STRONG&gt; experience was created to bridge this knowledge gap - allowing most popular KQL operators and actions to be utilized using a very simple,&amp;nbsp;&lt;SPAN&gt;point-and-click&lt;/SPAN&gt; experience requiring no KQL knowledge at all!&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="TextRun SCXW96119652 BCX8" data-contrast="auto"&gt;&lt;STRONG&gt;&lt;SPAN class="NormalTextRun SCXW96119652 BCX8"&gt;KQL Mode &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN class="TextRun Highlight SCXW96119652 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun SCXW96119652 BCX8"&gt;gives advanced users the full power of Kusto Query Language (KQL) to derive deeper insights from their logs.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="TextRun Highlight SCXW96119652 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun SCXW96119652 BCX8"&gt;&lt;SPAN&gt;Here's a video that provides a quick overview of how to query logs in Log Analytics using both Simple and KQL modes:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="TextRun Highlight SCXW96119652 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun SCXW96119652 BCX8"&gt;&lt;SPAN&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F85Xxj5FhTk0%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D85Xxj5FhTk0&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F85Xxj5FhTk0%2Fhqdefault.jpg&amp;amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="400" height="225" scrolling="no" title="How to Query Log Analytics" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;H2&gt;Try Log Analytics Simple mode&lt;/H2&gt;
&lt;P&gt;Simple mode is currently an opt-in experience. To try it, select&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Try the new Log Analytics&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;at the top right corner of the Log Analytics query editor. You can switch back to the classic Log Analytics experience at any time.&lt;/P&gt;
&lt;DIV id="tinyMceEditorIlana_Waitser_1" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ilana_Waitser_2-1716757564724.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586054iA0FE1B06DD8CC60C/image-size/large?v=v2&amp;amp;px=999" role="button" title="Ilana_Waitser_2-1716757564724.png" alt="Ilana_Waitser_2-1716757564724.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Explore and analyze data in Simple mode&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Let’s look at the example:&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;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;I am an SRE (Site Reliability Engineer)&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;, troubleshooting infrastructure issues. For that, I want to understand which Kubernetes pods failed to run.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&lt;SPAN class="NormalTextRun SCXW53977210 BCX8"&gt;I just clicked 'Run' on the &lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SpellingErrorV2Themed SCXW53977210 BCX8"&gt;KubePodInventory&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW53977210 BCX8"&gt; table, which brought up the 1000 latest results.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&lt;SPAN class="NormalTextRun SCXW53977210 BCX8"&gt;&lt;SPAN class="TextRun SCXW250173824 BCX8" data-contrast="auto"&gt;&lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt;Now, a&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt;ll I need to do is&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt; click on Add&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt;,&lt;/SPAN&gt; &lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt;under Filter section,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt;search &lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt;for&lt;/SPAN&gt; &lt;SPAN class="NormalTextRun SpellingErrorV2Themed SCXW250173824 BCX8"&gt;PodStatus&lt;/SPAN&gt; &lt;SPAN class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW250173824 BCX8"&gt;column&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW250173824 BCX8"&gt;,&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt; select &lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt;P&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt;ending and click Apply&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW250173824 BCX8"&gt;.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="EOP SCXW250173824 BCX8" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Filter in Simple mode.gif" style="width: 613px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585114i451CC45CF2D015D8/image-dimensions/613x345?v=v2" width="613" height="345" role="button" title="Filter in Simple mode.gif" alt="Filter in Simple mode.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This brings&amp;nbsp;all pods which have failed to run&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;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Now, I can &lt;/SPAN&gt;&lt;SPAN&gt;easily&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;aggregate by Name and see all pod names and how many times they &lt;/SPAN&gt;&lt;SPAN&gt;have &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;failed:&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;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ilana_Waitser_1-1716754838779.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586048i8868F5C0725010E6/image-size/large?v=v2&amp;amp;px=999" role="button" title="Ilana_Waitser_1-1716754838779.png" alt="Ilana_Waitser_1-1716754838779.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;I achieved all this without needing to write any KQL code!&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;:278,&amp;quot;469777462&amp;quot;:[5953],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[1]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Moreover, whenever I select&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt; a filter or an &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;operator in Simple Mode, the query runs automatically; there's no need to click on the 'Run' button. This functionality allows for a more fluent experience.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278,&amp;quot;469777462&amp;quot;:[5953,8633],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[1,1]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278,&amp;quot;469777462&amp;quot;:[5953,8633],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[1,1]}"&gt;Switch modes&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;What if you want to make changes to the query and use more advanced operators that are not supported in Simple Mode? No problem!&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;:278,&amp;quot;469777462&amp;quot;:[5953,8633],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[1,1]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;To do so, we allow to switch from Simple Mode to KQL mode, which allows access to the full power of KQL.&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;:278,&amp;quot;469777462&amp;quot;:[5953,8633],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[1,1]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Once I&amp;nbsp;switch to KQL mode, I can see KQL query generated.&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;:278,&amp;quot;469777462&amp;quot;:[3387],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[1]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;I can then edit and continue working with the query.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:false,&amp;quot;134233118&amp;quot;:false,&amp;quot;201341983&amp;quot;:0,&amp;quot;335557856&amp;quot;:16777215,&amp;quot;335559738&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ilana_Waitser_2-1716755628248.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586050i78CAA8DCD4418C88/image-size/large?v=v2&amp;amp;px=999" role="button" title="Ilana_Waitser_2-1716755628248.png" alt="Ilana_Waitser_2-1716755628248.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Once I am done with editing, I can switch back to Simple mode and continue t&lt;SPAN class="TextRun Highlight SCXW46355723 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun SCXW46355723 BCX8"&gt;he exploration using&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN class="TrackChangeTextInsertion TrackedChange SCXW46355723 BCX8"&gt;&lt;SPAN class="TextRun Highlight SCXW46355723 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun SCXW46355723 BCX8"&gt;again&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="TextRun Highlight SCXW46355723 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun SCXW46355723 BCX8"&gt; the &lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW46355723 BCX8"&gt;Sim&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW46355723 BCX8"&gt;ple&lt;/SPAN&gt;&amp;nbsp;m&lt;SPAN class="NormalTextRun SCXW46355723 BCX8"&gt;o&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW46355723 BCX8"&gt;de&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="TrackChangeTextInsertion TrackedChange TrackChangeHoverSelectColorPurple SCXW46355723 BCX8"&gt;&lt;SPAN class="TextRun Highlight SCXW46355723 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun TrackChangeHoverSelectHighlightPurple SCXW46355723 BCX8"&gt; on updated&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun TrackChangeHoverSelectHighlightPurple SCXW46355723 BCX8"&gt;&amp;nbsp;qu&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="TrackChangeTextInsertion TrackedChange TrackChangeHoverSelectColorPurple SCXW46355723 BCX8"&gt;&lt;SPAN class="TextRun Highlight SCXW46355723 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun TrackChangeHoverSelectHighlightPurple SCXW46355723 BCX8"&gt;ery.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN class="TrackChangeTextInsertion TrackedChange TrackChangeHoverSelectColorPurple SCXW46355723 BCX8"&gt;&lt;SPAN class="TextRun Highlight SCXW46355723 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun TrackChangeHoverSelectHighlightPurple SCXW46355723 BCX8"&gt;Additional Improvements&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;You will notice some changes aimed at making the UI simple, clean, easy to use, and focused on what matters most – the result set.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="TrackChangeTextInsertion TrackedChange TrackChangeHoverSelectColorPurple SCXW46355723 BCX8"&gt;&lt;SPAN class="TextRun Highlight SCXW46355723 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun TrackChangeHoverSelectHighlightPurple SCXW46355723 BCX8"&gt;&lt;SPAN&gt;One of the changes is organizing the most frequently used actions under separate menus: Save and Share – each of these has sub-actions under it, such as Copy link and Export.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="TrackChangeTextInsertion TrackedChange TrackChangeHoverSelectColorPurple SCXW46355723 BCX8"&gt;&lt;SPAN class="TextRun Highlight SCXW46355723 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun TrackChangeHoverSelectHighlightPurple SCXW46355723 BCX8"&gt;&lt;SPAN class="TextRun Highlight SCXW230565793 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun SCXW230565793 BCX8"&gt;You can find &lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW230565793 BCX8"&gt;additional&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW230565793 BCX8"&gt; actions under &lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW230565793 BCX8"&gt;'...', such as&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW230565793 BCX8"&gt; New Alert or Log Analytics Settings&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW230565793 BCX8"&gt;,&lt;/SPAN&gt;&lt;SPAN class="NormalTextRun SCXW230565793 BCX8"&gt; which enable you to customize behavior according to your needs.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="EOP SCXW230565793 BCX8" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN class="TrackChangeTextInsertion TrackedChange TrackChangeHoverSelectColorPurple SCXW46355723 BCX8"&gt;&lt;SPAN class="TextRun Highlight SCXW46355723 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun TrackChangeHoverSelectHighlightPurple SCXW46355723 BCX8"&gt;&lt;SPAN class="EOP SCXW230565793 BCX8" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;Summary&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN class="TrackChangeTextInsertion TrackedChange TrackChangeHoverSelectColorPurple SCXW46355723 BCX8"&gt;&lt;SPAN class="TextRun Highlight SCXW46355723 BCX8" data-contrast="none"&gt;&lt;SPAN class="NormalTextRun TrackChangeHoverSelectHighlightPurple SCXW46355723 BCX8"&gt;&lt;SPAN class="EOP SCXW230565793 BCX8" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;The new Log Analytics with Simple mode and&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;additional improvements is a huge leap forward in our experiences and we hope you will enjoy using it.&lt;/P&gt;
&lt;P&gt;To learn more, we recommend reviewing the feature's official documentation&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A title="NextGen\SimpleMode official documentation " href="https://learn.microsoft.com/en-us/azure/azure-monitor/logs/log-analytics-simple-mode" target="_blank" rel="noopener noreferrer"&gt;here&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 id="toc-hId-1604133677"&gt;Feedback&lt;/H2&gt;
&lt;P&gt;We appreciate your feedback!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please leave comments on this blog post or use the 'Give feedback' in Azure Monitor Logs to share your thoughts with us:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ilana_Waitser_4-1716758751031.png" style="width: 200px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/586056i5368CCB093632B3C/image-size/small?v=v2&amp;amp;px=200" role="button" title="Ilana_Waitser_4-1716758751031.png" alt="Ilana_Waitser_4-1716758751031.png" /&gt;&lt;/span&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;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 27 May 2024 06:45:05 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-observability-blog/analyze-data-using-log-analytics-simple-mode/ba-p/4152447</guid>
      <dc:creator>Ilana_Waitser</dc:creator>
      <dc:date>2024-05-27T06:45:05Z</dc:date>
    </item>
    <item>
      <title>Challenges in Uploading Files Over 2GB via HTTP Protocol in IIS Web Server</title>
      <link>https://techcommunity.microsoft.com/t5/iis-support-blog/challenges-in-uploading-files-over-2gb-via-http-protocol-in-iis/ba-p/4152260</link>
      <description>&lt;P&gt;Recently, I had worked on a case where customer`s ask was to upload a file larger than 2gb into the IIS hosted web application.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In my case, customer had a normal Asp.net Framework 4.6 application and when they were trying to perform the upload operation of more than 2gb zip file(the extension did not matter...we tested it with .7z and .zip both and it had failed) and somehow on the browser page, we got a &lt;STRONG&gt;Bad request&lt;/STRONG&gt; and when I checked the HAR file, i could see a &lt;STRONG&gt;400 status code&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Next, I checked the application configurations...like:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="applescript"&gt;system.webServer/security/requestFiltering/requestLimits/maxAllowedContentLength 

system.web/httpRuntime/executionTimeout

system.web/httpRuntime/maxRequestLength&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;but these values were already configured for the higher number.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Articles for references:&lt;/P&gt;
&lt;P&gt;&lt;A title="HttpRuntime.ExecutionTimeout" href="https://learn.microsoft.com/en-us/dotnet/api/system.web.configuration.httpruntimesection.executiontimeout?view=netframework-4.8.1" target="_blank" rel="noopener"&gt;HttpRuntime.ExecutionTimeout&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A title="MaxAllowedContentLength" href="https://learn.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/requestlimits/" target="_blank" rel="noopener"&gt;MaxAllowedContentLength&lt;/A&gt;&amp;nbsp;&lt;BR /&gt;&lt;A title="Request Filtering " href="https://learn.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/" target="_blank" rel="noopener"&gt;Request Filtering &lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A title="HttpRuntime.maxRequestLength" href="https://learn.microsoft.com/en-us/dotnet/api/system.web.configuration.httpruntimesection.maxrequestlength?view=netframework-4.8.1" target="_blank" rel="noopener"&gt;HttpRuntime.maxRequestLength&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also, we checked the App Pool Managed Pipeline Mode, and the interesting part was that we got different error for both the modes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I was able to recreate this scenario in my lab machine for a sample asp.net framework web application and I had&amp;nbsp;captured FREB logs (Failed request tracing logs) for the site for both&amp;nbsp;&lt;SPAN&gt;the scenarios these were the differences I noticed:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;In both the cases, I was able to upload only 2gb file size.&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;In Integrated Mode, when I tried to upload a 4gb file, I could see this error under the FREB log: &lt;EM&gt;&lt;STRONG&gt;"&amp;nbsp;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;400 Bad request-Asp.net detected invalid characters in the Url". &lt;/STRONG&gt;&lt;/EM&gt;So, I tried to increase the value of "maxAllowedContentLength" to the maximum supported value, which is 4gb but still it failed, and it seems that&amp;nbsp;&lt;EM&gt;webengine code (webengine4!MgdGetRequestBasics)&lt;/EM&gt; doesn't support more than 2 GB content-length.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;Next, in Classic Mode, when I tried to upload a 4gb file, i got this error under FREB log : &lt;EM&gt;&lt;STRONG&gt;"413.1 -request entity too large error". &lt;/STRONG&gt;&lt;/EM&gt;So, in this case also, I increased the value of&amp;nbsp;"maxAllowedContentLength" to 4gb, but it failed. We did not see any error under FREB log...it was also 200 status code but the file did not upload.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;So, the conclusion is that either you keep the application pipeline mode as Integrated or Classic, you would only be able to upload a 2gb file for your web application hosted on IIS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you would like to perform a larger file upload operation, HTTP protocol isn't the right one. You need to switch to webDav feature, or use FTP protocol that is meant to perform the file upload/download operation without any size limit or you can keep using Http protocol but&amp;nbsp;&amp;nbsp;you need to send the data packets as small chunks from client to the server side and then on the server side code, you need to bundle all the chunked packets together for the file upload operation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also, note that even if you think moving to latest windows server would fix it...that's not going to help here. This behavior will be same for all the supported IIS across all the versions of supported windows server.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Hope this article helps everyone.&amp;nbsp;&lt;img class="lia-deferred-image lia-image-emoji" src="https://techcommunity.microsoft.com/html/@8341BD79091AF36AA2A09063B554B5CD/images/emoticons/smile_40x40.gif" alt=":smile:" title=":smile:" /&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;&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;</description>
      <pubDate>Sun, 26 May 2024 14:23:20 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/iis-support-blog/challenges-in-uploading-files-over-2gb-via-http-protocol-in-iis/ba-p/4152260</guid>
      <dc:creator>Archi_Chakraborty</dc:creator>
      <dc:date>2024-05-26T14:23:20Z</dc:date>
    </item>
    <item>
      <title>Port 80 Occupied???</title>
      <link>https://techcommunity.microsoft.com/t5/iis-support-blog/port-80-occupied/ba-p/4152243</link>
      <description>&lt;P&gt;Recently I was working on an issue, where customer was not able to browse the Default website hosted on IIS over port 80 and the error was:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Archi_Chakraborty_0-1716728383171.png" style="width: 345px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585954iE93F1F4BC5762326/image-dimensions/345x129?v=v2" width="345" height="129" role="button" title="Archi_Chakraborty_0-1716728383171.png" alt="Archi_Chakraborty_0-1716728383171.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Initial thought was, definitely the port is blocked...but who was blocking the port was the biggest question???&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So, I started the investigation with basic isolation steps:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Created a different test site with binding port 80 (by stopping the Default website as we cannot run two sites with the same port together). But the test site also failed with the same error.&lt;/LI&gt;
&lt;LI&gt;Created a different IP: Port 80 binding and it worked. Tested it on the default website and there also it worked.&lt;/LI&gt;
&lt;LI&gt;Checked on the customers machine if they had enabled any sort of proxy or firewall that might be blocking the port 80 particularly but that wasn't the case for the customer.&lt;/LI&gt;
&lt;LI&gt;I also ran the Port Query tool and there also I got the error that Port is being used:&amp;nbsp;&lt;A title="Port Query Tool" href="https://www.microsoft.com/en-in/download/details.aspx?id=24009" target="_blank" rel="noopener"&gt;Port Query Tool&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Next, ran the below command to see what all services are listening on port 80 and nothing was useful:&lt;BR /&gt;&lt;BR /&gt;&lt;LI-CODE lang="applescript"&gt;netstat -ano |findstr 80​&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;After doing some research, I found out that we have a service on the windows server called as "Sync Share service " that also by default uses the same port number 80 as IIS Default Web Site.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now, what is a Sync Share service???&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Work Folders is available in Windows Server 2012 R2 Essentials as part of the File and Storage Services role.&amp;nbsp;Work Folders uses the IIS Hostable Web Core feature and all management is performed via the Work Folders canvas in Server Manager as well as via Windows PowerShell cmdlets.&amp;nbsp; Windows Server Essentials is managed via its dashboard and the IIS Management UX.&amp;nbsp; Both products assume exclusive access of the SSL port (443) and HTTP port (80).&amp;nbsp; This is the default configuration for both products.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In my case, the customer had the service enabled but was not using it, so we stopped the service from the Services.msc window and continued using the Port 80 for the IIS hosted web applications.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now, if you would like to keep using both the services on the server, then you would need to change the port number for one of the services.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We have a very good article written about the same in this article:&amp;nbsp;&lt;A title="Port Conflict Issue in 2012 R2" href="https://techcommunity.microsoft.com/t5/storage-at-microsoft/windows-server-2012-r2-8211-resolving-port-conflict-with-iis/ba-p/424985" target="_blank" rel="noopener"&gt;Port Conflict Issue in 2012 R2&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this article helps everyone&amp;nbsp;&lt;img class="lia-deferred-image lia-image-emoji" src="https://techcommunity.microsoft.com/html/@8341BD79091AF36AA2A09063B554B5CD/images/emoticons/smile_40x40.gif" alt=":smile:" title=":smile:" /&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 26 May 2024 13:29:31 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/iis-support-blog/port-80-occupied/ba-p/4152243</guid>
      <dc:creator>Archi_Chakraborty</dc:creator>
      <dc:date>2024-05-26T13:29:31Z</dc:date>
    </item>
    <item>
      <title>Explore Cloud Computing with the New "Azure for Students" Module!</title>
      <link>https://techcommunity.microsoft.com/t5/educator-developer-blog/explore-cloud-computing-with-the-new-quot-azure-for-students/ba-p/4149285</link>
      <description>&lt;P&gt;I’m really excited to share a new module that I developed by working with the Microsoft Learn Team: "&lt;A href="https://learn.microsoft.com/en-us/training/modules/student-introduction-to-azure/?wt.mc_id=studentamb_202028" target="_blank" rel="noopener"&gt;Introduction to Azure for students&lt;/A&gt;." As students, we often encounter numerous tech challenges, from managing projects and assignments to exploring new fields like AI and data science. This module is designed to help you tackle these challenges head-on by diving into the fascinating world of cloud computing with Azure.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Designer.jpeg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584802iC8D76A90C15B36A5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Designer.jpeg" alt="Designer.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Why Cloud Computing?&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cloud computing might sound complex, but it's simpler than you think. Imagine it as a giant library where you can borrow books whenever you need them, without the hassle of buying or storing them. Similarly, cloud computing lets you use computing resources whenever you need them, without owning or maintaining the hardware and software. It's flexible, easy, and often more affordable.&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="a4770c3e0fd64906e73172c385edbc59.jpg" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584795iFA8AA3E131244053/image-size/medium?v=v2&amp;amp;px=400" role="button" title="a4770c3e0fd64906e73172c385edbc59.jpg" alt="a4770c3e0fd64906e73172c385edbc59.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;What You'll Learn&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this module, you’ll discover:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Core Concepts of Cloud Computing:&lt;/STRONG&gt; Learn the basics and understand what cloud computing is all about.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure in Action:&lt;/STRONG&gt; Explore real-world scenarios to see how Azure is used in various fields, from student projects to professional healthcare.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Getting Started with Azure:&lt;/STRONG&gt; Find out about the tools and services that will help you begin your Azure journey.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Why Azure Cloud?&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure is Microsoft’s cloud platform, offering over &lt;STRONG&gt;200 products and services.&lt;/STRONG&gt; Whether you're into AI, app development, data science, or machine learning, Azure has it all. Here’s how Azure can help you as a student:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Access Powerful Tools:&lt;/STRONG&gt; Utilize advanced tools and services without the need for expensive hardware.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Scalability:&lt;/STRONG&gt; Easily scale your resources up or down based on your project needs.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Cost-Effective:&lt;/STRONG&gt; Pay only for the resources you use and take advantage of free services and a $100 Azure credit with the Azure for Students offer.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;How Azure Can Help with College Projects?&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Imagine you’re working on a complex college project that involves data analysis and collaboration with classmates. With Azure, you can set up a virtual environment where everyone can work together seamlessly, share resources, and analyze data in real-time. Need to develop a mobile app for your project? Azure provides all the necessary tools and platforms to build, test, and deploy your app efficiently.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Special Offer for Students!&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Being a student usually means living on a budget. Good news—Microsoft's got your back with Azure for Students! Get a $100 Azure credit and access a sea of free services. Learning has never been so cost-effective and fun! &lt;A href="https://azure.microsoft.com/en-us/free/students?wt.mc_id=studentamb_202028" target="_blank" rel="noopener noreferrer"&gt;Learn more about the Azure for Students offer&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="1703521221247.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584798i8499CFA440A70564/image-size/large?v=v2&amp;amp;px=999" role="button" title="1703521221247.jpg" alt="1703521221247.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What are you waiting for? Start learning cloud today by going through the module with hands-on experience by claiming the &lt;A href="https://azure.microsoft.com/en-us/free/students?wt.mc_id=studentamb_202028" target="_blank" rel="noopener"&gt;Azure for Students offer&lt;/A&gt;. Whether you're working on a school project, developing an app, or just curious about the cloud, this module will provide you with the foundation to succeed.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Ready to get started?&lt;/STRONG&gt; Sign up on &lt;A href="https://learn.microsoft.com/en-us?wt.mc_id=studentamb_202028" target="_blank" rel="noopener"&gt;Microsoft Learn&lt;/A&gt; to save your progress and take the first step towards an exciting career in cloud computing!&lt;/P&gt;</description>
      <pubDate>Sat, 25 May 2024 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/educator-developer-blog/explore-cloud-computing-with-the-new-quot-azure-for-students/ba-p/4149285</guid>
      <dc:creator>MuhammadSamiullah</dc:creator>
      <dc:date>2024-05-25T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Build your own copilot! New Microsoft Copilot extensions</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-mechanics-blog/build-your-own-copilot-new-microsoft-copilot-extensions/ba-p/4151857</link>
      <description>&lt;P class="graf graf--p"&gt;Customize Copilot for Microsoft 365 with tailored experiences and external data integration through Copilot extensions. Enhance productivity by leveraging large language models and Microsoft Graph for personalized responses. With plugins and connectors, extend Copilot’s capabilities to streamline tasks and automate actions, all while maintaining context and boosting efficiency.&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Main-.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585820iB390E5EF23E83ACC/image-size/large?v=v2&amp;amp;px=999" role="button" title="Main-.png" alt="Main-.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://twitter.com/abrakjamson" target="_blank" rel="noopener" data-href="https://twitter.com/abrakjamson"&gt;Abram Jackson&lt;/A&gt;, Principal Product Manager for Microsoft 365 shows how you can get started building Copilot extensions.&lt;/P&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 class="graf graf--h4"&gt;Enrich and focus Microsoft Copilot with Copilot extensions.&lt;/H4&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585821i8C08636B2DE865EE/image-size/large?v=v2&amp;amp;px=999" role="button" title="1.png" alt="1.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=0s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=0s"&gt;How to tailor the user experience with actions, knowledge, and your own copilots.&lt;/A&gt;&lt;/P&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;Automate tasks.&lt;/H4&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585822i94DA2C8E917B10D2/image-size/large?v=v2&amp;amp;px=999" role="button" title="2.png" alt="2.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;Seamless integration with external systems and tailored experiences. &lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=200s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=200s"&gt;Check out Copilot extensions using connectors and plugins and Microsoft Graph connectors.&lt;/A&gt;&lt;/P&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;Integrate multiple Copilot extensions in one&amp;nbsp;session.&lt;/H4&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="3.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585823i279D783430F861D7/image-size/large?v=v2&amp;amp;px=999" role="button" title="3.png" alt="3.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;Leverage insights for comprehensive, polished outputs. &lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=294s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=294s"&gt;See how it works&lt;/A&gt;.&lt;/P&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;Watch our video&amp;nbsp;here:&lt;/H4&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FpI28N5wMoiE%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpI28N5wMoiE&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FpI28N5wMoiE%2Fhqdefault.jpg&amp;amp;key=fad07bfa4bd747d3bdea27e17b533c0e&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="600" height="337" scrolling="no" title="Build your own copilot! New Microsoft Copilot extensions" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;SECTION class="section section--body"&gt;
&lt;DIV class="section-divider"&gt;&lt;HR /&gt;&lt;/DIV&gt;
&lt;DIV class="section-content"&gt;
&lt;DIV class="section-inner sectionLayout--insetColumn"&gt;
&lt;H4 class="graf graf--h4"&gt;QUICK LINKS:&lt;/H4&gt;
&lt;P class="graf graf--p"&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=0s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=0s"&gt;00:00&lt;/A&gt; — Copilot extensions&lt;BR /&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=68s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=68s"&gt;01:08&lt;/A&gt; — Types of Copilot extensions&lt;BR /&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=119s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=119s"&gt;01:59&lt;/A&gt; — Microsoft Graph connectors&lt;BR /&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=200s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=200s"&gt;03:20&lt;/A&gt; — Plugins&lt;BR /&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=254s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=254s"&gt;04:14&lt;/A&gt; — Specialized copilot&lt;BR /&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=294s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=294s"&gt;04:54&lt;/A&gt; — Multiple customized copilots working together&lt;BR /&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=342s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=342s"&gt;05:42&lt;/A&gt; — How to build Copilot extensions&lt;BR /&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=405s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=405s"&gt;06:45&lt;/A&gt; — Plug into data-external or inside of Microsoft 365&lt;BR /&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=451s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=451s"&gt;07:31&lt;/A&gt; — IDE/Visual Studio Code&lt;BR /&gt;&lt;A class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=537s" target="_blank" rel="noopener" data-href="https://www.youtube.com/watch?v=pI28N5wMoiE&amp;amp;t=537s"&gt;08:57&lt;/A&gt; — Wrap up&lt;/P&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;Link References&lt;/H4&gt;
&lt;P class="graf graf--p"&gt;To get started, check out &lt;A class="markup--anchor markup--p-anchor" href="https://copilotstudio.microsoft.com" target="_blank" rel="noopener" data-href="https://copilotstudio.microsoft.com"&gt;https://copilotstudio.microsoft.com&lt;/A&gt;&lt;/P&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;Unfamiliar with Microsoft Mechanics?&lt;/H4&gt;
&lt;P class="graf graf--p"&gt;As Microsoft’s official video series for IT, you can watch and share valuable content and demos of current and upcoming tech from the people who build it at Microsoft.&lt;/P&gt;
&lt;UL class="postList"&gt;
&lt;LI class="graf graf--li"&gt;Subscribe to our YouTube: &lt;A class="markup--anchor markup--li-anchor" href="https://www.youtube.com/c/MicrosoftMechanicsSeries" target="_blank" rel="noopener" data-href="https://www.youtube.com/c/MicrosoftMechanicsSeries"&gt;https://www.youtube.com/c/MicrosoftMechanicsSeries&lt;/A&gt;&lt;/LI&gt;
&lt;LI class="graf graf--li"&gt;Talk with other IT Pros, join us on the Microsoft Tech Community: &lt;A class="markup--anchor markup--li-anchor" href="https://techcommunity.microsoft.com/t5/microsoft-mechanics-blog/bg-p/MicrosoftMechanicsBlog" target="_blank" rel="noopener" data-href="https://techcommunity.microsoft.com/t5/microsoft-mechanics-blog/bg-p/MicrosoftMechanicsBlog"&gt;https://techcommunity.microsoft.com/t5/microsoft-mechanics-blog/bg-p/MicrosoftMechanicsBlog&lt;/A&gt;&lt;/LI&gt;
&lt;LI class="graf graf--li"&gt;Watch or listen from anywhere, subscribe to our podcast: &lt;A class="markup--anchor markup--li-anchor" href="https://microsoftmechanics.libsyn.com/podcast" target="_blank" rel="noopener" data-href="https://microsoftmechanics.libsyn.com/podcast"&gt;https://microsoftmechanics.libsyn.com/podcast&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 class="graf graf--h4"&gt;Keep getting this insider knowledge, join us on&amp;nbsp;social:&lt;/H4&gt;
&lt;UL class="postList"&gt;
&lt;LI class="graf graf--li"&gt;Follow us on Twitter: &lt;A class="markup--anchor markup--li-anchor" href="https://twitter.com/MSFTMechanics" target="_blank" rel="noopener" data-href="https://twitter.com/MSFTMechanics"&gt;https://twitter.com/MSFTMechanics&lt;/A&gt;&lt;/LI&gt;
&lt;LI class="graf graf--li"&gt;Share knowledge on LinkedIn: &lt;A class="markup--anchor markup--li-anchor" href="https://www.linkedin.com/company/microsoft-mechanics/" target="_blank" rel="noopener" data-href="https://www.linkedin.com/company/microsoft-mechanics/"&gt;https://www.linkedin.com/company/microsoft-mechanics/&lt;/A&gt;&lt;/LI&gt;
&lt;LI class="graf graf--li"&gt;Enjoy us on Instagram: &lt;A class="markup--anchor markup--li-anchor" href="https://www.instagram.com/msftmechanics/" target="_blank" rel="noopener" data-href="https://www.instagram.com/msftmechanics/"&gt;https://www.instagram.com/msftmechanics/&lt;/A&gt;&lt;/LI&gt;
&lt;LI class="graf graf--li"&gt;Loosen up with us on TikTok: &lt;A class="markup--anchor markup--li-anchor" href="https://www.tiktok.com/@msftmechanics" target="_blank" rel="noopener" data-href="https://www.tiktok.com/@msftmechanics"&gt;https://www.tiktok.com/@msftmechanics&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/SECTION&gt;
&lt;SECTION class="section section--body"&gt;
&lt;DIV class="section-divider"&gt;&lt;HR /&gt;&lt;/DIV&gt;
&lt;DIV class="section-content"&gt;
&lt;DIV class="section-inner sectionLayout--insetColumn"&gt;
&lt;H4 class="graf graf--h4"&gt;Video Transcript:&amp;nbsp;&lt;/H4&gt;
&lt;P class="graf graf--p"&gt;-You can now customize Copilot for Microsoft 365 for your own unique needs, with tailored experiences that can work with external data, while adding unique skills to accelerate the things you do every day. This is now possible with Copilot extensions. And today I’ll demonstrate the experience with Copilot extensions and how to build them.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-First, let me unpack how Copilot for Microsoft 365 works in relation to Copilot extensions. Copilot for Microsoft 365 comprises large language models, information in the Microsoft Graph to find or reference files and data in places like SharePoint, OneDrive, email, your calendar, and Teams, along with information found on the internet to personalize the Copilot experience inside the Microsoft 365 apps you use.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-For example, when you submit a prompt in Word, Copilot determines what you are trying to do, finds additional information to ground your prompt, and then returns a fully formatted, highly personalized response to you. This is what sets Copilot for Microsoft 365 apart from free generative AI experiences.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-Copilot extensions enrich and focus this already great baseline experience further. There are a few main types. The first lets you plug into information sources relevant to you that are sitting outside of Microsoft 365 in near real time, and you can interact with them, like confirming a task was completed.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-This is made possible by available plugins. You can also use connectors to extend what the Microsoft Graph indexes to sites or services also outside of Microsoft 365. The next lets you build your own Copilot, focused on a specific task requiring a specific set of files or data to guide it.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-You can also add additional instructions and workflow to scope what it generates and even automate specific actions. This specialized Copilot is then made available as a Copilot extension for others to use. Let me make this real by walking through how Copilot extensions customize your experience with Copilot for Microsoft 365.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-In this example, I’m a support technician. And one of the things I regularly have to do is write a weekly report detailing the support cases that I’ve worked on. I’m in Copilot for Microsoft Teams, and I’ll first start with my baseline Copilot experience without extensions. I’ll write a prompt to find all the emails I sent today and group them by topic.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-And that finds me all of the emails I was looking for and groups them like I asked. I now want to go beyond Microsoft 365 data and include information and knowledge base articles outside of it that are on our support site. I’ll show you the enriched experience with my Copilot extension first, and then explain what’s going on under the covers.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-I’ll use a different session, and paste in, “Summarize all the emails I sent today, group them by high level topic. For each topic, find the support wiki article that is most related.” And KB articles will come from the connected site. Once the entire response is generated, I can see the matching KB articles for each topic. And if I look at the citations, these ones are the sources using my Graph connected site.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-Here, my Copilot extension is using a Microsoft Graph connector to find information from the external sources that are connected to the Microsoft Graph. Next, I’ll use a different Copilot extension that can also perform actions with an external system on my behalf. My IT team has enabled a plugin called Doc Improvement.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-In this prompt from yesterday, I’ll paste create a doc improvement task to improve that first KB article based on the related emails I sent. This doesn’t need all of the detail from the previous prompt because Copilot gets that information from the chat history in this session. And this extension actually writes back to another system and creates a task for a content writer to update one of our KB support articles.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-After I confirm, I see a confirmation that it has created the doc improvement work item. So far I’ve shown how by using Copilot extensions, my experience as a technician was tailored with content specific to me, while enabling dynamic connections to external data and creating a ticket in my knowledge base system. Now let’s look at how I can go further by focusing in on a specific task with a specialized Copilot available as a Copilot extension.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-This is our support content author Copilot, which my team has built to help us keep our knowledge base articles up to date. You can see that it has a few suggested prompts for skills or frequent tasks. I’ll paste in update the Wiki article about remote help to add a first step of making sure that the user has logged in. This will first find the correct KB article, get its contents, understand where to insert the text, and then ask me to confirm.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-I can also suggest a modification, but let me type, go ahead, and let Copilot make the update. And one more thing I’ll show you is how you can have multiple custom Copilots work together in the same conversation. I’ll go back to the session I had with Copilot earlier. This time, I will at mention the support content author Copilot with a similar prompt.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-This performs the same job, but keeps me in this same session. Now, I’ll at mention another custom Copilot that my team has written called Support Report Writer. Because it is being used in the same session, it has Microsoft Copilot’s analysis of my email, as well as information about the KB article I just updated.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-Then after it’s finished, you’ll see that I now have a fully written draft report that I can copy into an email or a document, and make any additional changes. So, that’s how Copilot extensions work. To build them, you can choose a low-code approach with Microsoft Copilot Studio, or an IDE like Visual Studio. Let’s start with the low-code approach to build your own Copilot. You can get to Copilot Studio by going to copilotstudio.microsoft.com.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-From the Copilots tab, I just need to add a Copilot. And I can either use a prompt to describe the Copilot I want to build, or I can skip right to the configuration, which I’ll do in this case. First, I need to give it a name, so I’ll type in “Support Report Writer.” For description, I’ve enabled clipboard history here, so I’ll paste in the text to describe my Copilot. Next, instructions, give your Copilot more context about its purpose and how to respond. You can get very specific with these instructions using natural language.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-Here I’ve pasted in about 600 characters, but these can be up to 8,000 characters. Starter prompts like we saw before in our custom Copilot can also be added for frequent tasks and to help new users quickly get started. These are optional, and I’ll skip this step to save a little time. From there, I just need to hit create.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-Once complete, I can make it available to the right users and groups by publishing it. Next, you can plug into other data, which can be external to, or inside of Microsoft 365. In the Copilot from Microsoft 365 page, you can see that I already have a few actions, including a few that point to a specific SharePoint locations for content. I’ll add an action.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-Here, I can choose between a connector to link to the data I want, conversation to link to an existing solution, a prompt to link to a standard reusable prompt, and a flow containing workflow automation. I’ll choose a conversation in my case. Now, I’ll give it a name, “Support KB Docs Improvement.” I’ll leave the default solution, and you’ll see that the schema name updates itself automatically.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-Then I’ll hit create. And if you prefer to use an IDE like Visual Studio Code, let me show you the experience with the Microsoft Teams toolkit installed. I’ll start with the plugin this time. You’ll see that I have three basic JSON files open in my tabs. Swagger that JSON to connect to my API using specified operations and responses to send back when it succeeds or fails. Supportplugin.JSON describes the actions to take for users and gives more information for the model to use. Below that, the functions are defined to perform tasks.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-Then in runtimes, it points back to the swagger file and what functions are defined there. Finally, the manifest.JSON, which includes a bit more metadata including the ID, naming, developer, description, and branding details. Importantly, you’ll see that in the manifest, I’ve also defined declarative Copilots. In my case, the content Copilot I showed you earlier. So let’s jump into that JSON file to show you how to build a Copilot.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-You’ll see that this file contains essentially the same elements that we saw in Copilot Studio. Things like the name, ID, and description. The instructions, again, to provide more context for your custom Copilot. We’ve also defined capabilities, which point to our Graph connector data. Actions for a plugin that points to our open API specification, and there are also conversation starters as suggested prompts with details about what those should do.&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="graf graf--p"&gt;-And with that, you can get started building Copilot extensions for more tailored experiences, capable of specialized tasks with the data you specify, even if it sits outside of Microsoft 365. These capabilities will be rolling out in the coming weeks. To learn more and get started, check out copilotstudio.microsoft.com. Keep watching Microsoft Mechanics for all the deep dives and latest updates for Copilot and more. Subscribe if you haven’t yet, and we’ll see you soon.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/SECTION&gt;</description>
      <pubDate>Sat, 25 May 2024 02:40:01 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-mechanics-blog/build-your-own-copilot-new-microsoft-copilot-extensions/ba-p/4151857</guid>
      <dc:creator>Zachary Cavanell</dc:creator>
      <dc:date>2024-05-25T02:40:01Z</dc:date>
    </item>
    <item>
      <title>Microsoft Build 2024: Resumo das Principais Novidades em IA e Tecnologia</title>
      <link>https://techcommunity.microsoft.com/t5/desenvolvedores-br/microsoft-build-2024-resumo-das-principais-novidades-em-ia-e/ba-p/4151824</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Durante os dias 21 a 23 de Maio de 2024, aconteceu o evento Microsoft Build 2024, que foi realizado tanto de forma presencial quanto online. O evento contou com inúmeras novidades e incríveis anúncios, principalmente voltados para o uso da Inteligência Artificial em diversas áreas. Neste artigo, estarei abordando os principais destaques do evento, bem como as novidades apresentadas durante o evento.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Então, vamos conferir as principais novidades do Microsoft Build 2024!&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="logo-ms-build.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585795i2073DD83A9A49F52/image-size/large?v=v2&amp;amp;px=999" role="button" title="logo-ms-build.png" alt="logo-ms-build.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 id="keynote-de-abertura---satya-nadella" class="code-line" dir="auto" data-line="13"&gt;Keynote de Abertura - Satya Nadella&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="satya.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585796i0C1F8CBC3E7991B6/image-size/large?v=v2&amp;amp;px=999" role="button" title="satya.png" alt="satya.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;O evento já começa destacando a importância e a transformação que a Inteligência Artificial está trazendo para o mundo. Sendo considerado uma das maiores revoluções tecnológicas nos últimos 30 anos.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fhvlpnaz6tNo%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dhvlpnaz6tNo&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fhvlpnaz6tNo%2Fhqdefault.jpg&amp;amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="600" height="337" scrolling="no" title="Open Video: Satya Nadella at Microsoft Build 2024" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Logo em seguida Satya Nadella entra no palco para realizar o keynote de abertura do Microsoft Build 2024. Satya Nadella destacou as inovações e lançamentos que prometem transformar a maneira como desenvolvemos e utilizamos a tecnologia com foco em Inteligência Artificial.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Caso queira assistir a keynote de abertura, podem rever abaixo:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F_r9em36n2b0%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D_r9em36n2b0&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F_r9em36n2b0%2Fhqdefault.jpg&amp;amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="600" height="337" scrolling="no" title="Microsoft Build opening keynote | KEY01" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 id="novidades-e-an%C3%BAncios" class="code-line" dir="auto" data-line="25"&gt;Novidades e Anúncios&lt;/H2&gt;
&lt;H3 id="copilot-pcs-o-futuro-da-computa%C3%A7%C3%A3o-com-ia" class="code-line" dir="auto" data-line="27"&gt;Copilot+ PCs: O Futuro da Computação com IA&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="copilot-plus-pc.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585797iAE239D0EE55608DD/image-size/large?v=v2&amp;amp;px=999" role="button" title="copilot-plus-pc.png" alt="copilot-plus-pc.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="33"&gt;Um dos anúncios mais empolgantes foi o lançamento dos&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://blogs.microsoft.com/blog/2024/05/20/introducing-copilot-pcs/" data-href="https://blogs.microsoft.com/blog/2024/05/20/introducing-copilot-pcs/" target="_blank"&gt;Copilot+ PCs&lt;/A&gt;&lt;/STRONG&gt;, a nova geração de computadores que integra IA em todos os níveis de hardware e software. Esses dispositivos, estarão disponíveis a partir de 18 de junho, prometem ser até 20 vezes mais poderosos e 100 vezes mais eficientes para cargas de trabalho de IA em comparação com PCs tradicionais.&lt;/P&gt;
&lt;P class="code-line" data-line="33"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="35"&gt;Em relação a esse lançamento, Satya Nadella apresentou um vídeo demonstrando o poder e a eficiência dos novos Copilot+ PCs. Abaixo vocês podem ver algumas das principais características desses novos dispositivos:&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fu1irwZNKhH0%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Du1irwZNKhH0&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fu1irwZNKhH0%2Fhqdefault.jpg&amp;amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="600" height="337" scrolling="no" title="Discover what's possible with Copilot+ PC" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Há uma série de recursos em relação a essa novidade. Para mais informações, acesse o link:&amp;nbsp;&lt;STRONG&gt;&lt;A href="https://news.microsoft.com/source/latam/features/ia-pt-br/apresentando-os-pcs-copilot/?lang=pt-br#:~:text=Os%20Copilot%2B%20PCs%20carregam%20processadores,executar%20diretamente%20no%20seu%20dispositivo." data-href="https://news.microsoft.com/source/latam/features/ia-pt-br/apresentando-os-pcs-copilot/?lang=pt-br#:~:text=Os%20Copilot%2B%20PCs%20carregam%20processadores,executar%20diretamente%20no%20seu%20dispositivo." target="_blank"&gt;Introducing Copilot+ PCs&lt;/A&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="windows-copilot-runtime-integra%C3%A7%C3%A3o-de-ia-no-cora%C3%A7%C3%A3o-do-windows" class="code-line" dir="auto" data-line="39"&gt;Windows Copilot Runtime: Integração de IA no Coração do Windows&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="windows-copilot-runtime.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585798i8B69B306D2F9174D/image-size/large?v=v2&amp;amp;px=999" role="button" title="windows-copilot-runtime.png" alt="windows-copilot-runtime.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="45"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="45"&gt;A Microsoft apresentou o&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://blogs.windows.com/windowsdeveloper/2024/05/21/unlock-a-new-era-of-innovation-with-windows-copilot-runtime-and-copilot-pcs/" data-href="https://blogs.windows.com/windowsdeveloper/2024/05/21/unlock-a-new-era-of-innovation-with-windows-copilot-runtime-and-copilot-pcs/" target="_blank"&gt;Windows Copilot Runtime&lt;/A&gt;&lt;/STRONG&gt;, uma plataforma que traz APIs e modelos de IA diretamente para o Windows 11. Com suporte a frameworks populares como PyTorch e a nova estrutura&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/windows/ai/overview?WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/windows/ai/overview?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;WebNN&lt;/A&gt;&lt;/STRONG&gt;. Assim sendo, os desenvolvedores poderão criar aplicativos de IA mais eficientes e poderosos.&lt;/P&gt;
&lt;P class="code-line" data-line="45"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="47"&gt;Para mais informações sobre o Windows Copilot Runtime, acesse o link:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/windows/ai/overview?WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/windows/ai/overview?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Windows Copilot Runtime&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="47"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="parcerias-poderosas-nvidia-e-amd" class="code-line" dir="auto" data-line="47"&gt;Parcerias Poderosas: NVIDIA e AMD&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="amd.png" style="width: 998px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585799iBC369883CE99C907/image-size/large?v=v2&amp;amp;px=999" role="button" title="amd.png" alt="amd.png" /&gt;&lt;/span&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 class="code-line" data-line="53"&gt;As parcerias da Microsoft com NVIDIA e AMD foram reforçadas, com a introdução de novas GPUs como a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://blogs.nvidia.com/blog/microsoft-build-optimized-ai-developers/" data-href="https://blogs.nvidia.com/blog/microsoft-build-optimized-ai-developers/" target="_blank"&gt;NVIDIA&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;H200 e B100, além de VMs baseadas no acelerador&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://techcommunity.microsoft.com/t5/azure-high-performance-computing/introducing-the-new-azure-ai-infrastructure-vm-series-nd-mi300x/ba-p/4145152?WT.mc_id=javascript-00000-gllemos" data-href="https://techcommunity.microsoft.com/t5/azure-high-performance-computing/introducing-the-new-azure-ai-infrastructure-vm-series-nd-mi300x/ba-p/4145152?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;AMD MI300X&lt;/A&gt;&lt;/STRONG&gt;. Essas colaborações visam fornecer a melhor performance e custo-benefício para desenvolvedores que utilizam IA.&lt;/P&gt;
&lt;P class="code-line" data-line="53"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="55"&gt;Para mais informações sobre essas parcerias, acesse os links:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://blogs.nvidia.com/blog/microsoft-build-optimized-ai-developers/" data-href="https://blogs.nvidia.com/blog/microsoft-build-optimized-ai-developers/" target="_blank"&gt;NVIDIA&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;e&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://techcommunity.microsoft.com/t5/azure-high-performance-computing/introducing-the-new-azure-ai-infrastructure-vm-series-nd-mi300x/ba-p/4145152?WT.mc_id=javascript-00000-gllemos" data-href="https://techcommunity.microsoft.com/t5/azure-high-performance-computing/introducing-the-new-azure-ai-infrastructure-vm-series-nd-mi300x/ba-p/4145152?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;AMD&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="55"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="microsoft-fabric-intelig%C3%AAncia-em-tempo-real" class="code-line" dir="auto" data-line="55"&gt;Microsoft Fabric: Inteligência em Tempo Real&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fabric.png" style="width: 900px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585800i9B666CCE412A7D30/image-size/large?v=v2&amp;amp;px=999" role="button" title="fabric.png" alt="fabric.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="61"&gt;O&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/fabric/get-started/microsoft-fabric-overview?WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/fabric/get-started/microsoft-fabric-overview?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Microsoft Fabric&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;foi revelado como uma plataforma integrada para a gestão de dados em tempo real. Com ele, empresas poderão obter insights acionáveis de maneira rápida e eficiente, integrando dados de diversas fontes, incluindo IoT e sistemas de telemetria. Entre as novidades relacionadas ao produto:&lt;/P&gt;
&lt;P class="code-line" data-line="61"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="code-line" dir="auto" data-line="63"&gt;
&lt;LI class="code-line" dir="auto" data-line="63"&gt;
&lt;P class="code-line" data-line="63"&gt;&lt;STRONG&gt;Inteligência em Tempo Real:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Solução de SaaS para análise de dados em tempo real, permitindo decisões mais rápidas e informadas.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="65"&gt;
&lt;P class="code-line" data-line="65"&gt;&lt;STRONG&gt;Banco de Dados PostgreSQL no Azure:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Capacidades avançadas de IA integradas ao banco de dados, permitindo chamadas para o Azure OpenAI Service e geração de embeddings diretamente no banco de dados.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="67"&gt;
&lt;P class="code-line" data-line="67"&gt;&lt;STRONG&gt;Novos Recursos no Microsoft Fabric:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Kit de Desenvolvimento de Workload, compartilhamento de dados em tempo real, API GraphQL e habilidades de IA integradas para experiências de dados.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="code-line" data-line="69"&gt;Para mais informações sobre as novidades relacionadas ao Microsoft Fabric, acesse o&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/fabric/get-started/%5Bmicrosoft-fabric-overview?WT.mc_id=javascript-00000-gllemos%5D(https://www.microsoft.com/microsoft-fabric/blog/2024/05/21/unlock-real-time-insights-with-ai-powered-analytics-in-microsoft-fabric/?WT.mc_id=javascript-00000-gllemos)" data-href="https://learn.microsoft.com/fabric/get-started/%5Bmicrosoft-fabric-overview?WT.mc_id=javascript-00000-gllemos%5D(https://www.microsoft.com/microsoft-fabric/blog/2024/05/21/unlock-real-time-insights-with-ai-powered-analytics-in-microsoft-fabric/?WT.mc_id=javascript-00000-gllemos)" target="_blank"&gt;artigo: Unlock real-time insights with AI-powered analytics in Microsoft Fabric&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="69"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="expans%C3%A3o-do-copilot-de-assistente-pessoal-a-assistente-de-equipe" class="code-line" dir="auto" data-line="69"&gt;Expansão do Copilot: De Assistente Pessoal a Assistente de Equipe&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F4k2T5sfGIP4%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D4k2T5sfGIP4&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F4k2T5sfGIP4%2Fhqdefault.jpg&amp;amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="600" height="337" scrolling="no" title="Introducing Team Copilot | Microsoft 365" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="75"&gt;O Microsoft 365 Copilot foi expandido para atuar como um assistente de equipe, denominado "&lt;STRONG&gt;&lt;A href="https://www.microsoft.com/microsoft-365/blog/2024/05/21/new-agent-capabilities-in-microsoft-copilot-unlock-business-value/?WT.mc_id=javascript-00000-gllemos" data-href="https://www.microsoft.com/microsoft-365/blog/2024/05/21/new-agent-capabilities-in-microsoft-copilot-unlock-business-value/?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Team Copilot&lt;/A&gt;&lt;/STRONG&gt;". Essa ferramenta promete melhorar a colaboração e a produtividade das equipes, facilitando a gestão de reuniões e a comunicação em grupo.&lt;/P&gt;
&lt;P class="code-line" data-line="75"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="77"&gt;Para mais informações sobre o Team Copilot, acesse o link:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://www.microsoft.com/microsoft-365/blog/2024/05/21/new-agent-capabilities-in-microsoft-copilot-unlock-business-value/?WT.mc_id=javascript-00000-gllemos" data-href="https://www.microsoft.com/microsoft-365/blog/2024/05/21/new-agent-capabilities-in-microsoft-copilot-unlock-business-value/?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Team Copilot&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="77"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="copilot-studio-personaliza%C3%A7%C3%A3o-e-automa%C3%A7%C3%A3o-de-copilots" class="code-line" dir="auto" data-line="77"&gt;Copilot Studio: Personalização e Automação de Copilots&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F5H6_pCUt-mk%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D5H6_pCUt-mk&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F5H6_pCUt-mk%2Fhqdefault.jpg&amp;amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="600" height="337" scrolling="no" title="Microsoft Copilot Studio | Build copilots with agent capabilities" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="83"&gt;Com o&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/microsoft-copilot-studio/nlu-gpt-quickstart?WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/microsoft-copilot-studio/nlu-gpt-quickstart?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Copilot Studio&lt;/A&gt;&lt;/STRONG&gt;, desenvolvedores agora podem criar copilotos personalizados, integrando fontes de dados específicas e automatizando tarefas complexas. A ferramenta também suporta a criação de conectores personalizados, facilitando a integração com sistemas corporativos.&lt;/P&gt;
&lt;P class="code-line" data-line="85"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="87"&gt;Para mais informações sobre o Copilot Studio, acesse o link:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/microsoft-copilot-studio/nlu-gpt-quickstart?WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/microsoft-copilot-studio/nlu-gpt-quickstart?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Copilot Studio&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="87"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="fam%C3%ADlia-phi-3-modelos-de-linguagem-avan%C3%A7ados" class="code-line" dir="auto" data-line="87"&gt;Família Phi-3: Modelos de Linguagem Avançados&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="phi-3.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585801i80886748B98EDC61/image-size/large?v=v2&amp;amp;px=999" role="button" title="phi-3.png" alt="phi-3.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="93"&gt;A Microsoft ampliou sua família de modelos de linguagem, afirmando o seu compromisso em desenvolver soluções Open Source. E, como estamos vivenciando uma demanda crescente por modelos de linguagem, a Microsoft introduzindo o P**&lt;A href="https://azure.microsoft.com/products/phi-3?WT.mc_id=javascript-00000-gllemos" data-href="https://azure.microsoft.com/products/phi-3?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;hi-3 Vision&lt;/A&gt;**, que combina capacidades de linguagem e visão, e novos modelos menores e mais eficientes. Esses modelos prometem ser altamente eficazes em uma variedade de aplicações.&lt;/P&gt;
&lt;P class="code-line" data-line="93"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="95"&gt;Para mais informações sobre a Família Phi-3, acesse o link do artigo:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://azure.microsoft.com/blog/new-models-added-to-the-phi-3-family-available-on-microsoft-azure/?WT.mc_id=javascript-00000-gllemos" data-href="https://azure.microsoft.com/blog/new-models-added-to-the-phi-3-family-available-on-microsoft-azure/?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;New models added to the Phi-3 family, available on Microsoft Azure&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="95"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="windows-365-e-parceria-com-meta-expans%C3%A3o-para-novos-dispositivos" class="code-line" dir="auto" data-line="95"&gt;Windows 365 e Parceria com Meta: Expansão para Novos Dispositivos&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="99"&gt;A parceria com a Meta permitirá que o Windows 365 seja utilizado em dispositivos Quest, trazendo a experiência do Windows para a realidade virtual e permitindo a criação de aplicativos volumétricos em 3D.&lt;/P&gt;
&lt;P class="code-line" data-line="99"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 id="keynote-dia-2---scott-guthrie" class="code-line" dir="auto" data-line="99"&gt;Keynote Dia 2 - Scott Guthrie&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="scott.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585802i8CBAEE8F69DF4A31/image-size/large?v=v2&amp;amp;px=999" role="button" title="scott.png" alt="scott.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="105"&gt;O segundo dia do evento foi marcado pela keynote de Scott Guthrie, que destacou a importância da nuvem e da IA especificamente para desenvolvedores. Ele apresentou várias novidades e atualizações relacionadas ao Azure e ao desenvolvimento de aplicativos relacionados à IA.&lt;/P&gt;
&lt;P class="code-line" data-line="105"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="107"&gt;Caso queira assistir a keynote de Scott Guthrie assista abaixo:&lt;/P&gt;
&lt;P class="code-line" data-line="107"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="107"&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F2X698yueu7I%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D2X698yueu7I&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F2X698yueu7I%2Fhqdefault.jpg&amp;amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="600" height="337" scrolling="no" title="Next generation AI for developers with the Microsoft Cloud | KEY02" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="107"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="107"&gt;&lt;SPAN&gt;Vamos agora conferir as principais novidades apresentadas por Scott Guthrie&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="107"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="github-copilot-workspace-revolucionando-o-desenvolvimento-de-software" class="code-line" dir="auto" data-line="111"&gt;GitHub Copilot Workspace: Revolucionando o Desenvolvimento de Software&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="gh-workspace.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585803iC5BED6A910C173E7/image-size/large?v=v2&amp;amp;px=999" role="button" title="gh-workspace.png" alt="gh-workspace.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="117"&gt;Scott Guthrie anunciou o GitHub Copilot Workspace, uma evolução do GitHub Copilot que permite aos desenvolvedores brainstorm, planejamento, construção e teste de código usando linguagem natural. A ferramenta promete aumentar a produtividade e reduzir a complexidade do desenvolvimento de software.&lt;/P&gt;
&lt;P class="code-line" data-line="117"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="119"&gt;O serviço por enquanto está em fase preview. Mas, você pode saber mais sobre o GitHub Copilot Workspace acessando o link:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://githubnext.com/projects/copilot-workspace" data-href="https://githubnext.com/projects/copilot-workspace" target="_blank"&gt;GitHub Copilot Workspace&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="119"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="aks-automatic-kubernetes-simplificado" class="code-line" dir="auto" data-line="119"&gt;AKS Automatic: Kubernetes Simplificado&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="123"&gt;A nova oferta&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/azure/aks/intro-aks-automatic?WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/azure/aks/intro-aks-automatic?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;AKS Automatic&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;tem como proposta automatizar a configuração e gerenciamento de clusters Kubernetes, garantindo desempenho otimizado e segurança. Essa ferramenta é ideal para desenvolvedores que buscam simplicidade e eficiência na gestão de suas aplicações em contêineres.&lt;/P&gt;
&lt;P class="code-line" data-line="123"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="net-aspire-desenvolvimento-em-nuvem-facilitado" class="code-line" dir="auto" data-line="123"&gt;.NET Aspire: Desenvolvimento em Nuvem Facilitado&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="aspire.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585804i5AAA017EB971CE5A/image-size/large?v=v2&amp;amp;px=999" role="button" title="aspire.png" alt="aspire.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="129"&gt;A Microsoft lançou o como General Availability o&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/dotnet/aspire/get-started/build-your-first-aspire-app?pivots=visual-studio&amp;amp;WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/dotnet/aspire/get-started/build-your-first-aspire-app?pivots=visual-studio&amp;amp;WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;.NET Aspire&lt;/A&gt;&lt;/STRONG&gt;, uma ferramenta de código aberto que facilita o desenvolvimento de soluções nativas da nuvem, proporcionando segurança, confiabilidade e alto desempenho.&lt;/P&gt;
&lt;P class="code-line" data-line="129"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="131"&gt;Se você deseja experimentar o .NET Aspire, acesse o tutorial:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/dotnet/aspire/get-started/build-your-first-aspire-app?pivots=visual-studio&amp;amp;WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/dotnet/aspire/get-started/build-your-first-aspire-app?pivots=visual-studio&amp;amp;WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Quickstart: Build your first .NET Aspire app&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="133"&gt;E, se você for uma Pessoa Desenvolvedora C# e deseja saber como usar o .NET Aspire com Node.js, acesse o tutorial:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/dotnet/aspire/get-started/build-aspire-apps-with-nodejs?WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/dotnet/aspire/get-started/build-aspire-apps-with-nodejs?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Build .NET Aspire apps with Node.js&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="133"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="github-copilot-for-azure-integra%C3%A7%C3%A3o-perfeita-com-a-nuvem" class="code-line" dir="auto" data-line="133"&gt;GitHub Copilot for Azure: Integração Perfeita com a Nuvem&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="copilot-azure.png" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585806i404F8626E75C8E15/image-size/large?v=v2&amp;amp;px=999" role="button" title="copilot-azure.png" alt="copilot-azure.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="139"&gt;A integração do&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://azure.microsoft.com/products/copilot?WT.mc_id=javascript-00000-gllemos" data-href="https://azure.microsoft.com/products/copilot?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;GitHub Copilot com Azure&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;permite que os desenvolvedores façam perguntas em linguagem natural sobre seus ambientes de nuvem Azure, aumentando a eficiência e mantendo os desenvolvedores no fluxo de trabalho.&lt;/P&gt;
&lt;P class="code-line" data-line="139"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="141"&gt;Para saber mais sobre o GitHub Copilot for Azure, acesse o link:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://techcommunity.microsoft.com/t5/azure-infrastructure-blog/copilot-in-azure-technical-deep-dive/ba-p/4146546?WT.mc_id=javascript-00000-gllemos" data-href="https://techcommunity.microsoft.com/t5/azure-infrastructure-blog/copilot-in-azure-technical-deep-dive/ba-p/4146546?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;do artigo: Copilot in Azure Technical Deep Dive&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="141"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="azure-ai-studio-hub-de-desenvolvimento-de-ia-generativa" class="code-line" dir="auto" data-line="141"&gt;Azure AI Studio: Hub de Desenvolvimento de IA Generativa&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;O&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Azure AI Studio&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;é o centro de desenvolvimento para soluções de IA generativa, incluindo o novo serviço de tokens PGO Global, que oferece até 10 milhões de tokens por minuto de throughput, e um desconto de 50% para processamento de lotes fora do horário de pico.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="147"&gt;Algumas das novidades apresentadas no Azure AI Studio:&lt;/P&gt;
&lt;UL class="code-line" dir="auto" data-line="149"&gt;
&lt;LI class="code-line" dir="auto" data-line="149"&gt;
&lt;P class="code-line" data-line="149"&gt;&lt;STRONG&gt;Abordagem de Desenvolvimento Dual:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Interface amigável e capacidades de desenvolvimento orientado a código&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="151"&gt;
&lt;P class="code-line" data-line="151"&gt;&lt;STRONG&gt;Experiências de Desenvolvimento:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Integração com Azure Developer CLI (azd) e AI Toolkit para Visual Studio Code, facilitando operações de modelos de linguagem (LLMOps). (Em pré-visualização)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="153"&gt;
&lt;P class="code-line" data-line="153"&gt;&lt;STRONG&gt;Modelos como Serviço (MaaS):&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Acesso a modelos de fundação de líderes do setor, permitindo a criação de apps de IA generativa sem necessidade de infraestrutura dedicada. (Em pré-visualização)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="155"&gt;
&lt;P class="code-line" data-line="155"&gt;&lt;STRONG&gt;Ferramentas e Serviços de IA:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Integração de dados, orquestração de prompts e avaliação de sistemas, suportando fluxos de trabalho multimodais. (Em pré-visualização)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="157"&gt;
&lt;P class="code-line" data-line="157"&gt;&lt;STRONG&gt;Rastreamento e Depuração:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Melhoria na visão e depuração de fluxos de trabalho de IA. (Em pré-visualização)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="159"&gt;
&lt;P class="code-line" data-line="159"&gt;&lt;STRONG&gt;Monitoramento de Apps de IA Generativa:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Monitoramento de uso de tokens, qualidade e métricas operacionais, com alertas para melhorias contínuas. (Em pré-visualização)&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;Agora o serviço está como General Availability. Para saber mais sobre o Azure AI Studio, acesse o link:&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=javascript-00000-gllemos" data-href="https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Azure AI Studio&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="modelos-frontier-e-open-source-flexibilidade-e-escolha" class="code-line" dir="auto" data-line="162"&gt;Modelos Frontier e Open Source: Flexibilidade e Escolha&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="166"&gt;A Microsoft está trazendo uma ampla gama de modelos de IA de código aberto para o Azure AI, incluindo mais de 1600 modelos de parceiros como&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://huggingface.co/" data-href="https://huggingface.co/" target="_blank"&gt;Hugging Face&lt;/A&gt;&lt;/STRONG&gt;, Meta, MSR AI e Nvidia, oferecendo flexibilidade e escolha para os desenvolvedores.&lt;/P&gt;
&lt;P class="code-line" data-line="166"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="168"&gt;Devido a isso, a Microsoft informou que o novo modelo da OpenAI, o GPT-4o, que conta como um omni-modelo capaz de realizar tarefas de visão, texto e falas, estará disponível no Azure AI Studio.&lt;/P&gt;
&lt;P class="code-line" data-line="168"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="170"&gt;Para saber mais sobre os modelos de IA de código aberto, acesse o link:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://news.microsoft.com/en-hk/2024/05/22/whats-next-microsoft-build-continues-the-evolution-and-expansion-of-ai-tools-for-developers/" data-href="https://news.microsoft.com/en-hk/2024/05/22/whats-next-microsoft-build-continues-the-evolution-and-expansion-of-ai-tools-for-developers/" target="_blank"&gt;OpenAI GPT-4o&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="170"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="azure-ai-search-e-azure-cosmos-db-poder-para-aplica%C3%A7%C3%B5es-rag" class="code-line" dir="auto" data-line="170"&gt;Azure AI Search e Azure Cosmos DB: Poder para Aplicações RAG&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="174"&gt;Ferramentas como Azure AI Search e Azure Cosmos DB são essenciais para a criação de aplicações RAG (Retrieval-Augmented Generation), permitindo escalabilidade e alta qualidade nas respostas.&lt;/P&gt;
&lt;P class="code-line" data-line="174"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="176"&gt;As novidades apresentadas sobre o Azure AI Search:&lt;/P&gt;
&lt;P class="code-line" data-line="176"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="code-line" dir="auto" data-line="178"&gt;
&lt;LI class="code-line" dir="auto" data-line="178"&gt;
&lt;P class="code-line" data-line="178"&gt;&lt;STRONG&gt;Capacidade de RAG em Escala:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Suporte para tipos de vetor binário e outras funcionalidades de busca vetorial, melhorando a eficiência de armazenamento.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="180"&gt;
&lt;P class="code-line" data-line="180"&gt;&lt;STRONG&gt;Relevância da Pesquisa:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Melhorias na busca vetorial e híbrida, incluindo ponderação de vetores, controle de limiar de pontuação e aumento no tamanho máximo de recuperação de texto, aprimorando a precisão das respostas.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="182"&gt;
&lt;P class="code-line" data-line="182"&gt;&lt;STRONG&gt;Integrações de Dados e Processamento:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class="code-line" dir="auto" data-line="183"&gt;
&lt;LI class="code-line" dir="auto" data-line="183"&gt;Vetorização de imagens integrada via Azure AI Vision e novos modelos de embedding no catálogo do Azure AI Studio.&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="184"&gt;Conector OneLake para integração direta de dados do Microsoft Fabric ao Azure AI Search, ampliando as fontes de dados que podem ser indexadas e pesquisadas.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;As novidades apresentadas sobre o Azure Cosmos DB:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="code-line" dir="auto" data-line="188"&gt;
&lt;LI class="code-line" dir="auto" data-line="188"&gt;
&lt;P class="code-line" data-line="188"&gt;&lt;STRONG&gt;Capacidades de Banco de Dados Vetorial Integradas:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Indexação vetorial embutida e busca de similaridade vetorial no Azure Cosmos DB para NoSQL, eliminando a necessidade de um banco de dados vetorial separado. (Disponível em junho, em Preview)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="190"&gt;
&lt;P class="code-line" data-line="190"&gt;&lt;STRONG&gt;Migração de Conta Serverless para Provisionada:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Transição de contas serverless para modo de capacidade provisionada através do portal Azure ou CLI, mantendo acesso total a operações de leitura e escrita. (Em pré-visualização)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="192"&gt;
&lt;P class="code-line" data-line="192"&gt;&lt;STRONG&gt;Recuperação de Desastres Entre Regiões:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Recuperação de desastres no Azure Cosmos DB baseado em vCore para MongoDB, permitindo a criação de réplicas de clusters em outras regiões, com promoção automática em caso de falha. (Em Preview)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="194"&gt;
&lt;P class="code-line" data-line="194"&gt;&lt;STRONG&gt;Integração com Vercel:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Conexão fácil de apps Vercel a bancos de dados Azure Cosmos DB existentes ou criação de novas contas Azure Try Cosmos DB integradas aos projetos Vercel. (Em GA)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="code-line" dir="auto" data-line="196"&gt;
&lt;P class="code-line" data-line="196"&gt;&lt;STRONG&gt;SDK Go para Azure Cosmos DB:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;O SDK Go permite operações em contas Azure Cosmos DB para NoSQL, suportando regiões preferidas, tentativas entre regiões e diagnósticos de solicitações. (GA)&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Para saber mais sobre as novidades lançadas sobre Azure Cosmos DB, acesse o link:&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://devblogs.microsoft.com/cosmosdb/build2024-cosmos-roundup/" data-href="https://devblogs.microsoft.com/cosmosdb/build2024-cosmos-roundup/" target="_blank"&gt;aqui&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 id="conclus%C3%A3o" class="code-line" dir="auto" data-line="198"&gt;Conclusão&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="202"&gt;O Microsoft Build 2024 foi um evento repleto de novidades e anúncios incríveis, principalmente voltados para a Inteligência Artificial e a nuvem. As parcerias com empresas como NVIDIA e AMD, o lançamento dos Copilot+ PCs e a expansão da família Phi-3 são exemplos de como a Microsoft está investindo em soluções inovadoras e de alto desempenho.&lt;/P&gt;
&lt;P class="code-line" data-line="202"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="204"&gt;Além disso, a integração do GitHub Copilot com Azure e as atualizações no Azure AI Studio demonstram o compromisso da Microsoft em fornecer ferramentas poderosas e flexíveis para desenvolvedores de todo o mundo.&lt;/P&gt;
&lt;P class="code-line" data-line="204"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="206"&gt;Claro que só foi possível abordar uma pequena parte das novidades apresentadas no evento. Para saber mais sobre todas as novidades e anúncios apresentados durante o Microsoft Build, existe um book explicando detalhadamente cada uma das novidades. Vocês podem acessar o book através do link:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://news.microsoft.com/build-2024-book-of-news/?WT.mc_id=javascript-00000-gllemos" data-href="https://news.microsoft.com/build-2024-book-of-news/?WT.mc_id=javascript-00000-gllemos" target="_blank"&gt;Microsoft Build 2024 - Book of News&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="code-line" data-line="206"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="209"&gt;Espero que tenham gostado do resumo e que as novidades apresentadas possam inspirar vocês a criar soluções inovadoras e impactantes.&lt;/P&gt;
&lt;P class="code-line" data-line="209"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="code-line" data-line="211"&gt;Nos vemos no próximo artigo!&lt;/P&gt;</description>
      <pubDate>Fri, 24 May 2024 23:51:09 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/desenvolvedores-br/microsoft-build-2024-resumo-das-principais-novidades-em-ia-e/ba-p/4151824</guid>
      <dc:creator>glaucia_lemos86</dc:creator>
      <dc:date>2024-05-24T23:51:09Z</dc:date>
    </item>
    <item>
      <title>Seamless Identity Integration: Azure API Management with Azure AD B2C (AADB2C)</title>
      <link>https://techcommunity.microsoft.com/t5/healthcare-and-life-sciences/seamless-identity-integration-azure-api-management-with-azure-ad/ba-p/4151588</link>
      <description>&lt;H1&gt;Seamless Identity Integration: Azure API Management with Azure &amp;nbsp;(AADB2C)&lt;/H1&gt;
&lt;H2&gt;Introduction&lt;/H2&gt;
&lt;P&gt;Azure API Management (APIM) is a robust platform for managing and securing your APIs. In this blog post, we will guide you through integrating Azure API Management with Azure Active Directory B2C (AADB2C) for identity management. This integration enhances the security of your APIs by requiring user authentication before access is granted. We will break down the process into three key steps: setting up the Developer Portal to use AADB2C, configuring APIM to use OAuth 2.0 for authorization, and implementing token validation to ensure secure access.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This blog post consolidates information from three separate Microsoft Learn documents, providing a comprehensive, end-to-end guide for setting up AADB2C authentication in your APIM instance. Whether you're accessing your API via cURL, Postman, the Developer Portal, or other clients, this guide will ensure that your APIM instance is configured to handle authentication from AADB2C.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Part One: Setting up Developer Portal with AADB2C&lt;/H3&gt;
&lt;P&gt;In this section, we will prepare the Developer Portal to use AADB2C for user authentication.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-aad-b2c" target="_blank" rel="noopener"&gt;Learning Document&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Create Sign-Up and Sign-In Policy in AADB2C&lt;/STRONG&gt;
&lt;OL&gt;
&lt;LI&gt;Set up a "Sign up and sign in" policy in AADB2C.
&lt;OL&gt;
&lt;LI&gt;For this you can use the same policy for both, just create a "Sign up and sign in" policy in AADB2C&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp; &amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_1-1716565543004.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585642i97C764DEEF558F54/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Andrew_Redman_1-1716565543004.png" alt="Andrew_Redman_1-1716565543004.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Ensure you select all the attributes like Given Name, Surname, and return claims like Email Addresses and User's ObjectID. Here are the minimum requirements:
&lt;OL&gt;
&lt;LI&gt;Collect Attributes:&amp;nbsp; Given Name, Surname&lt;/LI&gt;
&lt;LI&gt;Return claims: Given Name, Surname, Email Addresses, User's ObjectID&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp; &amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_2-1716565543011.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585644i45BD77BD64C3272B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Andrew_Redman_2-1716565543011.png" alt="Andrew_Redman_2-1716565543011.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Configure Identity in Developer Portal&lt;/STRONG&gt;
&lt;OL&gt;
&lt;LI&gt;Add AADB2C as an identity provider in the Developer Portal.
&lt;OL&gt;
&lt;LI&gt;Open a new tab and navigate the Azure Portal for APIM and under the Developer Portal, select Identities:
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_3-1716565543012.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585643iCCE59F570654410D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Andrew_Redman_3-1716565543012.png" alt="Andrew_Redman_3-1716565543012.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Add a provider by clicking the “Add” button. That will prompt you with a choice of Types, you will want to select “Azure Active Directory B2C”
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_4-1716565543012.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585645i0F5A17B591769A79/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Andrew_Redman_4-1716565543012.png" alt="Andrew_Redman_4-1716565543012.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Use the MSAL (Microsoft Authentication Library) client library for authentication, do not worry about the rest of the attributes just yet, we will come back to them.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_5-1716565543016.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585646i770E9E3D462A0E95/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Andrew_Redman_5-1716565543016.png" alt="Andrew_Redman_5-1716565543016.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI&gt;Copy the redirect URL for the Developer Portal.
&lt;OL&gt;
&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; We will need this to create the backend app registration in the next step.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Create Backend App Registration in AADB2C&lt;/STRONG&gt;
&lt;OL&gt;
&lt;LI&gt;Register an app to represent your API.
&lt;OL&gt;
&lt;LI&gt;Now, go back to your AADB2C tab, select App Registrations from the list on the left and click “New Registration”.
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_6-1716565543017.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585647iDC72A7DE282E87F6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Andrew_Redman_6-1716565543017.png" alt="Andrew_Redman_6-1716565543017.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Enter a name for the app registration, for my example I am calling it `apim-api-backend`&lt;/LI&gt;
&lt;LI&gt;Select the Supported account types that best fit your scenario&lt;/LI&gt;
&lt;LI&gt;Setup the redirect URI (Uniform Resource Identifier) with a Single-page application (SPA) and paste the URI you copied from above.
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_7-1716565543020.png" style="width: 749px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585650i3C72D454AF199B3A/image-dimensions/749x326?v=v2" width="749" height="326" role="button" title="Andrew_Redman_7-1716565543020.png" alt="Andrew_Redman_7-1716565543020.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Click register&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Create a client secret for this app registration.
&lt;OL&gt;
&lt;LI&gt;Now that the app registration is created, you will need to create a client secret
&lt;OL&gt;
&lt;LI&gt;Open the app registration you just created&lt;/LI&gt;
&lt;LI&gt;On the overview tab, you will see the Application (client) ID, copy that for later.
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_8-1716565543022.png" style="width: 705px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585648iAE6F7873C2A2378C/image-dimensions/705x252?v=v2" width="705" height="252" role="button" title="Andrew_Redman_8-1716565543022.png" alt="Andrew_Redman_8-1716565543022.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Then go to Certificates &amp;amp; secrets and create a new client secret. After you hit the Add button, it will show you the 'Value' of your secret. You will need to save this as it will not be shown again for security reasons.
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_9-1716565543024.png" style="width: 702px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585649iB2957ABFB97CB43E/image-dimensions/702x214?v=v2" width="702" height="214" role="button" title="Andrew_Redman_9-1716565543024.png" alt="Andrew_Redman_9-1716565543024.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Add Identity Provider in APIM&lt;/STRONG&gt;
&lt;OL&gt;
&lt;LI&gt;Now head back to APIM tab you left open earlier (or just open a new tab now and navigate to the APIM instance we have been working with), go to Identities, Add Identity Provider page and fill out the client id, and client secret with the values you copied from above
&lt;OL&gt;
&lt;LI&gt;You will also need to fill out the Signin tenant. This is your AADB2C tenant, and it has the following format: &amp;lt;aadb2c-tenant-name&amp;gt;.onmicrosoft.com. After you fill out that text box, it should fill out the Authority for you, but if not, it is &amp;lt;aadb2c-tenant-name&amp;gt;.b2clogin.com.&lt;/LI&gt;
&lt;LI&gt;Next fill out the sign-up and sign-in policy (we created this earlier in Step 1, so go copy the name you used above), if you have the profile editing and password reset policies you can add those here as well.&lt;/LI&gt;
&lt;LI&gt;Click Add
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_10-1716565543029.png" style="width: 699px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585653i9008F69ED7A01C9B/image-dimensions/699x601?v=v2" width="699" height="601" role="button" title="Andrew_Redman_10-1716565543029.png" alt="Andrew_Redman_10-1716565543029.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Now that you have created everything, you will need to republish the developer portal for these configurations to take effect.
&lt;OL&gt;
&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_11-1716565543033.png" style="width: 700px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585652iDD2F5ED61EF456D7/image-dimensions/700x411?v=v2" width="700" height="411" role="button" title="Andrew_Redman_11-1716565543033.png" alt="Andrew_Redman_11-1716565543033.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;It will take a few seconds for the portal to publish, but once it is complete you should be able to navigate to the Developer Portal and see a button to login using AADB2C.
&lt;OL&gt;
&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_12-1716565543034.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585651i28B6CCB4605126FC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Andrew_Redman_12-1716565543034.png" alt="Andrew_Redman_12-1716565543034.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Test configuration&lt;/STRONG&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN&gt;Confirm that you can successfully log into the developer portal using an AADB2C login.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3&gt;Part Two: Configuring APIM for OAuth 2.0 Authorization&lt;/H3&gt;
&lt;P&gt;Now that we have AADB2C integrated as an Identity into the Developer Portal, let us configure APIM for OAuth 2.0 authorization. This will let us ensure we can send the request with an Authorization header from the developer portal.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-oauth2" target="_blank" rel="noopener"&gt;Learning Document&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Modify Backend App Registration&lt;/STRONG&gt;
&lt;OL&gt;
&lt;LI&gt;Add scopes that represent the APIs you are exposing.
&lt;OL&gt;
&lt;LI&gt;Go back to the AADB2C tenant and navigate to App Registrations
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_13-1716565543034.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585655iD261836A4DE747AD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Andrew_Redman_13-1716565543034.png" alt="Andrew_Redman_13-1716565543034.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Find the app you created above (this will be our backend app registration; it represents our Api) and open it up
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_14-1716565543035.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585657i5009113B705975E5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Andrew_Redman_14-1716565543035.png" alt="Andrew_Redman_14-1716565543035.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Go to expose an Api, and then click 'Add a scope'
&lt;OL&gt;
&lt;LI&gt;Create a new scope by giving it a name, and display name and a description&lt;/LI&gt;
&lt;LI&gt;Now click 'Add Scope'&lt;/LI&gt;
&lt;LI&gt;If this is the first scope you are adding it will ask you to create an Application ID URI, you can use the default or put your own in there it will just need to follow URI format&lt;/LI&gt;
&lt;LI&gt;Here is what the ‘Add a scope’ blade looks like
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_15-1716565543036.png" style="width: 708px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585656iF166184368977351/image-dimensions/708x154?v=v2" width="708" height="154" role="button" title="Andrew_Redman_15-1716565543036.png" alt="Andrew_Redman_15-1716565543036.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;If you have more than one scope you want to add, repeat these steps. The scopes will represent the things the user will be able to do from the API&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Create a new app registration for the client (APIM Developer Portal).
&lt;OL&gt;
&lt;LI&gt;Create the new app registration and give it a meaningful name, I would suggestion something with 'client' in it&lt;/LI&gt;
&lt;LI&gt;Leave the Redirect uris empty for now and select 'Register'
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_16-1716565543040.png" style="width: 736px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585659iA6FF7F5F36FC56FA/image-dimensions/736x429?v=v2" width="736" height="429" role="button" title="Andrew_Redman_16-1716565543040.png" alt="Andrew_Redman_16-1716565543040.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Now that the new app registration is created for the client, you will need to create a client secret like you did for the backend app registration.
&lt;OL&gt;
&lt;LI&gt;Make sure you copy the client id and the secret value so you can use it again when we setup the OAuth server in the next few steps.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Allow Access to Backend App Registration&lt;/STRONG&gt;
&lt;OL&gt;
&lt;LI&gt;In the client app registration, add permissions to request scopes from the backend app registration.
&lt;OL&gt;
&lt;LI&gt;Open the client app registration, under Api permissions, go to add a Permission&lt;/LI&gt;
&lt;LI&gt;This will give you a list of APIs to select from, use the ‘APIs my organization uses’ filter and find the backend-app you created earlier
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_17-1716565543042.png" style="width: 736px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585658i9E858FF7EBE99CF9/image-dimensions/736x217?v=v2" width="736" height="217" role="button" title="Andrew_Redman_17-1716565543042.png" alt="Andrew_Redman_17-1716565543042.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Select Delegated Permissions for all the scopes you want to add and select Add permissions
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_18-1716565543047.png" style="width: 733px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585660i6DDA1E00C10D88CE/image-dimensions/733x493?v=v2" width="733" height="493" role="button" title="Andrew_Redman_18-1716565543047.png" alt="Andrew_Redman_18-1716565543047.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;You will then need to grant the admin consent for these new permissions
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_19-1716565543052.png" style="width: 735px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585663i35F2D74CDF8CAB7B/image-dimensions/735x305?v=v2" width="735" height="305" role="button" title="Andrew_Redman_19-1716565543052.png" alt="Andrew_Redman_19-1716565543052.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Add OAuth 2.0 Auth Server in APIM&lt;/STRONG&gt;
&lt;OL&gt;
&lt;LI&gt;Configure OAuth 2.0 settings in APIM, providing details from app registrations.
&lt;OL&gt;
&lt;LI&gt;Navigate back to the APIM tab and go to the 'Oauth 2.0 + OpenID Connect' section and click the '+ Add' button under the Oauth 2.0 tab
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_0-1716570272676.png" style="width: 724px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585716i0731A03943037E36/image-dimensions/724x369?v=v2" width="724" height="369" role="button" title="Andrew_Redman_0-1716570272676.png" alt="Andrew_Redman_0-1716570272676.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;This should open the 'Add OAuth2 service' dialog
&lt;OL&gt;
&lt;LI&gt;Name:&amp;nbsp; This will be how APIM identifies the auth server so use names appropriately&lt;/LI&gt;
&lt;LI&gt;Add a description&lt;/LI&gt;
&lt;LI&gt;The Client registration page URL is the page where users can create and manage their accounts, since AADB2C does not have a direct URL for that (you need to navigate via the azure portal) you can just put `&lt;A href="http://localhost" target="_blank" rel="noopener"&gt;http://localhost&lt;/A&gt;`&lt;/LI&gt;
&lt;LI&gt;Next select the Auth grant type, the default is Auth Code, but you will want to make sure to follow what you have set up in the app registrations. In my case I selected both Authorization code and Authorization code + PKCE because I set up my client app registration as a SPA. PKCE stands for Proof Key for Code Exchange
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_1-1716570328731.png" style="width: 400px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585718i699803167A3DDBCD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Andrew_Redman_1-1716570328731.png" alt="Andrew_Redman_1-1716570328731.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Now enter the authorization endpoint URL, you can get this from the Endpoints page on the Overview tab of an app registration, make sure to select the v2 endpoint
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_2-1716570349412.png" style="width: 752px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585719iA64286E973DF0EB2/image-dimensions/752x190?v=v2" width="752" height="190" role="button" title="Andrew_Redman_2-1716570349412.png" alt="Andrew_Redman_2-1716570349412.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Select POST as the auth request method&lt;/LI&gt;
&lt;LI&gt;Now enter the token endpoint URL, you can also get this from the Endpoints page on the Overview tab of an app registration.
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_3-1716570371294.png" style="width: 756px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585720iAA6DB5DE42B3EB85/image-dimensions/756x191?v=v2" width="756" height="191" role="button" title="Andrew_Redman_3-1716570371294.png" alt="Andrew_Redman_3-1716570371294.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Just use the defaults on the 'Authorization request method’ and ‘Access token sending method’.&lt;/LI&gt;
&lt;LI&gt;In the Default scope, enter the permission that you exposed on the client app registration from the backend app registration just a few steps above this. You must use the fully qualified scope URL as the scope name here
&lt;OL&gt;
&lt;LI&gt;If you have multiple scopes, you can list them all here…space separated&lt;/LI&gt;
&lt;LI&gt;It will have this format &amp;lt;Application ID URI&amp;gt;/&amp;lt;permission name&amp;gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Next, fill out the clientId and clientSecret from the client app registration that you saved a moment ago&lt;/LI&gt;
&lt;LI&gt;This will generate the Redirect URI
&lt;OL&gt;
&lt;LI&gt;**Important Step** You will need to go back to the client app registration and add this Redirect URI that will need to be added back to the client app registration&lt;/LI&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_4-1716570445063.png" style="width: 731px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585721i4F33B8F851D0149D/image-dimensions/731x64?v=v2" width="731" height="64" role="button" title="Andrew_Redman_4-1716570445063.png" alt="Andrew_Redman_4-1716570445063.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Hit Create and you are done&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Now you should have a new OAuth 2.0 server, you will need to republish the developer portal at this point to make sure the latest configuration is deployed&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;Go back to the APIM tab and go to Portal overview, click the Revisions tab, and click the Publish button. This will take a few seconds, but you can refresh the table and see status.&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp; &amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_5-1716570480801.png" style="width: 800px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585722i0E6D4470A756FE6C/image-dimensions/800x336?v=v2" width="800" height="336" role="button" title="Andrew_Redman_5-1716570480801.png" alt="Andrew_Redman_5-1716570480801.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Add OAuth 2.0 server to your API&lt;/STRONG&gt;
&lt;OL&gt;
&lt;LI&gt;Go to APIM and navigate to APIs -&amp;gt; Setting tab and then scroll down to the Security section. Select User authorization to Oauth 2.0 and then in the dropdown list select the Oauth server that we created above.
&lt;OL&gt;
&lt;LI&gt;If you need to use different scopes for a given Api you can override it here at this level using the Override scope checkbox&lt;/LI&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_7-1716570714886.png" style="width: 822px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585724i975BF049FCFA0269/image-dimensions/822x629?v=v2" width="822" height="629" role="button" title="Andrew_Redman_7-1716570714886.png" alt="Andrew_Redman_7-1716570714886.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Test in Developer Portal&lt;/STRONG&gt;&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;Log in using AADB2C credentials in the Developer Portal.&lt;/LI&gt;
&lt;LI&gt;Access APIs and see OAuth 2.0 authorization in action.
&lt;OL&gt;
&lt;LI&gt;In the Try It section you will see something like this:
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_8-1716570741909.png" style="width: 503px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585725i972CFFAE99CDCFD7/image-dimensions/503x93?v=v2" width="503" height="93" role="button" title="Andrew_Redman_8-1716570741909.png" alt="Andrew_Redman_8-1716570741909.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;LI&gt;Hit the dropdown and select the grant type you setup (in our case it is authorization code)&lt;/LI&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_9-1716570750586.png" style="width: 478px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585726iFA1F04FEDF36F487/image-dimensions/478x98?v=v2" width="478" height="98" role="button" title="Andrew_Redman_9-1716570750586.png" alt="Andrew_Redman_9-1716570750586.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;LI&gt;That should trigger an auth call which will pull the token from your initial login (or prompt you for a new login) and transform it appropriately and populate the 'Authorization' header in the test request.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Part Three: Adding Token Validation for Security&lt;/H3&gt;
&lt;P&gt;The last step ensures secure API access by adding token validation by adding a validation policy.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/active-directory-b2c/secure-api-management?tabs=app-reg-ga" target="_blank" rel="noopener"&gt;Learning Document&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Add Validate-JWT Policy&lt;/STRONG&gt;
&lt;OL&gt;
&lt;LI&gt;In APIM, add a validate-jwt policy to the inbound policy.
&lt;OL&gt;
&lt;LI&gt;Go to the Api you want to add the validation to, or you could set it at the global level:
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_29-1716565543059.png" style="width: 796px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585671iBAC2A85975C18EE5/image-dimensions/796x199?v=v2" width="796" height="199" role="button" title="Andrew_Redman_29-1716565543059.png" alt="Andrew_Redman_29-1716565543059.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Use the `validate-jwt` policy. You can find the documentation for it &lt;A href="https://learn.microsoft.com/en-us/azure/api-management/validate-jwt-policy" target="_blank" rel="noopener"&gt;here&lt;/A&gt;.&amp;nbsp; This is screenshot of what it might look like, I am using `Named Values` for some variables.
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_30-1716565543061.png" style="width: 800px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585672i2786B7827AD251D6/image-dimensions/800x200?v=v2" width="800" height="200" role="button" title="Andrew_Redman_30-1716565543061.png" alt="Andrew_Redman_30-1716565543061.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Update the &amp;lt;openid-config URL&amp;gt; property with the correct AADB2C endpoint.
&lt;OL&gt;
&lt;LI&gt;After you add that policy, you will want to update the &amp;lt;openid-config URL&amp;gt; property. The format looks like this:
&lt;OL&gt;
&lt;LI&gt;
&lt;PRE class="lia-code-sample line-numbers language-csharp" tabindex="0"&gt;&lt;CODE&gt;https://&amp;lt;tenant-name&amp;gt;.b2clogin.com/&amp;lt;tenant-name&amp;gt;.onmicrosoft.com/&amp;lt;user-flow-name&amp;gt;/v2.0/.well-known/openid-configuration&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;If you want to copy and paste it, you can get this endpoint from the Endpoints section on the overview tab of the app registration. It is under the `Azure AD B2C OpenID Connect metadata document`. You will just need to fill out the policy name for you signin policy you created above.&amp;nbsp;&amp;nbsp;
&lt;OL&gt;
&lt;LI&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Andrew_Redman_31-1716565543061.png" style="width: 776px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585673i1138C44334617062/image-dimensions/776x66?v=v2" width="776" height="66" role="button" title="Andrew_Redman_31-1716565543061.png" alt="Andrew_Redman_31-1716565543061.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Configure Audience and Issuers
&lt;OL&gt;
&lt;LI&gt;Specify the audience and issuers for token validation.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Testing and Security:
&lt;OL&gt;
&lt;LI&gt;If the JWT (JSON Web Token) is valid, APIM allows the request to continue to the backend.&lt;/LI&gt;
&lt;LI&gt;If the JWT is invalid, APIM blocks the request, enhancing security.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;&lt;SPAN&gt;Conclusion&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;By following these steps, you can seamlessly integrate Azure API Management with Azure ADB2C, ensuring that your APIs are secure and accessible only to authorized users. This setup offers a robust authentication and authorization mechanism for your APIs, making them more reliable and trustworthy.&lt;/P&gt;</description>
      <pubDate>Fri, 24 May 2024 20:13:33 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/healthcare-and-life-sciences/seamless-identity-integration-azure-api-management-with-azure-ad/ba-p/4151588</guid>
      <dc:creator>Andrew_Redman</dc:creator>
      <dc:date>2024-05-24T20:13:33Z</dc:date>
    </item>
    <item>
      <title>Updates to Security Admin permissions for Microsoft Copilot for Security</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-security-copilot-blog/updates-to-security-admin-permissions-for-microsoft-copilot-for/ba-p/4140692</link>
      <description>&lt;DIV&gt;Late June 2024, Security Admins will have an expanded authority to control Microsoft security products to access Microsoft 365 Customer Data. Within Microsoft Copilot for Security, the purpose of this is to allow users to query information directly from those M365 products in the standalone and embedded experiences.&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Security Admins can choose not to allow Copilot for Security&amp;nbsp;access to your Microsoft 365 services in the owner settings at any time. When access is disabled, users won't be able to use specific&amp;nbsp;plugins, like Microsoft Purview, or connect to any future integrated or embedded Microsoft 365 services.&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;This change will take effect June 24th. Other&amp;nbsp;admin roles will not be affected by this change.&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Fri, 24 May 2024 19:37:26 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-security-copilot-blog/updates-to-security-admin-permissions-for-microsoft-copilot-for/ba-p/4140692</guid>
      <dc:creator>HarmonyMabrey</dc:creator>
      <dc:date>2024-05-24T19:37:26Z</dc:date>
    </item>
    <item>
      <title>Copilot for Microsoft 365 Integration with Service Now – HLS Copilot Snacks</title>
      <link>https://techcommunity.microsoft.com/t5/healthcare-and-life-sciences/copilot-for-microsoft-365-integration-with-service-now-hls/ba-p/4151715</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="Copilot snacks3.png" style="width: 200px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/564313i2C17A99D279F8B6E/image-size/small?v=v2&amp;amp;px=200" role="button" title="Copilot snacks3.png" alt="Copilot snacks3.png" /&gt;&lt;/span&gt;The ServiceNow plugin for Copilot for Microsoft 365 allows users to easily create and track tickets for IT support within the Copilot app. Users can access the plugin from the Copilot toolbar and submit requests with relevant information, such as screenshots, device details, and error messages. The plugin also enables users to view the status of their tickets, communicate with IT agents, and provide feedback on the resolution. This integration can benefit users by simplifying the process of requesting and receiving IT support and can benefit IT support by reducing the need for manual data collection and improving customer satisfaction.&lt;/P&gt;
&lt;P&gt;In this Copilot Snack I demonstrate the use of the Copilot/ServiceNow integration from within Microsoft Teams, Microsoft Word, and Microsoft PowerPoint.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;*Special thanks to Microsoft's &lt;A href="https://www.linkedin.com/in/maria-kurian/" target="_self"&gt;Maria Kurian&lt;/A&gt; for enabling the integration that made this demo possible!&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;To see all HLS Copilot Snacks video&amp;nbsp;&lt;A href="https://techcommunity.microsoft.com/t5/healthcare-and-life-sciences/hls-copilot-snacks/ba-p/4094360" target="_blank"&gt;click here&lt;/A&gt;.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FOBxf4cm4BqA%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DOBxf4cm4BqA&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FOBxf4cm4BqA%2Fhqdefault.jpg&amp;amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="400" height="225" scrolling="no" title="Copilot for Microsoft 365 Integration with Service Now - HLS Copilot Snacks" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Resources:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/microsoft-copilot-service/servicenow-desktop-connect" target="_blank"&gt;Connect Copilot for Service to ServiceNow - Copilot for Service | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.servicenow.com/company/media/press-room/genai-microsoft-integration.html" target="_blank"&gt;Combining GenAI Capabilities with Microsoft – ServiceNow Press&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://adoption.microsoft.com/en-us/inside-microsoft-teams/season-7/plugins-for-microsoft-365-copilot/" target="_blank"&gt;Plugins for Microsoft 365 Copilot (Inside Microsoft Teams) – Microsoft Adoption&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Prompts:&amp;nbsp;
&lt;UL&gt;
&lt;LI&gt;Why can't I get my weather report? Are there any tickets in ServiceNow related to weather?&lt;/LI&gt;
&lt;LI&gt;List the last 5 tickets in ServiceNow and provide a brief description of each&lt;/LI&gt;
&lt;LI&gt;last 7 tickets in ServiceNow and describes each on a slide&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;To see all HLS Copilot Snacks video&amp;nbsp;&lt;A href="https://techcommunity.microsoft.com/t5/healthcare-and-life-sciences/hls-copilot-snacks/ba-p/4094360" target="_blank"&gt;click here&lt;/A&gt;.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Thanks for visiting – Michael Gannotti&amp;nbsp;&lt;/EM&gt;&lt;A href="https://www.linkedin.com/in/mikegannotti/" target="_blank"&gt;&lt;EM&gt;LinkedIn&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="me.jpg" style="width: 200px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/216641i543CF477614292E5/image-size/small?v=v2&amp;amp;px=200" role="button" title="me.jpg" alt="me.jpg" /&gt;&lt;/span&gt;&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 24 May 2024 19:01:35 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/healthcare-and-life-sciences/copilot-for-microsoft-365-integration-with-service-now-hls/ba-p/4151715</guid>
      <dc:creator>Mike Gannotti</dc:creator>
      <dc:date>2024-05-24T19:01:35Z</dc:date>
    </item>
    <item>
      <title>Lesson Learned #493: Monitoring Application Performance with Server Performance Counters</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-support-blog/lesson-learned-493-monitoring-application-performance-with/ba-p/4151713</link>
      <description>&lt;P&gt;Today, I worked on a service request where our customer reported several performance issues in their application connecting to Azure SQL Database. After an in-depth analysis, we found that the issue could be related to the server running the application, including resources assigned, network issues, etc.,. Aside from other tools offered by Azure, following, I would like to share the lessons learned using &lt;A href="https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/logman" target="_self"&gt;logman&lt;/A&gt; that is part of &lt;A href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/tools-monitor-performance-counters-and-events" target="_self"&gt;performance monitor tool&lt;/A&gt; (perfmon).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Tools Overview&lt;/H3&gt;
&lt;H4&gt;&lt;STRONG&gt;perfmon&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;The Performance Monitor (&lt;STRONG&gt;perfmon&lt;/STRONG&gt;) is a Windows tool that provides a visual interface for monitoring system performance. It can track various performance metrics like CPU usage, memory usage, disk activity, and network activity in real-time.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;logman&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;STRONG&gt;logman &lt;/STRONG&gt;is a command-line tool in Windows that allows you to create and manage performance data collection sets. It can be used to automate the collection of performance data, making it an excellent tool for scheduled and long-term monitoring.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Step-by-Step Guide&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Step 1: Create a Data Collector Set with &lt;STRONG&gt;logman&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;The following script shows how to create a data collector set using &lt;STRONG&gt;logman&lt;/STRONG&gt;, configure it to collect various performance counters, and store the data in a CSV file.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;Save this script as a Windows Command Batch file (.cmd) and execute it as Administrator:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;logman create counter MyDataCollector -f csv -o "C:\Counters\MyDataCollector"
logman update MyDataCollector -c "\Memory\Available MBytes"
logman update MyDataCollector -c "\TCP(*)\*"
logman update MyDataCollector -c "\Network Interface(*)\*"
logman update MyDataCollector -c "\Process(*)\*"
logman update MyDataCollector -c "\Process(_Total)\*"
logman update MyDataCollector -c "\Processor Information(*)\*"
logman update MyDataCollector -c "\Processor(_Total)\*"
logman update MyDataCollector -c "\Processor(0)\*"
logman update MyDataCollector -si 00:00:05
logman start MyDataCollector
timeout /t 30
logman stop MyDataCollector
logman delete MyDataCollector&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once the application finished, I checked the CSV file generated and found useful information saved in this file, such as network activity, process activity, and resource usage. In this case, we have generated the file&amp;nbsp;&lt;STRONG&gt;C:\Counters\MyDataCollector_000001.csv&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jose_Manuel_Jurado_0-1716577009722.png" style="width: 609px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/585755i6B7679AAF9F0B24A/image-dimensions/609x67?v=v2" width="609" height="67" role="button" title="Jose_Manuel_Jurado_0-1716577009722.png" alt="Jose_Manuel_Jurado_0-1716577009722.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Step 2: Import Data into Power BI&lt;/H3&gt;
&lt;P&gt;Once the data is collected and saved in a CSV file, you can import it into Power BI for analysis.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Open Power BI Desktop&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Get Data&lt;/STRONG&gt;:
&lt;UL&gt;
&lt;LI&gt;Click on "Get Data" and select "Text/CSV".&lt;/LI&gt;
&lt;LI&gt;Browse to &lt;STRONG&gt;C:\Counters\MyDataCollector_000001.csv&lt;/STRONG&gt; and import the file.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Transform Data&lt;/STRONG&gt;:
&lt;UL&gt;
&lt;LI&gt;Power BI will load a preview of the data. Click on "Transform Data" to clean and format the data if necessary.&lt;/LI&gt;
&lt;LI&gt;You might want to rename columns, change data types, or filter out unnecessary data.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Create Visualizations&lt;/STRONG&gt;:
&lt;UL&gt;
&lt;LI&gt;Once the data is loaded, you can start creating visualizations. Use charts, graphs, and tables to analyze the performance data.&lt;/LI&gt;
&lt;LI&gt;For example, you can create line charts to visualize memory usage over time, bar charts for network traffic, and pie charts for process usage.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Disclaimer&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;The use of this application and the provided scripts is intended for educational and informational purposes only. The scripts and methods demonstrated in this guide are provided "as is" without any warranties or guarantees. It is the user's responsibility to ensure the accuracy, reliability, and suitability of these tools for their specific needs.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;</description>
      <pubDate>Fri, 24 May 2024 18:59:43 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-support-blog/lesson-learned-493-monitoring-application-performance-with/ba-p/4151713</guid>
      <dc:creator>Jose_Manuel_Jurado</dc:creator>
      <dc:date>2024-05-24T18:59:43Z</dc:date>
    </item>
    <item>
      <title>Microsoft Security Exposure Management Graph: unveiling the power</title>
      <link>https://techcommunity.microsoft.com/t5/security-compliance-and-identity/microsoft-security-exposure-management-graph-unveiling-the-power/ba-p/4148546</link>
      <description>&lt;P&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;In the complicated and rapidly evolving realm of cybersecurity, Exposure Management plays a pivotal role in fortifying organization's defenses against potential threats. To empower security teams, &lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/en-us/security-exposure-management/" target="_blank" rel="noopener"&gt;Microsoft Security Exposure Management&lt;/A&gt; &lt;/STRONG&gt;has unveiled two new powerful tables within Advanced Hunting: &lt;STRONG&gt;&lt;EM&gt;ExposureGraphNodes&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;and&lt;/SPAN&gt; &lt;STRONG&gt;&lt;EM&gt;ExposureGraphEdges&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The introduction of these tables opens novel capabilities for security teams. It enables efficient investigation of security posture across organizational assets. This is the first in a series of posts where we will present the tables and share investigation scenarios (along with relevant queries) for Advanced Hunting. These queries unlock capabilities that were previously unattainable. We’ll provide screenshots and Kusto Query Language snippets to guide you through your reading.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Understanding the tables&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;As John Lambert's saying that is well-known in the security domain goes, 'Defenders think in lists. Attackers think in graphs. As long as this is true, attackers win.’&lt;/SPAN&gt; By exposing the context around each asset, relations between assets and the graph-based toolset for exploring them, we hope to start changing this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="asset map.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584697i46E3016EC4DAC06E/image-size/large?v=v2&amp;amp;px=999" role="button" title="asset map.jpg" alt="asset map.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Context: Beyond Asset Information&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Think of &lt;/SPAN&gt;assets and entities&lt;SPAN&gt; as points on a &lt;/SPAN&gt;graph, and of relations between them as links between these points&lt;SPAN&gt;. Traditionally, when dealing with an asset (such as a server, device, or network component), we&lt;/SPAN&gt;&lt;SPAN&gt; ha&lt;/SPAN&gt;&lt;SPAN&gt;ve focused on gathering specific information about that asset. &lt;/SPAN&gt;&lt;SPAN&gt;W&lt;/SPAN&gt;&lt;SPAN&gt;ith the powerful combination of &lt;/SPAN&gt;&lt;SPAN&gt;the Attack Map&lt;/SPAN&gt;&lt;SPAN&gt; and Extended Security Posture Management&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;tables, we can gain a &lt;/SPAN&gt;better perspective&lt;SPAN&gt; that zooms out and reveals the entire environment surrounding &lt;/SPAN&gt;each&lt;SPAN&gt; asset.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;&lt;STRONG&gt;The Tables:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;A href="https://docs.microsoft.com/microsoft-365/security/defender/advanced-hunting-ExposureGraphNodes-table" target="_blank" rel="noopener"&gt;ExposureGraphNodes&lt;/A&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This table represents all the nodes in the Attack Surface Map. According to &lt;A href="https://learn.microsoft.com/en-us/defender-xdr/advanced-hunting-exposuregraphnodes-table?view=o365-worldwide" target="_blank" rel="noopener"&gt;the table documentation&lt;/A&gt;, ExposureGraphNodes &lt;/SPAN&gt;&lt;SPAN&gt;contain &lt;/SPAN&gt;&lt;SPAN&gt;organizational&lt;/SPAN&gt;&lt;SPAN&gt; entities and their properties. These entities include devices, identities, user groups, and cloud assets (such as virtual machines, storage, and containers). Each node corresponds to an individual entity and encapsulates information about its characteristics, attributes, and security-related insights within the organizational structure.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Before diving into specific scenarios, &lt;/SPAN&gt;we &lt;SPAN&gt;recommend examining the available data first.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;R&lt;/SPAN&gt;&lt;SPAN&gt;un&lt;/SPAN&gt;&lt;SPAN&gt;ning&lt;/SPAN&gt; &lt;SPAN&gt;the following&lt;/SPAN&gt;&lt;SPAN&gt; query &lt;/SPAN&gt;&lt;SPAN&gt;will retrieve one node for each type in &lt;/SPAN&gt;&lt;SPAN&gt;the&lt;/SPAN&gt;&lt;SPAN&gt; environment. This will allow you to see the kinds of nodes present and their properties.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;ExposureGraphNodes
| summarize take_any(*) by NodeLabel&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="nodes sample.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584670i002CCCFBE02FB219/image-size/large?v=v2&amp;amp;px=999" role="button" title="nodes sample.jpg" alt="nodes sample.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;A href="https://docs.microsoft.com/microsoft-365/security/defender/advanced-hunting-ExposureGraphEdges-table" target="_blank" rel="noopener"&gt;ExposureGraphEdges&lt;/A&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This table represents all the edges in the Attack Surface Map. Each edge describes a pairwise relationship between two of the ExposureGraphNodes we have just reviewed. As stated in&lt;A href="https://learn.microsoft.com/en-us/defender-xdr/advanced-hunting-exposuregraphedges-table?view=o365-worldwide" target="_blank" rel="noopener"&gt; Advanced Hunting documentation&lt;/A&gt;: “The ExposureGraphEdges schema, along with the complementing ExposureGraphNodes schema, provides visibility into relationships between entities and assets in the graph. Many hunting scenarios require exploration of entity relationships and attack paths. For example, when hunting for devices exposed to a specific critical vulnerability, knowing the relationship between entities, can uncover critical organizational assets.”&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Similarly, we recommend exploring your data related to edges. Running the following query will retrieve one edge for each edge type in your organization. After running the query, you’ll gain insights into the relations between your organizational entities and the additional data on them.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;ExposureGraphEdges
| summarize take_any(*) by EdgeLabel&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="edges sample.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584671i2EA1B0EF8A095F40/image-size/large?v=v2&amp;amp;px=999" role="button" title="edges sample.jpg" alt="edges sample.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now &lt;SPAN&gt;we would like &lt;/SPAN&gt;&lt;SPAN&gt;to describe several security-related scenarios that can be investigated using the security exposure graph.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Scenarios&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Scenario 1: Nodes with specific properties&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Security Exposure Graph displays various assets and entities in your organization (such as storage accounts, devices and users) as nodes in &lt;EM&gt;ExposureGraphNodes&lt;/EM&gt; table, while various properties (such as criticality, sensitive data) appear as node properties.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;For proper posture management, it might be interesting to find all nodes filtered by specific types and/or properties. For example, we might want to find all critical assets, or all virtual machines that are exposed to the internet and have vulnerabilities.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Example 1A: Critical assets&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Query:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;ExposureGraphNodes
| project NodeLabel, NodeName, NodeId, Categories
   , criticalityLevel = toint(NodeProperties.rawData.criticalityLevel.criticalityLevel)
| where criticalityLevel &amp;gt; 0
| sort by criticalityLevel desc&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Output:&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="output 1A.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584672i44FA4B4C3D1BE5E9/image-size/large?v=v2&amp;amp;px=999" role="button" title="output 1A.jpg" alt="output 1A.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Example 1B: Virtual Machines with specific vulnerabilities (RCE and privilege escalation)&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Query:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;ExposureGraphNodes
| where NodeLabel == 'microsoft.compute/virtualmachines'
| project NodeLabel, NodeName, NodeId, NodeProperties
    , vulnerableToRCE = isnotnull(NodeProperties.rawData.vulnerableToRCE.type)
    , vulnerableToPrivilegeEscalation = isnotnull(NodeProperties.rawData.highRiskVulnerabilityInsights.vulnerableToPrivilegeEscalation)
| where vulnerableToRCE &amp;gt; 0 or vulnerableToPrivilegeEscalation &amp;gt; 0
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Output:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="output 1B.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584673i270746E8BA262A97/image-size/large?v=v2&amp;amp;px=999" role="button" title="output 1B.jpg" alt="output 1B.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Since filtering the assets by specific types and properties can cover various scenarios, it might be useful to wrap such queries in a generic format, that will allow repeated usage with various parameters:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;let XGraph_NodesWithTypesAndProperties = (nodeTypes:dynamic, nodeProperties:dynamic) 
{
    let propertiesFormatted = strcat('(', strcat_array(nodeProperties, '|'), ')');
    ExposureGraphNodes
    | where NodeLabel in (nodeTypes) or nodeTypes == "[\"\"]"
    | project NodeName, NodeLabel, NodeId, Categories
        , propertiesExtracted = iff(nodeProperties != "[\"\"]", extract_all(propertiesFormatted, tostring(NodeProperties)), pack_array(''))
    | mv-apply propertiesExtracted on (
        summarize propertiesExtracted = make_set_if(propertiesExtracted, isnotempty(propertiesExtracted))
    )
    | extend countProperties = coalesce(array_length(propertiesExtracted), 0)
    | where countProperties &amp;gt; 0 or nodeProperties == "[\"\"]"
    | sort by countProperties desc
};
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Sample usage – find all vulnerable Virtual Machines:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;XGraph_NodesWithTypesAndProperties(
nodeTypes=pack_array('microsoft.compute/virtualmachines')
, nodeProperties=pack_array('vulnerableToRCE', 'vulnerableToPrivilegeEscalation'))
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Note that if any of the parameters is an empty array, the function will not filter on it and bring assets of all types or properties. For example, the following will bring vulnerable assets of any type that have RCE or Privilege Escalation vulnerabilities:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;XGraph_NodesWithTypesAndProperties(
nodeTypes=pack_array('')
, nodeProperties=pack_array('vulnerableToRCE', 'vulnerableToPrivilegeEscalation'))
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Alternatively, you can create and save several specific functions for common usage and use them without any additional parameters.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;let XGraph_VulnerableVMs = () {
    let nodeTypesList      = pack_array('microsoft.compute/virtualmachines');
    let nodePropertiesList = pack_array('vulnerableToRCE', 'vulnerableToPrivilegeEscalation');
    XGraph_NodesWithTypesAndProperties(nodeTypes = nodeTypesList, nodeProperties = nodePropertiesList)
};
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Usage -&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;XGraph_FindVulnerableVMs()&lt;/LI-CODE&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;Any function (with or without parameters) can be saved for repeated usage as described here:&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/defender-xdr/advanced-hunting-custom-functions" target="_blank" rel="noopener"&gt;Custom functions in the advanced hunting schema - Microsoft Defender XDR | Microsoft Learn&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Scenario 2: Connected nodes with specific properties&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The relations between assets appear as edges in ExposureGraphEdges table.&lt;/SPAN&gt;&lt;SPAN&gt; For example, users that can access a virtual machine will be connected to it with ‘has permissions to’ edge.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;We might want to look for pairs of connected assets while filtering by relevant edge types. For example, we might want to find users that have permissions to access keyvaults.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Example 2A: Users that have access to keyvaults&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Query:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;ExposureGraphEdges
| where EdgeLabel == 'has permissions to' and  SourceNodeLabel == 'user' and TargetNodeLabel == 'microsoft.keyvault/vaults'
| project SourceNodeName, SourceNodeLabel, SourceNodeId, EdgeLabel, TargetNodeName, TargetNodeLabel, TargetNodeId
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Output:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="output 2A.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584674i28A94D0895EB72D0/image-size/large?v=v2&amp;amp;px=999" role="button" title="output 2A.jpg" alt="output 2A.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Alternatively, we might want to filter not only by endpoint types, but also by properties. For this, we need to join the edges table with node table (that contains the node properties) both on source and target. Note that the unique identifier of each asset is the NodeId (and not NodeName). &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Example 2B: Critical users that can access storage accounts with sensitive data&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Query:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;ExposureGraphEdges
| where EdgeLabel == 'has permissions to' and  SourceNodeLabel == 'user' and TargetNodeLabel == 'microsoft.storage/storageaccounts'
| project SourceNodeName, SourceNodeLabel, SourceNodeId, EdgeLabel, TargetNodeName, TargetNodeLabel, TargetNodeId
| join kind = leftouter (ExposureGraphNodes | project SourceNodeId = NodeId, SourceNodeProperties = NodeProperties) on SourceNodeId
| join kind = leftouter (ExposureGraphNodes | project TargetNodeId = NodeId, TargetNodeProperties = NodeProperties) on TargetNodeId
| extend sourceCriticalityLevel = toint(SourceNodeProperties.rawData.criticalityLevel.criticalityLevel)
    , targetSensitiveData = isnotempty(TargetNodeProperties.rawData.containsSensitiveData.type)
| where sourceCriticalityLevel &amp;gt; 0 and targetSensitiveData &amp;gt; 0
| project SourceNodeName, SourceNodeLabel, SourceNodeId, EdgeLabel, TargetNodeName, TargetNodeLabel, TargetNodeId, sourceCriticalityLevel, targetSensitiveData
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Output:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="output 2B.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584676i738BB69E034D0769/image-size/large?v=v2&amp;amp;px=999" role="button" title="output 2B.jpg" alt="output 2B.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;We can add (and save) a generic function that looks for edges between nodes with specific types and properties as well.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;let XGraph_EdgesWithTypesAndProperties = (sourceTypes:dynamic, sourceProperties:dynamic, targetTypes:dynamic, targetProperties:dynamic) 
{
    let sourcePropertiesFormatted = strcat('(', strcat_array(sourceProperties, '|'), ')');
    let targetPropertiesFormatted = strcat('(', strcat_array(targetProperties, '|'), ')');
    let edgeTypes = pack_array('has role on', 'has permissions to', 'can authenticate to', 'can authenticate as'
        , 'member of', 'contains');
    ExposureGraphEdges
    | where EdgeLabel in (edgeTypes)
    | where (SourceNodeLabel in (sourceTypes) or sourceTypes == "[\"\"]") and (TargetNodeLabel in (targetTypes) or targetTypes == "[\"\"]")
    | project SourceNodeName, SourceNodeLabel, SourceNodeId, EdgeLabel, TargetNodeName, TargetNodeLabel, TargetNodeId
    | join hint.strategy = shuffle kind = leftouter (ExposureGraphNodes | project SourceNodeId = NodeId, SourceNodeProperties = NodeProperties) on SourceNodeId
    | join hint.strategy = shuffle kind = leftouter (ExposureGraphNodes | project TargetNodeId = NodeId, TargetNodeProperties = NodeProperties) on TargetNodeId
    | extend sourcePropertiesExtracted = iff(sourceProperties != "[\"\"]", extract_all(sourcePropertiesFormatted, tostring(SourceNodeProperties)), pack_array(''))
        , targetPropertiesExtracted = iff(targetProperties != "[\"\"]", extract_all(targetPropertiesFormatted, tostring(TargetNodeProperties)), pack_array(''))
    | mv-apply sourcePropertiesExtracted, targetPropertiesExtracted on (
        summarize sourcePropertiesExtracted = make_set_if(sourcePropertiesExtracted, isnotempty(sourcePropertiesExtracted))
        , targetPropertiesExtracted = make_set_if(targetPropertiesExtracted, isnotempty(targetPropertiesExtracted))
    )
    | extend countSourceProperties = coalesce(array_length(sourcePropertiesExtracted), 0)
        , countTargetProperties = coalesce(array_length(targetPropertiesExtracted), 0)
    | where (countSourceProperties &amp;gt; 0 or sourceProperties == "[\"\"]") and (countTargetProperties &amp;gt; 0 or targetProperties == "[\"\"]")
    | project SourceNodeName, SourceNodeLabel, SourceNodeId, EdgeLabel, TargetNodeName, TargetNodeLabel, TargetNodeId
        , sourcePropertiesExtracted, countSourceProperties, targetPropertiesExtracted, countTargetProperties
    | sort by countSourceProperties desc, countTargetProperties desc
};
&lt;/LI-CODE&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;SPAN&gt;Sample usage – critical users that have access to containers or storage accounts that are either critical or have sensitive data:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;XGraph_EdgesWithTypesAndProperties(
    sourceTypes = pack_array('user')
    , sourceProperties = pack_array('criticalityLevel')
    , targetTypes = pack_array('container', 'microsoft.storage/storageaccounts')
    , targetProperties = pack_array('containsSensitiveData', 'criticalityLevel'))
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This function can also be wrapped and used as is for common scenarios. For example, we can create the following function to cover the scenario above:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;let XGraph_CriticalUsersToCriticalOrSensitiveStorage = () {
    let sourceTypesList      = pack_array('user');
    let sourcePropertiesList = pack_array('criticalityLevel');
    let targetTypesList      = pack_array('container', 'microsoft.storage/storageaccounts');
    let targetPropertiesList = pack_array('containsSensitiveData', 'criticalityLevel');
    XGraph_EdgesWithTypesAndProperties(sourceTypes = sourceTypesList, sourceProperties = sourcePropertiesList
            , targetTypes = targetTypesList, targetProperties = targetPropertiesList)
};
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Usage -&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;FindCriticalUsersToCriticalOrSensitiveStorage()&lt;/LI-CODE&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;STRONG&gt;Scenario 3:&amp;nbsp;Paths between nodes with specific properties&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Sometimes nodes can be connected in a non-direct way. For example, a virtual machine can have access to a keyvault using SSH key or managed identity. Alternatively, user can have permissions to a subscription containing storage accounts – thus gaining access to all of them.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;A great way to explore such connections and find the multi-step paths is using Kusto graph capabilities – namely the &lt;A href="https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/make-graph-operator" target="_blank" rel="noopener"&gt;make-graph&lt;/A&gt; and &lt;A href="https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/graph-match-operator" target="_blank" rel="noopener"&gt;graph-match&lt;/A&gt; operators (you can learn more about Kusto graph semantics &lt;A href="https://learn.microsoft.com/en-us/azure/data-explorer/graph-overview" target="_self"&gt;here&lt;/A&gt;). These operators allow to build paths between endpoints (source and target nodes) according to conditions on endpoints or any of the steps.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Example 3A: Users that have access to storage accounts with sensitive data&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Query:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;ExposureGraphEdges
| where EdgeLabel in ('has role on', 'has permissions to', 'can authenticate to', 'can authenticate as', 'member of', 'contains')
| make-graph SourceNodeId --&amp;gt; TargetNodeId with (ExposureGraphNodes | project NodeId, NodeName, NodeLabel, NodeProperties) on NodeId
// Look for existing paths between source nodes and target nodes with less than predefined number of hops
| graph-match (s)-[e*1..4]-&amp;gt;(t)
    where (s.NodeLabel == 'user'
        and t.NodeLabel == 'microsoft.storage/storageaccounts' and isnotnull(t.NodeProperties.rawData.containsSensitiveData.type))
    project       SourceName            = s.NodeName
                , SourceType            = s.NodeLabel
                , SourceId              = s.NodeId
                , SourceExposedToInternet = s.NodeProperties.rawData.exposedToInternet.type
                , TargetName            = t.NodeName
                , TargetType            = t.NodeLabel
                , TargetId              = t.NodeId
                , TargetcontainsSensitiveData = t.NodeProperties.rawData.containsSensitiveData.type
                , edgeIds               = e.EdgeId
                , edgeLabels            = e.EdgeLabel
| extend pathLength = array_length(edgeIds) + 1
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Output:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="output 3A.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584677i9D08D1759113CD34/image-size/large?v=v2&amp;amp;px=999" role="button" title="output 3A.jpg" alt="output 3A.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Example 3B: SQL servers or managed instances with basic authentication that have access to keyvaults&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Query:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;ExposureGraphEdges
| where EdgeLabel in ('has role on', 'has permissions to', 'can authenticate to', 'can authenticate as', 'member of', 'contains')
| make-graph SourceNodeId --&amp;gt; TargetNodeId with (ExposureGraphNodes | project NodeId, NodeName, NodeLabel, NodeProperties) on NodeId
// Look for existing paths between source nodes and target nodes with less than predefined number of hops
| graph-match (s)-[e*1..6]-&amp;gt;(t)
    where (s.NodeLabel in ('microsoft.sql/servers', 'microsoft.sql/managedinstances')
        and isnotnull(s.NodeProperties.rawData.allowsBasicAuth)
        and t.NodeLabel == 'microsoft.keyvault/vaults')
    project       SourceName            = s.NodeName
                , SourceType            = s.NodeLabel
                , SourceId              = s.NodeId
                , SourceExposedToInternet = s.NodeProperties.rawData.exposedToInternet.type
                , TargetName            = t.NodeName
                , TargetType            = t.NodeLabel
                , TargetId              = t.NodeId
                , TargetcontainsSensitiveData = t.NodeProperties.rawData.containsSensitiveData.type
                , edgeIds               = e.EdgeId
                , edgeLabels            = e.EdgeLabel
| extend pathLength = array_length(edgeIds) + 1
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Output:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="output 3B.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584678iA07C1E894C044DA4/image-size/large?v=v2&amp;amp;px=999" role="button" title="output 3B.jpg" alt="output 3B.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;We can wrap up this logic in a generic function &lt;/SPAN&gt;&lt;EM&gt;XGraph_PathExploration&lt;/EM&gt;&lt;SPAN&gt; that allows to find and explore all relevant paths between source and target nodes, filtered by relevant types and properties.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This is done by changing the following required parameters in array format: sourceTypes, sourceProperties, targetTypes, targetProperties.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The following parameters have default values and are optional: maxPathLength controls the maximum length of found paths (default value 6) and resultCountLimit controls that maximum number of output (default value 50000).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The function &lt;/SPAN&gt;XGraph_&lt;SPAN&gt;PathExploration goes over edges defined in non-exposed edgeTypes parameter (which you can also change) and creates paths between relevant endpoint, from single hops up to length defined by maxPathLength parameter.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;After creating the paths, the function exposes the endpoints and their properties, shows the full paths in FullPath field and adds the path length metric.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;let XGraph_PathExploration = (sourceTypes:dynamic, sourceProperties:dynamic
    , targetTypes:dynamic, targetProperties:dynamic
    , maxPathLength:long = 6, resultCountLimit:long = 10000) 
{
let edgeTypes               = pack_array('has permissions to', 'contains', 'can authenticate as', 'can authenticate to', 'can remote interactive logon to'
                                , 'can interactive logon to', 'can logon over the network to', 'contains', 'has role on', 'member of');
let sourceNodePropertiesFormatted = strcat('(', strcat_array(sourceProperties, '|'), ')');
let targetNodePropertiesFormatted = strcat('(', strcat_array(targetProperties, '|'), ')');
let nodes = (
    ExposureGraphNodes
    | project NodeId, NodeName, NodeLabel
        , SourcePropertiesExtracted = iff(sourceProperties != "[\"\"]", extract_all(sourceNodePropertiesFormatted, tostring(NodeProperties)), pack_array(''))
        , TargetPropertiesExtracted = iff(targetProperties != "[\"\"]", extract_all(targetNodePropertiesFormatted, tostring(NodeProperties)), pack_array(''))
       , criticalityLevel = toint(NodeProperties.rawData.criticalityLevel.criticalityLevel)
    | mv-apply SourcePropertiesExtracted, TargetPropertiesExtracted on (
        summarize SourcePropertiesExtracted = make_set_if(SourcePropertiesExtracted, isnotempty(SourcePropertiesExtracted))
                , TargetPropertiesExtracted = make_set_if(TargetPropertiesExtracted, isnotempty(TargetPropertiesExtracted))
    )
    | extend CountSourceProperties = coalesce(array_length(SourcePropertiesExtracted), 0)
            , CountTargetProperties = coalesce(array_length(TargetPropertiesExtracted), 0)
    | extend SourceRelevancyByLabel = iff(NodeLabel in (sourceTypes) or sourceTypes == "[\"\"]", 1, 0)
            , TargetRelevancyByLabel = iff(NodeLabel in (targetTypes) or targetTypes == "[\"\"]", 1, 0)
            , SourceRelevancyByProperties = iff(CountSourceProperties &amp;gt; 0 or sourceProperties == "[\"\"]", 1, 0)
            , TargetRelevancyByProperties = iff(CountTargetProperties &amp;gt; 0 or targetProperties == "[\"\"]", 1, 0)
    | extend SourceRelevancy = iff(SourceRelevancyByLabel == 1 and SourceRelevancyByProperties == 1, 1, 0)
            , TargetRelevancy = iff(TargetRelevancyByLabel == 1 and TargetRelevancyByProperties == 1, 1, 0)
);
let edges = (
    ExposureGraphEdges
    | where EdgeLabel in (edgeTypes)
    | project EdgeId, EdgeLabel, SourceNodeId, SourceNodeName, SourceNodeLabel, TargetNodeId, TargetNodeName, TargetNodeLabel
);
let paths = (
    edges
    // Build the graph from all the nodes and edges and enrich it with node data (properties)
    | make-graph SourceNodeId --&amp;gt; TargetNodeId with nodes on NodeId
    // Look for existing paths between source nodes and target nodes with up to predefined number of hops
    | graph-match (s)-[e*1..maxPathLength]-&amp;gt;(t)
        // Filter only by paths with relevant sources and targets - filtered by node types and properties
        where (s.SourceRelevancy == 1 and t.TargetRelevancy == 1)
        project   SourceName                = s.NodeName
                , SourceType                = s.NodeLabel
                , SourceId                  = s.NodeId
                , SourceProperties          = s.SourcePropertiesExtracted
                , CountSourceProperties     = s.CountSourceProperties
                , SourceRelevancy           = s.SourceRelevancy
                , TargetName                = t.NodeName
                , TargetType                = t.NodeLabel
                , TargetId                  = t.NodeId
                , TargetProperties          = t.TargetPropertiesExtracted
                , CountTargetProperties     = t.CountTargetProperties
                , TargetRelevancy           = t.TargetRelevancy
                , EdgeLabels                = e.EdgeLabel
                , EdgeIds                   = e.EdgeId
                , EdgeAllTargetIds          = e.TargetNodeId
                , EdgeAllTargetNames        = e.TargetNodeId
                , EdgeAllTargetTypes        = e.TargetNodeLabel
    | extend  PathLength                    = array_length(EdgeIds) + 1
            , PathId                        = hash_md5(strcat(SourceId, strcat(EdgeIds), TargetId))
);
let relevantPaths = (
    paths
    | extend NodesInPath = array_concat(pack_array(SourceId), EdgeAllTargetIds), NodeLabelsInPath = array_concat(pack_array(SourceType), EdgeAllTargetTypes)
    | extend NodesInPathList = NodesInPath
    // Wrap the path into meaningful format (can be tweaked as needed)
    | mv-expand with_itemindex = SortIndex EdgeIds to typeof(string), EdgeLabels to typeof(string)
        , NodesInPath to typeof(string), NodeLabelsInPath to typeof(string)
    | sort by PathId, SortIndex asc
    | extend step = strcat(
          iff(isnotempty(NodesInPath), strcat('(', NodeLabelsInPath, ':', NodesInPath, ')'), '')
        , iff(isnotempty(SourceProperties) and NodesInPath == SourceId, SourceProperties, '')
        , iff(isnotempty(TargetProperties) and NodesInPath == TargetId, TargetProperties, '')
        , iff(isnotempty(EdgeLabels), strcat('-', EdgeLabels, '-&amp;gt;'), ''))
    | summarize StepSequence = make_list(step), take_any(*) by PathId
    // Project relevant fields
    | project SourceName, SourceType, SourceId, SourceProperties, CountSourceProperties, SourceRelevancy
            , TargetName, TargetType, TargetId, TargetProperties, CountTargetProperties, TargetRelevancy
            , PathId, PathLength, Path = StepSequence
    | top resultCountLimit by PathLength asc
);
relevantPaths
};
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After defining this function, we can use it by providing the lists of relevant source types, source properties, target types and target properties as well as giving other values to optional parameters. If any of the required parameters is an empty array, no filtering will be applies.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For example, we can look for all paths between different compute resources that have various vulnerabilities or are exposed to the internet, to various storage assets that are either critical or contain sensitive data:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;let sourceTypesList         = pack_array('microsoft.compute/virtualmachines', 'compute.instances', 'ec2.instance');
let sourcePropertiesList    = pack_array('vulnerableToPrivilegeEscalation', 'vulnerableToRCE', 'hasHighSeverityVulnerabilities', 'exposedToInternet');
let targetTypesList         = pack_array('microsoft.sql/servers', 's3.bucket', 'rds.db', 'storage.buckets', 'microsoft.storage/storageaccounts', 'rds.snapshot', 'microsoft.documentdb/databaseaccounts');
let targetPropertiesList    = pack_array('criticalityLevel', 'containsSensitiveData');
XGraph_PathExploration(sourceTypes=sourceTypesList, sourceProperties=sourcePropertiesList
                , targetTypes=targetTypesList, targetProperties=targetPropertiesList)
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Output:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="path wrapper output.jpg" style="width: 999px;"&gt;&lt;img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/584679i18486C3C8BA81383/image-size/large?v=v2&amp;amp;px=999" role="button" title="path wrapper output.jpg" alt="path wrapper output.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Note that the FullPath field contains the full description of the path, with node and edge types and properties, for example:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;(microsoft.compute/virtualmachines:ffcbc)&lt;/EM&gt;&lt;EM&gt;[exposedToInternet]&lt;/EM&gt;&lt;EM&gt;-can authenticate as-&amp;gt;&lt;/EM&gt;&lt;EM&gt;(managedidentity:23e7)&lt;/EM&gt;&lt;EM&gt;-has role on-&amp;gt;&lt;/EM&gt;&lt;EM&gt;(microsoft.sql/servers:3d5c)&lt;/EM&gt;&lt;EM&gt;[criticalityLevel]&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This shows how the endpoints are connected, and can be used to find the proper disruption method (e.g., removing Managed Identity connecting exposed VM and critical SQL server).&lt;/P&gt;
&lt;P&gt;Alternatively, we can look for all assets that allow public access or exposed to Internet (without specifying source type) to all keyvaults (without specifying target properties):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;let sourceTypesList         = pack_array('');
let sourcePropertiesList    = pack_array('allowsPublicAccess', 'exposedToInternet');
let targetTypesList         = pack_array('microsoft.keyvault/vaults');
let targetPropertiesList    = pack_array('');
XGraph_PathExploration(sourceTypes=sourceTypesList, sourceProperties=sourcePropertiesList
                , targetTypes=targetTypesList, targetProperties=targetPropertiesList)
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can also wrap the XGraph_PathExploration function in a specific function with predefined parameters and use it directly for commonly used scenarios. For example, the first scenario in this section can be covered by the following function:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;let XGraph_VulnerableOrExposedVMsToCriticalOrSensitiveStorage = ()
{
    let sourceTypesList         = pack_array('microsoft.compute/virtualmachines', 'compute.instances', 'ec2.instance');
    let sourcePropertiesList    = pack_array('vulnerableToPrivilegeEscalation', 'vulnerableToRCE', 'hasHighSeverityVulnerabilities', 'exposedToInternet');
    let targetTypesList         = pack_array('microsoft.sql/servers', 's3.bucket', 'rds.db', 'storage.buckets', 'microsoft.storage/storageaccounts', 'rds.snapshot', 'microsoft.documentdb/databaseaccounts');
    let targetPropertiesList    = pack_array('criticalityLevel', 'containsSensitiveData');
    XGraph_PathExploration(sourceTypes=sourceTypesList, sourceProperties=sourcePropertiesList
                , targetTypes=targetTypesList, targetProperties=targetPropertiesList)
};
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Usage -&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;vulnerableOrExposedVMsToCriticalOrSensitiveStorage()&lt;/LI-CODE&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;FONT size="4"&gt;&lt;STRONG&gt;Mastering Security Posture with Microsoft’s Advanced Exposure Management Tables&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;In this post, we delve into the core components of &lt;STRONG&gt;M&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;icrosoft Security Exposure Management&lt;/STRONG&gt;&lt;/SPAN&gt; -&lt;SPAN&gt; the &lt;/SPAN&gt;tables&lt;SPAN&gt; &lt;EM&gt;ExposureGraphNodes&lt;/EM&gt; and &lt;EM&gt;ExposureGraphEdges&lt;/EM&gt; &lt;/SPAN&gt;and the graph toolset for exploring them&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt; We &lt;/SPAN&gt;explain the&lt;SPAN&gt; schemas an&lt;/SPAN&gt;d&lt;SPAN&gt; illustrat&lt;/SPAN&gt;e &lt;SPAN&gt;how these tables &lt;/SPAN&gt;improve &lt;SPAN&gt;the&lt;/SPAN&gt;&lt;SPAN&gt; investigation of security posture &lt;/SPAN&gt;by several real-world scenarios&lt;SPAN&gt;.&lt;/SPAN&gt; We also present several generic queries that can be adapted to your usage by specifying the parameters.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This is more than just an introduction; it’s an invitation to master the fundamental elements of these tables. We hope this will be the first step in your ‘thinking in graphs’ transformation in the security domain.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If you are having trouble accessing Advanced Hunting, please start with &lt;A href="https://learn.microsoft.com/en-us/defender-xdr/advanced-hunting-overview?view=o365-worldwide#get-access" target="_self"&gt;this guide&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;:&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;For full Security Exposure Management access, user roles need access to all Defender for Endpoint &lt;A href="https://review.learn.microsoft.com/en-us/microsoft-365/security/defender-endpoint/machine-groups" target="_blank" rel="noopener"&gt;device groups&lt;/A&gt;. Users who have access restricted to specific device groups can access the Security Exposure Management attack surface map and advanced hunting schemas (ExposureGraphNodes and ExposureGraphEdges) for the device groups to which they have access.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;We hope you will start exploring your Security Exposure Management Graph and integrating it into your security practice. Stay tuned for more content, as in our upcoming posts will delve even deeper, uncovering more fascinating insights and applications. &lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 24 May 2024 18:28:03 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/security-compliance-and-identity/microsoft-security-exposure-management-graph-unveiling-the-power/ba-p/4148546</guid>
      <dc:creator>andreykarpovsky</dc:creator>
      <dc:date>2024-05-24T18:28:03Z</dc:date>
    </item>
  </channel>
</rss>

