<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Azure For Developers Newsletter]]></title><description><![CDATA[Exploring development with Azure services: Serverless, Authentication, Storage & Integration]]></description><link>https://blog.habeebyakubu.com</link><image><url>https://substackcdn.com/image/fetch/$s_!3QvU!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eadda0e-ec06-4398-8438-7ddbc0cae734_512x512.png</url><title>Azure For Developers Newsletter</title><link>https://blog.habeebyakubu.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 16 Apr 2026 17:20:45 GMT</lastBuildDate><atom:link href="https://blog.habeebyakubu.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Habeeb Yakubu]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[habeebyakubu@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[habeebyakubu@substack.com]]></itunes:email><itunes:name><![CDATA[Habeeb Yakubu]]></itunes:name></itunes:owner><itunes:author><![CDATA[Habeeb Yakubu]]></itunes:author><googleplay:owner><![CDATA[habeebyakubu@substack.com]]></googleplay:owner><googleplay:email><![CDATA[habeebyakubu@substack.com]]></googleplay:email><googleplay:author><![CDATA[Habeeb Yakubu]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Capturing Device Requests with Copilot Studio Adaptive Cards]]></title><description><![CDATA[After showing users what devices are available, the next step is letting them actually request one.]]></description><link>https://blog.habeebyakubu.com/p/capturing-device-requests-with-copilot</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/capturing-device-requests-with-copilot</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 23 Mar 2026 07:02:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!q_Hx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>After <a href="https://blog.habeebyakubu.com/p/video-using-copilot-studio-topics">showing users what devices are available</a>, the next step is letting them actually request one.</p><p>Instead of sending them to a form or another system, everything stays inside the conversation.</p><p>In this step, an Adaptive Card in Copilot Studio captures the user&#8217;s selection and input, turning a simple chat into a structured request that can be processed automatically.</p><p>I decided not to repeat the full tutorial here, since it&#8217;s already well covered in the <a href="https://microsoft.github.io/agent-academy/recruit/">Copilot Agent Academy documentation</a>. In the previous post, I focused on the device lookup (Available Devices topic) because I adapted it to use Dataverse instead of SharePoint, which is what the official guide uses.</p><p>If you want to continue from the last step, here is the direct link to create the <strong>Request Device</strong> topic in Copilot Studio which is the next: <a href="https://microsoft.github.io/agent-academy/recruit/08-add-adaptive-card/">Add adaptive cards and enhance topic capabilities</a></p><p>The topic is triggered and the <strong>Adaptive Card</strong> appears only if the user answers &#8220;yes&#8221; to the question from the <strong>Available Devices</strong> topic: &#8220;Would you like to request one of these laptops?&#8221; (The one we did in the previous blog post).</p><p>This is the final output from my environment, and it&#8217;s what you should see as well once the lab is completed. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q_Hx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q_Hx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png 424w, https://substackcdn.com/image/fetch/$s_!q_Hx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png 848w, https://substackcdn.com/image/fetch/$s_!q_Hx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png 1272w, https://substackcdn.com/image/fetch/$s_!q_Hx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q_Hx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png" width="526" height="520" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:520,&quot;width&quot;:526,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25564,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/191784870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q_Hx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png 424w, https://substackcdn.com/image/fetch/$s_!q_Hx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png 848w, https://substackcdn.com/image/fetch/$s_!q_Hx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png 1272w, https://substackcdn.com/image/fetch/$s_!q_Hx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05a4a923-ea37-4f74-b69a-946357e08bc6_526x520.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br>And once the user clicks &#8220;Submit Request&#8221; button, they should get a message in the chat like this one:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DJr-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DJr-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png 424w, https://substackcdn.com/image/fetch/$s_!DJr-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png 848w, https://substackcdn.com/image/fetch/$s_!DJr-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png 1272w, https://substackcdn.com/image/fetch/$s_!DJr-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DJr-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png" width="615" height="166" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:166,&quot;width&quot;:615,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11068,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/191784870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DJr-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png 424w, https://substackcdn.com/image/fetch/$s_!DJr-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png 848w, https://substackcdn.com/image/fetch/$s_!DJr-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png 1272w, https://substackcdn.com/image/fetch/$s_!DJr-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69a4c914-e31a-44cd-9b86-04f2254fff6e_615x166.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p>If you have questions or want me to walk through this in a session, happy to discuss.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p>That&#8217;s all for today. See you in the next one, where we&#8217;ll look at sending an approval email to the manager for the device request using an agent flow.</p>]]></content:encoded></item><item><title><![CDATA[Video: Using Copilot Studio Topics to Retrieve and Filter Dataverse Data]]></title><description><![CDATA[A step-by-step look at building a data-driven topic]]></description><link>https://blog.habeebyakubu.com/p/video-using-copilot-studio-topics</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/video-using-copilot-studio-topics</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Wed, 18 Mar 2026 10:37:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8833be4a-9765-414b-a3d6-551293e33546_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week I built something interesting with Copilot Studio.</p><p>Did I disappoint you by not making it Azure-related? &#128516; Bear with me.</p><p>Instead of building a simple chatbot demo, I wanted to see how far an agent could go in handling a real internal IT scenario Thanks to the <a href="https://microsoft.github.io/agent-academy/">Copilot Agent Academy</a> from Microsoft.</p><p>So I designed an end-to-end device request assistant.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;8af843d8-46ff-4333-b433-cf77f3526617&quot;,&quot;duration&quot;:null}"></div><p>Here is how it works.</p><p>An employee asks the agent about available devices.</p><p>The agent triggers the Available Devices topic, which queries Dataverse and filters devices that are currently available based on type and status.</p><p>The agent then shows the results and asks a simple question:</p><p>&#8220;Would you like to request one of these devices?&#8221;</p><p>If the answer is yes, the conversation moves to the Request Device topic.</p><p>At this point an Adaptive Card is generated dynamically, showing device details and allowing the user to submit a request with notes.</p><p>Once the user submits the card, an agent flow takes over.</p><p><strong>In this post, I will walk through how the Available Devices topic that retrieves and filters enterprise data from Dataverse in real time was designed.</strong></p><p>For this lab, I needed a table in Dataverse to store devices:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zfgY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zfgY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png 424w, https://substackcdn.com/image/fetch/$s_!zfgY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png 848w, https://substackcdn.com/image/fetch/$s_!zfgY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png 1272w, https://substackcdn.com/image/fetch/$s_!zfgY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zfgY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png" width="1456" height="378" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:378,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47878,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/191349170?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zfgY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png 424w, https://substackcdn.com/image/fetch/$s_!zfgY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png 848w, https://substackcdn.com/image/fetch/$s_!zfgY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png 1272w, https://substackcdn.com/image/fetch/$s_!zfgY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e9d9f79-145a-4a42-b556-b7b4c1640443_1621x421.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Step 1 &#8212; Creating a Topic to Handle the Request</strong></p><p>The first step is defining how the agent understands the request.</p><p>In Copilot Studio, this is done using a Topic.</p><p>The topic acts as:</p><p>The entry point for the request</p><p>The logic container for handling it</p><p>In this case, I created a topic responsible for: Finding available devices based on user input</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!snZN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!snZN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png 424w, https://substackcdn.com/image/fetch/$s_!snZN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png 848w, https://substackcdn.com/image/fetch/$s_!snZN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png 1272w, https://substackcdn.com/image/fetch/$s_!snZN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!snZN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png" width="1194" height="553" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:553,&quot;width&quot;:1194,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:92990,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/191349170?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!snZN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png 424w, https://substackcdn.com/image/fetch/$s_!snZN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png 848w, https://substackcdn.com/image/fetch/$s_!snZN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png 1272w, https://substackcdn.com/image/fetch/$s_!snZN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d746418-9aa5-462f-a493-fc3f2f21bade_1194x553.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Step 2 &#8212; Capturing User Intent (Input Variable)</strong></p><p>The agent needs to understand what the user is asking for.</p><p>For example:</p><p>Laptop</p><p>Desktop</p><p>Smartphone</p><p>To handle this, I defined an input variable:</p><p>Device Type (captured from user message)</p><p>This allows the agent to dynamically adapt its query based on what the user asks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Gkq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Gkq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png 424w, https://substackcdn.com/image/fetch/$s_!8Gkq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png 848w, https://substackcdn.com/image/fetch/$s_!8Gkq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png 1272w, https://substackcdn.com/image/fetch/$s_!8Gkq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Gkq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png" width="1153" height="385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:385,&quot;width&quot;:1153,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:63073,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/191349170?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8Gkq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png 424w, https://substackcdn.com/image/fetch/$s_!8Gkq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png 848w, https://substackcdn.com/image/fetch/$s_!8Gkq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png 1272w, https://substackcdn.com/image/fetch/$s_!8Gkq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a164adc-ddda-4443-a5ea-36a4c806837b_1153x385.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Step 3 &#8212; Defining the Expected Output</strong></p><p>Next, I defined what the topic should return.</p><p>In this case:</p><p>A list of available devices</p><p>This is structured as a table output, which allows the agent to process and present multiple records cleanly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DBdG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DBdG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png 424w, https://substackcdn.com/image/fetch/$s_!DBdG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png 848w, https://substackcdn.com/image/fetch/$s_!DBdG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png 1272w, https://substackcdn.com/image/fetch/$s_!DBdG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DBdG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png" width="1179" height="448" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:448,&quot;width&quot;:1179,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76789,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/191349170?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DBdG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png 424w, https://substackcdn.com/image/fetch/$s_!DBdG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png 848w, https://substackcdn.com/image/fetch/$s_!DBdG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png 1272w, https://substackcdn.com/image/fetch/$s_!DBdG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b1a1f4-d870-4cbb-afbe-98166503c5c3_1179x448.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Step 4 &#8212; Connecting the Agent to Dataverse</strong></p><p>Now comes the key part.</p><p>The agent needs to retrieve real data.</p><p>This is done using a connector action:</p><p>Dataverse &#8594; List Rows</p><p>The important fields here are the Table name, as well as the filter rows. Here is the fx for the filter rows to ensure only available devices are returned. </p><p>We only want:</p><p>Devices that are <strong>Available</strong></p><p>Devices that match the <strong>requested type ( Based on User&#8217;s input/answer in the chat)</strong></p><p>Note the casting from string value to optionset value (required when dealing with Dataverse)</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;261ac262-1a5d-4178-9f4b-2080a3a77c30&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Concatenate(
    "cr42e_status eq 557910000 and cr42e_assettype eq ",
    If(
        Topic.VarDeviceType = "Laptop", 557910000,
        Topic.VarDeviceType = "Phone", 557910002,
        Topic.VarDeviceType = "Desktop", 557910003,
        Topic.VarDeviceType = "Tablet", 557910001,
        Blank()
    )
)
</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fOdX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fOdX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png 424w, https://substackcdn.com/image/fetch/$s_!fOdX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png 848w, https://substackcdn.com/image/fetch/$s_!fOdX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png 1272w, https://substackcdn.com/image/fetch/$s_!fOdX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fOdX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png" width="646" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6c34f98-812e-493e-903c-9f288d5ef262_646x718.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:646,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81273,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/191349170?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fOdX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png 424w, https://substackcdn.com/image/fetch/$s_!fOdX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png 848w, https://substackcdn.com/image/fetch/$s_!fOdX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png 1272w, https://substackcdn.com/image/fetch/$s_!fOdX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c34f98-812e-493e-903c-9f288d5ef262_646x718.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Step 5 &#8212; Preparing Data for the Agent Response</strong></p><p>The filtered data is then mapped into a variable that the agent can use in its response by adding a node.  Variable Management &#8594; set variable value</p><p>This step ensures:</p><p>Clean formatting</p><p>Reusability across the conversation</p><p>We are doing this because the output of &#8220;List rows &#8220; is scoped to that node, and not guaranteed to be usable reliably across the whole conversation unless you explicitly store it. It also normalizes the data as the output Connector output is messy (metadata, paging, etc). By using .value, we ensure we&#8217;re extracting the actual records</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1NEM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1NEM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png 424w, https://substackcdn.com/image/fetch/$s_!1NEM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png 848w, https://substackcdn.com/image/fetch/$s_!1NEM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png 1272w, https://substackcdn.com/image/fetch/$s_!1NEM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1NEM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png" width="958" height="556" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:556,&quot;width&quot;:958,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69785,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/191349170?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1NEM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png 424w, https://substackcdn.com/image/fetch/$s_!1NEM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png 848w, https://substackcdn.com/image/fetch/$s_!1NEM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png 1272w, https://substackcdn.com/image/fetch/$s_!1NEM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b92f8b-2f02-4ba8-8e15-88de25ef27a7_958x556.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Final Step &#8212; Guiding the Agent with Instructions</strong></p><p>After building all of the components, the agent is then guided with instructions.</p><p>These instructions define:</p><p>When to trigger the topic</p><p>How to respond</p><p>What to ask next</p><p>For example:</p><p>Show available devices</p><p>Ask if the user wants to request one</p><p>This is what turns the solution from a query into a conversation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PeDI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PeDI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png 424w, https://substackcdn.com/image/fetch/$s_!PeDI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png 848w, https://substackcdn.com/image/fetch/$s_!PeDI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png 1272w, https://substackcdn.com/image/fetch/$s_!PeDI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PeDI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png" width="1060" height="268" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:268,&quot;width&quot;:1060,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38915,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/191349170?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PeDI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png 424w, https://substackcdn.com/image/fetch/$s_!PeDI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png 848w, https://substackcdn.com/image/fetch/$s_!PeDI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png 1272w, https://substackcdn.com/image/fetch/$s_!PeDI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048c756e-d60f-4b48-b67d-8fb810d2b26c_1060x268.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p><strong>Next up: Request Device.</strong></p><p>The agent moves from just listing available devices to handling requests via an adaptive card.</p><p>That&#8217;s all for today. See you in the next one.</p>]]></content:encoded></item><item><title><![CDATA[Book Review: Azure for Developers, Third Edition by Kamil Mrzygłód]]></title><description><![CDATA[Design GenAI-enhanced applications from building smart assistants to automating business workflows]]></description><link>https://blog.habeebyakubu.com/p/book-review-azure-for-developers</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/book-review-azure-for-developers</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 05 Jan 2026 07:03:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cb4a5968-523e-4aa6-8b98-b04bde7ec2a6_1103x1360.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Happy New Year, friends!  Thanks for following along, engaging with my posts and enriching the community. This year, we&#8217;re locking in even more on Azure!</p><p>Before the holidays, I got a review copy of this book, and thanks to a few quiet days over the break, I finally had time to read it.</p><p>Azure is an exciting place to build right now. It is also an overwhelming one. New services, new patterns, new opinions. Most of us have felt that tension between moving fast and actually understanding what we are building.</p><p>This book meets you right in that space. What stands out immediately is the focus on fundamentals. Every chapter slows down just enough to explain the basics before going deeper. </p><p>The journey begins where it should. Explaining Azure CLI, PowerShell, and end-end environment setup, so you can get hands on without friction.</p><p>The new AI content is especially well done. The Azure OpenAI and Azure Machine Learning chapters do not jump straight into code. Kamil explains what OpenAI is, what Azure OpenAI is, how deployments work, what tokens really mean, and why prompts behave the way they do.</p><p>That same pattern shows up across the book. Storage. Messaging. Workflows. Containers. Each chapter resets context, explains the core ideas, then builds on them. This makes it easier to reason about trade offs instead of memorizing services. Monitoring and observability also get the attention they deserve. Application Insights is covered properly, including dependency tracking, environment separation, and practical configuration. This is an area many teams underinvest in, and the book does not gloss over it.</p><p>The book has twenty solid chapters, organized into five key parts:</p><p>Setting Up Your Environment</p><p>Web Applications and Workflows in Microsoft Azure</p><p>Containers in Microsoft Azure</p><p>Storage, Messaging, and Monitoring</p><p>AI, ML, and DevOps</p><p>You will find useful screenshots, code snippets and diagrams that provide clarity. </p><p>I can say confidently that this book is a solid choice for developers, backend engineers, DevOps-minded developers, and architects who want a practical, developer-focused view of Azure services.</p><p>Book link here: <a href="https://www.amazon.com/dp/1836203519">Azure for Developers: The definitive guide to creating secure, scalable Azure apps with GenAI, serverless, and DevOps pipelines</a></p><p>Let me know if you would be reading it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>That&#8217;s all for today. See you in the next one.</p>]]></content:encoded></item><item><title><![CDATA[What Happens When Your App Runs on Azure]]></title><description><![CDATA[A Clear Behind-the-Scenes Look at How a Real Web Request Moves Through Azure]]></description><link>https://blog.habeebyakubu.com/p/what-happens-when-your-app-runs-on</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/what-happens-when-your-app-runs-on</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 17 Nov 2025 07:27:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IXo3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>What happens behind the scenes of a solution running on Azure?</p><p>We can see this by taking a look at how components interact in a typical web request. So feel free to comment on this architecture.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IXo3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IXo3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png 424w, https://substackcdn.com/image/fetch/$s_!IXo3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png 848w, https://substackcdn.com/image/fetch/$s_!IXo3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png 1272w, https://substackcdn.com/image/fetch/$s_!IXo3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IXo3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png" width="1291" height="492" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:492,&quot;width&quot;:1291,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98935,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/179115697?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IXo3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png 424w, https://substackcdn.com/image/fetch/$s_!IXo3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png 848w, https://substackcdn.com/image/fetch/$s_!IXo3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png 1272w, https://substackcdn.com/image/fetch/$s_!IXo3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4cda57-5539-4509-9e8f-e5f77044862f_1291x492.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Let&#8217;s take a simple basic web app:</strong></p><p>A user visits a public site. The site runs on Azure App Service.</p><p>Traffic enters through Azure Front Door.</p><p>The app calls an API inside a virtual network.</p><p>The API writes data to an Azure SQL database.</p><p>Everything runs in one Azure region with zone level redundancy.</p><p>High level, it looks like this:</p><p><strong>User &#8594; Public Internet &#8594; Azure Global Network &#8594; Regional Layer &#8594; VNet</strong></p><p><strong>Start with the user click</strong></p><p>A click generates a packet. The packet travels across the public internet. Routers move it based on standard routing protocols. Azure is not involved yet.</p><p><strong>Entry to Azure</strong></p><p>The packet reaches the closest Azure edge location. Front Door performs global routing to the correct region.</p><p><strong>Azure global network movement</strong></p><p>Traffic moves entirely across private switches and routers controlled by the platform. This is the long-haul network that moves your traffic from the nearest Azure edge location to the region that hosts your app.</p><p><strong>Region Arrival</strong></p><p>A cluster of datacenters in one geographical location. If Application Gateway is present, it performs layer seven routing. It reads headers, paths and cookies. It examines headers and paths, then forwards the request to the App Service front end.</p><p><strong>App Service</strong></p><p>Your code runs inside a sandbox. The compute host assigns CPU, memory and network interfaces. Physical servers under the host run on Azure designed hardware. An internal load balancer picks a healthy worker for each request. Your app receives the request. It parses data, applies logic and prepares to call downstream services.</p><p><strong>Move into the virtual network</strong></p><p>When App Service calls the API, the packet moves into the VNet through the configured VNet Integration.</p><p>Inside the VNet:</p><p><em>Virtual switches control routing</em></p><p><em>Subnets isolate resources</em></p><p><em>NSGs apply rules only to resources inside those subnets</em></p><p><em>User-defined routes influence how traffic flows</em></p><p><em>The packet reaches the API.</em></p><p><strong>API execution (Represented by an Azure function - premium plan here)</strong></p><p>The API runs on its own compute hosts. It processes the request then sends a query to Azure SQL.</p><p>The API processes the request and sends a query to Azure SQL.</p><p><strong>Storage and hardware</strong></p><p>Azure SQL stores data on clusters of physical disks backed by distributed replicas. Writes land in durable storage protected by multiple failure domains.</p><p><strong>Return path</strong></p><p>The response flows back along the same connection:</p><p>SQL returns data to the API</p><p>API returns data to App Service</p><p>App Service generates the final response</p><p>The connection returns through App Gateway if present</p><p>Front Door sends it back across Azure&#8217;s backbone</p><p>The closest edge site returns it to the public internet</p><p>The browser renders the result.</p><p>That&#8217;s all for today, see you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[AZ-104 Exam Prep Stack.]]></title><description><![CDATA[Strategy, Labs & Study Focus]]></description><link>https://blog.habeebyakubu.com/p/az-104-exam-prep-stack</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/az-104-exam-prep-stack</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 27 Oct 2025 09:11:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2d3ea888-4bff-498f-8d9b-cefd988cfc18_1000x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I first sat for the Microsoft Azure Administrator (AZ-104) exam back in July, I thought I was ready. I wasn&#8217;t. </p><p>I had done most of the study plan but skipped Monitoring and Backup; two topics that I thought wouldn&#8217;t carry much weight. They did. And it showed in the score report.</p><p>So I took a step back, slowed down, and planned a proper second attempt.</p><p>This time I was studying while working, so progress came slowly, bit by bit.</p><p>I started with the Microsoft Learn Study Guide. Always check for the latest version close to the time you plan to take the exams because Microsoft update the content and objectives.</p><p>Then I went through each module and fixed the weak spots from my first try.</p><p>Every weekend I did labs and made sure everything I learned was something I could try out in the Azure Portal. I did not do much of CLI or PowerShell.</p><p>Finally, I passed this exam.</p><p><strong>My Prep Stack That Worked</strong></p><p>First let&#8217;s start with what you would need for the labs (non-negotiable component of prepping)</p><p>Azure Subscription</p><ul><li><p>An active Azure account (free tier, pay-as-you-go, or MSDN/Visual Studio subscription). <a href="https://azure.microsoft.com/en-us/pricing/purchase-options/azure-account?icid=azurefreeaccount">About Azure Free Account</a></p></li><li><p>Enough credits to deploy multiple VMs, VNets, and services for testing.</p></li><li><p>If you&#8217;re doing labs and cleaning up resources daily, $50&#8211;$100/month should be sufficient.</p></li><li><p>If you want to keep resources running for several weeks for experimentation, aim for $150&#8211;$200 to avoid hitting limits.</p></li></ul><p>1. <strong>The Core Materials</strong></p><p>If you already work with Azure Admin services daily, you don&#8217;t need to overcomplicate it.</p><p>Here&#8217;s what worked for most admin professionals I&#8217;ve seen clear it quickly:</p><ul><li><p>Microsoft Learn &#8211; Refresh the modules; don&#8217;t just read, do.</p></li><li><p>John Savill&#8217;s AZ-104 Study Cram (v2) &#8211; It&#8217;s concise and solid.</p></li><li><p>Practice Exam &#8211; Take one at least a week before your test; it highlights where you need to dig deeper.</p></li></ul><p><strong>But if, like me, you spend more time developing than administering, you&#8217;ll want a fuller approach:</strong></p><ul><li><p>Microsoft Learn (complete paths) &#8211; Do every exercise, not just the theory.</p></li><li><p>A full-length course video &#8211; Avoid short cram content. Recommendations: CloudLee, Any good rated Az-104 course in Online, Scott Duffy.</p></li><li><p>AI (Copilot or ChatGPT) &#8211; Use it to simplify hard topics. I&#8217;d often ask, &#8220;Explain like I&#8217;m new to networking,&#8221; and it worked wonders.</p></li><li><p>Practice Exam. Again, one week before the real thing.</p></li></ul><p><strong>The Labs That Made the Difference</strong></p><p>Here are the ones that genuinely improved my understanding and confidence in the portal as a non-admin Azure person:</p><p><strong>Virtual Machines</strong></p><ul><li><p>Create a simple web server on a virtual machine. Practice resizing and redeploying it, attaching and encrypting additional disks, changing IP settings, and setting up a virtual machine scale set to handle increased traffic</p></li></ul><p>I learned that most tricky AZ-104 questions are based on real configuration behavior, not definitions.</p><p><strong>Virtual Networks</strong></p><ul><li><p>Create a virtual network with two subnets. Deploy a virtual machine in each subnet. Add a NAT gateway to enable secure outbound internet traffic, and apply a network security group to control inbound and outbound rules. Test connectivity between the VMs using private IPs and confirm outbound internet access through the NAT gateway.</p></li></ul><p>That&#8217;s where I finally understood how Azure handles routing and isolation.</p><p><strong>Storage</strong></p><ul><li><p>Set up a storage account and create containers for blobs and file shares. Upload sample data, generate shared access signatures for controlled access, change access tiers between hot and cool, and add a lifecycle management rule to automatically move or delete old files.</p></li></ul><p>Once I practiced setting up access policies, questions about permissions became easy points.</p><p><strong>Other Important Lab Ideas:</strong></p><p><strong>Load Balancing:</strong></p><ul><li><p>Deploy a web application on a virtual machine and configure an Azure Load Balancer to distribute traffic across multiple VMs. Set up an Application Gateway with Azure Container Instances as the backend, and test that incoming requests are properly balanced and routed to the correct instances.</p></li></ul><p><strong>Monitoring:</strong></p><ul><li><p>Create a Log Analytics workspace and connect virtual machines to it using agents and data collection rules. Use Network Watcher and KQL queries to visualize metrics, configure alerts for critical events, and test that notifications trigger correctly</p></li></ul><p><strong>Backup &amp; Recovery:</strong></p><ul><li><p>Configure Azure Backup to protect virtual machines and other resources, and set up Azure Site Recovery for disaster recovery. Test recovery scenarios to ensure that data and VMs can be restored quickly and reliably.</p></li></ul><p><strong>Governance &amp; Cost Control:</strong></p><ul><li><p>Set up budgets to monitor spending, apply resource locks to protect critical resources, and enforce policies for compliance. Deploy sample resources using ARM or Bicep templates to practice automated, policy-compliant provisioning.</p></li></ul><p><strong>Final Take</strong></p><p>After two tries, here&#8217;s what I&#8217;d tell anyone studying for it:</p><p>Don&#8217;t skip any module.</p><p>The labs are where things actually start to click. Every lab taught me something that a video couldn&#8217;t.</p><p>Talking about Labs. Here are some tips to minimize costs</p><ul><li><p>Stop/deallocate VMs when not in use to avoid compute charges.</p></li><li><p>Delete unused resources after completing labs.</p></li><li><p>Use Azure Free Tier: 12 months of free services and $200 credit for the first month.</p></li></ul><p>Practice exams aren&#8217;t only about the score. They show you what you still don&#8217;t get. Try to take or refresh them close to the exam date.</p><p>The skillset is quite robust &amp; large but if you can study a bit every day, even for an hour, you&#8217;ll keep making progress.</p><p>When I finally passed in October, it wasn&#8217;t because I memorized things. It was because it all finally made sense and I could join the pieces together.</p><p>Some people are requesting for a live session to discuss this, if it is something you would be interested in, simply like this post and I would send you an invite.</p><p>That&#8217;s all for today and see you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[7 Azure services that every Power Platform developer should know]]></title><description><![CDATA[In my work with Power Platform, I've seen how the right Azure services improve the entire solution.]]></description><link>https://blog.habeebyakubu.com/p/7-azure-services-that-every-power</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/7-azure-services-that-every-power</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Tue, 02 Sep 2025 08:06:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e2fb48dd-563c-48db-9617-6dad22e2cdf2_1000x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In my work with Power Platform, I've seen how the right Azure services improve the entire solution.</p><p>No one needs the entire Azure catalog, but a focused set of services gives them superpowers without overwhelming complexity. </p><p>If you are interested in a deep dive into these service including practical use cases, please like this post and I will provide you with more details.</p><p>These are 7 Azure services every Power Platform developer should know:</p><p>Managed Identity</p><p>Azure App Registration</p><p>Azure Functions.</p><p>Azure Logic Apps.</p><p>Azure Storage.</p><p>Azure App Insights.</p><p>Azure Key Vaults.</p><p><strong>1. Managed Identity</strong></p><p>Why: Eliminates hardcoded secrets and credentials when connecting Power Platform to Azure resources.</p><p>Example: A Power Automate flow calling an Azure Function authenticates seamlessly using Managed Identity.</p><p><strong>2. Azure App Registrations (Entra ID)</strong></p><p>Why: Enable secure authentication for apps, APIs, and custom connectors by registering them in Azure AD.</p><p>Example: Register a custom API or third party application so it can be consumed securely inside Power Platform.</p><p><strong>3. Azure Functions</strong></p><p>Why: Run custom logic beyond what Power Automate or Power Fx or even Plugins can handle efficiently.</p><p>Example: Perform complex operations, call external APIs, process files &#8212; without sacrificing performance within Dataverse.</p><p><strong>4. Azure Storage</strong></p><p>Why: Cost effective, scalable way to handle files, images, logs, or datasets too big for Dataverse.</p><p>Example: Power App uploads receipts to Blob Storage &#8594; flows process them.</p><p><strong>5. Azure Logic Apps</strong></p><p>Why: Like Power Automate's "big sibling" &#8212; same connectors, but with enterprise scale, control, and integration flexibility.</p><p>Example: Long-running B2B integrations that interact with other Azure services and solutions.</p><p><strong>6. Azure Application Insights</strong></p><p>Why: True observability &#8212; track errors, performance, and usage across apps, flows, and connectors.</p><p>Example: Trace a failures in plugins, custom APIs or c and see where the error originated.</p><p><strong>7. Azure Key Vault</strong></p><p>Why: Secure storage for API keys, secrets, and certificates.</p><p>Example: Instead of embedding API keys in custom connectors, or anywhere makers reference Key Vault.</p><p>Many of this can be easily picked up on Microsoft Learn. Happy skills update, guys.</p><p>That&#8217;s all for today, see you in the next one.</p><p>If you are interested in a deep dive into these service including practical use cases, please like this post and I will provide you with more details.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Respond to Service Bus Events with Event Grid + Logic Apps]]></title><description><![CDATA[Event Grid is Azure&#8217;s event routing service.]]></description><link>https://blog.habeebyakubu.com/p/respond-to-service-bus-events-with</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/respond-to-service-bus-events-with</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 18 Aug 2025 06:02:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c35d5210-b1ab-4932-aaec-633ac114d4f6_1000x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Event Grid is Azure&#8217;s event routing service. It enables applications to react to events in near real time by connecting publishers and subscribers in a clean and scalable way.</p><p>An event is simply a fact that something has happened. Event Grid takes those facts from publishers, such as Azure Blob Storage, Service Bus, or even a custom application, and delivers them to subscribers like Logic Apps, Azure Functions, or Event Hubs. The delivery is push-based, so there is no need for polling or constant checks.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Imagine a scenario where customer orders are sent into a Service Bus queue. Without Event Grid, a Logic App would need to keep checking for new messages. </p><p>Can you use direct integration with Service Bus? It works, but here's the catch: under the hood, Logic Apps are polling the queue. That means some added latency, and possible double processing of same message.</p><p>With Event Grid in place, the moment a new order arrives, an event is raised and pushed into your workflow. From there, you can automatically notify your operations team in Microsoft Teams, call an Azure Function to validate and enrich the order, or record the details in Microsoft Dataverse for business tracking.</p><p>It is straightforward to set up and can be applied across many scenarios, so let&#8217;s get started.</p><p>We will follow this official Documentation from Microsoft: </p><p><a href="https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-to-event-grid-integration-example">Tutorial: Respond to Azure Service Bus events received using Azure Event Grid by using Azure Logic Apps</a></p><p>1. Setup Service Bus (+ topic and subscription)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!smpS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!smpS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png 424w, https://substackcdn.com/image/fetch/$s_!smpS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png 848w, https://substackcdn.com/image/fetch/$s_!smpS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png 1272w, https://substackcdn.com/image/fetch/$s_!smpS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!smpS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png" width="1374" height="367" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:367,&quot;width&quot;:1374,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53304,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!smpS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png 424w, https://substackcdn.com/image/fetch/$s_!smpS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png 848w, https://substackcdn.com/image/fetch/$s_!smpS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png 1272w, https://substackcdn.com/image/fetch/$s_!smpS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deae8ed-c606-4f01-840a-c800ead8a5dc_1374x367.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>2. Send messages to the Service Bus topic</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u-oA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u-oA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png 424w, https://substackcdn.com/image/fetch/$s_!u-oA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png 848w, https://substackcdn.com/image/fetch/$s_!u-oA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png 1272w, https://substackcdn.com/image/fetch/$s_!u-oA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u-oA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png" width="979" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:979,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89974,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u-oA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png 424w, https://substackcdn.com/image/fetch/$s_!u-oA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png 848w, https://substackcdn.com/image/fetch/$s_!u-oA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png 1272w, https://substackcdn.com/image/fetch/$s_!u-oA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf7be72-f094-4d88-942b-c23471aa326b_979x496.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>3. Create new Logic App to Receive messages</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QGkK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QGkK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png 424w, https://substackcdn.com/image/fetch/$s_!QGkK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png 848w, https://substackcdn.com/image/fetch/$s_!QGkK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png 1272w, https://substackcdn.com/image/fetch/$s_!QGkK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QGkK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png" width="1201" height="171" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:171,&quot;width&quot;:1201,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24395,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QGkK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png 424w, https://substackcdn.com/image/fetch/$s_!QGkK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png 848w, https://substackcdn.com/image/fetch/$s_!QGkK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png 1272w, https://substackcdn.com/image/fetch/$s_!QGkK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c084c62-068d-49da-8eaa-eb499068e971_1201x171.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p></p><p>4. Add a step receive messages from Service Bus using Event Grid</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zCP9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zCP9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png 424w, https://substackcdn.com/image/fetch/$s_!zCP9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png 848w, https://substackcdn.com/image/fetch/$s_!zCP9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png 1272w, https://substackcdn.com/image/fetch/$s_!zCP9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zCP9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png" width="601" height="730" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:730,&quot;width&quot;:601,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37765,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zCP9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png 424w, https://substackcdn.com/image/fetch/$s_!zCP9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png 848w, https://substackcdn.com/image/fetch/$s_!zCP9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png 1272w, https://substackcdn.com/image/fetch/$s_!zCP9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be2c16e-f63c-4236-a96d-e109e229528f_601x730.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!79Bp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!79Bp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png 424w, https://substackcdn.com/image/fetch/$s_!79Bp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png 848w, https://substackcdn.com/image/fetch/$s_!79Bp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png 1272w, https://substackcdn.com/image/fetch/$s_!79Bp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!79Bp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png" width="616" height="553" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:553,&quot;width&quot;:616,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:29621,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!79Bp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png 424w, https://substackcdn.com/image/fetch/$s_!79Bp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png 848w, https://substackcdn.com/image/fetch/$s_!79Bp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png 1272w, https://substackcdn.com/image/fetch/$s_!79Bp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa24dfd-eded-4a9d-92e4-097efb63c1f3_616x553.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The following two actions (5 &amp; 6) are inside a foreach looping over the body of the messages received from the bus</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VZpj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VZpj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png 424w, https://substackcdn.com/image/fetch/$s_!VZpj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png 848w, https://substackcdn.com/image/fetch/$s_!VZpj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png 1272w, https://substackcdn.com/image/fetch/$s_!VZpj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VZpj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png" width="504" height="210" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:210,&quot;width&quot;:504,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10274,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VZpj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png 424w, https://substackcdn.com/image/fetch/$s_!VZpj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png 848w, https://substackcdn.com/image/fetch/$s_!VZpj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png 1272w, https://substackcdn.com/image/fetch/$s_!VZpj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf3ecc6-1aaa-4522-87cc-2959799d5a37_504x210.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p>5. Add a step to process received messages (Here, we send an email)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bHhf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bHhf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png 424w, https://substackcdn.com/image/fetch/$s_!bHhf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png 848w, https://substackcdn.com/image/fetch/$s_!bHhf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png 1272w, https://substackcdn.com/image/fetch/$s_!bHhf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bHhf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png" width="628" height="574" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:574,&quot;width&quot;:628,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30813,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bHhf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png 424w, https://substackcdn.com/image/fetch/$s_!bHhf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png 848w, https://substackcdn.com/image/fetch/$s_!bHhf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png 1272w, https://substackcdn.com/image/fetch/$s_!bHhf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575a5c0e-f064-464b-a89f-4627eb5b6f57_628x574.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>6. Add a step to complete received messages.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EODv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EODv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png 424w, https://substackcdn.com/image/fetch/$s_!EODv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png 848w, https://substackcdn.com/image/fetch/$s_!EODv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png 1272w, https://substackcdn.com/image/fetch/$s_!EODv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EODv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png" width="622" height="549" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:549,&quot;width&quot;:622,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:29928,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EODv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png 424w, https://substackcdn.com/image/fetch/$s_!EODv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png 848w, https://substackcdn.com/image/fetch/$s_!EODv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png 1272w, https://substackcdn.com/image/fetch/$s_!EODv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bab06a-b564-4b29-9b76-536c4c0f17ba_622x549.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p><p>6. Test the app.</p><p>If you haven't already sent test messages to the topic, use the code in the step 2 to send test messages to the Topic.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IJmZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IJmZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png 424w, https://substackcdn.com/image/fetch/$s_!IJmZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png 848w, https://substackcdn.com/image/fetch/$s_!IJmZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png 1272w, https://substackcdn.com/image/fetch/$s_!IJmZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IJmZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png" width="934" height="312" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:312,&quot;width&quot;:934,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25562,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IJmZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png 424w, https://substackcdn.com/image/fetch/$s_!IJmZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png 848w, https://substackcdn.com/image/fetch/$s_!IJmZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png 1272w, https://substackcdn.com/image/fetch/$s_!IJmZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765f531a-b0a8-454b-ab75-d78cfa95e1cd_934x312.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Navigate to the Overview page of your logic app. Then select the Run history tab in the bottom pane. You see the logic app runs messages that were sent to the topic. It could take a few minutes before you see the logic app runs. Select Refresh on the toolbar to refresh the page.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h1N2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h1N2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png 424w, https://substackcdn.com/image/fetch/$s_!h1N2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png 848w, https://substackcdn.com/image/fetch/$s_!h1N2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png 1272w, https://substackcdn.com/image/fetch/$s_!h1N2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h1N2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png" width="1132" height="159" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:159,&quot;width&quot;:1132,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19607,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!h1N2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png 424w, https://substackcdn.com/image/fetch/$s_!h1N2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png 848w, https://substackcdn.com/image/fetch/$s_!h1N2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png 1272w, https://substackcdn.com/image/fetch/$s_!h1N2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6447e3cd-c4cf-42b8-9125-6702d07643e2_1132x159.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p>Select a logic app run to see the details. Notice that it processed five messages in the for loop.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hX_B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hX_B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png 424w, https://substackcdn.com/image/fetch/$s_!hX_B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png 848w, https://substackcdn.com/image/fetch/$s_!hX_B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png 1272w, https://substackcdn.com/image/fetch/$s_!hX_B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hX_B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png" width="388" height="679" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:679,&quot;width&quot;:388,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:34568,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hX_B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png 424w, https://substackcdn.com/image/fetch/$s_!hX_B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png 848w, https://substackcdn.com/image/fetch/$s_!hX_B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png 1272w, https://substackcdn.com/image/fetch/$s_!hX_B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10621b64-f926-44bf-a18d-ea9a8caea9f6_388x679.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p><p>6. You should get an email for each message the logic app receives.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M2SA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M2SA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png 424w, https://substackcdn.com/image/fetch/$s_!M2SA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png 848w, https://substackcdn.com/image/fetch/$s_!M2SA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png 1272w, https://substackcdn.com/image/fetch/$s_!M2SA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M2SA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png" width="1456" height="68" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:68,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:13250,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!M2SA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png 424w, https://substackcdn.com/image/fetch/$s_!M2SA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png 848w, https://substackcdn.com/image/fetch/$s_!M2SA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png 1272w, https://substackcdn.com/image/fetch/$s_!M2SA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F104b8018-3f15-4cc4-92e3-02d409e6d21e_1570x73.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n-Io!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n-Io!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png 424w, https://substackcdn.com/image/fetch/$s_!n-Io!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png 848w, https://substackcdn.com/image/fetch/$s_!n-Io!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png 1272w, https://substackcdn.com/image/fetch/$s_!n-Io!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n-Io!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png" width="624" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26288fb0-4462-44a1-b276-37b7002efd81_624x484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:624,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38080,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/171116413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n-Io!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png 424w, https://substackcdn.com/image/fetch/$s_!n-Io!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png 848w, https://substackcdn.com/image/fetch/$s_!n-Io!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png 1272w, https://substackcdn.com/image/fetch/$s_!n-Io!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26288fb0-4462-44a1-b276-37b7002efd81_624x484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>That&#8217;s all for today, see you in the next one.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/p/respond-to-service-bus-events-with?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/p/respond-to-service-bus-events-with?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.habeebyakubu.com/p/respond-to-service-bus-events-with?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Use OpenTelemetry with Azure Functions]]></title><description><![CDATA[Export telemetry from Azure Function to any OTLP-compatible endpoint]]></description><link>https://blog.habeebyakubu.com/p/use-opentelemetry-with-azure-functions</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/use-opentelemetry-with-azure-functions</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Wed, 30 Jul 2025 06:14:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4f28202d-ea5d-491d-a579-025d2a865f01_1000x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As modern applications increasingly adopt distributed architectures, observability becomes essential for understanding system behavior. </p><p>OpenTelemetry provides a vendor-agnostic way to collect traces, metrics, and logs from your application. It is an industry standard for instrumenting applications and transmitting telemetry. Read more about this technology here: <a href="https://opentelemetry.io/">OpenTelemetry Explained</a></p><p>By default, Azure Functions emit telemetry from both the host process and the language-specific worker, and this data is typically sent to Application Insights via its SDK. </p><p>With this update, you can now export the same telemetry (structured traces and logs), to any OTLP-compatible backend in  a few easy steps.</p><p>First, let us take a sample OLTP endpoint to send our telemetry data to. In this case, I am using an observability platform for the test: honeycomb.io. I first created an account with them and obtained some config details which you can find in their docs:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rucp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rucp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png 424w, https://substackcdn.com/image/fetch/$s_!rucp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png 848w, https://substackcdn.com/image/fetch/$s_!rucp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png 1272w, https://substackcdn.com/image/fetch/$s_!rucp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rucp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png" width="1198" height="385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:385,&quot;width&quot;:1198,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75747,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/169634739?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rucp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png 424w, https://substackcdn.com/image/fetch/$s_!rucp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png 848w, https://substackcdn.com/image/fetch/$s_!rucp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png 1272w, https://substackcdn.com/image/fetch/$s_!rucp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1ae11d-5ac6-41c3-8ee9-d78793274807_1198x385.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Pick your API key from the section shown below:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y3vi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y3vi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png 424w, https://substackcdn.com/image/fetch/$s_!Y3vi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png 848w, https://substackcdn.com/image/fetch/$s_!Y3vi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png 1272w, https://substackcdn.com/image/fetch/$s_!Y3vi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y3vi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png" width="1290" height="312" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:312,&quot;width&quot;:1290,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42514,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/169634739?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Y3vi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png 424w, https://substackcdn.com/image/fetch/$s_!Y3vi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png 848w, https://substackcdn.com/image/fetch/$s_!Y3vi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png 1272w, https://substackcdn.com/image/fetch/$s_!Y3vi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a586dac-f4dd-4122-a331-119ad457259f_1290x312.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>Now, we can begin to configure our sample azure function in order to be able to send telemetry data to the public endpoint obtained above.</p><ol><li><p><strong>Enable OpenTelemetry in the Functions host</strong></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3wVL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3wVL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png 424w, https://substackcdn.com/image/fetch/$s_!3wVL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png 848w, https://substackcdn.com/image/fetch/$s_!3wVL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png 1272w, https://substackcdn.com/image/fetch/$s_!3wVL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3wVL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png" width="610" height="324" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:324,&quot;width&quot;:610,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36617,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/169634739?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3wVL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png 424w, https://substackcdn.com/image/fetch/$s_!3wVL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png 848w, https://substackcdn.com/image/fetch/$s_!3wVL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png 1272w, https://substackcdn.com/image/fetch/$s_!3wVL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F436908e8-b6ed-4971-85de-acc54b027ec8_610x324.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="2"><li><p><strong>Configure application settings</strong></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Anea!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Anea!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png 424w, https://substackcdn.com/image/fetch/$s_!Anea!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png 848w, https://substackcdn.com/image/fetch/$s_!Anea!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png 1272w, https://substackcdn.com/image/fetch/$s_!Anea!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Anea!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png" width="952" height="327" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:327,&quot;width&quot;:952,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62577,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/169634739?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Anea!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png 424w, https://substackcdn.com/image/fetch/$s_!Anea!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png 848w, https://substackcdn.com/image/fetch/$s_!Anea!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png 1272w, https://substackcdn.com/image/fetch/$s_!Anea!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2ec88-0903-4d18-96a1-d1a742daa018_952x327.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>PS; Make sure you replace the &lt;your-api-key&gt; with the API key copied from honeycomb site.</p><ol start="3"><li><p><strong>Enable OpenTelemetry in your app</strong></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jgEb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jgEb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png 424w, https://substackcdn.com/image/fetch/$s_!jgEb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png 848w, https://substackcdn.com/image/fetch/$s_!jgEb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png 1272w, https://substackcdn.com/image/fetch/$s_!jgEb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jgEb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png" width="1177" height="238" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:238,&quot;width&quot;:1177,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142274,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/169634739?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jgEb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png 424w, https://substackcdn.com/image/fetch/$s_!jgEb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png 848w, https://substackcdn.com/image/fetch/$s_!jgEb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png 1272w, https://substackcdn.com/image/fetch/$s_!jgEb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4eb26b-b90e-4d5b-a354-1484b86d2f46_1177x238.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This involved installing the packages, I have more here because I planned to send to Application Insights as well. If you only want to send to the OLTP endpoint, then you don&#8217;t need to have as many. Check the Microsoft docs to confirm which packages you need.</p><p>4. In your program.cs:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s82Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s82Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png 424w, https://substackcdn.com/image/fetch/$s_!s82Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png 848w, https://substackcdn.com/image/fetch/$s_!s82Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png 1272w, https://substackcdn.com/image/fetch/$s_!s82Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s82Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png" width="958" height="574" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4366c96-8f9f-4635-b538-09e0f424c500_958x574.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:574,&quot;width&quot;:958,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89518,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/169634739?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!s82Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png 424w, https://substackcdn.com/image/fetch/$s_!s82Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png 848w, https://substackcdn.com/image/fetch/$s_!s82Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png 1272w, https://substackcdn.com/image/fetch/$s_!s82Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4366c96-8f9f-4635-b538-09e0f424c500_958x574.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br>Final step is to send logs from your function:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-JhF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-JhF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png 424w, https://substackcdn.com/image/fetch/$s_!-JhF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png 848w, https://substackcdn.com/image/fetch/$s_!-JhF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png 1272w, https://substackcdn.com/image/fetch/$s_!-JhF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-JhF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png" width="976" height="240" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:240,&quot;width&quot;:976,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67820,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/169634739?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-JhF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png 424w, https://substackcdn.com/image/fetch/$s_!-JhF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png 848w, https://substackcdn.com/image/fetch/$s_!-JhF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png 1272w, https://substackcdn.com/image/fetch/$s_!-JhF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a77a0-71d3-44b2-9f6a-44991435cf39_976x240.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>When you run and post to this function, you find telemetry data in your honeycomb&#8217;s dataset:</p><p>General trace:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T4pB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T4pB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png 424w, https://substackcdn.com/image/fetch/$s_!T4pB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png 848w, https://substackcdn.com/image/fetch/$s_!T4pB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png 1272w, https://substackcdn.com/image/fetch/$s_!T4pB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T4pB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png" width="1062" height="417" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:417,&quot;width&quot;:1062,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83434,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/169634739?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T4pB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png 424w, https://substackcdn.com/image/fetch/$s_!T4pB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png 848w, https://substackcdn.com/image/fetch/$s_!T4pB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png 1272w, https://substackcdn.com/image/fetch/$s_!T4pB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a51d66b-34ca-4343-af64-322a5d96de3d_1062x417.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Custom Data Sent:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gn2v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gn2v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png 424w, https://substackcdn.com/image/fetch/$s_!gn2v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png 848w, https://substackcdn.com/image/fetch/$s_!gn2v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png 1272w, https://substackcdn.com/image/fetch/$s_!gn2v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gn2v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png" width="1072" height="556" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:556,&quot;width&quot;:1072,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107156,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/169634739?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gn2v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png 424w, https://substackcdn.com/image/fetch/$s_!gn2v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png 848w, https://substackcdn.com/image/fetch/$s_!gn2v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png 1272w, https://substackcdn.com/image/fetch/$s_!gn2v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ba2f6ab-3188-4c4d-b100-588a2924175f_1072x556.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Official Microsoft Documentation: <a href="https://learn.microsoft.com/en-us/azure/azure-functions/opentelemetry-howto?tabs=otlp-export&amp;pivots=programming-language-csharp">Use OpenTelemetry with Azure Functions</a></p><p>That&#8217;s all for today.</p><p>See you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Azure Functions on Azure Container Apps]]></title><description><![CDATA[Following the announcement at MSBuild 2025, I wanted to test if I could deploy a Function App as a native container workload in ACA and it went smoothly.]]></description><link>https://blog.habeebyakubu.com/p/azure-functions-on-azure-container</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/azure-functions-on-azure-container</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 09 Jun 2025 06:01:27 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/165461117/ac549c2e92d42944a22b787e1bc7252b.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Following the announcement at MSBuild 2025,  I wanted to test if I could deploy a Function App as a native container workload in ACA and it went smoothly. </p><p>See attached video: &#11015;&#65039; </p><p>With that, I unlocked the following benefits:</p><p>&#9889;&#65039; Automatic scaling (via KEDA)</p><p>&#128736; Access to native ACA features: revision control, secrets, traffic routing, and more</p><p>Earlier, you could run Azure Functions on Container Apps by creating them through the regular Function App setup &amp; selecting the hosting plan. It worked, but came with some extra complexity and didn&#8217;t give full access to all the features that Container Apps offer.</p><p>Some developers also tried running function images directly on ACA, but that approach wasn&#8217;t officially supported and missed out on key benefits like built-in autoscaling.</p><p>&#128260; <strong>How to migrate to the new model</strong></p><p>&#127381; Create a new Function Container App (via Portal or CLI).</p><p>&#128279; Provide your existing function image URL during setup.</p><p>&#129534; Manually provision storage, App Insights, and replicate app settings as env variables/secrets.</p><p>&#9989; Your app will now use the new kind=functionapp property.</p><p>&#128257; Test thoroughly &#8212; and if all goes well, decommission the old setup.</p><p>If you're already using containers or planning to, switching to the new native Functions hosting in Container Apps is the best way to get the full benefits.</p><p>Read the official announcement from Microsoft: <a href="https://techcommunity.microsoft.com/blog/appsonazureblog/azure-functions-%E2%80%93-build-2025/4414655">Azure Functions &#8211; Build 2025</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Understanding Azure RBAC]]></title><description><![CDATA[Role-Based Access Control Simplified]]></description><link>https://blog.habeebyakubu.com/p/understanding-azure-rbac</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/understanding-azure-rbac</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Thu, 29 May 2025 06:01:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-nyV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In Azure, user identities are managed in Entra ID, while access to resources is controlled through Azure RBAC.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-nyV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-nyV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png 424w, https://substackcdn.com/image/fetch/$s_!-nyV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png 848w, https://substackcdn.com/image/fetch/$s_!-nyV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png 1272w, https://substackcdn.com/image/fetch/$s_!-nyV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-nyV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png" width="1198" height="511" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:511,&quot;width&quot;:1198,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:110166,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/164150294?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-nyV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png 424w, https://substackcdn.com/image/fetch/$s_!-nyV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png 848w, https://substackcdn.com/image/fetch/$s_!-nyV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png 1272w, https://substackcdn.com/image/fetch/$s_!-nyV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83b4e98-0085-4fda-9d23-b26806f3c999_1198x511.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>In this post, we'll break down:</p><p>How Azure RBAC works</p><p>How to use it to secure your resources</p><p>When to create custom roles for fine-grained control</p><p><strong>What is Azure RBAC?</strong></p><p>Azure RBAC allows you to control <strong>who can do</strong> <strong>what</strong> at which <strong>scope</strong>. Instead of assigning individual permissions one by one to every user (which is messy and error-prone), RBAC lets you define what a "role" can do, and then assign that role to the right identity.</p><p>Think of it like this:</p><p><em>Who</em>: The identity to which the role is assigned.</p><p><em>What</em>: The role, which defines the set of permissions granted.</p><p><em>Where (scope)</em>: The level at which access applies.</p><p><strong>RBAC Components Explained:</strong></p><h5>1. Security Principal (Who?)</h5><p>This is the identity that receives the permission. It could be:</p><p>A user</p><p>A group (e.g., security group)</p><p>A service principal (from App Registration)</p><p>A managed identity (for apps hosted in Azure)</p><h5>2. Role Definition (What?)</h5><p>A role definition is a set of permissions. instead of assigning permission individually, we assign roles instead. Azure operates across two distinct layers of operations:</p><ul><li><p>Management Plane</p></li></ul><p>This layer covers actions that manage and configure Azure resources, such as creating a virtual machine or assigning roles.</p><p>Access is governed by RBAC roles like:</p><p>Owner &#8211; Full control, including assigning roles</p><p>Contributor &#8211; Full control, except assigning roles</p><p>Reader &#8211; View-only access to resources</p><p>These are management plane roles, focused on administrative control.</p><ul><li><p>Data Plane</p></li></ul><p>This governs access to the data within a resource, such as reading blob contents or accessing secrets.</p><p>Examples of data plane roles include:</p><p>Storage Blob Data Reader &#8211; Can read blob data in Azure Storage</p><p>Key Vault Reader &#8211; Can view secrets, keys, and certificates in Key Vault (read-only)</p><h5>3. Scope (Where?)</h5><p>The level at which the access applies:</p><p>Management group &#8211; top level for multiple subscriptions</p><p>Subscription</p><p>Resource group</p><p>Resource (most granular). example: an azure function app, etc</p><p>NB:  You can inherit permissions downwards (e.g., from subscription to a resource group).</p><p><strong>Demo</strong></p><p>Let&#8217;s walk through how to assign a data-plane role to a user so they can read and upload blobs in an Azure Storage Account.</p><p>In this example, we&#8217;ll grant the Storage Blob Data Contributor role at the resource scope (i.e., directly on the storage account). This role provides the necessary permissions to read, write, and delete blobs.</p><ul><li><p><strong>Navigate to the Storage Account</strong><br>Go to the Azure portal and open the storage account where you want to assign permissions.</p></li><li><p><strong>Access the IAM Settings</strong><br>In the left-hand menu, select <strong>Access Control (IAM)</strong>.</p></li><li><p><strong>Go to Role Assignments</strong><br>Select the <strong>Role assignments</strong> tab.</p></li><li><p><strong>Add a New Role Assignment</strong><br>Click <strong>+ Add</strong> &gt; <strong>Add role assignment</strong>.</p></li><li><p><strong>Choose the Right Role</strong><br>Use the search box to find <em>Storage Blob Data Contributor</em>, select it, and click <strong>Next</strong>.</p></li><li><p><strong>Select the Identity Type</strong><br>Under <strong>Assign access to</strong>, choose <strong>User, group, or service principal</strong>.</p></li><li><p><strong>Pick the Member</strong><br>Click <strong>+ Select members</strong>, search for the Entra ID user (e.g. <em>user@domain.com</em>), and select them.</p></li><li><p><strong>Complete the Assignment</strong><br>Click <strong>Review + assign</strong>, then confirm again to finalize the assignment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!57nc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!57nc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png 424w, https://substackcdn.com/image/fetch/$s_!57nc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png 848w, https://substackcdn.com/image/fetch/$s_!57nc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png 1272w, https://substackcdn.com/image/fetch/$s_!57nc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!57nc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png" width="607" height="838" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:838,&quot;width&quot;:607,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!57nc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png 424w, https://substackcdn.com/image/fetch/$s_!57nc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png 848w, https://substackcdn.com/image/fetch/$s_!57nc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png 1272w, https://substackcdn.com/image/fetch/$s_!57nc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd344a-a346-4dc9-91b2-b8c657f4e780_607x838.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><p>This can also be applied to any Azure resource/resource group/subscription/management group and you will be able to select roles related to that scope.</p><p>You can find a list of built-in roles here: <a href="https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles">Azure built-in roles</a></p><p> <strong>When should you consider custom roles?</strong></p><p>Sometimes, the built-in roles may not be enough as your requirement grow or change, this is where custom role definitions come in.</p><p>You should consider creating custom roles when :</p><p>You need least privilege access not covered by built-ins</p><p>You want to allow specific actions (e.g., read-only + deploy, but no delete)</p><p>You need scoped control across multiple subscriptions or resource groups</p><p>In a future blog, we will take a look at how to define custom roles and then assign them to identities.</p><p>That&#8217;s all for today, see you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[When to Use Managed Identity vs App Registration in Azure – A Visual Guide]]></title><description><![CDATA[Whether you're using App Registration or Managed Identity, your app still needs an identity and that identity lives in Microsoft Entra ID.]]></description><link>https://blog.habeebyakubu.com/p/when-to-use-managed-identity-vs-app</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/when-to-use-managed-identity-vs-app</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Thu, 08 May 2025 09:14:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_liX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Whether you're using App Registration or Managed Identity, your app still needs an identity and that identity lives in Microsoft Entra ID.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_liX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_liX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png 424w, https://substackcdn.com/image/fetch/$s_!_liX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png 848w, https://substackcdn.com/image/fetch/$s_!_liX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png 1272w, https://substackcdn.com/image/fetch/$s_!_liX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_liX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png" width="877" height="532" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe9ee653-0adf-4681-94c2-1773789d678a_877x532.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:532,&quot;width&quot;:877,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:106040,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/163118731?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_liX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png 424w, https://substackcdn.com/image/fetch/$s_!_liX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png 848w, https://substackcdn.com/image/fetch/$s_!_liX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png 1272w, https://substackcdn.com/image/fetch/$s_!_liX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9ee653-0adf-4681-94c2-1773789d678a_877x532.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>In app-based authentication, what we typically need is a Service Principal in Entra ID: a security identity that represents an app.</p><p>When you use Managed Identity, Azure automatically creates and manages that Service Principal on your behalf.</p><p>This removes the need to manage:</p><p>Client secrets</p><p>Certificates</p><p>Identity lifecycle manually.</p><p>It's a clean solution, if you&#8217;re running in Azure.</p><p>How to setup one: <a href="https://blog.habeebyakubu.com/p/understanding-managed-identities">Understanding Managed Identities</a></p><p>However, Managed Identity cannot be used when:</p><p>Your app is not hosted in Azure</p><p>You need to call third-party APIs that don&#8217;t support Entra ID tokens, or perform OAuth2/OpenID Connect flows</p><p>You require custom claims in tokens, or want to support user consent scenarios.</p><p>This is where app registration comes in.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3nHF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3nHF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!3nHF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!3nHF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!3nHF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3nHF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:50397,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/163118731?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3nHF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!3nHF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!3nHF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!3nHF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573b0fb3-b622-4fca-90d3-8aebc8b25983_1024x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I wrote about app registration, here's the link: <a href="https://blog.habeebyakubu.com/p/tutorial-setup-azure-app-registration">Setup Azure App Registration</a></p><p>That&#8217;s all for today, see you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Find & Fix Outdated Azure Function Apps]]></title><description><![CDATA[Useful Scripts to Keep Track of Updates]]></description><link>https://blog.habeebyakubu.com/p/find-and-fix-outdated-azure-function</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/find-and-fix-outdated-azure-function</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Tue, 22 Apr 2025 06:01:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d2b486c1-1e25-4bf6-ab5c-5dc7cee6a732_2000x1600.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re managing Function Apps across multiple environments, you probably already know how easy it is to lose track of runtime versions. </p><p>One outdated runtime, and suddenly you're dealing with broken flows, unsupported features or worse, security issues.</p><p>Microsoft sends the following alerts, well, ahead of this expiry time:</p><ul><li><p>Azure Portal notifications</p></li><li><p>Emails to subscription owners</p></li><li><p>Warnings in client tools and Azure Portal UI when an app is running on a version that is either retired, or about to be retired in the next 6 months</p></li><li><p>Official Azure Functions Supported Languages document</p></li></ul><p>This might not be proactive enough in your setups spanning multiple subscriptions.</p><p>This is where these CLI scripts might help to:</p><p>&#9989; Scan across subscriptions</p><p>&#9989; Identify apps on outdated runtimes/language versions</p><p>&#9989; Stay compliant and secure with minimal effort</p><ul><li><p>List all Windows-based Function Apps:</p></li></ul><pre><code>az functionapp list --query '[?contains(kind, `functionapp`) &amp;&amp; !contains(kind, `linux`)].{Name:name, ResourceGroup:resourceGroup, OS:`Windows`}' --output table</code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hfCt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hfCt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png 424w, https://substackcdn.com/image/fetch/$s_!hfCt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png 848w, https://substackcdn.com/image/fetch/$s_!hfCt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png 1272w, https://substackcdn.com/image/fetch/$s_!hfCt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hfCt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png" width="1456" height="185" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:185,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43783,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/161774010?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hfCt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png 424w, https://substackcdn.com/image/fetch/$s_!hfCt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png 848w, https://substackcdn.com/image/fetch/$s_!hfCt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png 1272w, https://substackcdn.com/image/fetch/$s_!hfCt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c2cfed-345d-4ca5-b61e-3fb2e650a13e_1862x237.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><ul><li><p>List Windows-based Function Apps with their language stack versions:</p></li></ul><pre><code>az functionapp list --query "[? !contains(kind, 'linux')].{name:name, resourceGroup:resourceGroup}" -o json | ConvertFrom-Json | ForEach-Object {
  $appSettings = az functionapp config appsettings list `

        -n $_.name -g $_.resourceGroup `

        --query "[?name=='FUNCTIONS_WORKER_RUNTIME' || name=='WEBSITE_NODE_DEFAULT_VERSION']" -o json | ConvertFrom-Json

    $siteConfig = az functionapp config show `

        -n $_.name -g $_.resourceGroup `

        --query "{powerShellVersion: powerShellVersion, netFrameworkVersion: netFrameworkVersion, javaVersion: javaVersion}" -o json | ConvertFrom-Json

    $runtime = ($appSettings | Where-Object { $_.name -eq 'FUNCTIONS_WORKER_RUNTIME' }).value

    $version = switch ($runtime) {

        'node'      { ($appSettings | Where-Object { $_.name -eq 'WEBSITE_NODE_DEFAULT_VERSION' }).value }

        'powershell'{ $siteConfig.powerShellVersion }

        'dotnet'    { $siteConfig.netFrameworkVersion }

        'java'      { $siteConfig.javaVersion }

        default     { 'Unknown' }

    }

    [PSCustomObject]@{

        Name          = $_.name

        ResourceGroup = $_.resourceGroup

        OS            = 'Windows'

        Runtime       = $runtime

        Version       = $version

    }

} | Format-Table -AutoSize</code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bLZ0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bLZ0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png 424w, https://substackcdn.com/image/fetch/$s_!bLZ0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png 848w, https://substackcdn.com/image/fetch/$s_!bLZ0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png 1272w, https://substackcdn.com/image/fetch/$s_!bLZ0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bLZ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png" width="1417" height="155" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:155,&quot;width&quot;:1417,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12102,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/161774010?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bLZ0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png 424w, https://substackcdn.com/image/fetch/$s_!bLZ0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png 848w, https://substackcdn.com/image/fetch/$s_!bLZ0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png 1272w, https://substackcdn.com/image/fetch/$s_!bLZ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5862f03c-aea5-48cd-8aca-98614b20d33b_1417x155.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><ul><li><p>List Windows-based Function Apps running on unsupported language runtimes: (as of April 2025):</p></li></ul><pre><code>az functionapp list --query "[? !contains(kind, 'linux')].{name: name, resourceGroup: resourceGroup}" -o json | ConvertFrom-Json | ForEach-Object {

    $appSettings = az functionapp config appsettings list -n $_.name -g $_.resourceGroup `
        --query "[?name=='FUNCTIONS_WORKER_RUNTIME' || name=='WEBSITE_NODE_DEFAULT_VERSION']" -o json | ConvertFrom-Json

    $siteConfig = az functionapp config show -n $_.name -g $_.resourceGroup `
        --query "{powerShellVersion: powerShellVersion, netFrameworkVersion: netFrameworkVersion}" -o json | ConvertFrom-Json

    $runtime = ($appSettings | Where-Object { $_.name -eq 'FUNCTIONS_WORKER_RUNTIME' }).value

    $version = switch ($runtime) {
        'node' {
            $nodeVer = ($appSettings | Where-Object { $_.name -eq 'WEBSITE_NODE_DEFAULT_VERSION' }).value
            if ([string]::IsNullOrEmpty($nodeVer)) { 'Unknown' } else { $nodeVer }
        }
        'powershell' { $siteConfig.powerShellVersion }
        'dotnet'     { $siteConfig.netFrameworkVersion }
        default      { 'Unknown' }
    }

    $isUnsupported = switch ($runtime) {
        'node' {
            $ver = $version -replace '~', ''
            [double]$ver -le 16
        }
        'powershell' {
            $ver = $version -replace '~', ''
            [double]$ver -le 7.2
        }
        'dotnet' {
            $ver = $siteConfig.netFrameworkVersion
            $ver -notlike 'v7*' -and $ver -notlike 'v8*'
        }
        default { $false }
    }

    if ($isUnsupported) {
        [PSCustomObject]@{
            Name          = $_.name
            ResourceGroup = $_.resourceGroup
            OS            = 'Windows'
            Runtime       = $runtime
            Version       = $version
        }
    }

} | Format-Table -AutoSize
</code></pre><p>If result empty, this means: all your Windows-based Azure Function Apps are running supported versions of: Node.js, PowerShell or .NET.</p><ul><li><p>List Windows Function Apps running on a specific language version (Example: Node.js 18):</p><pre><code>az functionapp list --query "[?!contains(kind, 'linux')].{name: name, resourceGroup: resourceGroup}" -o json |
ConvertFrom-Json | ForEach-Object {

    $appSettings = az functionapp config appsettings list `
        -n $_.name `
        -g $_.resourceGroup `
        --query "[?name=='FUNCTIONS_WORKER_RUNTIME' || name=='WEBSITE_NODE_DEFAULT_VERSION']" `
        -o json | ConvertFrom-Json

    $runtime = ($appSettings | Where-Object { $_.name -eq 'FUNCTIONS_WORKER_RUNTIME' }).value
    $nodeVersion = ($appSettings | Where-Object { $_.name -eq 'WEBSITE_NODE_DEFAULT_VERSION' }).value

    if ($runtime -eq 'node' -and $nodeVersion -eq '~18') {
        [PSCustomObject]@{
            Name           = $_.name
            ResourceGroup  = $_.resourceGroup
            OS             = 'Windows'
            Runtime        = $runtime
            Version        = $nodeVersion
        }
    }

} | Format-Table -AutoSize
</code></pre></li></ul><p></p><ul><li><p>List Windows Function Apps running on Node.js runtime: </p></li></ul><pre><code>az functionapp list `
  --query "[?!contains(kind, 'linux')].{name: name, resourceGroup: resourceGroup}" `
  -o json | ConvertFrom-Json | ForEach-Object {

    $appSettings = az functionapp config appsettings list `
      -n $_.name `
      -g $_.resourceGroup `
      --query "[?name=='FUNCTIONS_WORKER_RUNTIME' || name=='WEBSITE_NODE_DEFAULT_VERSION']" `
      -o json | ConvertFrom-Json

    $runtime = ($appSettings | Where-Object { $_.name -eq 'FUNCTIONS_WORKER_RUNTIME' }).value

    if ($runtime -eq 'node') {
        $version = ($appSettings | Where-Object { $_.name -eq 'WEBSITE_NODE_DEFAULT_VERSION' }).value

        [PSCustomObject]@{
            Name          = $_.name
            ResourceGroup = $_.resourceGroup
            OS            = 'Windows'
            Runtime       = $runtime
            Version       = $version
        }
    }
} | Format-Table -AutoSize
</code></pre><ul><li><p>List Linux* Function Apps with their language stack versions.</p></li></ul><pre><code>az functionapp list \
  --query "[?siteConfig.linuxFxVersion!=null &amp;&amp; siteConfig.linuxFxVersion!=''].{
    Name: name,
    ResourceGroup: resourceGroup,
    OS: 'Linux',
    LinuxFxVersion: siteConfig.linuxFxVersion
  }" \
  --output table
</code></pre><ul><li><p>Linux* Function Apps on a specific language stack version (Ex: Node.js 18):</p></li></ul><pre><code>az functionapp list \
  --query "[?siteConfig.linuxFxVersion=='Node|18'].{
    Name: name,
    ResourceGroup: resourceGroup,
    OS: 'Linux',
    LinuxFxVersion: siteConfig.linuxFxVersion
  }" \
  --output table
</code></pre><p>*Running on Elastic Premium and App Service Plans</p><p>With just a few Azure CLI commands and PowerShell scripts, you can quickly identify outdated runtimes, prioritize upgrades, and stay ahead of upcoming retirements.</p><p>That&#8217;s all for today, see you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Source Code: Making PDFs Searchable with Azure AI]]></title><description><![CDATA[Built this to make it easier for devs to experiment and build real-world AI workflows.]]></description><link>https://blog.habeebyakubu.com/p/source-code-making-pdfs-searchable</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/source-code-making-pdfs-searchable</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 14 Apr 2025 07:23:36 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a39fa286-ac3f-4ef9-acd7-befdaa3bc3d0_1017x463.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Built this to make it easier for devs to experiment and build real-world AI workflows.</p><p>A simple ASP.NET Core Web App built with .NET 8.0 that allows users to:</p><ul><li><p>&#128194; Upload PDF documents</p></li><li><p>&#129504; Index the content using Azure AI Document Intelligence</p></li><li><p>&#128269; Perform full-text searches across uploaded documents using Azure Cognitive Search</p></li></ul><div><hr></div><h2>&#128640; Features</h2><ul><li><p>Clean web interface for uploading and managing PDFs</p></li><li><p>Automatic extraction of text using OCR</p></li><li><p>Indexed and searchable content via Azure</p></li><li><p>Full-text query support for retrieving relevant documents</p></li></ul><div><hr></div><h2>&#128736;&#65039; Tech Stack</h2><ul><li><p>ASP.NET Core (.NET 8.0)</p></li><li><p>Azure AI Document Intelligence</p></li><li><p>Azure Cognitive Search</p></li><li><p>Razor Pages / MVC</p></li></ul><div><hr></div><h2>&#128230; Getting Started</h2><ol><li><p>Clone the repository:</p></li><li><p>Configure Azure services (Document Intelligence &amp; Cognitive Search) in Azure Portal: <a href="https://blog.habeebyakubu.com/p/tutorial-converting-pdfs-into-searchable">https://blog.habeebyakubu.com/p/tutorial-converting-pdfs-into-searchable</a></p></li><li><p>Add your keys and endpoint URLs in <code>appsettings.json</code></p></li><li><p>Run the app:</p></li></ol><pre><code>dotnet run</code></pre><div><hr></div><h2>&#128161; Ideas for Enhancement</h2><ul><li><p>Add authentication (e.g. Azure AD, Identity)</p></li><li><p>Filter or categorize search results</p></li><li><p>UI improvements (responsive layout, loading indicators, etc.)</p></li><li><p>Logging and error handling</p></li></ul><p>&#128736; GitHub repo here: <a href="https://github.com/dotnetyatch/PdfSearchApp">dotnetyatch/PdfSearchApp</a></p><p><br>Happy to get feedback or contributions from the community!</p><p>That&#8217;s all for today, see you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Tutorial: Converting PDFs into Searchable Knowledge Bases Using Azure AI]]></title><description><![CDATA[Step by Step Tutorial]]></description><link>https://blog.habeebyakubu.com/p/tutorial-converting-pdfs-into-searchable</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/tutorial-converting-pdfs-into-searchable</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 10 Mar 2025 07:02:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jZYe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>PDFs hold valuable information, but without <strong>searchability</strong>, they remain locked away.</p><p>Imagine as a business, you have thousands of reports, contracts, or research papers&#8212;how do you quickly find the information you need?</p><p><strong>Azure AI</strong> changes that by enabling <strong>intelligent document processing</strong> and <strong>searchable knowledge bases.</strong></p><p>By leveraging Azure AI, we can extract text from PDFs, index them, and make them fully searchable&#8212;just like searching for keywords in a database.</p><p>Here is the final solution:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jZYe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jZYe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png 424w, https://substackcdn.com/image/fetch/$s_!jZYe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png 848w, https://substackcdn.com/image/fetch/$s_!jZYe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png 1272w, https://substackcdn.com/image/fetch/$s_!jZYe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jZYe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png" width="1303" height="469" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:469,&quot;width&quot;:1303,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35426,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/158713747?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jZYe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png 424w, https://substackcdn.com/image/fetch/$s_!jZYe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png 848w, https://substackcdn.com/image/fetch/$s_!jZYe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png 1272w, https://substackcdn.com/image/fetch/$s_!jZYe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa10ade2-bb0d-4fa1-a001-adacee449a11_1303x469.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pnBn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pnBn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png 424w, https://substackcdn.com/image/fetch/$s_!pnBn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png 848w, https://substackcdn.com/image/fetch/$s_!pnBn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png 1272w, https://substackcdn.com/image/fetch/$s_!pnBn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pnBn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png" width="1266" height="679" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:679,&quot;width&quot;:1266,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44464,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/158713747?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pnBn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png 424w, https://substackcdn.com/image/fetch/$s_!pnBn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png 848w, https://substackcdn.com/image/fetch/$s_!pnBn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png 1272w, https://substackcdn.com/image/fetch/$s_!pnBn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0485d2eb-663a-462b-9071-a42b6252754f_1266x679.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Step by steps:</strong></h2><p>Scenario: We have a set of PDF invoices and reports. Let&#8217;s make them searchable and queryable using Azure AI!</p><h3>Architecture of our solution:</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vtdm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vtdm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png 424w, https://substackcdn.com/image/fetch/$s_!vtdm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png 848w, https://substackcdn.com/image/fetch/$s_!vtdm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png 1272w, https://substackcdn.com/image/fetch/$s_!vtdm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vtdm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png" width="868" height="444" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:444,&quot;width&quot;:868,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:195689,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/158713747?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vtdm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png 424w, https://substackcdn.com/image/fetch/$s_!vtdm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png 848w, https://substackcdn.com/image/fetch/$s_!vtdm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png 1272w, https://substackcdn.com/image/fetch/$s_!vtdm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70fba4f-7f44-4151-86d6-941c0e40c8e5_868x444.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>How It Works</p><p>&#9989; PDFs are uploaded to Azure Blob Storage</p><p>&#9989; Azure Form Recognizer extracts text from PDFs</p><p>&#9989; Extracted text is indexed in Azure Cognitive Search</p><p>&#9989; Users can search and retrieve information instantly</p><p>What <strong>Azure Services</strong> do we need?</p><p>&#9989; <strong>Azure Blob Storage</strong> (for pdf storage)<br>&#9989; <strong>Azure Form Recognizer</strong> (for text extraction)<br>&#9989; <strong>Azure Cognitive Search</strong> (for indexing &amp; querying)<br>&#9989; <strong>Azure Functions / Logic Apps/Web App</strong> (for automation)</p><p></p><h5><strong>1&#65039;&#8419; Create an Azure Storage Account (For PDF Storage)</strong></h5><h5><strong>Azure Blob Storage</strong> will serve as the storage location for PDFs.</h5><p>&#128313; <strong>Steps:</strong></p><ol><li><p>Go to the <strong>Azure Portal</strong> &#8594; Search for <strong>Storage Accounts</strong></p></li><li><p>Click <strong>Create</strong> &#8594; Choose a <strong>Subscription &amp; Resource Group</strong></p></li><li><p>Set a <strong>Storage Account Name</strong></p></li><li><p>Select <strong>Standard/Hot tier</strong></p></li><li><p>Click <strong>Review + Create</strong> &#8594; Deploy</p></li></ol><p>&#128313; <strong>Create a Blob Container:</strong></p><ol><li><p>Open the <strong>Storage Account</strong></p></li><li><p>Go to <strong>Containers</strong> &#8594; Click <strong>+ Container</strong></p></li><li><p>Name it <strong>"pdf-docs"</strong> &#8594; Set <strong>Public Access Level</strong> to <strong>Private</strong></p></li><li><p>Click <strong>Create</strong></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1CUG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1CUG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png 424w, https://substackcdn.com/image/fetch/$s_!1CUG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png 848w, https://substackcdn.com/image/fetch/$s_!1CUG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png 1272w, https://substackcdn.com/image/fetch/$s_!1CUG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1CUG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png" width="1273" height="556" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:556,&quot;width&quot;:1273,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81565,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/158713747?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1CUG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png 424w, https://substackcdn.com/image/fetch/$s_!1CUG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png 848w, https://substackcdn.com/image/fetch/$s_!1CUG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png 1272w, https://substackcdn.com/image/fetch/$s_!1CUG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d077b3c-3649-4cf6-a696-e6c576419636_1273x556.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Once stored, PDFs need to be <strong>processed and extracted</strong>. <strong>Azure Form Recognizer</strong> uses AI to pull structured and unstructured text.</p><h5><strong>2&#65039;&#8419; Set Up Azure Form Recognizer (For Text Extraction)</strong></h5><h5><strong>Azure Form Recognizer</strong> extracts structured and unstructured text from PDFs.</h5><p>&#128313; <strong>Steps:</strong></p><ol><li><p>Go to the <strong>Azure Portal</strong> &#8594; Search for <strong>Form Recognizer</strong></p></li><li><p>Click <strong>Create</strong> &#8594; Choose a <strong>Subscription &amp; Resource Group</strong></p></li><li><p>Set a <strong>Resource Name</strong></p></li><li><p>Choose a <strong>Pricing Tier</strong> &#8594; <strong>F0 (Free) for testing</strong></p></li><li><p>Click <strong>Review + Create</strong> &#8594; Deploy</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w_tN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w_tN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png 424w, https://substackcdn.com/image/fetch/$s_!w_tN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png 848w, https://substackcdn.com/image/fetch/$s_!w_tN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png 1272w, https://substackcdn.com/image/fetch/$s_!w_tN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w_tN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png" width="1456" height="571" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:571,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143649,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/158713747?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w_tN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png 424w, https://substackcdn.com/image/fetch/$s_!w_tN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png 848w, https://substackcdn.com/image/fetch/$s_!w_tN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png 1272w, https://substackcdn.com/image/fetch/$s_!w_tN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce220c1a-6e22-436a-9eea-e417e00bdd54_1867x732.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now that we have extracted data, we need <strong>fast search capabilities</strong>. That&#8217;s where <strong>Azure Cognitive Search</strong> comes in.</p><h5><strong>3&#65039;&#8419; Configure Azure Cognitive Search (For Indexing &amp; Querying)</strong></h5><h5><strong>Azure Cognitive Search</strong> enables full-text search capabilities.</h5><p>&#128313; <strong>Steps:</strong></p><ol><li><p>Go to the <strong>Azure Portal</strong> &#8594; Search for <strong>Cognitive Search</strong></p></li><li><p>Click <strong>Create</strong> &#8594; Choose a <strong>Subscription &amp; Resource Group</strong></p></li><li><p>Set a <strong>Service Name</strong> (e.g., <code>pdfsearchservice</code>)</p></li><li><p>Select <strong>Pricing Tier</strong> &#8594; Choose <strong>Basic</strong> or higher for production</p></li><li><p>Click <strong>Review + Create</strong> &#8594; Deploy</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RO9r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RO9r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png 424w, https://substackcdn.com/image/fetch/$s_!RO9r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png 848w, https://substackcdn.com/image/fetch/$s_!RO9r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png 1272w, https://substackcdn.com/image/fetch/$s_!RO9r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RO9r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png" width="1456" height="558" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:558,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:120806,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/158713747?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RO9r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png 424w, https://substackcdn.com/image/fetch/$s_!RO9r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png 848w, https://substackcdn.com/image/fetch/$s_!RO9r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png 1272w, https://substackcdn.com/image/fetch/$s_!RO9r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74616507-2d42-4c7d-b98b-3a933f77f713_1819x697.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></li></ol><p>&#128313; <strong>Create an Index:</strong></p><ol><li><p>Open the <strong>Cognitive Search Service</strong></p></li><li><p>Go to <strong>Indexes</strong> &#8594; Click <strong>+ Add Index</strong></p></li><li><p>Define <strong>Fields</strong> (e.g., <code>id</code>, <code>content</code>, <code>title</code>)</p></li><li><p>Click <strong>Create</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UIPG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UIPG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png 424w, https://substackcdn.com/image/fetch/$s_!UIPG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png 848w, https://substackcdn.com/image/fetch/$s_!UIPG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png 1272w, https://substackcdn.com/image/fetch/$s_!UIPG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UIPG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png" width="1456" height="714" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:714,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:96825,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.habeebyakubu.com/i/158713747?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UIPG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png 424w, https://substackcdn.com/image/fetch/$s_!UIPG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png 848w, https://substackcdn.com/image/fetch/$s_!UIPG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png 1272w, https://substackcdn.com/image/fetch/$s_!UIPG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d8a2dd-101c-4127-b558-8461dc42555a_1689x828.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></li></ol><p></p><p><strong>What&#8217;s Next?</strong></p><p></p><p>With the search index ready, users need a way to query documents. A simple web app or API endpoint can expose search functionality.</p><p></p><p>A possible automation flow could be using a Logic App:</p><p>1&#65039;&#8419; Trigger: Detect when a new PDF is uploaded to Azure Blob Storage.</p><p>2&#65039;&#8419; Extract Text: Call Azure Form Recognizer to analyze and extract text from the PDF.</p><p>3&#65039;&#8419; Store Extracted Data: Save the extracted text as a JSON/TXT file in another Blob Storage container.</p><p>4&#65039;&#8419; Index the Text: Push the extracted text into Azure Cognitive Search for indexing.</p><p></p><p>Using a web app with a user interface like you saw in the first section is also another option.</p><p></p><p>The next step is to write the code to automate everything!</p><p></p><p>&#10145; In the next post, I&#8217;ll walk through the implementation step-by-step. Stay tuned! </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div></li></ol>]]></content:encoded></item><item><title><![CDATA[Protecting Sensitive Data in Logic Apps with Secure Inputs and Outputs]]></title><description><![CDATA[Enable Secure Inputs and Outputs]]></description><link>https://blog.habeebyakubu.com/p/protecting-sensitive-data-in-logic</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/protecting-sensitive-data-in-logic</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 27 Jan 2025 07:01:21 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/02c72a6d-78bf-4fc0-bf97-60e010ade8e1_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Security is essential and when using Logic Apps, ensuring the safety of your inputs and outputs is equally critical. Without proper security, anyone with access to your run history could peek into sensitive information like passwords, tokens, or private details.</p><p>Thankfully, Logic Apps provides <em>Secure Inputs</em> and <em>Secure Outputs</em> options to help mask sensitive data in the run history.</p><p> <strong>Why does this matter?</strong></p><p>By default, Logic App run history stores input and output details for every action. While this is useful for debugging while we are in dev, it can expose sensitive data like passwords, API keys, or secrets.</p><p>Imagine a Logic App that processes user payment details. It retrieves sensitive information like credit card numbers, expiration dates, or transaction tokens to complete a payment. Now, what if someone could open the workflow history and see every single one of those details? </p><p>With <em>Secure Inputs</em>, you can mask the input payload containing credit card information. With <em>Secure Outputs,</em> you can ensure the response, such as transaction IDs or tokens, remains hidden from the logs.</p><p>Enabling <em>Secure Inputs</em> and <em>Secure Outputs</em> ensures this sensitive data remains hidden, even in run logs.</p><p><strong>Some considerations to know when using this feature:</strong></p><ul><li><p>The secured data isn&#8217;t sent to Azure Log Analytics or included in the workflow history API responses.</p></li><li><p>Tracked properties can&#8217;t be added to the secured trigger or action.</p></li><li><p>To secure outputs from an action that obscures inputs or explicitly obscures outputs, manually turn on Secure Outputs in that action.</p></li><li><p>Ensure Secure Inputs or Secure Outputs is enabled for downstream actions if you want to obscure sensitive data in the run history.</p></li></ul><p></p><p><strong>How to Enable Secure Inputs and Outputs</strong> <strong>from the Designer</strong></p><p>1. Open your Logic App in the Azure portal.</p><p>2. Navigate to the specific action or trigger you want to secure.</p><p>3. Expand the <em>Settings</em> section of the action.</p><p>4. Toggle <em>Secure Inputs</em> and <em>Secure Outputs</em> to "On."</p><p>5. Click <em>Done</em> to save your settings.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!54O3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!54O3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png 424w, https://substackcdn.com/image/fetch/$s_!54O3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png 848w, https://substackcdn.com/image/fetch/$s_!54O3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png 1272w, https://substackcdn.com/image/fetch/$s_!54O3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!54O3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png" width="1161" height="376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:376,&quot;width&quot;:1161,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26006,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!54O3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png 424w, https://substackcdn.com/image/fetch/$s_!54O3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png 848w, https://substackcdn.com/image/fetch/$s_!54O3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png 1272w, https://substackcdn.com/image/fetch/$s_!54O3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643aacdf-e12f-4ead-a050-7bc013693bd8_1161x376.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When you run the workflow or when triggered, this is what you get in the Run History:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SOkQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SOkQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png 424w, https://substackcdn.com/image/fetch/$s_!SOkQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png 848w, https://substackcdn.com/image/fetch/$s_!SOkQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png 1272w, https://substackcdn.com/image/fetch/$s_!SOkQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SOkQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png" width="885" height="552" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:552,&quot;width&quot;:885,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28201,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SOkQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png 424w, https://substackcdn.com/image/fetch/$s_!SOkQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png 848w, https://substackcdn.com/image/fetch/$s_!SOkQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png 1272w, https://substackcdn.com/image/fetch/$s_!SOkQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ab41f4-2814-412f-a0b4-420d5c57b9de_885x552.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can also do this in the code view:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HMUE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HMUE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png 424w, https://substackcdn.com/image/fetch/$s_!HMUE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png 848w, https://substackcdn.com/image/fetch/$s_!HMUE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png 1272w, https://substackcdn.com/image/fetch/$s_!HMUE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HMUE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png" width="1156" height="538" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:538,&quot;width&quot;:1156,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47231,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HMUE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png 424w, https://substackcdn.com/image/fetch/$s_!HMUE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png 848w, https://substackcdn.com/image/fetch/$s_!HMUE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png 1272w, https://substackcdn.com/image/fetch/$s_!HMUE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6be47a87-657f-41dd-ad12-c878026c2c0d_1156x538.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br></p><p>Securing Inputs and Outputs offers additional benefits, particularly in ensuring compliance:</p><ul><li><p>Minimizes the risk of exposing confidential information during audits or troubleshooting.</p></li><li><p>Supports adherence to data protection regulations such as GDPR and HIPAA.</p></li></ul><p>By implementing this practice, you make your Logic App solutions both robust and secure!</p><p>That&#8217;s all for today. See you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Real-Time Notifications with Event Grid and Webhooks]]></title><description><![CDATA[Full Tutorial]]></description><link>https://blog.habeebyakubu.com/p/real-time-notifications-with-event</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/real-time-notifications-with-event</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 20 Jan 2025 07:30:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/23b86c70-3a4b-4217-a7ba-c9a797a755cc_2000x1600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ever wonder how apps send real-time notifications, like delivery updates or alerts? </p><p>Let&#8217;s build a system for that using Azure Event Grid and WebHooks!</p><p>Here's how it will work:</p><p>&#9989; An e-commerce system generates an event "Order Shipped"</p><p>&#9989; This event is published to Azure Event Grid.</p><p>&#9989; Event Grid routes the event to web-hook subscribers in real time..</p><p>&#9989; Notification could be Email, SMS, or in-app Notifications.</p><p>In this tutorial, we&#8217;ll use Logic App to represent the business system that generates an order shipped event.</p><p>The webhook is an Azure Function which is going to receive the notification from Event Grid and dispatch the notifications appropriately to the right quarters (via email, sms or in-app)</p><p><strong>What is Azure Event Grid?</strong></p><p>Event Grid is an Azure service for building event-driven applications. It has a push delivery mechanism to send events to destinations like webhooks or Azure services. You can configure it to deliver events to a wide range of endpoints and automate workflows by receiving events from over 20 Azure services.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xTGy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xTGy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png 424w, https://substackcdn.com/image/fetch/$s_!xTGy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png 848w, https://substackcdn.com/image/fetch/$s_!xTGy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png 1272w, https://substackcdn.com/image/fetch/$s_!xTGy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xTGy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png" width="1288" height="214" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:214,&quot;width&quot;:1288,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram that shows Azure Functions publishing events to Event Grid using HTTP. Event Grid then sends those events to Azure Logic Apps.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram that shows Azure Functions publishing events to Event Grid using HTTP. Event Grid then sends those events to Azure Logic Apps." title="Diagram that shows Azure Functions publishing events to Event Grid using HTTP. Event Grid then sends those events to Azure Logic Apps." srcset="https://substackcdn.com/image/fetch/$s_!xTGy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png 424w, https://substackcdn.com/image/fetch/$s_!xTGy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png 848w, https://substackcdn.com/image/fetch/$s_!xTGy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png 1272w, https://substackcdn.com/image/fetch/$s_!xTGy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd7e8d2-e4ca-4062-90c4-8b4db7c1a767_1288x214.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The pull delivery mode allows clients to connect to Event Grid to read events.</p><p>Event Grid supports two types of messaging: MTTQ (Message Throughput Queues) and Event Messaging (HTTP), enabling flexibility in how events are processed.</p><p>In this use case, we are using a <strong>push method</strong>. Event Grid pushes events to the subscribed webhook endpoints whenever an event occurs. This eliminates the need for the consumer to constantly poll for updates, making the system more efficient and responsive. Let&#8217;s get started:</p><p> <strong>Step 1: Set Up Event Grid Topic</strong></p><p>Events published to Event Grid land on a topic, which is a resource that logically contains all events. We will create a system topic which typically represents one or more events published by Azure services.</p><ul><li><p>In Azure Portal, search for "<em>Event Grid Topics</em>" and create a new topic.</p></li><li><p>Note the <em>Topic Endpoint</em> and <em>Key</em> for authentication. (found in Settings/Access Keys)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PUKU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PUKU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png 424w, https://substackcdn.com/image/fetch/$s_!PUKU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png 848w, https://substackcdn.com/image/fetch/$s_!PUKU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png 1272w, https://substackcdn.com/image/fetch/$s_!PUKU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PUKU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png" width="1456" height="577" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:577,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133330,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PUKU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png 424w, https://substackcdn.com/image/fetch/$s_!PUKU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png 848w, https://substackcdn.com/image/fetch/$s_!PUKU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png 1272w, https://substackcdn.com/image/fetch/$s_!PUKU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b9d1d48-bc66-4ef3-8816-d75b0be62041_1851x733.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></li></ul><p> <strong>Step 2: Set Up Event Source</strong></p><ul><li><p>Go to the Azure Portal, create a Logic App.</p></li><li><p>Add a Recurrence Trigger to simulate order updates (e.g., every minute).</p></li><li><p>Use an HTTP Action to send an event payload (JSON) to Event Grid. </p></li><li><p>   - Add a header for authentication:  </p><p>     &#8220;aeg-sas-key: &lt;your_topic_key&gt;&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hd9E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hd9E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png 424w, https://substackcdn.com/image/fetch/$s_!hd9E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png 848w, https://substackcdn.com/image/fetch/$s_!hd9E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png 1272w, https://substackcdn.com/image/fetch/$s_!hd9E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hd9E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png" width="1456" height="580" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:580,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:125873,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hd9E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png 424w, https://substackcdn.com/image/fetch/$s_!hd9E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png 848w, https://substackcdn.com/image/fetch/$s_!hd9E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png 1272w, https://substackcdn.com/image/fetch/$s_!hd9E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009a12c8-cff9-4f23-9bc8-ff1269075728_1778x708.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><p><strong>Step 3: Deploy a sample Web-hook endpoint</strong></p><p>The webhook can be any http based service. </p><p>For instance, in the case of in-app notifications: The webhook will likely be a service which communicates with platforms like Firebase Cloud Messaging (FCM) or Apple Push Notification Service (APNs) to send real-time notifications to users&#8217; devices.</p><p>In this demo, we will simulate this using an Azure Function that receives the event notification. If you like, you can take advantage of the native Event Grid trigger for Azure functions but here we make use of http trigger so as to simulate a typical external http service.</p><ul><li><p>Create an Azure Function (http trigger) </p></li><li><p>Write appropriate code to handle the notification received.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!igdX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!igdX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png 424w, https://substackcdn.com/image/fetch/$s_!igdX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png 848w, https://substackcdn.com/image/fetch/$s_!igdX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png 1272w, https://substackcdn.com/image/fetch/$s_!igdX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!igdX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png" width="1456" height="662" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:662,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:138879,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!igdX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png 424w, https://substackcdn.com/image/fetch/$s_!igdX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png 848w, https://substackcdn.com/image/fetch/$s_!igdX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png 1272w, https://substackcdn.com/image/fetch/$s_!igdX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08c5d404-cfc9-40a3-aa6c-77f31ac05584_1799x818.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Scgl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Scgl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png 424w, https://substackcdn.com/image/fetch/$s_!Scgl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png 848w, https://substackcdn.com/image/fetch/$s_!Scgl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png 1272w, https://substackcdn.com/image/fetch/$s_!Scgl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Scgl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png" width="1108" height="736" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:736,&quot;width&quot;:1108,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:208839,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Scgl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png 424w, https://substackcdn.com/image/fetch/$s_!Scgl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png 848w, https://substackcdn.com/image/fetch/$s_!Scgl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png 1272w, https://substackcdn.com/image/fetch/$s_!Scgl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F402dc2aa-07ed-4fd6-9c27-c8920bc1241f_1108x736.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gw1a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gw1a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png 424w, https://substackcdn.com/image/fetch/$s_!gw1a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png 848w, https://substackcdn.com/image/fetch/$s_!gw1a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png 1272w, https://substackcdn.com/image/fetch/$s_!gw1a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gw1a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png" width="1452" height="634" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:634,&quot;width&quot;:1452,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:151288,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gw1a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png 424w, https://substackcdn.com/image/fetch/$s_!gw1a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png 848w, https://substackcdn.com/image/fetch/$s_!gw1a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png 1272w, https://substackcdn.com/image/fetch/$s_!gw1a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0ffedd-ab2a-4d96-b3ec-d51dda0a6554_1452x634.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Notice that the Azure Function contains extra code before handling the actual request. This is because of Event Grid web-hook validation.</p><p>Here is how the validation works:</p><p>The web-hook must listen for the Validation Event:</p><p>Event Grid will send a POST request with the <em>SubscriptionValidationEvent</em> to the webhook's endpoint.</p><p>The payload will include a <em>validationCode</em> inside the data property.</p><p>The webhook must reply with an HTTP 200 OK response.</p><p>The response body must include a JSON object with the <em>validationResponse</em> key containing the received <em>validationCode</em>.</p><p>Here is a Microsoft doc explaining this in details: <a href="https://learn.microsoft.com/en-us/azure/event-grid/troubleshoot-subscription-validation">Troubleshoot Azure Event Grid subscription validations</a></p><p><strong>Step 4: Subscribe the WebHook to the Event Grid Topic</strong></p><ul><li><p>In the Azure Portal, navigate to your <em>Event Grid Topic.</em></p></li><li><p>Add a new <em>Event Subscription</em></p></li><li><p>Set the <em>Endpoint Type</em> to "WebHook".</p></li><li><p>Provide the WebHook URL (in this case, it is the Azure Function URL).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UdbT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UdbT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png 424w, https://substackcdn.com/image/fetch/$s_!UdbT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png 848w, https://substackcdn.com/image/fetch/$s_!UdbT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png 1272w, https://substackcdn.com/image/fetch/$s_!UdbT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UdbT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png" width="1156" height="620" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:620,&quot;width&quot;:1156,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57045,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UdbT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png 424w, https://substackcdn.com/image/fetch/$s_!UdbT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png 848w, https://substackcdn.com/image/fetch/$s_!UdbT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png 1272w, https://substackcdn.com/image/fetch/$s_!UdbT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a1e4ec-a101-400c-a1b4-211701fab4fb_1156x620.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o2a4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o2a4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png 424w, https://substackcdn.com/image/fetch/$s_!o2a4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png 848w, https://substackcdn.com/image/fetch/$s_!o2a4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png 1272w, https://substackcdn.com/image/fetch/$s_!o2a4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o2a4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png" width="1456" height="334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:334,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42747,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o2a4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png 424w, https://substackcdn.com/image/fetch/$s_!o2a4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png 848w, https://substackcdn.com/image/fetch/$s_!o2a4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png 1272w, https://substackcdn.com/image/fetch/$s_!o2a4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957c42fc-60b5-473f-a098-1e77d92599c5_1666x382.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Subscription created:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!krjB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!krjB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png 424w, https://substackcdn.com/image/fetch/$s_!krjB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png 848w, https://substackcdn.com/image/fetch/$s_!krjB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png 1272w, https://substackcdn.com/image/fetch/$s_!krjB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!krjB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png" width="1456" height="333" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:333,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30627,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!krjB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png 424w, https://substackcdn.com/image/fetch/$s_!krjB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png 848w, https://substackcdn.com/image/fetch/$s_!krjB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png 1272w, https://substackcdn.com/image/fetch/$s_!krjB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafa3d7-9354-4c98-a97e-c99686b056e8_1664x380.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h1><strong>Test:</strong></h1></li><li><p>Trigger events using the Logic App.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DMhT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DMhT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png 424w, https://substackcdn.com/image/fetch/$s_!DMhT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png 848w, https://substackcdn.com/image/fetch/$s_!DMhT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png 1272w, https://substackcdn.com/image/fetch/$s_!DMhT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DMhT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png" width="1456" height="596" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:596,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:112880,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DMhT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png 424w, https://substackcdn.com/image/fetch/$s_!DMhT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png 848w, https://substackcdn.com/image/fetch/$s_!DMhT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png 1272w, https://substackcdn.com/image/fetch/$s_!DMhT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38fa881-8421-4edb-9c05-e36ced03cddd_1821x745.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></li><li><p>Verify the web-hook endpoint logs to confirm the event was received.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h-KE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h-KE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png 424w, https://substackcdn.com/image/fetch/$s_!h-KE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png 848w, https://substackcdn.com/image/fetch/$s_!h-KE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png 1272w, https://substackcdn.com/image/fetch/$s_!h-KE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h-KE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png" width="996" height="636" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:636,&quot;width&quot;:996,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76355,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!h-KE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png 424w, https://substackcdn.com/image/fetch/$s_!h-KE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png 848w, https://substackcdn.com/image/fetch/$s_!h-KE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png 1272w, https://substackcdn.com/image/fetch/$s_!h-KE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78cccc4a-f3cf-41b7-b837-5925c5de5d2d_996x636.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><ul><li><p>Finally. Check that it Event Grid publishes this message to the web-hook URL (Azure function). We can easily confirm this from the Function App&#8217;s log stream:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K2-u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K2-u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png 424w, https://substackcdn.com/image/fetch/$s_!K2-u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png 848w, https://substackcdn.com/image/fetch/$s_!K2-u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png 1272w, https://substackcdn.com/image/fetch/$s_!K2-u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K2-u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png" width="1432" height="336" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:336,&quot;width&quot;:1432,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76551,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!K2-u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png 424w, https://substackcdn.com/image/fetch/$s_!K2-u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png 848w, https://substackcdn.com/image/fetch/$s_!K2-u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png 1272w, https://substackcdn.com/image/fetch/$s_!K2-u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b9d245-9868-4b6d-a49b-8cb16ba8bccb_1432x336.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p></li></ul><p>In this post, we've demonstrated how to build an efficient, event-driven notification system using Azure Event Grid and Webhooks. We've also covered important considerations like webhook validation. By using Event Grid's push delivery, we can integrate Azure Functions and third-party services to automate real-time notifications, improving application responsiveness and ensuring instant delivery of critical updates.</p><p>That&#8217;s all for today, see you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Behind The Scenes of Managed Identities]]></title><description><![CDATA[Secure Azure App Service with Managed Identity and Accept Authenticated Requests from External Clients via Azure AD]]></description><link>https://blog.habeebyakubu.com/p/behind-the-scenes-of-managed-identities</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/behind-the-scenes-of-managed-identities</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 13 Jan 2025 10:27:08 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c1587a4e-5f9e-4802-9cfe-ed873aa009f6_2000x1600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Happy new &#8216;AI Agentic&#8217; year guys. I have a few contents around agents to share this year but before then, one more post about Managed Identities.</p><p>If you have a custom app hosted in App service that is currently being accessed via Managed Identities. How do you accept authenticated requests from the external world (outside Azure)?</p><p>Since Entra ID (formerly Azure AD) remains the core identity service used by Microsoft, you can configure Azure AD authentication to enable <strong>external authentication</strong> while keeping your internal security measures intact.</p><p><strong>Here is how Managed Identities work:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X--E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X--E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin 424w, https://substackcdn.com/image/fetch/$s_!X--E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin 848w, https://substackcdn.com/image/fetch/$s_!X--E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin 1272w, https://substackcdn.com/image/fetch/$s_!X--E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X--E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin" width="1456" height="912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:912,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Output image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Output image" title="Output image" srcset="https://substackcdn.com/image/fetch/$s_!X--E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin 424w, https://substackcdn.com/image/fetch/$s_!X--E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin 848w, https://substackcdn.com/image/fetch/$s_!X--E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin 1272w, https://substackcdn.com/image/fetch/$s_!X--E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c34f9d-aabf-41b6-9c32-37cd0e81659d_1675x1049.bin 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol><li><p>When you assign a Managed Identity to an Azure resource (e.g., Virtual Machine, App Service), Azure creates a service principal in Entra ID for that resource. This service principal represents the managed identity in Entra ID and is used to authenticate the resource.</p></li><li><p>The source resource (with its managed identity) communicates with Entra ID to request an OAuth 2.0 token. The request specifies the target resource's identifier (resource URI), like Key Vault or Storage Account.</p></li><li><p>Entra ID then validates the managed identity&#8217;s request. If the managed identity is authorized for the target resource (via role assignments or access policies), Entra ID issues an access token.</p><p></p><p><em>Fun fact: The image was generated by AI based on my prompt.</em></p><p></p><p><strong>How to make your custom app support Microsoft Entra ID?</strong></p><p>Ideally this app will be hosted in Azure App Service:</p><ol><li><p>Go to the Azure Portal and register your app in Azure Active Directory (Entra ID). Note the Application (Client) ID and Tenant ID.</p></li><li><p>Configure Redirect URI</p></li><li><p>Set the redirect URI for handling authentication responses (e.g., https://yourapp.com/signin).</p></li><li><p>Add API Permissions. Specify the required Microsoft Graph or other API permissions. Grant Admin Consent if necessary.</p><p></p></li></ol><p>Next step is to:</p><h4><strong>Enable Azure AD Authentication for Your App Service</strong></h4><p>Now that your app is registered, you can configure your <strong>App Service</strong> to require <strong>Azure AD authentication</strong> for external clients.</p><ol><li><p><strong>Navigate to your App Service</strong>:</p><ul><li><p>In the Azure portal, go to <strong>App Services</strong>, then select your app.</p></li></ul></li><li><p><strong>Enable Authentication / Authorization</strong>:</p><ul><li><p>In the <strong>Authentication / Authorization</strong> section of your App Service, turn <strong>Authentication</strong> to <strong>On</strong>.</p></li><li><p>Select <strong>Azure Active Directory</strong> as the authentication provider.</p></li></ul></li><li><p><strong>Configure Azure AD Authentication</strong>:</p><ul><li><p>When you select <strong>Azure Active Directory</strong>, you&#8217;ll need to link your app to your <strong>Azure AD tenant</strong> and set up authentication details.</p><ul><li><p>Choose <strong>Express</strong> (if you want default settings) or <strong>Advanced</strong> (if you want more granular control).</p></li><li><p>Select <strong>Azure Active Directory</strong> and either:</p><ul><li><p><strong>Use existing AD app</strong>: Use the app registration that you created earlier.</p></li></ul></li></ul></li></ul></li></ol><p></p><p></p><p><strong>Connecting to the custom app:</strong></p><p></p><p>Using managed identity: <a href="https://blog.habeebyakubu.com/p/understanding-managed-identities">Using Managed Identities</a></p><p></p><p>From the external world: External clients (users or apps outside Azure) will use OAuth2 authentication to obtain a Bearer token (JWT token) from Azure AD from code.</p><p></p><p>The external client must include this Bearer token in the Authorization header when making requests to your app.</p><p></p><p>That&#8217;s all for today.</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Understanding Managed Identities]]></title><description><![CDATA[How to Create & Use them.]]></description><link>https://blog.habeebyakubu.com/p/understanding-managed-identities</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/understanding-managed-identities</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Mon, 16 Dec 2024 07:01:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tVhe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Managed Identities are really cool as they eliminate the need for remembering or storing credentials - keys &amp; secrets.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tVhe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tVhe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png 424w, https://substackcdn.com/image/fetch/$s_!tVhe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png 848w, https://substackcdn.com/image/fetch/$s_!tVhe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png 1272w, https://substackcdn.com/image/fetch/$s_!tVhe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tVhe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png" width="1000" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:82073,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tVhe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png 424w, https://substackcdn.com/image/fetch/$s_!tVhe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png 848w, https://substackcdn.com/image/fetch/$s_!tVhe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png 1272w, https://substackcdn.com/image/fetch/$s_!tVhe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef5234af-2b9a-4967-a0d6-76ef2e0159f6_1000x800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>They make authentication &amp; authorization seamless between any two resources that support Microsoft Entra ID (Azure AD). The authorization side is enforced by the target resource based on the roles that you assign to the managed identity.</p><p>For instance, If you are working with Azure Logic Apps that needs to read from a blob storage. You don't need to use the storage account keys to authenticate. You can easily:</p><p>&#9989; Create a managed identity for the Azure Logic App</p><p>&#9989; Assign roles/permissions that are required to perform action on the Blob storage.</p><p>&#9989; Specify the managed identity as the authentication method in your Logic App.</p><p>Microsoft handles the rest. Same process applies for Azure Functions, you just need to use the managed identity in the code to authenticate against any resource. The Azure.Identity package provides everything required to implement this.</p><p>In this post, we will demonstrate Managed identities using Logic Apps.</p><p>There are two types of managed identity that can be created:</p><p><strong>System-Assigned Managed Identity:</strong></p><p>Automatically created and tied to an Azure resource (e.g., Azure function, Logic App).</p><p>Deleted when the resource is deleted.</p><p><strong>User-Assigned Managed Identity:</strong></p><p>Created independently and can be assigned to multiple resources.</p><p>Exists even if any of the resources it's attached to is deleted.</p><p>The choice between System-Assigned and User-Assigned Managed Identity depends on your use case, resource lifecycle, and sharing requirements. This table should help:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z2ec!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z2ec!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png 424w, https://substackcdn.com/image/fetch/$s_!Z2ec!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png 848w, https://substackcdn.com/image/fetch/$s_!Z2ec!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png 1272w, https://substackcdn.com/image/fetch/$s_!Z2ec!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z2ec!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png" width="822" height="181" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:181,&quot;width&quot;:822,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25089,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z2ec!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png 424w, https://substackcdn.com/image/fetch/$s_!Z2ec!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png 848w, https://substackcdn.com/image/fetch/$s_!Z2ec!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png 1272w, https://substackcdn.com/image/fetch/$s_!Z2ec!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0857d960-4793-416a-bc4c-286c5cdfd111_822x181.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Let&#8217;s dive into a walkthrough to configure a Managed Identity for a Logic App to read files from Azure Blob Storage.</p><p><strong>Step 1: Enable Managed Identity for the Logic App</strong></p><p>1. Open the Azure Portal and navigate to the Logic App</p><p>2. In the left-hand menu, select <em>Identity</em> under the <em>Settings</em> section.  </p><p>3. Toggle the <em>System-assigned Managed Identity</em> option to <em>On</em>  </p><p>4. Click <em>Save</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R-wf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R-wf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png 424w, https://substackcdn.com/image/fetch/$s_!R-wf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png 848w, https://substackcdn.com/image/fetch/$s_!R-wf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png 1272w, https://substackcdn.com/image/fetch/$s_!R-wf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R-wf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png" width="1456" height="544" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:544,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121059,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R-wf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png 424w, https://substackcdn.com/image/fetch/$s_!R-wf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png 848w, https://substackcdn.com/image/fetch/$s_!R-wf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png 1272w, https://substackcdn.com/image/fetch/$s_!R-wf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322805b5-ee1d-4d5e-8be9-e92d5ae09522_1843x688.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Step 2: Grant Blob Storage Access to the Managed Identity</strong></p><p>To allow the Logic App to read files from Blob Storage, we must assign the appropriate role to its Managed Identity. </p><p>We can do this by clicking on the &#8220;Azure role assignments&#8221; button as well but to explain clearly we will add the permissions from the target resource itself.</p><p>1. Navigate to the <em>Blob Storage account</em> in the Azure Portal.  </p><p>2. Select Access Control (IAM) from the left-hand menu.  </p><p>3. Click <em>Add role assignment</em>  </p><p>4. Choose the following settings:  </p><p>   - Role: <em>Storage</em> <em>Blob Data Reader</em></p><p>   - Assign access to: <em>Managed Identity</em></p><p>   - Select members: Choose the Managed Identity that we created in the previous step.  </p><p>5. Click <em>Review &amp; Assign</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wFBE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wFBE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png 424w, https://substackcdn.com/image/fetch/$s_!wFBE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png 848w, https://substackcdn.com/image/fetch/$s_!wFBE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png 1272w, https://substackcdn.com/image/fetch/$s_!wFBE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wFBE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png" width="1410" height="760" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:760,&quot;width&quot;:1410,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62087,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wFBE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png 424w, https://substackcdn.com/image/fetch/$s_!wFBE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png 848w, https://substackcdn.com/image/fetch/$s_!wFBE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png 1272w, https://substackcdn.com/image/fetch/$s_!wFBE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9b61d9-4ed7-415a-bd52-428d76d0f270_1410x760.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p> <strong>Step 3: Configure the Logic App to Use Managed Identity</strong></p><p>Now, update the Logic App to use the Managed Identity for authentication.</p><p>1. Open the <em>Logic App Designer</em> and add the action that interacts with Blob Storage (in this case "<strong>Get Blob Content</strong>").  </p><p>2. In the connection settings:</p><p>   - Set <em>Authentication Type</em> to <strong>Logic Apps</strong> <strong>Managed Identity</strong>.</p><p>   - Set <em>Connection Name</em> to any desired name.</p><p>3. Save the Logic App.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OHd0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OHd0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png 424w, https://substackcdn.com/image/fetch/$s_!OHd0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png 848w, https://substackcdn.com/image/fetch/$s_!OHd0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png 1272w, https://substackcdn.com/image/fetch/$s_!OHd0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OHd0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png" width="925" height="558" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:558,&quot;width&quot;:925,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:92965,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OHd0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png 424w, https://substackcdn.com/image/fetch/$s_!OHd0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png 848w, https://substackcdn.com/image/fetch/$s_!OHd0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png 1272w, https://substackcdn.com/image/fetch/$s_!OHd0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c910209-6f73-4c43-87f4-20d01c273b6c_925x558.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Configuring the Get blob content action. I just needed to provide the storage account name. I was able to navigate to the blob I wanted to read from.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!illJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!illJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png 424w, https://substackcdn.com/image/fetch/$s_!illJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png 848w, https://substackcdn.com/image/fetch/$s_!illJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png 1272w, https://substackcdn.com/image/fetch/$s_!illJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!illJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png" width="918" height="609" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:609,&quot;width&quot;:918,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36227,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!illJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png 424w, https://substackcdn.com/image/fetch/$s_!illJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png 848w, https://substackcdn.com/image/fetch/$s_!illJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png 1272w, https://substackcdn.com/image/fetch/$s_!illJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba76be60-ceac-4904-b780-ef25a52f1b3d_918x609.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>If you are unable to browse the storage account, ensure that you yourself also have the role: <em>Storage</em> <em>Blob Data Reader</em> </p><p><strong>Step 4:</strong> <strong>Test</strong> </p><p>We need to test to ensure it can access the Blob Storage account without errors. </p><p>In my case, I had uploaded a text file in the blob container. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aNhB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aNhB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png 424w, https://substackcdn.com/image/fetch/$s_!aNhB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png 848w, https://substackcdn.com/image/fetch/$s_!aNhB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png 1272w, https://substackcdn.com/image/fetch/$s_!aNhB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aNhB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png" width="1039" height="619" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:619,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58760,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aNhB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png 424w, https://substackcdn.com/image/fetch/$s_!aNhB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png 848w, https://substackcdn.com/image/fetch/$s_!aNhB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png 1272w, https://substackcdn.com/image/fetch/$s_!aNhB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf5158e-b042-4188-9672-ba9dedc0746d_1039x619.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Since I am using a recurrence trigger, I just waited for 1 minute to see that my workflow was triggered.</p><p>The content of the text file was displayed in the output body of the &#8220;Get blob content&#8221; action as shown below:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i0Y0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i0Y0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png 424w, https://substackcdn.com/image/fetch/$s_!i0Y0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png 848w, https://substackcdn.com/image/fetch/$s_!i0Y0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png 1272w, https://substackcdn.com/image/fetch/$s_!i0Y0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i0Y0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png" width="1423" height="589" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:589,&quot;width&quot;:1423,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44450,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!i0Y0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png 424w, https://substackcdn.com/image/fetch/$s_!i0Y0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png 848w, https://substackcdn.com/image/fetch/$s_!i0Y0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png 1272w, https://substackcdn.com/image/fetch/$s_!i0Y0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a707893-121b-458a-8526-5f4b4a3ff726_1423x589.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>If the Logic App fails, ensure:  </p><p>- The correct role (<em>Storage Blob Data Reader</em>) is assigned.</p><p>By enabling Managed Identity and configuring the appropriate role assignments, you can avoid the hassles and risks of keeping secrets or keys and focus on building robust business workflows &amp; logic.</p><p>That&#8217;s all for today and see you in the next one!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Why You Should Switch to the Azure Function Isolated Worker Model]]></title><description><![CDATA[Are you already using the Isolated Worker Model for your Azure Functions?]]></description><link>https://blog.habeebyakubu.com/p/why-you-should-switch-to-the-azure</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/why-you-should-switch-to-the-azure</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Tue, 03 Dec 2024 07:01:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3PEj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Are you already using the Isolated Worker Model for your Azure Functions?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3PEj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3PEj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png 424w, https://substackcdn.com/image/fetch/$s_!3PEj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png 848w, https://substackcdn.com/image/fetch/$s_!3PEj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png 1272w, https://substackcdn.com/image/fetch/$s_!3PEj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3PEj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png" width="500" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:500,&quot;resizeWidth&quot;:500,&quot;bytes&quot;:34929,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3PEj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png 424w, https://substackcdn.com/image/fetch/$s_!3PEj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png 848w, https://substackcdn.com/image/fetch/$s_!3PEj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png 1272w, https://substackcdn.com/image/fetch/$s_!3PEj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b16253-d0f7-46bb-bc4c-38fca2d56671_500x400.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If yes, you are safe! Otherwise, see just a glimpse of what you are missing below:</p><p><strong>- Custom dependencies</strong>: Developers have full control over the dependencies and configurations of the function app. You can use many thing that you already use to make a good maintainable codebase in .NET. Dependency injection, Logging, Middleware etc. Cool, yeah?</p><p><strong>- Improved Diagnostics:</strong> The isolated worker model offers enhanced diagnostics and better observability into function execution. Local debugging is easier, and more flexibility in how &amp; what is logged in App insights.</p><p><strong>- Future-Proof:</strong> The isolated worker model is part of Azure&#8217;s long-term strategy, supporting the latest .NET versions and future features, while Microsoft is gradually phasing out the default runtime model, making adoption essential for staying current. Support will end for the in-process model on November 10, 2026. This sounds good for the business.</p><p><strong>But wait, we need some understanding. What exactly are these models?</strong></p><p>There is nothing too technical here! Basically, Azure functions can execute/run in two modes or models.</p><p>For Azure functions to run, they rely on the Azure Function Host. (The Microsoft background managed service that handles things like orchestrating function invocations, managing resources, and monitoring and logging of function executions.)</p><p><strong>The two modes:</strong></p><p><strong>- In-Process:</strong> The default or classic one which probably you are using. This means both your code &amp; Azure Function Host share the same resources and are served from the same source. Meaning they are tightly coupled and would need to be in sync in many ways.</p><p><strong>- Isolated Worker:</strong> Function code runs in its own separate .NET worker process separate from the one that the Host uses. You have full control over the .NET runtime and environment for your function because it's not being shared with the Host.</p><p>The isolated worker model for Azure Functions is available starting from .NET 5 and later versions, including .NET 6 and .NET 7. It is not available in the older .NET Framework (e.g., .NET Framework 4.x).</p><p>What is different in the development experience? I would say quite a lot. As somethings would need to be expressly setup and configured. </p><p>Creating a project it is easy from visual studios, we just need to select the functions worker:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fdeg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fdeg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png 424w, https://substackcdn.com/image/fetch/$s_!Fdeg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png 848w, https://substackcdn.com/image/fetch/$s_!Fdeg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png 1272w, https://substackcdn.com/image/fetch/$s_!Fdeg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fdeg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png" width="1125" height="546" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:546,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30085,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Fdeg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png 424w, https://substackcdn.com/image/fetch/$s_!Fdeg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png 848w, https://substackcdn.com/image/fetch/$s_!Fdeg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png 1272w, https://substackcdn.com/image/fetch/$s_!Fdeg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aff05b8-e595-4ea0-8794-97ca04fb9f23_1125x546.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here is how the function class looks like:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VlHE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VlHE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png 424w, https://substackcdn.com/image/fetch/$s_!VlHE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png 848w, https://substackcdn.com/image/fetch/$s_!VlHE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png 1272w, https://substackcdn.com/image/fetch/$s_!VlHE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VlHE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png" width="1153" height="681" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:681,&quot;width&quot;:1153,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:138662,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VlHE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png 424w, https://substackcdn.com/image/fetch/$s_!VlHE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png 848w, https://substackcdn.com/image/fetch/$s_!VlHE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png 1272w, https://substackcdn.com/image/fetch/$s_!VlHE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71010738-dd79-44ca-82fe-4aaf401d59ec_1153x681.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Then you also have a program.cs file, this is where you configure your startup processes, register services if using DI, etc:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q8Ii!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q8Ii!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png 424w, https://substackcdn.com/image/fetch/$s_!q8Ii!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png 848w, https://substackcdn.com/image/fetch/$s_!q8Ii!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png 1272w, https://substackcdn.com/image/fetch/$s_!q8Ii!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q8Ii!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png" width="951" height="351" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:351,&quot;width&quot;:951,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23194,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q8Ii!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png 424w, https://substackcdn.com/image/fetch/$s_!q8Ii!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png 848w, https://substackcdn.com/image/fetch/$s_!q8Ii!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png 1272w, https://substackcdn.com/image/fetch/$s_!q8Ii!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2df194-5a5b-4715-9869-ae51e940ebfa_951x351.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There are also a few new things in the .csproj files. You still have the regular host.json file that defines configuration shared by functions in your project and local.settings.json</p><p>For more details on building this: <a href="https://learn.microsoft.com/en-us/azure/azure-functions/dotnet-isolated-process-guide">Microsoft Isolated Process Guide</a></p><p>For guide on migrating from in-process to isolated: <a href="https://learn.microsoft.com/en-us/azure/azure-functions/migrate-dotnet-to-isolated-model">Microsoft Migrate to Isolated</a></p><p>I encourage you to migrate and also choose the isolated worker model for new projects going forward.</p><p>Leave me a comment if you have got questions.</p><p>That's all for today. See you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[MicrosoftIgnite: Azure Dev & AI Updates]]></title><description><![CDATA[Azure stands at the core of Microsoft's AI technologies.]]></description><link>https://blog.habeebyakubu.com/p/microsoftignite-azure-dev-and-ai</link><guid isPermaLink="false">https://blog.habeebyakubu.com/p/microsoftignite-azure-dev-and-ai</guid><dc:creator><![CDATA[Habeeb Yakubu]]></dc:creator><pubDate>Wed, 27 Nov 2024 10:29:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!c9v8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Azure stands at the core of Microsoft's AI technologies. The announcements from this year&#8217;s #MicrosoftIgnite reinforces this fact.</p><p>Azure continues to offer the possibilities to harness AI&#8217;s potential.</p><p>Now, lets take a look at some interesting developer related updates from #MicrosoftIgnite, codes &amp; practical examples will come later:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c9v8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c9v8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png 424w, https://substackcdn.com/image/fetch/$s_!c9v8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png 848w, https://substackcdn.com/image/fetch/$s_!c9v8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!c9v8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c9v8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png" width="1456" height="1165" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1165,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:652762,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c9v8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png 424w, https://substackcdn.com/image/fetch/$s_!c9v8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png 848w, https://substackcdn.com/image/fetch/$s_!c9v8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!c9v8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bd4117-955a-4234-89cf-79f1aa767008_2000x1600.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Azure Container Apps introduced Serverless GPUs (currently in preview).</strong> </p><p>This feature allows developers to run AI workloads on serverless GPUs in Azure Container Apps. They automatically scale to handle your workload and only charge based on actual usage. This also allows devs to use NVIDIA A100 and T4 GPUs without complex infrastructure. Every AI developer will be happy with this. While traditional cloud services still involve provisioning fixed GPU instances (even though managed by the cloud), serverless GPUs provide on-demand GPU power without the need to manually configure or manage GPU environments.</p><p></p><p><strong>Azure AI Foundry:</strong> </p><p>The whole idea here is to streamline AI adoption for businesses, reduce development costs, and support the scaling of AI solutions across industries, making it easier for developers and organizations to innovate responsibly and effectively. If you have ever used the Azure AI studio, this portal replaces it and offers management of AI apps, models, and services. Azure AI Agent Service is one of the capabilities of Azure AI Foundry for developers to create, deploy and scale intelligent AI agents that can automate complex business processes. I will use the SDK to build an agent in the coming days.</p><p><strong>Azure Logic Apps on Azure DevOps:</strong></p><p>Azure Logic Apps have supported integration with Azure DevOps for deployment automation for a while. However, Microsoft Ignite 2024 introduced enhancements that improve the DevOps experience. Two Updates: Dedicated Azure DevOps pipeline tasks for "Azure Logic Apps Standard Build" and "Azure Logic Apps Standard Release" were introduced. Zero Downtime Deployment: Deployment slots, now available in preview, allow updates without affecting running workflows.</p><p><strong>AI workload now included in Azure Well-Architected Framework:</strong></p><p>AI workload guidance has also been added to the popular Azure Well-Architected Framework that we all know. This ensures they align with the framework's pillars: Reliability, Cost Optimization, Security, Operational Excellence, and Performance Efficiency.</p><p><strong>Very Important: Security Enhancements:</strong></p><p>Microsoft Purview Updates: There are tools for data governance and protection, including malicious intent detection and prevention of risky AI usage&#8203;.</p><p>That&#8217;s all for today. See you in the next one!</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.habeebyakubu.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Azure For Developers Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>