<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Surjyo Bhattacharya</title>
    <description>The latest articles on DEV Community by Surjyo Bhattacharya (@surjyob).</description>
    <link>https://dev.to/surjyob</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F669720%2F5704e430-c479-4f95-a2d7-93d14446a6af.jpg</url>
      <title>DEV Community: Surjyo Bhattacharya</title>
      <link>https://dev.to/surjyob</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/surjyob"/>
    <language>en</language>
    <item>
      <title>Dependency Injection in Azure Functions</title>
      <dc:creator>Surjyo Bhattacharya</dc:creator>
      <pubDate>Sun, 04 Dec 2022 18:30:00 +0000</pubDate>
      <link>https://dev.to/surjyob/dependency-injection-in-azure-functions-4l79</link>
      <guid>https://dev.to/surjyob/dependency-injection-in-azure-functions-4l79</guid>
      <description>&lt;h2&gt;
  
  
  What is Dependency Injection?
&lt;/h2&gt;

&lt;p&gt;As per &lt;a href="https://en.wikipedia.org/wiki/Dependency_injection" rel="noopener noreferrer"&gt;Wikipedia &lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;In software engineering, dependency injection is a design pattern in which an object or function receives other objects or functions that it depends on. A form of inversion of control, dependency injection aims to separate the concerns of constructing objects and using them, leading to loosely coupled programs. The pattern ensures that an object or function which wants to use a given service should not have to know how to construct those services. Instead, the receiving 'client' (object or function) is provided with its dependencies by external code (an 'injector'), which it is not aware of.[4] Dependency injection helps by making implicit dependencies explicit and helps solve the following problems:[5]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How can a class be independent of the creation of the objects it depends on?

&lt;ul&gt;
&lt;li&gt;How can an application, and the objects it uses to support different configurations?&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;How can the behavior of a piece of code be changed without editing it directly?&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;We intend to use the same IOC behavior in using the Azure Functions implementing the Dependency Injection principle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Function with DI
&lt;/h2&gt;

&lt;p&gt;For this let us write a demo function as seen below.&lt;/p&gt;

&lt;p&gt;Notice that by default the Function1 class is static as well as the Function is also defined as static.&lt;/p&gt;

&lt;p&gt;Also, a point to note is - Support for dependency injection begins with Azure Functions 2.x. The guidance in this sample would work in the case of C# class library functions that run in-process with the runtime.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnuc9to6i9crtqvxixjfy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnuc9to6i9crtqvxixjfy.png" alt="static key words" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Considering the above points, let us add a class library utility as seen below.&lt;/p&gt;

&lt;p&gt;We plan to interact with the Azure Blob Storage account via the Azure Function and hence adding the Blob Service instantiation-related functionality to the Utility and in the main Azure Function shall not be required to manage the connections of the Azure Blob.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuspl85ywkoav1evzsyfg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuspl85ywkoav1evzsyfg.png" alt="Interface" width="800" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have defined an Interface that ensures the contract CreateBlob is to be established.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjxcfdwjwi6p0cb82xji.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjxcfdwjwi6p0cb82xji.png" alt="Class Implementation" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have defined the implementation class: BlobStorageManagerService which has implemented the CreateBlob. Please note the section of the code below :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  private readonly string _blobConnectionString;
        private readonly BlobServiceClient _blobServiceClient;

        public BlobStorageManagerService(string blobConnectionString)
        {
            _blobConnectionString = blobConnectionString;

            BlobServiceClient blobServiceClient = new BlobServiceClient(_blobConnectionString);
            _blobServiceClient = blobServiceClient;

        }

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above code is an example of the implementation of DI, where the blobServiceClient is defined in the constructor of the BlobStorageManagerService.&lt;/p&gt;

&lt;p&gt;Next, we will need to inject the dependencies at the startup, for that we shall need to add the following 2 Nuget Packages&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;microsoft.azure.functions.extensions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9k03nd0ige71kbul162p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9k03nd0ige71kbul162p.png" alt="Nuget Package" width="800" height="89"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;azurefunctions.extensions.dependencyinjection&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6c823pazzzh8aj9u5yg0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6c823pazzzh8aj9u5yg0.png" alt="Nuget Package" width="800" height="81"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, we shall add the Startup.cs class in the Utility project as follows&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faj5o9i466aal6c9x8uws.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faj5o9i466aal6c9x8uws.png" alt="Startup class" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note the sections in red, we have to use the above convention in the Startup to ensure that when the Utility is used as a reference to the original function app project, the proper dependency injections are injected and the rest of the code can run smoothly thereafter.&lt;/p&gt;

&lt;p&gt;Finally, in the DemoFunction App, we shall be implementing the DI code as follows :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmdprnj7typy855ixiyma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmdprnj7typy855ixiyma.png" alt="Function App" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On building the application and running we get the following, and we are already with the HttpTriggered function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4oq5xno2me5xavsp07ou.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4oq5xno2me5xavsp07ou.png" alt="Running Function" width="800" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reference : &lt;a href="https://learn.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection&lt;/a&gt;&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Power Automate: Cloning flows in same tenant pointing to separate sources</title>
      <dc:creator>Surjyo Bhattacharya</dc:creator>
      <pubDate>Thu, 09 Dec 2021 07:22:23 +0000</pubDate>
      <link>https://dev.to/surjyob/power-automate-cloning-flows-in-same-tenant-pointing-to-separate-sources-5g48</link>
      <guid>https://dev.to/surjyob/power-automate-cloning-flows-in-same-tenant-pointing-to-separate-sources-5g48</guid>
      <description>&lt;p&gt;While developing solutions in PowerApps or Power Automate we would generally be doing development in the Default (Company) environment. There might be licensing costs associated with multiple environments and hence it may be an issue in getting separate development, QA or UAT environments. &lt;/p&gt;

&lt;p&gt;It can be thought of a scenario like having single sql-server with multiple copies of Database, one as Dev and other as QA. Similarly, in power automate we can clone a flow into multiple copies in each solution and name the flows accordingly.&lt;/p&gt;

&lt;p&gt;Steps :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Extract the Deployment package using the export option at a solution level: SolutionPackage_1_0_0_1.zip&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unzip the package to local computer and the folder structure shall be as shown:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yQM-NuR7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aka3b9j9zh41aubs1800.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yQM-NuR7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aka3b9j9zh41aubs1800.png" alt="Power Automate Package" width="624" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Delete the folder : environmentvariabledefinitions and its contents (includes sub-folders , json files)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to the Workflows folder and you shall find a pre existing JSON file , copy the JSON file and paste it in the same folder location.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D6Jygb-U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0te5vvxfwqsvgrif2h8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D6Jygb-U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0te5vvxfwqsvgrif2h8y.png" alt="Multiple JSON file copies" width="624" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Rename the copied file by renaming the Flow Name as well replaced the existing GUID with a new GUID (the GUID in the file name should be in Upper Case)&lt;br&gt;
You might use the following URL for GUID generation &lt;br&gt;
&lt;a href="https://www.guidgenerator.com/online-guid-generator.aspx"&gt;GUID-Generator&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modify the customizations.xml file in the location: SolutionPackage_1_0_0_1\customizations.xml&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We shall modify the existing Workflows section, i.e will not be copying same section twice (copying over and modifying the copied section seems to be throwing errors) , but instead updating the existing section and the places to be modified are highlighted below (follow the instructions on the CASE (upper/lower) of the GUID as mentioned in the image below) :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KIfR3csL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j6x2ng6vw5fjwmdr0to9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KIfR3csL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j6x2ng6vw5fjwmdr0to9.png" alt="Modification to the JSON file" width="572" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use the lower case GUID as and where applicable and can use the following online resource for the same :&lt;br&gt;&lt;br&gt;
&lt;a href="https://convertcase.net/"&gt;CaseConverter&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Next we shall modify the solution.xml at ~ \SolutionPackage_1_0_0_1\solution.xml&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;a.  Modify the version number &lt;br&gt;
1.0.0.2&lt;/p&gt;

&lt;p&gt;b.  Update the existing RootComponent , (copying over and modifying the copied section seems to be throwing errors)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j3d3kRv_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hu4r74q5wsk9l9k7uc5l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j3d3kRv_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hu4r74q5wsk9l9k7uc5l.png" alt="Modification to the solution file" width="530" height="60"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;c.  Remove the entries under: &lt;br&gt;&lt;br&gt;
 &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a zip file maintaining the underlying folder structure to generate the updated deployment package&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Import the deployment package and you shall find the clones of your flow in the solution&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J9vxfXs5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwyjgk2pzgrqfxo09vrw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J9vxfXs5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwyjgk2pzgrqfxo09vrw.png" alt="Multiple Clones Deployed" width="606" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Define separate environment variables in the solution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For each environment use the corresponding environment variables inside your flow. Disable the flows when not required or delete them as required independently.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This way we can reuse the same environment to point to separate share point locations simultaneously from the same solution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://powerusers.microsoft.com/t5/Building-Flows/Copy-Duplicate-a-Flow-in-a-Solution/td-p/487483"&gt;Reference&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>powerautomate</category>
      <category>flow</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Power Automate - Setting Modified By of SharePoint List while updating item from flow</title>
      <dc:creator>Surjyo Bhattacharya</dc:creator>
      <pubDate>Sat, 04 Dec 2021 17:36:13 +0000</pubDate>
      <link>https://dev.to/surjyob/power-automate-setting-modified-by-of-sharepoint-list-while-updating-item-from-flow-31j7</link>
      <guid>https://dev.to/surjyob/power-automate-setting-modified-by-of-sharepoint-list-while-updating-item-from-flow-31j7</guid>
      <description>&lt;p&gt;Problem : Suppose we have a power automate / flow that gets triggered when a SharePoint online list gets created / updated and the flow performs some action that updates the list. If we observe the Modified By column of the List, it can be observed that the Modified By column reflects the account/user under which the flow is running rather than the user whose action (create/update) triggered the flow.&lt;/p&gt;

&lt;p&gt;We have created a List as displayed below :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwuoebqzt77tir14nj40.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwuoebqzt77tir14nj40.png" alt="sharepoint online list"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have designed a sample Flow that updates the Email field and corresponding the &lt;strong&gt;Modified By&lt;/strong&gt; column also gets updated with the System account under which the flow is running, which in this case is my account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6lk8hawuemtx4lxdc3g3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6lk8hawuemtx4lxdc3g3.png" alt="power automate flow structure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now to enable the &lt;strong&gt;Modified By&lt;/strong&gt; column to show the user name who triggered the flow, we have to make certain changes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Use a Compose shape to set the Key for the User Account that triggered the shape as shown in the image below :&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

[{"Key": "i:0#.f|membership|username@yourcompany.com"}]


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nk0x1x9zepehxe580zf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nk0x1x9zepehxe580zf.png" alt="Setting the Modified By user Key"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Use another Compose shape dependent on the output of the above compose shape to generate the formValues to be used in a a JSON format later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;a.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08nl00esips779lfz883.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08nl00esips779lfz883.png" alt="Setting Up Modified By"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;b.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fed69tp32r0n04gk6ra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fed69tp32r0n04gk6ra.png" alt="Modified By Key Value pair"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

[
{
"FieldName" : "Editor"
"FieldValue" : @{concat(outputs('Compose_User_Modified'))}
}
]


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Finally &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
An update item call is made to the SharePoint item in the List, make an additional call to the SharePoint using the shape "&lt;strong&gt;Send an HTTP request to SharePoint&lt;/strong&gt;"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This will be POST call where the Body consists of the JSON format.&lt;br&gt;
The formValues shall consist of the Name Value pairs, in our case we are setting the Key as Editor.&lt;/p&gt;

&lt;p&gt;Sample format : &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

{
"formValues": [ 
  { "FieldName": "Title", 
    "FieldValue": "Item" 
    } 
],
"bNewDocumentUpdate": false
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xwmya1lajrb044dgzdr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xwmya1lajrb044dgzdr.png" alt="Send an HTTP request to SharePoint"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The flag &lt;strong&gt;bNewDocumentUpdate&lt;/strong&gt;  is set as false so as not to create a new version on top of the one created by the flow. The false flag effectively overwrites the entry of the &lt;strong&gt;Modified By&lt;/strong&gt; field by the flow with that of the user triggering the flow.&lt;/p&gt;

&lt;p&gt;With the above mentioned changes in place we are good to go. Hope this helps in case you need to set the &lt;strong&gt;Modified By&lt;/strong&gt; field correctly while updating your share point list.&lt;/p&gt;

&lt;p&gt;Reference : &lt;a href="http://johnliu.net/blog/2019/2/flowninja-hack-78-modifying-modified-by-and-modified-time-with-microsoft-flow" rel="noopener noreferrer"&gt;John Liu&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>nocode</category>
      <category>powerautomate</category>
      <category>flow</category>
    </item>
    <item>
      <title>Power Apps form – Setting Currency Format at Runtime</title>
      <dc:creator>Surjyo Bhattacharya</dc:creator>
      <pubDate>Fri, 03 Dec 2021 05:04:10 +0000</pubDate>
      <link>https://dev.to/surjyob/power-apps-form-setting-currency-format-at-runtime-3m78</link>
      <guid>https://dev.to/surjyob/power-apps-form-setting-currency-format-at-runtime-3m78</guid>
      <description>&lt;p&gt;Recently came across a requirement where the user expected the currency formatting at runtime.&lt;br&gt;
Power Apps does not inherently support any currency input for a text box. &lt;br&gt;
We currently have the input formats as Number and Text as represented below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RoccXeWi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jmnfp96xxshxie8r0ztw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RoccXeWi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jmnfp96xxshxie8r0ztw.png" alt="Image description" width="309" height="219"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We need to keep the input text field format as Number to prevent the user from inserting non-numeric values in the said field.&lt;br&gt;
Now the question arises as how we can display formatting at runtime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option 1&lt;/strong&gt; : &lt;br&gt;
From the text box input , the event that we can capture is the OnChange , so while tabbing out the formatting is enabled and user can see the formatted value in the text box itself.&lt;br&gt;
For this we need to set a variable with the formatted value on the OnChange Event as shown:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aLfhn8Hb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2jk8z1d0dchiuapy9id.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aLfhn8Hb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2jk8z1d0dchiuapy9id.png" alt="Image description" width="624" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Set(&lt;br&gt;
    FormattedCurrency,&lt;br&gt;
    Text(&lt;br&gt;
        Value(txtUnitPrice.Text),&lt;br&gt;
        "$#,##0.00",&lt;br&gt;
        Language()&lt;br&gt;
    )&lt;br&gt;
)&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We need to do one additional step, i.e set this Variable - FormattedCurrency defined above as the Default attribute of the TextBox input.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0tHzZzRi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yrnblrq8y7tfvz3j6b21.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0tHzZzRi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yrnblrq8y7tfvz3j6b21.png" alt="Image description" width="624" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This enables near runtime formatting, with the formatting enabled on the tab event.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Options 2&lt;/strong&gt; : &lt;br&gt;
If the user is expecting formatting while typing itself and not willing to wait for the tabbed event,&lt;br&gt;
we can add a label adjacent the text box and set its Text property as below :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v2_VHbSx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9l60l34ib376qiziy1vn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v2_VHbSx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9l60l34ib376qiziy1vn.png" alt="Image description" width="623" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Text(&lt;br&gt;
        Value(txtUnitPrice.Text),&lt;br&gt;
        "$#,##0.00",&lt;br&gt;
        Language()&lt;br&gt;
    )&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With these settings we can generate our desired output : &lt;/p&gt;

&lt;p&gt;Step 1 : While typing the numbers in the Currency text box field :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---TD6SvbZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3utt4cl6rxullfatlx5r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---TD6SvbZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3utt4cl6rxullfatlx5r.png" alt="Image description" width="616" height="219"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2 : OnTabbing out &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yHPYVjmL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/79xtds55zecytu9cuvrf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yHPYVjmL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/79xtds55zecytu9cuvrf.png" alt="Image description" width="618" height="219"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can replace the textbox controls with the data card controls in case you are working in an integrated SharePoint PowerApps solution.&lt;/p&gt;

</description>
      <category>powerapps</category>
      <category>nocode</category>
      <category>lowcode</category>
      <category>powerplatform</category>
    </item>
    <item>
      <title>Connecting the dots.. from Azure to AWS - Part 2</title>
      <dc:creator>Surjyo Bhattacharya</dc:creator>
      <pubDate>Thu, 02 Dec 2021 12:48:32 +0000</pubDate>
      <link>https://dev.to/surjyob/connecting-the-dots-from-azure-to-aws-part-2-16na</link>
      <guid>https://dev.to/surjyob/connecting-the-dots-from-azure-to-aws-part-2-16na</guid>
      <description>&lt;p&gt;In continuation of my previous article : &lt;br&gt;
&lt;a href="https://dev.to/surjyob/connecting-the-dots-from-azure-to-aws-part-1-2l52"&gt;Connecting the dots.. from Azure to AWS - Part 1&lt;/a&gt; , let me discuss further for a couple of more services in AWS and Azure.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Querying the Blob Storage
&lt;/h2&gt;

&lt;p&gt;For Storage, S3 equivalent service would be Azure Data Lake Storage which is built on top of Azure Blob Storage.&lt;/p&gt;

&lt;p&gt;The Azure equivalent of Athena is Data Lake Analytics. Like Athena, it is also "serverless" and pay-per-use. It uses U-SQL, which is a combination of SQL and C# that provides a lot of power and flexibility that SQL alone cannot. An advantage of Data Lake Analytics is that it is not limited to querying Azure Data Lake Store and Blob Storage, it can also talk to SQL Database and SQL Data Warehouse.&lt;/p&gt;

&lt;h2&gt;
  
  
  2.Querying the Logs in AWS and Azure
&lt;/h2&gt;

&lt;p&gt;In AWS CloudWatch Log Insights is the service that is used to query the Logs to get relevant details, in case of Azure Log,  Kusto Query Language is the equivalent.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Monitoring Services
&lt;/h2&gt;

&lt;p&gt;Azure’s native monitoring service, Azure Monitor, and AWS’ equivalent, Amazon CloudWatch, are both transforming the way cloud teams are detecting and remediating issues with applications and infrastructure resources. Both cloud services consolidate massive amounts of data from cloud and on-premises sources, provide visualization and analysis, allow users to respond to issues quickly, and support a strong ecosystem &lt;br&gt;
of third-party solutions. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure Monitor Metrics&lt;/strong&gt;: Azure Monitor Metrics is a feature of Azure Monitor that collects numeric data from monitored resources into a time series database. Metrics are numerical values that are collected at regular intervals and describe some aspect of a system at a specific point in time. Metrics are lightweight and capable of supporting near real-time scenarios, making them useful for alerting and fast detection of issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure Monitor Logs&lt;/strong&gt;: Azure Monitor Logs is a feature of Azure Monitor that collects and organizes log and performance data from monitored resources. Log data collected from different sources can be consolidated into a single workspace so they can be analyzed together. &lt;/p&gt;

&lt;p&gt;Data stored in Azure Monitor Metrics is more lightweight than data stored in Azure Monitor Logs and is capable of supporting near real-time scenarios—making Metrics useful for alerting and quickly detecting issues. &lt;/p&gt;

&lt;p&gt;Secondly, Azure Monitor Metrics can only be stored as numerical data in a particular structure, while Log data may store a variety of different data types, each with their own structure. Because of this, data collected by Azure Monitor Logs is analyzed with queries. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon CloudWatch Alarms&lt;/strong&gt; (known as Alerts in Azure Monitor) monitor your metric values against thresholds predetermined by the user, or via machine learning models built to detect anomalous behavior. If an alarm is triggered, CloudWatch can distribute notifications and take corrective action, such as detecting and shutting down an unused or underutilized instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CloudWatch Events&lt;/strong&gt; enables users to automate responses to operational changes. CloudWatch Events provide a near real-time stream of system events that describe changes in your AWS resources. Users can write custom rules to indicate which event is of interest to their application and what automated actions to take when a rule matches an event.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. AWS Config &amp;amp; Azure Policy
&lt;/h2&gt;

&lt;p&gt;AWS Config can be thought to be equivalent to Azure Policy.&lt;br&gt;
&lt;strong&gt;Azure Policy&lt;/strong&gt; is a service in Azure that you use to create, assign and, manage policy definitions. Policy definitions enforce different rules and effects over your resources, so those resources stay compliant with your corporate standards and service level agreements. Azure Policy runs an evaluation of your resources, scanning for those not compliant with the policy definitions you have.&lt;br&gt;
&lt;strong&gt;AWS Config&lt;/strong&gt; is a service that enables you to assess, audit, and evaluate the configurations of your AWS resources. Config continuously monitors and records your AWS resource configurations and allows you to automate the evaluation of recorded configurations against desired configurations.&lt;/p&gt;

&lt;p&gt;AWS Service Control Policies (SCP) can be thought to be equivalent to Azure Policies + RBAC.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. AWS Elastic IP and Azure Static IP
&lt;/h2&gt;

&lt;p&gt;An Elastic IP address in AWS is a static, public IPv4 address designed for dynamic cloud computing. You can associate an Elastic IP address with any instance or network interface in any VPC in your account. Public IP addresses are dynamic - i.e. if you stop/start your instance you get reassigned a new public IP. Elastic IPs get allocated to your account, and stay the same - it's up to you to attach them to an instance or not. You could say they are static public IP addresses.&lt;br&gt;
Azure supports Static Public IPs  that is equivalent to Elastic IP in AWS. Static Public IPs can be mapped to a VM's NIC (elastic IP equivalent) or to a load balancer's Front end IP. &lt;/p&gt;

&lt;p&gt;References&lt;br&gt;
&lt;a href="https://docs.microsoft.com"&gt;MS Docs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/"&gt;AWS Docs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://stackoverflow.com/"&gt;StackOverFlow&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>aws</category>
      <category>artifacts</category>
      <category>mapping</category>
    </item>
    <item>
      <title>Connecting the dots.. from Azure to AWS - Part 1</title>
      <dc:creator>Surjyo Bhattacharya</dc:creator>
      <pubDate>Tue, 14 Sep 2021 03:04:16 +0000</pubDate>
      <link>https://dev.to/surjyob/connecting-the-dots-from-azure-to-aws-part-1-2l52</link>
      <guid>https://dev.to/surjyob/connecting-the-dots-from-azure-to-aws-part-1-2l52</guid>
      <description>&lt;p&gt;Way back in my graduation days, our professor in the physics class was asking to look at the parity between forces of nature.&lt;br&gt;
Gravitational force is directly proportional to mass and indirectly proportional to the square of the distance between the two objects. Electrostatic forces follow similar principle (replace mass by charge). So there is a principal of parity.&lt;/p&gt;

&lt;p&gt;Coming to the cloud platform , I jumped into Azure which was natural coming from Microsoft technologies background. Now when I am required to learn AWS cloud platform, I was trying to bring the principal of parity i.e. connecting the dots of the artifacts between the 2 platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Availability Zones and Availability Regions
&lt;/h2&gt;

&lt;p&gt;Azure Region -- &amp;gt; AWS Region&lt;br&gt;
Azure Availability Region --&amp;gt; AWS Availability Zones&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Portal
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://portal.azure.com"&gt;https://portal.azure.com&lt;/a&gt;&lt;br&gt;
 --&amp;gt; &lt;a href="https://aws.amazon.com/console/"&gt;https://aws.amazon.com/console/&lt;/a&gt;&lt;br&gt;
AZURE CLI --&amp;gt; AWS CLI  (can be launched from the portal itself)&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Account
&lt;/h2&gt;

&lt;p&gt;In Azure, there is a structure, where in  Azure subscriptions with its assigned owner is created and all resources are created as part of the subscription. In AWS any resources created under the AWS account are tied to that account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h_wPCbvf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://docs.microsoft.com/en-us/azure/architecture/aws-professional/images/azure-aws-account-compare.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h_wPCbvf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://docs.microsoft.com/en-us/azure/architecture/aws-professional/images/azure-aws-account-compare.png" alt="alt text" title="Azure AWS Account Level"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Identity
&lt;/h2&gt;

&lt;p&gt;Azure Active Directory (Azure AD) --&amp;gt; Identity &amp;amp; Access Management (IAM) services in AWS&lt;/p&gt;

&lt;p&gt;Although Azure Active directory can not be considered an exact equivalent to the Windows Active Directory , but it offers quite a bit of flexibility to implement multi-cloud identity solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  5.RBAC - IAM Policies
&lt;/h2&gt;

&lt;p&gt;A policy is an object in AWS that, when associated with an identity or resource, defines their permissions. AWS evaluates these policies when an IAM principal (user or role) makes a request. Permissions in the policies determine whether the request is allowed or denied. AWS supports six types of policies: identity-based policies, resource-based policies, permissions boundaries, Organizations SCPs, ACLs, and session policies.&lt;/p&gt;

&lt;p&gt;In Azure we have RBAC policies. The policies at the role level when applied to users or groups will give the entities access or restrict access to the resources based on the policies.&lt;/p&gt;

&lt;h2&gt;
  
  
  6.Virtual Machines
&lt;/h2&gt;

&lt;p&gt;Azure Virtual Machines --&amp;gt; Amazon EC2&lt;/p&gt;

&lt;p&gt;AWS instance types and Azure virtual machine sizes are categorized similarly, but the RAM, CPU, and storage capabilities differ between the two.&lt;/p&gt;

&lt;h2&gt;
  
  
  7.VM Disk Storage
&lt;/h2&gt;

&lt;p&gt;Durable data storage for Azure VMs is provided by data disks residing in blob storage. &lt;br&gt;
EC2 instances store disk volumes on Elastic Block Store (EBS). Azure temporary storage also provides VMs with the same low-latency temporary read-write storage as ###EC2 Instance Storage### (also called ephemeral storage). Azure Files provides the VMs with the same functionality as Amazon EFS.&lt;/p&gt;

&lt;p&gt;Higher performance disk I/O is supported using Azure premium storage. This is similar to the Provisioned IOPS storage options provided by AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Azure Traffic Manager - AWS Route53
&lt;/h2&gt;

&lt;p&gt;In AWS, Route 53 provides both DNS name management and DNS-level traffic routing and failover services. &lt;br&gt;
In Azure this is handled through two services: Azure DNS provides domain and DNS management. &lt;br&gt;
Traffic Manager provides DNS level traffic routing, load balancing, and failover capabilities.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>aws</category>
      <category>mapping</category>
      <category>artifacts</category>
    </item>
    <item>
      <title>Clearing the AZ 400</title>
      <dc:creator>Surjyo Bhattacharya</dc:creator>
      <pubDate>Mon, 16 Aug 2021 09:10:12 +0000</pubDate>
      <link>https://dev.to/surjyob/clearing-the-az-400-2jda</link>
      <guid>https://dev.to/surjyob/clearing-the-az-400-2jda</guid>
      <description>&lt;p&gt;This is my first attempt to writing something in the web.&lt;br&gt;
I am going down to pen down my learning experience.&lt;/p&gt;

&lt;p&gt;I went through Alan Rodrigues course on AZ 400 from Udemy.&lt;br&gt;
The course content is awesome. I followed through along with the course and did the labs, this gives oneself a confidence while trying to attempt the practice questions.&lt;/p&gt;

&lt;p&gt;The practice questions in Alans course are excellent. In addition I had purchased the practice questions from Whizlabs for AZ 400 and the explanations provided against each answers were pretty good. Along with that I also used another practice question set from Udemy from Bhuvaneswaran B . The explanations given there are also good. &lt;/p&gt;

&lt;p&gt;A note of caution , not all practice exam courses are good and few can be misleading. At the end of the day you either you have to back your self , refer from Microsoft learn/docs or do the scenarios practically to confirm the outcome.&lt;/p&gt;

&lt;p&gt;Comparing with other AZ series examinations, I felt AZ 400 covers a very vast range of stuff. Although it may no get very deep into the various technologies, but the range of tools and functionalities it covers is pretty large.&lt;/p&gt;

&lt;p&gt;I had a good experience learning the new stuff!&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>certification</category>
      <category>az400</category>
    </item>
  </channel>
</rss>
