Findings and thingies - Articles (en), 19 May 2022 08:23:30 +0000Create solutions - but get your ego out of the way<p>If you are working as a consultant, software engineer, or software architect you're often given the task to find a solution for a problem. Most of the time it is a business process/problem from a customer. The customer can be your own employer or a client who asked for your support.</p> <p>From my point of view, one if not the most important aspect of this is to get your own ego out of the way for finding a solution. But there are also other topics that are also important in this context and go hand in hand with getting your ego out of the way.</p> <h2>Have customer obsession</h2> <p>In the end, it is the customer who will pay your bills. So always keep your customer in mind when trying to find a solution. With this knowledge, it may make more sense to implement a solution that generates less revenue as a first step. However, from the resulting customer satisfaction, it can then become a more satisfied long-term relationship with the customer.</p> <h2>Many roads lead to Rome</h2> <p>There is more than one acceptable solution to solve a problem. It is totally fine when the preferred one was not brought up by you. As already mentioned, get your ego out of the way. It is not a question of being right or wrong, but always of finding the best possible solution.</p> <h2>Agree to disagree</h2> <p>In the end, someone must decide which solution will be implemented. Sometimes it can happen that not all people involved are of the same opinion. In this case, someone must recognize when disagreement is needed to proceed. But also, in this case, you should be sensible to acknowledge when it is not your solution which is the best one for the specific problem.</p> <h2>KISS</h2> <p>More often people try to come up with the fanciest solution for a problem. Even though the fancy one might solve the problem it also might be unnecessarily complex. Habitually keep in mind that a solution should be <a href="">KISS</a>.</p> <h2>Accept things for what they are</h2> <p>Often you will find situations where you need to use some third part tooling. And sometimes things are not useable in a way which you might prefer. I've caught myself more than once trying to then change something about it or build around it to have a way that I personally like. In the end, though, it was always easier to accept and use things the way someone else built them, especially when they provide a fit at around 80 percent. Simply don't waste time on something that doesn't add value in the end. </p> <h2>Frugality</h2> <p>Frugality is something that often comes to people's minds when they think about not buying a coffee at their favorite café. But from my point of view, it is also something when trying to create a solution. Most of the time it can be done more inexpensively. For this, you need to talk with your customer and see where you agree on a compromise. You simply don't need to create the fanciest solution just to pamper your ego. It is the outcome for the customer which counts.</p>, 14 Mar 2022 07:00:00 +0000Free Power Apps Developer Plan - Finally<p><img alt="free developer plan meme" src="/2021/05/26/1/free-developer.jpeg" /></p> <p>For as long as the Power Platform has existed, developers have wanted a free way to experiment with it.<br /> In 2017, the "Power Apps Community Plan" was <a href="">introduced</a>. Even though this was free, it unfortunately did not offer all the possibilities that developers would like to play with.</p> <p>Since this <a href="">Microsoft Build</a>, we now know that it takes a bit of time for Microsoft to respond to the developers' pleas, but that the wishes are ultimately fulfilled.</p> <p>And so the <a href="">Power Apps Developer Plan</a> <a href="">was introduced</a> yesterday. Compared to the old Community Plan, this offers significantly more functions that can be used.</p> <p>If you want to use your work or school account instead of your personal account, no problem simply look at this guide: <a href="">Citizen Dev. Journey - Setting up your Microsoft Power Apps Test Environment | LinkedIn</a></p>, 26 May 2021 19:30:00 +0000The Azure Data Architecture Map<p>I've written about the maps of <a href="">Stephane Eyskens</a> <a href="/posts/2019-08-06-azure-infrastructure-architect-map/">before</a>. I must admit that I did not follow up on the following publishing's by him. Today I just noticed that he added another map to his portfolio.</p> <p><a href="">The Azure Data Architecture Map - Microsoft Tech Community</a></p> <p>It is pretty neat that he simply put a link to all of his maps in his most recent post so that one has all information in one place.</p>, 07 Apr 2021 16:00:00 +0000Azure SQL Import (bacpac) does not finish<p>Today I was facing the challenge that an import of a BACPAC file did not finish in a reasonable amount of time.</p> <p><img alt="" src="/2021/03/18/1/import-state.png" /></p> <p>The process simply remained unchanged for about 4 hours in the state you can see in the above screenshot.</p> <p>After investigating this further I found the money quote in the Microsoft documentation [1].</p> <blockquote> <p>The Azure SQL Database Import/Export service provides a limited number of compute virtual machines (VMs) per region to process import and export operations. The compute VMs are hosted per region to make sure that the import or export avoids cross-region bandwidth delays and charges. If too many requests are made at the same time in the same region, significant delays can occur in processing the operations. The time that's required to complete requests can vary from a few seconds to many hours.</p> </blockquote> <p>The documentation also states that an import will be cancelled if it is not processed within four days.</p> <p>Unfortunately the Azure portal does not offer an option to cancel an import out of the box. For this you need to use the PowerShell (inside the portal). You can find a detailed description for this <a href="">here</a>.</p> <p>To speed things up you can perform this import using your local SQL Server Management Studio (SSMS). For this simply refer to the necessary steps in [3] specifically section »Importing a data-tier application in SQL Server Management Studio«. Of course this is only an option if your internet connection is sufficient for the amount of data that needs to be moved. If not you can still deploy an Azure VM and run the import process from there.</p> <h2>Resources</h2> <ol> <li><a href="">Import and export of a database takes a long time - Azure SQL Database | Microsoft Docs</a></li> <li><a href="">How to cancel Azure SQL Database Import or Export operation - Microsoft Tech Community</a></li> <li><a href="">An introduction to Data-Tier applications in SQL Server</a> - <a href="">WayBack</a></li> </ol>, 18 Mar 2021 12:15:00 +0000Back to custom CMS<p>As you might have noticed I haven't published anything since the last <a href="/posts/2020-09-14-back-to-wordpress">entry</a> where I mentioned that I switched back to WordPress.</p> <p>Being a technical person I really don't like the experience of putting content into WordPress. Meanwhile I've been trying to get around this by faciliating the <code>wp cli</code> which didn't work out very well for me.</p> <p>Therefore I decided to get back on track to create a custom CMS. This time in Python. For storing content I followed an approach which I was inspired by <a href="">Aaron Pericki</a>.</p> <p>Moreover I looked into <a href="">IndieWeb</a> and therefore I decided to split content into different types like notes, articles and bookmarks. <strong>Due to this the feed structure of this site will change a little bit. You can find all details for feeds <a href="/feeds/">here</a>.</strong></p> <p>If nothing is changed in the Feed Reader, all content will show up in this default feed (<a href="/feed">/feed</a>) in the future.</p>, 12 Jan 2021 12:00:00 +0000Back to Wordpress<p>After I switched to Hugo as the generator for this page before some time ago, I often asked myself if a comment function could lead to a higher degree of interaction. Of course, this question is difficult or even impossible to answer afterwards. Anyway, the page is now run by WordPress again.</p> <p>All URL patterns used so far should still work. If not, please leave a comment.</p>, 14 Sep 2020 12:53:21 +0000Application Lifecycle Management (ALM) and Power Apps<h2>Introduction</h2> <p>This article will explain how to apply Application Lifecycle Management (ALM) in Azure DevOps for Power Apps. It will be shown how to set up the required Azure DevOps environment. Furthermore, it will be described how source code/Power Apps can be versioned, quality assurance can be performed and subsequently artifacts delivered to the production environment.</p> <p>The history of the article is longer. The first draft was already written by me in 2019. In the meantime I have worked on it again and again. What finally kept me from publishing it was, in my opinion, not yet "<strong>finished</strong>" tooling of the "<a href="">Microsoft Power Platform Build Tools for Azure DevOps - Power Platform | Microsoft Docs</a>". The originally available tooling (Azure DevOps Extension) is still available now but has been marked as "DEPRECATED" since the jump to version 0.3.7. Already since the jump from version 0.1.16 to version 0.3.6 the original tooling has been fundamentally revised/improved. </p> <p>In version 0.1.16, the access credentials (user name/password) had to be stored in plain text to set up the connection. Since version 0.3.6 this authentication can finally be setup using <a href="">Service Principals</a>.</p> <p><img alt="Authentication methods" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/devops-principal.png" width="100%" /> <em>Figure: Authentication methods</em></p> <p>The old (<strong><ins>not recommended</ins></strong>) method (yellow) is still available. So the transition to the new option (green) is seamless, even for users who have already used previous versions of BuildTools or have not yet set up Service Principals. <strong>When changing to or starting with the current version of the Build Tools, you should always be using Service Principals</strong>.</p> <p>Two versions are available in the Visual Studio Marketplace: 1. <strong><a href=";targetId=e326b11d-3605-4a6e-903e-4bff6ccc155d&amp;utm_source=vstsproduct&amp;utm_medium=ExtHubManageList">Power Platform Build Tools - Visual Studio Marketplace</a></strong><br /> 2. (<strong>DEPRECATED</strong>) <a href=";targetId=e326b11d-3605-4a6e-903e-4bff6ccc155d&amp;utm_source=vstsproduct&amp;utm_medium=ExtHubManageList">PowerApps BuildTools - Visual Studio Marketplace</a></p> <p>As described above, this extension [2] is now marked as "<strong>DEPRECATED</strong>", so only [1] should be used.<br /> The tools currently available for Azure DevOps are basically a wrapper around the SolutionPackager for D365 Customer Engagement (CRM).</p> <p>The final architecture, for the integration of Azure DevOps and Power Platform, will look like the following on an abstract level.</p> <p><img alt="Architecture overview" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/architecture.png" width="100%" /> <em>Figure: Architecture overview</em></p> <p>Microsoft itself suggests two different approaches for ALM in conjunction with the Power Platform. [^1] In this article the first variant is described, where only the source code is versioned, but not the packed solutions. In the context of classical software development this is also the <em>normal</em> way, because usually only source code and not compiled binaries are versioned.</p> <!-- more --> <h2>Requirements</h2> <p>Basically, a few things are needed to be able to follow the steps. The following components are required.</p> <ul> <li>3 Power Apps Environments (e.g. <a href="">Microsoft 365-Entwicklerabonnements</a> with three accounts inside the tenant each connected to <a href="">Power Apps-Communityplan</a>)</li> <li>1 Azure DevOps project</li> <li>installed <a href="">Microsoft Power Platform Build Tools for Azure DevOps - Power Platform | Microsoft Docs</a></li> <li>1 Git Repository</li> <li>1 Service Principal</li> </ul> <aside class="article-alert article-alert-warning"> <div class="alert-warning-icon"> <img src="/img/exclamation.svg" /> </div> <div class="alert-warning-content"> If a Microsoft 365 developer subscription is used, it must be clear that it expires after 90 days if no M365 development has been performed. For the extension it is sufficient that, for example, a <a href="">SharePoint Web Part</a> is created/developed. </div> </aside> <h2 id="getting-started">Getting started</h2> <p>As mentioned above, three environments are required to follow this guide. For the following steps the following environments with the corresponding definitions are used.</p> <table> <thead> <tr> <th>Name</th> <th align="center">Function</th> </tr> </thead> <tbody> <tr> <td>André Bering's Environment</td> <td align="center">DEV</td> </tr> <tr> <td>Johanna Lorenz's Environment</td> <td align="center">BUILD/QA</td> </tr> <tr> <td>Alex Wilber's Environment</td> <td align="center">PROD</td> </tr> </tbody> </table> <p>As you can see, these three environments are visible in the <a href="">Power Platform Admin Center</a>.</p> <p><img alt="Environment overview" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/environment-overview.png" width="100%" /> <em>Figure: Environment overview</em></p> <p>Having a background as a developer, the first question that might arise is how to version control your work in the Power Platform. At the moment there is no easy way to do this. The only way is to manually download the solution, unzip it and then version the content.</p> <p>This process can be mapped into Azure DevOps using ALM, even with a kind of CI/CD approach.<br /> The article is mainly based on the Microsoft tutorial for the Power Apps Build Tools, which can be found <a href="">here</a>.</p> <p>For the tutorial and the further steps the URL of the respective environment is required. The URL can be found in the <a href="">Admin Center</a>.</p> <p><img alt="Admin Center - Environment URL" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/environment-url.png" width="100%" /> <em>Figure: Admin Center - Environment URL</em></p> <p>If any form of ALM is to be used with Power Apps, it is first necessary to understand how solutions work in this context. To understand these basics you can read this Microsoft Docs article: <a href="">Solutions in Power Apps - Power Apps | Microsoft Docs</a></p> <p>In this article there is another introduction linked, which should be read: <a href="">Introduction to solutions - Power Apps | Microsoft Docs</a></p> <h2 id="service-principal">Service connections / Service Principals</h2> <p>To be able to set up the connection in Azure DevOps, the corresponding Service Principal must be set up or stored in Azure DevOps. The corresponding menu item is located below "<em><strong>Project Settings - Pipelines - Service connection - New service connection</strong></em>".</p> <p><img alt="Azure DevOps Service - Create new service connection" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/create-new-sc.png" width="100%" /> <em>Figure: Azure DevOps Service - Create new service connection</em></p> <p><img alt="Azure DevOps Service connections" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/create-serviceconnection.png" width="100%" /> <em>Figure: Azure DevOps Service connections</em></p> <p>In the dialogue, reference is made to two places which should help to create the corresponding access or to store it in the correct place. The first link refers to instructions in Microsoft Docs. There it is recommended to create the access using a linked PowerShell script. However, the script can only be executed under Windows because the PowerShell modules used require "System.Forms" and these are only available under Windows. Therefore I recommend that the Service Principal is created directly in the Azure Portal. The corresponding documentation is linked in the continuous text of the manual.</p> <aside class="article-alert article-alert-warning"> <div class="alert-warning-icon"> <img src="/img/exclamation.svg" /> </div> <div class="alert-warning-content"> The Service Principal must be created in the Tenant in which the Power Apps environments are located. </div> </aside> <p><a href="">Use Single-Tenant server-to-server authentication (Common Data Service) - Power Apps | Microsoft Docs</a></p> <p>After the Service Principal(s) have been created in Azure in, the setup can be continued.</p> <p>The crucial point is that there is <strong>not</strong> the item "<strong>Settings</strong>" as in the manual, but the item "<strong>Advanced Settings</strong>". This item can be used to call up the corresponding interface. </p> <p><img alt="Settings - Advanced Settings" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/01-create-sp.png" width="100%" /> <em>Figure: Settings - Advanced Settings</em></p> <p>At this point, you might be surprised when the Dynamics 365 interface appears. The two platforms are very closely intertwined, so that certain settings are currently only (still) found in the <em>old</em> interface. The changeover to an end-to-end management interface is an ongoing process. Therefore it can be assumed that in the future the points will also be integrated into the power platform interface or a uniform look and feel.</p> <p>There is another stumbling block in the Microsoft documentation, namely the creation of the user. However, the behavior regarding this stumbling block was not consistent.<br /> For this reason, the following are the individual dialogs that must be processed to make the Service Principal known within the power platform environment. </p> <p><img alt="D365 Settings" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/02-create-sp.png" width="100%" /> <em>Figure: D365 Settings</em></p> <p><img alt="D365 Security" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/03-create-sp.png" width="100%" /> <em>Figure: D365 Security</em></p> <p>In the user list view, filter to "Application Users" and then click "+ NEW".</p> <p><img alt="Filter user list" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/04-create-sp.png" width="100%" /> <em>Figure: Filter user list</em></p> <p>Before entering the data, the dialog must be switched to the correct mode by selecting "Application User".</p> <p><img alt="Select 'Application User'" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/05-create-sp.png" width="100%" /> <em>Figure: Select 'Application User'</em></p> <p>When entering the data, the information that was previously defined when the Service Principal was created in the Azure Portal must be used. The user also needs (because it is a mandatory field of the form) an e-mail address, even if it is only a technical user account. Here, for example, addresses of so-called example domains (<a href="">example domains - Wikipedia</a>) can be used, as can be seen in the following screenshot However, the address is not used for sending e-mails.<br /> After creating the user by clicking the "SAVE" button, do not close the <strong>not</strong> dialog.</p> <p><img alt="Enter user information" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/06-create-sp.png" width="100%" /> <em>Figure: Enter user information</em></p> <p>Using the button "MANAGE ROLES" the necessary role must be assigned to the user account.</p> <p><img alt="Open 'MANAGE ROLES'" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/07-create-sp.png" width="100%" /> <em>Figure: Open 'MANAGE ROLES'</em></p> <p>To be able to perform all necessary actions with this user account, the role "System Administrator" must be assigned. Otherwise, errors will occur later in the context of using this accountby the Azure DevOps Pipelines.</p> <p><img alt="User role selection" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/08-create-sp.png" width="100%" /> <em>Figure: User role selection</em></p> <p>After this step the account is set up and can now be stored in Azure DevOps. For this purpose the dialog which is shown/described at the beginning of this section ("<a href="{{&lt; ref" title="#service-principal&quot; &gt;}})">Service connections / Service Principals</a> must be used.</p> <p>An individual Service Connection must be created for each power platform environment. In total, the setup described above must be carried out three times, whereby the Service Principal does not have to be created three times. The Service Principal can be stored as a user account in each environment.<br /> Alternatively, a separate Service Principal can be created for each environment.</p> <p><img alt="Azure DevOps Service connections list" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/devops-service-connections-list.png" width="100%" /> <em>Figure: Azure DevOps Service connections list</em></p> <p>Then create all required connections with the respective information/access data per environment.</p> <p><img alt="Azure DevOps Service connection properties" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/devops-service-connections-properties.png" width="50%" /> <em>Figure: Azure DevOps Service connection properties</em></p> <p>As described in the section "<a href="{{&lt; ref &quot;#getting-started&quot; &gt;}}">Getting Started</a>", the URL of the environment is required and this value is stored as "<em><strong>Server URL</strong></em>" in Service Connection properties.</p> <h2>Azure DevOps Pipelines</h2> <h3>Introduction</h3> <p>Once the Service Connections have been created, the pipelines and releases must now be set up. These are used to extract the source code from "DEV", create a Managed Solution in "QA/Build" and then roll out this Solution in "PROD".</p> <p>One pipeline is required for each of the first two steps.</p> <p><img alt="Azure DevOps Pipelines list" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/pipelines-list.png" width="100%" /> <em>Figure: Azure DevOps Pipelines list</em></p> <p>An Azure DevOps release is then used for the final deployment towards PROD.</p> <p><img alt="Azure DevOps Releases list" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/releases-list.png" width="100%" /> <em>Figure: Azure DevOps Releases list</em></p> <h3>Repository permissions</h3> <p>Below "<em><strong>Project Settings - Repos - Repositories User</strong></em>" the account "<em><strong>\&lt;Azure DevOps Project Name> Build service (\&lt;Organization name>)</strong></em>" must be granted the "<em><strong>Contribute</strong></em>" permission. Otherwise, the build pipeline cannot push the source code into the repository.</p> <p><img alt="'Build Service' permissions" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/build-service-permission.png" width="100%" /> <em>Figure: 'Build Service' permissions</em></p> <h3>Solution export</h3> <p>There are four steps in the pipeline for exporting the solution and one more for adding the code to the repository.</p> <p><img alt="Azure DevOps pipeline tasks" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/export-from-dev.png" width="100%" /> <em>Figure: Azure DevOps pipeline tasks</em></p> <p>To add the source code to the repository, a few command-line commands are required to have Git run automatically in the context of the pipeline.</p> <p><img alt="Azure DevOps pipeline command line task" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/task-add-source-code.png" width="100%" /> <em>Figure: Azure DevOps pipeline command line task</em></p> <p>The variable should be emphasized here. This must / can be set when the queue is started. This means that the respective commit comment can always be set dynamically during the respective run. The code for this task can be found in the following section.</p> <h4>Source code in repository</h4> <p>The commands are used in the final step "Commit solution to repo" to add the code to the repository.</p> <pre><code>echo commit all changes git config "&lt;E-Mail address of commit user"" git config "Automatic Build" git checkout master git add --all git commit -m "$(CommitMessage)" echo push code to new repo git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" push origin master </code></pre> <h3>Create managed solution</h3> <p>After the solution has been extracted from the DEV environment, it must be transferred to the BULD/QA environment where the managed solution is created.</p> <p><img alt="Azure DevOps pipeline tasks" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/export-from-build.png" width="100%" /> <em>Figure: Azure DevOps pipeline tasks</em></p> <p>For this purpose, the two tasks "Power Platform Import Solution" and "Power Platform Export Solution" are used in the context of the pipeline. For the latter task it is important that the option "Export as Managed Solution" is activated.</p> <p><img alt="Option »Export as Managed Solution«" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/export-from-build-managed.png" width="100%" /> <em>Figure: Option »Export as Managed Solution«</em></p> <p>In the last step of the pipeline, the exported solution is published as pipeline artifact. This step is important so that the solution created in the context of the release can then be rolled out in the production environment.</p> <h3>Deployment to PROD</h3> <p>With a release, the solution is rolled out into the "PROD" environment. In this case, the artifact previously created must first be linked to the Release in the "Artifacts".</p> <p><img alt="Release pipeline - artifact properties" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/deploy-to-prod.png" width="100%" /> <em>Figure: Release pipeline - artifact properties</em></p> <p>This way the artifact can be used in the tasks of the release. It is important that the "alias" of the artifact is part of the path specification in the task for the actual deployment. There is no variable within Azure DevOps for this variable part. The reason for this is that more than one artifact can be used in a release and therefore a unique relationship between variable and artifact would not be possible.</p> <p><img alt="Release Pipeline - artifact alias" class="lb lb-img-noborder" lb-cust-margin="lb-cust-margin" noborder="yes" src="/2020/08/12/1/deploy-to-prod-alias.png" width="100%" /> <em>Figure: Release Pipeline - artifact alias</em></p> <h2>Tools</h2> <p>As mentioned in the beginning, the Power Platform Build Tools are basically just a wrapper around the tooling for customer engagement. They can be installed and used as in the following instructions.</p> <p><a href="">Use the SolutionPackager tool to compress and extract a solution file</a></p> <p>Afterwards, all tools are installed in order to be able to perform the previously described steps manually locally. At this point, however, it is recommended to choose the ALM path using Azure DevOps for the sake of cooperation.</p> <h2>Conclusion</h2> <p>A developer may be used to a different approach when it comes to versioning source code. However, development on the Power Platform brings with it special peculiarities, which include a different approach to this process.</p> <h2>Sources</h2> <ol> <li><a href="">Application lifecycle management (ALM) with Microsoft Power Platform - Power Platform | Microsoft Docs</a></li> <li><a href="">Application lifecycle management (ALM) basics with Microsoft Power Platform - Power Platform | Microsoft Docs</a></li> <li><a href="">Configure service connections using a service principal - Power Platform | Microsoft Docs</a></li> <li><a href="">Configure user security in an environment - Power Platform | Microsoft Docs</a></li> <li><a href="">Use Single-Tenant server-to-server authentication (Common Data Service) - Power Apps | Microsoft Docs</a></li> </ol> <p>[^1]: "There are two main paths you can use when working with solutions in a source control system:..." - <a href="">ALM for developers - Power Platform | Microsoft Docs</a>, Retrieval: 24.06.2020</p>, 12 Aug 2020 11:00:00 +0000Weekly CW17-2020<p><img alt="Weekly CW17" class="lb lb-img-noborder" noborder="yes" src="/2020/04/24/1/weekly-cw17.svg" width="100%" /></p> <p>When you try to focus on one technology, such as Microsoft Azure, as I do, you often forget to think outside the box. Due to the current situation, Google has made all online training materials for the Google Cloud currently available for 30 days free of charge.</p> <p><a href="">Google Cloud learning resources at no cost for 30 days | Google Cloud Blog</a></p> <p>Really a good possibility to extend your own knowledge and to look beyond your own nose, if you have not had any contact with GCP before.</p> <p>If you have had contact with databases as a developer, ask why things are the way they are and what needs to be considered to prevent problems. »<a href="">Things I Wished More Developers Knew About Databases</a>« is a longer article, but a really good one.</p> <p>There are several ways to get started using Microsoft Graph. One possible good one is »<a href="">A Lap around Microsoft Graph Toolkit in Day 1 - An Overview of Microsoft Graph Toolkit</a>«.</p> <p>Developers who are starting to get involved with Power Apps are often surprised that OOTB there are no popup dialogs in Power Apps. But not everyone needs to reinvent the wheel. Therefore you should use components that have already been developed by others. »<a href="">Canvas Power App Modal Dialog (Popup) - Power Platform Community</a>« shows one possible way.</p> <!--more-->, 24 Apr 2020 07:00:00 +0000Weekly CW16-2020<p><img alt="Weekly CW16" class="lb lb-img-noborder" noborder="yes" src="/2020/04/17/1/weekly-cw16.svg" width="100%" /></p> <p>Julie Lerman wrote a very detailed article about the Entity Framework Core 3.0 with »<a href="">Entity Framework Core 3.0: A Foundation for the Future</a>«. Very interesting to read why the Entity Framework team has laid the foundation for further innovations with this version.</p> <p>Uncertain which asynchronous messaging solution in Azure is the right one for a specific requirement? Then you should read the documentation »<a href="">Asynchronous messaging options in Azure</a>« from Microsoft to get a good overview of all available options.</p> <p>If you want to start running an ASP.NET Core application in a container then you will often have basic questions about how to start it. <a href="">Greg Roe</a> has published a two-part article that explains exactly that. * »<a href="">Hosting and ASP.NET Core API in a Container Part 1 of 2 - Building the Container</a>« * »<a href="">Push to ASP.NET Core API Container to Azure Container Registry Part 2 of 2</a>«</p>, 17 Apr 2020 07:00:00 +0000Weekly CW015-2020<p><img alt="Weekly CW15" class="lb lb-img-noborder" noborder="yes" src="/2020/04/10/1/weekly-cw15.svg" width="100%" /></p> <p>Personally the biggest announcement this week was that Microsoft <a href="">announced</a> that all of their events will be digital-only until July 2021. For me personally this could be an indicator on when we could expect things to become normal again after the current pandemic.</p> <p>Are you interested in IoT and looking to get a »<a href="">AZ-220: Azure #MSIoT Developer certification</a>«? Then you can get start your preparation with »<a href="">Set up an IoT Edge Gateway</a>«.</p> <p>If you ever wondered on how to create a solution using CQRS and Event Sourcing using C# then you definitely should have a look at »<a href="">A Fast and Lightweight Solution for CQRS and Event Sourcing</a>«. A very comprehensive article which explains this end-to-end.</p> <p>Are you a SharePoint or Teams developer and ever asked yourself why you should care about Azure Functions? Then you should have a look at »<a href="">Microsoft 365 &amp; SharePoint PnP Weekly – Episode 74</a>«.</p>, 10 Apr 2020 10:00:00 +0000