{"id":371,"date":"2020-07-07T01:00:00","date_gmt":"2020-07-07T01:00:00","guid":{"rendered":"http:\/\/fredborg.org\/?p=371"},"modified":"2020-12-23T20:45:48","modified_gmt":"2020-12-23T20:45:48","slug":"getting-started-with-azure-functions","status":"publish","type":"post","link":"https:\/\/fredborg.org\/?p=371","title":{"rendered":"Getting Started with Azure Functions"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">To fully embrace Microsoft release cycle of Business Central, you need to start considering how you&nbsp;designing&nbsp;your&nbsp;solutions&nbsp;going forward, more&nbsp;precisely&nbsp;how much of your current&nbsp;functionality&nbsp;can be moved out of&nbsp;Business&nbsp;Central and into other products, because the&nbsp;simpler&nbsp;your Business Central codebase is, it will not only make it run faster but also make it simpler to upgrade. One of the tools that you have&nbsp;available&nbsp;to help you to move your code out of Business Central is Azure Functions.&nbsp;<a href=\"https:\/\/emojipedia.org\/beaming-face-with-smiling-eyes\/\">&#x1f601;<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By implementing Azure&nbsp;Functions&nbsp;you can truly embrace the cloud and the serverless architecture. By using an Azure Function you have the ability to create for example a web service without having to first set up a server, installing an IIS and opening ports, <a href=\"https:\/\/emojipedia.org\/relieved-face\/\">&#x1f60c;<\/a> all of this is handled for you with the power of one click. On top of that one of the great things about Azure Functions are, that they live in Azure so you can seamlessly integrate to pretty much any service within the Azure ecosystem, without having to do a lot of OAuth and other login procedures.&nbsp;<a href=\"https:\/\/emojipedia.org\/star-struck\/\">&#x1f929;<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/Azure-Functions-new-way-1024x576.png\" alt=\"\" class=\"wp-image-372\" width=\"613\" height=\"345\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/Azure-Functions-new-way-1024x576.png 1024w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/Azure-Functions-new-way-300x169.png 300w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/Azure-Functions-new-way-768x432.png 768w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/Azure-Functions-new-way-1536x864.png 1536w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/Azure-Functions-new-way.png 1920w\" sizes=\"auto, (max-width: 613px) 100vw, 613px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Another great thing about moving your code to Azure Functions is that it will also help you to decouple your code,&nbsp;making&nbsp;it easy to change your code without having to worry about breaking changes. It also allows you to share your code across multiple systems, this means as a partner you have the ability to start selling your&nbsp;functionality&nbsp;as a SaaS, and as an end-user, this means that if you, for example, want some kind of&nbsp;calculation&nbsp;in both your CRM and Business Central, instead of either having to overload one of your systems by acting as a backend or even worse coding the same solution in both systems having to maintain both &#x1f634;. You can just place the calculation in an Azure Function and then calling that function from both systems, meaning you only have one codebase to maintain. The&nbsp;possibilities&nbsp;are endless when it comes to using Azure Functions, however, many Business Central developers might fear using them, because it is something \u201cnew\u201d well in this post I will try to guide you&nbsp;through&nbsp;the process of creating your own Azure Function, however, I will be using C# so if you do not know how to write C# some of the code might be hard to understand, but I will keep it as simple as possible, and as always you can find all the source code here.&nbsp;<a href=\"https:\/\/dfredborg.visualstudio.com\/Business%20Central\/_git\/Business%20Central?version=GBMyAzureFunctions\">https:\/\/dfredborg.visualstudio.com\/Business%20Central\/_git\/Business%20Central?version=GBMyAzureFunctions<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To get started with creating your own Azure Functions, you have two&nbsp;possibilities&nbsp;the first is that you can create your Azure Function directly from the Azure portal&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/portal.azure.com\/\" target=\"_blank\">https:\/\/portal.azure.com\/<\/a>&nbsp;by going to Azure Functions and click add and go through the guide. The second option, which is the one that I prefer and the one we will cover in this post, is creating your Azure Functions through Visual Studio. The reason why I prefer to use Visual Studio is that it allows you first of all to use&nbsp;arguably&nbsp;one of the greatest IDE\u2019s out there <a href=\"https:\/\/emojipedia.org\/winking-face\/\">&#x1f609;<\/a>, and also it lets you run your Azure Functions locally in a simulator, so you can test it locally before uploading.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first thing you must do is download and install Visual Studio&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/visualstudio.microsoft.com\/downloads\/\" target=\"_blank\">https:\/\/visualstudio.microsoft.com\/downloads\/<\/a>&nbsp;here you can just go with the free Community edition, doing the installation you will be given the&nbsp;choice&nbsp;of which capabilities that you wish to add to your Visual Studio, here you must select Azure Functions. Once everything is installed you are ready to create your first Azure Function. When you launch Visual&nbsp;Studio&nbsp;you will be met with a page where you can choose&nbsp;to create&nbsp;a new project.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"441\" height=\"505\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_UTJ4xTf1nC.png\" alt=\"\" class=\"wp-image-373\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_UTJ4xTf1nC.png 441w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_UTJ4xTf1nC-262x300.png 262w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Click this and choose Azure Functions from list.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_D3nZhJR8Ht.png\" alt=\"\" class=\"wp-image-374\" width=\"717\" height=\"497\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_D3nZhJR8Ht.png 1024w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_D3nZhJR8Ht-300x208.png 300w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_D3nZhJR8Ht-768x533.png 768w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Give it a project name and a solution&nbsp;name and&nbsp;choose the location.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"646\" height=\"405\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_cQ0S3Ii1KB.png\" alt=\"\" class=\"wp-image-375\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_cQ0S3Ii1KB.png 646w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_cQ0S3Ii1KB-300x188.png 300w\" sizes=\"auto, (max-width: 646px) 100vw, 646px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once you click create you will be given a list of different templates to help you get started, now I will not go into these different templates, you just need to know that they are there, so if you ever feel like there is something you need to do, chances are that Microsoft has created a template to help you get started, for the purpose of this post we will choose the Http trigger, what this&nbsp;basically&nbsp;means is that we want to create an HTTP web service.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_juDkeSw18M.png\" alt=\"\" class=\"wp-image-376\" width=\"772\" height=\"535\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_juDkeSw18M.png 1024w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_juDkeSw18M-300x208.png 300w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_juDkeSw18M-768x533.png 768w\" sizes=\"auto, (max-width: 772px) 100vw, 772px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">On the left you can choose what type of Authorization level that you want for you function, you have&nbsp;anonymous&nbsp;which means anyone can call your function, admin which means that you must have the master key, and lastly Function which means that it will be token-based, here you should choose Function and click create.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This will generate a very simple&nbsp;HTTPTriger&nbsp;function for you the first thing you will notice is that you&nbsp;FunctionName&nbsp;is&nbsp;set to Function1.&nbsp;&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n&#x5B;FunctionName(&quot;HelloWorld&quot;)] \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">You should change this to something more correct, to keep it simple in our case let us just rename it to HelloWorld&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n&#x5B;FunctionName(&quot;HelloWorld&quot;)] \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">the next line.&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n&#x5B;HttpTrigger(AuthorizationLevel.Function, &quot;get&quot;, &quot;post&quot;, Route = null)] \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This is where you define that this should be triggered by an Http Call, your Authorization Level, and what kind of request you will support, wherein our case we support both get and post requests. Before we get into the rest of the code let us try to run our function and see what it does, to run your code press F5, this will start a command&nbsp;prompt&nbsp;which will emulate your Azure Function, where the last line will give you a&nbsp;URL&nbsp;that you can use to call your function.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"654\" height=\"158\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/func_vXYBnsJ1Db.png\" alt=\"\" class=\"wp-image-377\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/func_vXYBnsJ1Db.png 654w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/func_vXYBnsJ1Db-300x72.png 300w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you copy this&nbsp;URL&nbsp;into&nbsp;you&nbsp;browser&nbsp;you should see something like this.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"984\" height=\"40\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_LTDEl2xOAG.png\" alt=\"\" class=\"wp-image-378\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_LTDEl2xOAG.png 984w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_LTDEl2xOAG-300x12.png 300w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_LTDEl2xOAG-768x31.png 768w\" sizes=\"auto, (max-width: 984px) 100vw, 984px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And if you view the command prompt, you can see what the Azure Function does, now try to&nbsp;add ?name=Jack to you URL so your URL should be something like this&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/localhost:7071\/api\/HelloWorld?name=Jack\" target=\"_blank\">http:\/\/localhost:7071\/api\/HelloWorld?name=Jack<\/a>&nbsp;and this should return you something like this.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"471\" height=\"34\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_v7AMjoO4vW.png\" alt=\"\" class=\"wp-image-379\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_v7AMjoO4vW.png 471w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_v7AMjoO4vW-300x22.png 300w\" sizes=\"auto, (max-width: 471px) 100vw, 471px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Congratulation you have now created a web service <a href=\"https:\/\/emojipedia.org\/grinning-squinting-face\/\">&#x1f606;<\/a>, let us&nbsp;break&nbsp;down the rest of the code.&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nlog.LogInformation(&quot;C# HTTP trigger function processed a request.&quot;);  \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This line writes a message to your log.&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nstring name = req.Query&#x5B;&quot;name&quot;]; \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This is where you&nbsp;retrieve&nbsp;the value that you entered in&nbsp;the ?name&nbsp;part of your URL, you can add as many&nbsp;req.Query&nbsp;that you want, allowing the user to parse information to your function.&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nstring requestBody = await new StreamReader(req.Body).ReadToEndAsync();\n            dynamic data = JsonConvert.DeserializeObject(requestBody); \n            name = name ?? data?.name; \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This part is a little bit more complicated, but simply put all it does is that check \u00b4s if you have&nbsp;sent a JSON&nbsp;body, which it then adds to a dynamic object, where it checks if there is a name in the object.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The next part:&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nstring responseMessage = string.IsNullOrEmpty(name)\n                ? &quot;This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.&quot;\n                : $&quot;Hello, {name}. This HTTP triggered function executed successfully.&quot;; \n            return new OkObjectResult(responseMessage); \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This checks if the name was entered and then returns the result in&nbsp;a&nbsp;OkObjectResult.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As you can see then this is very simple, and if you know how to write C# then the&nbsp;possibilities&nbsp;are endless, you could use it to&nbsp;integrate&nbsp;with other systems, upload files to an FTP Server, or pretty much anything. Once you have created your&nbsp;awesome&nbsp;Azure Function, you can deploy it to Azure within Visual Studio, all you&nbsp;have to&nbsp;do is go to Build-&gt;Publish &#8230;&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"376\" height=\"249\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/Jn2fhF0fa3.png\" alt=\"\" class=\"wp-image-380\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/Jn2fhF0fa3.png 376w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/Jn2fhF0fa3-300x199.png 300w\" sizes=\"auto, (max-width: 376px) 100vw, 376px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This will then&nbsp;based&nbsp;on your login, allow you to create a new function in the Azure Portal which you can then&nbsp;integrate&nbsp;to.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"378\" height=\"379\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_HlpI5cOm4a.png\" alt=\"\" class=\"wp-image-381\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_HlpI5cOm4a.png 378w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_HlpI5cOm4a-300x300.png 300w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/devenv_HlpI5cOm4a-150x150.png 150w\" sizes=\"auto, (max-width: 378px) 100vw, 378px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"944\" height=\"275\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_S6TR7cg8rv.png\" alt=\"\" class=\"wp-image-382\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_S6TR7cg8rv.png 944w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_S6TR7cg8rv-300x87.png 300w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/brave_S6TR7cg8rv-768x224.png 768w\" sizes=\"auto, (max-width: 944px) 100vw, 944px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Well that was it for this post, in the next post we will see how you can&nbsp;integrate&nbsp;with your Azure Function from within Business Central. But until next time stay safe.&nbsp;<a href=\"https:\/\/emojipedia.org\/face-with-medical-mask\/\">&#x1f637;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>To fully embrace Microsoft release cycle of Business Central, you need to start considering how you&nbsp;designing&nbsp;your&nbsp;solutions&nbsp;going forward, more&nbsp;precisely&nbsp;how much of&#8230; <a class=\"read-more\" href=\"https:\/\/fredborg.org\/?p=371\" rel=\"nofollow\"> Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":383,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,1],"tags":[],"class_list":["post-371","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-business-central","category-uncategorized","shapla-grid-item"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Getting Started with Azure Functions - Fredborg<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fredborg.org\/?p=371\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting Started with Azure Functions - Fredborg\" \/>\n<meta property=\"og:description\" content=\"To fully embrace Microsoft release cycle of Business Central, you need to start considering how you&nbsp;designing&nbsp;your&nbsp;solutions&nbsp;going forward, more&nbsp;precisely&nbsp;how much of... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fredborg.org\/?p=371\" \/>\n<meta property=\"og:site_name\" content=\"Fredborg\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-07T01:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-23T20:45:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/GettingStartedWithAzureFunctions.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"dfredborg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dfredborg\" \/>\n<meta name=\"twitter:site\" content=\"@dfredborg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"dfredborg\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fredborg.org\/?p=371#article\",\"isPartOf\":{\"@id\":\"https:\/\/fredborg.org\/?p=371\"},\"author\":{\"name\":\"dfredborg\",\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d\"},\"headline\":\"Getting Started with Azure Functions\",\"datePublished\":\"2020-07-07T01:00:00+00:00\",\"dateModified\":\"2020-12-23T20:45:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fredborg.org\/?p=371\"},\"wordCount\":1383,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d\"},\"image\":{\"@id\":\"https:\/\/fredborg.org\/?p=371#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/GettingStartedWithAzureFunctions.png\",\"articleSection\":[\"Business Central\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fredborg.org\/?p=371#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fredborg.org\/?p=371\",\"url\":\"https:\/\/fredborg.org\/?p=371\",\"name\":\"Getting Started with Azure Functions - Fredborg\",\"isPartOf\":{\"@id\":\"https:\/\/fredborg.org\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fredborg.org\/?p=371#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fredborg.org\/?p=371#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/GettingStartedWithAzureFunctions.png\",\"datePublished\":\"2020-07-07T01:00:00+00:00\",\"dateModified\":\"2020-12-23T20:45:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fredborg.org\/?p=371#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fredborg.org\/?p=371\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fredborg.org\/?p=371#primaryimage\",\"url\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/GettingStartedWithAzureFunctions.png\",\"contentUrl\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/GettingStartedWithAzureFunctions.png\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fredborg.org\/?p=371#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fredborg.org\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started with Azure Functions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fredborg.org\/#website\",\"url\":\"https:\/\/fredborg.org\/\",\"name\":\"Fredborg\",\"description\":\"Business Central and Azure\",\"publisher\":{\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fredborg.org\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d\",\"name\":\"dfredborg\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2023\/06\/download.png\",\"contentUrl\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2023\/06\/download.png\",\"width\":256,\"height\":256,\"caption\":\"dfredborg\"},\"logo\":{\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:fredborg.org\",\"https:\/\/www.linkedin.com\/in\/dfredborg\/\",\"https:\/\/x.com\/dfredborg\",\"https:\/\/www.youtube.com\/channel\/UCUNZglLDMjBlOK_T9JtI8UA\"],\"url\":\"https:\/\/fredborg.org\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Getting Started with Azure Functions - Fredborg","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fredborg.org\/?p=371","og_locale":"en_US","og_type":"article","og_title":"Getting Started with Azure Functions - Fredborg","og_description":"To fully embrace Microsoft release cycle of Business Central, you need to start considering how you&nbsp;designing&nbsp;your&nbsp;solutions&nbsp;going forward, more&nbsp;precisely&nbsp;how much of... Read more","og_url":"https:\/\/fredborg.org\/?p=371","og_site_name":"Fredborg","article_published_time":"2020-07-07T01:00:00+00:00","article_modified_time":"2020-12-23T20:45:48+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/GettingStartedWithAzureFunctions.png","type":"image\/png"}],"author":"dfredborg","twitter_card":"summary_large_image","twitter_creator":"@dfredborg","twitter_site":"@dfredborg","twitter_misc":{"Written by":"dfredborg","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fredborg.org\/?p=371#article","isPartOf":{"@id":"https:\/\/fredborg.org\/?p=371"},"author":{"name":"dfredborg","@id":"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d"},"headline":"Getting Started with Azure Functions","datePublished":"2020-07-07T01:00:00+00:00","dateModified":"2020-12-23T20:45:48+00:00","mainEntityOfPage":{"@id":"https:\/\/fredborg.org\/?p=371"},"wordCount":1383,"commentCount":0,"publisher":{"@id":"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d"},"image":{"@id":"https:\/\/fredborg.org\/?p=371#primaryimage"},"thumbnailUrl":"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/GettingStartedWithAzureFunctions.png","articleSection":["Business Central"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fredborg.org\/?p=371#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fredborg.org\/?p=371","url":"https:\/\/fredborg.org\/?p=371","name":"Getting Started with Azure Functions - Fredborg","isPartOf":{"@id":"https:\/\/fredborg.org\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fredborg.org\/?p=371#primaryimage"},"image":{"@id":"https:\/\/fredborg.org\/?p=371#primaryimage"},"thumbnailUrl":"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/GettingStartedWithAzureFunctions.png","datePublished":"2020-07-07T01:00:00+00:00","dateModified":"2020-12-23T20:45:48+00:00","breadcrumb":{"@id":"https:\/\/fredborg.org\/?p=371#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fredborg.org\/?p=371"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fredborg.org\/?p=371#primaryimage","url":"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/GettingStartedWithAzureFunctions.png","contentUrl":"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/07\/GettingStartedWithAzureFunctions.png","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/fredborg.org\/?p=371#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fredborg.org\/"},{"@type":"ListItem","position":2,"name":"Getting Started with Azure Functions"}]},{"@type":"WebSite","@id":"https:\/\/fredborg.org\/#website","url":"https:\/\/fredborg.org\/","name":"Fredborg","description":"Business Central and Azure","publisher":{"@id":"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fredborg.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d","name":"dfredborg","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fredborg.org\/#\/schema\/person\/image\/","url":"https:\/\/fredborg.org\/wp-content\/uploads\/2023\/06\/download.png","contentUrl":"https:\/\/fredborg.org\/wp-content\/uploads\/2023\/06\/download.png","width":256,"height":256,"caption":"dfredborg"},"logo":{"@id":"https:\/\/fredborg.org\/#\/schema\/person\/image\/"},"sameAs":["https:fredborg.org","https:\/\/www.linkedin.com\/in\/dfredborg\/","https:\/\/x.com\/dfredborg","https:\/\/www.youtube.com\/channel\/UCUNZglLDMjBlOK_T9JtI8UA"],"url":"https:\/\/fredborg.org\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/posts\/371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fredborg.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=371"}],"version-history":[{"count":2,"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/posts\/371\/revisions"}],"predecessor-version":[{"id":385,"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/posts\/371\/revisions\/385"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/media\/383"}],"wp:attachment":[{"href":"https:\/\/fredborg.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fredborg.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fredborg.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}