Findings and thingies - Articles (en)https://andre.bering.in/articles-feed/en http://www.rssboard.org/rss-specificationenWed, 27 Jan 2021 00:05:00 +0000Back to custom CMShttps://andre.bering.in/2021/01/12/2/<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="https://aaronparecki.com/">Aaron Pericki</a>.</p> <p>Moreover I looked into <a href="https://indieweb.org/">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>https://andre.bering.in/2021/01/12/2/Tue, 12 Jan 2021 12:00:00 +0000Back to Wordpresshttps://andre.bering.in/posts/2020-09-14-back-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>https://andre.bering.in/posts/2020-09-14-back-to-wordpress/Mon, 14 Sep 2020 12:53:21 +0000Application Lifecycle Management (ALM) and Power Appshttps://andre.bering.in/posts/2020-08-12-application-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="https://docs.microsoft.com/en-us/power-platform/alm/devops-build-tools">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="https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals">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="https://marketplace.visualstudio.com/items?itemName=microsoft-IsvExpTools.PowerPlatform-BuildTools&amp;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="https://marketplace.visualstudio.com/items?itemName=microsoft-IsvExpTools.PowerApps-BuildTools&amp;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="https://docs.microsoft.com/en-us/office/developer-program/office-365-developer-program-get-started">Microsoft 365-Entwicklerabonnements</a> with three accounts inside the tenant each connected to <a href="https://powerapps.microsoft.com/en-us/communityplan/">Power Apps-Communityplan</a>)</li> <li>1 Azure DevOps project</li> <li>installed <a href="https://docs.microsoft.com/en-us/power-platform/alm/devops-build-tools">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="https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/get-started/build-a-hello-world-web-part">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="http://aka.ms/ppac">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="https://github.com/microsoft/PowerApps-Samples/tree/master/build-tools">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="https://aka.ms/ppac">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="https://docs.microsoft.com/en-us/powerapps/maker/common-data-service/solutions-overview">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="https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/introduction-solutions">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="https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/use-single-tenant-server-server-authentication#azure-application-registration">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="https://de.wikipedia.org/wiki/Beispieldomains">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 user.email "&lt;E-Mail address of commit user"" git config user.name "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="https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/compress-extract-solution-file-solutionpackager">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="https://docs.microsoft.com/en-us/power-platform/alm/">Application lifecycle management (ALM) with Microsoft Power Platform - Power Platform | Microsoft Docs</a></li> <li><a href="https://docs.microsoft.com/en-us/power-platform/alm/basics-alm">Application lifecycle management (ALM) basics with Microsoft Power Platform - Power Platform | Microsoft Docs</a></li> <li><a href="https://docs.microsoft.com/en-us/power-platform/alm/devops-build-tools#configure-service-connections-using-a-service-principal">Configure service connections using a service principal - Power Platform | Microsoft Docs</a></li> <li><a href="https://docs.microsoft.com/en-us/power-platform/admin/database-security">Configure user security in an environment - Power Platform | Microsoft Docs</a></li> <li><a href="https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/use-single-tenant-server-server-authentication#azure-application-registration">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="https://docs.microsoft.com/en-us/power-platform/alm/alm-for-developers">ALM for developers - Power Platform | Microsoft Docs</a>, Retrieval: 24.06.2020</p>https://andre.bering.in/posts/2020-08-12-application-lifecycle-management-alm-and-power-apps/Wed, 12 Aug 2020 11:00:00 +0000Weekly CW17-2020https://andre.bering.in/posts/2020-04-24-weekly-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="https://cloud.google.com/blog/topics/training-certifications/expanding-at-home-learning">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="https://medium.com/@rakyll/things-i-wished-more-developers-knew-about-databases-2d0178464f78">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="https://developer.microsoft.com/en-us/graph/blogs/a-lap-around-microsoft-graph-toolkit-in-day-1-an-overview-of-microsoft-graph-toolkit/">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="https://powerusers.microsoft.com/t5/Canvas-Apps-Components-Samples/Canvas-Power-App-Modal-Dialog-Popup/td-p/525015">Canvas Power App Modal Dialog (Popup) - Power Platform Community</a>« shows one possible way.</p> <!--more-->https://andre.bering.in/posts/2020-04-24-weekly-cw17-2020/Fri, 24 Apr 2020 07:00:00 +0000Weekly CW16-2020https://andre.bering.in/posts/2020-04-17-weekly-cw016-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="https://www.codemag.com/article/1911062">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="https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/messaging">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="https://www.linkedin.com/in/greg-roe-3a7b66b/">Greg Roe</a> has published a two-part article that explains exactly that. * »<a href="https://devblogs.microsoft.com/premier-developer/hosting-and-asp-net-core-api-in-a-container-part-1-of-2-building-the-container/">Hosting and ASP.NET Core API in a Container Part 1 of 2 - Building the Container</a>« * »<a href="https://devblogs.microsoft.com/premier-developer/push-an-asp-net-core-api-container-to-azure-containter-registry-part-2-of-2/">Push to ASP.NET Core API Container to Azure Container Registry Part 2 of 2</a>«</p>https://andre.bering.in/posts/2020-04-17-weekly-cw016-2020/Fri, 17 Apr 2020 07:00:00 +0000Weekly CW015-2020https://andre.bering.in/posts/2020-04-10-weekly-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="https://www.theverge.com/2020/4/7/21211721/microsoft-events-build-2021-digital-only-coronavirus-plans">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="https://docs.microsoft.com/en-us/learn/certifications/exams/az-220">AZ-220: Azure #MSIoT Developer certification</a>«? Then you can get start your preparation with »<a href="https://docs.microsoft.com/en-us/learn/modules/set-up-iot-edge-gateway/">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="https://www.codeproject.com/Articles/5264244/A-Fast-and-Lightweight-Solution-for-CQRS-and-Event">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="https://developer.microsoft.com/en-us/microsoft-365/blogs/microsoft-365-sharepoint-pnp-weekly-episode-74/">Microsoft 365 &amp; SharePoint PnP Weekly – Episode 74</a>«.</p>https://andre.bering.in/posts/2020-04-10-weekly-cw015-2020/Fri, 10 Apr 2020 10:00:00 +0000Renaming Azure "Root" management group not possiblehttps://andre.bering.in/posts/2020-04-07-renaming-azure-root-management-group-not-possible/<p>When you start dealing with management groups in Azure, you may get to the point where you want to rename the <a href="https://docs.microsoft.com/en-us/azure/governance/management-groups/overview#root-management-group-for-each-directory">"Root" management group</a>. But even the simple query of the group will cause a problem.</p> <p><img alt="Management Group query error" class="lb lb-img-noborder" noborder="yes" src="/2020/04/07/2/mg-query-error.png" width="100%" /></p> <p>In order for modifications/queries to be possible for this management group, you must first elevate the access rights for your own account, even if you are already a directory administrator. A corresponding message is also displayed in the Azure Portal.</p> <p><img alt="Azure Portal hint" class="lb lb-img-noborder" noborder="yes" src="/2020/04/07/2/azure-portal-hint.png" width="100%" /></p> <p>The entire process is explained in the article "<a href="https://docs.microsoft.com/en-us/azure/role-based-access-control/elevate-access-global-admin">Elevate access to manage all Azure subscriptions and management Groups</a>". Once you have altered your own access rights as described here or had them altered, you can make the appropriate changes or simply query the management group.</p> <p><img alt="Management Group query success" class="lb lb-img-noborder" noborder="yes" src="/2020/04/07/2/mg-query-success.png" width="100%" /></p> <p>{{&lt; warning &gt;}} After you have made the necessary changes with the elevated access rights, you should remove the access rights afterwards. {{&lt; /warning &gt;}}</p> <p>Unfortunately, the "Tenant Root Group" cannot be queried by name in the Azure CLI resp. the name of this group is not meaningful. However, with elevated access rights you can query all management groups and thus find out the name of this particular group.</p> <pre><code>az account management-group list </code></pre> <p><img alt="List Management Group" class="lb lb-img-noborder" noborder="yes" src="/2020/04/07/2/list-mg.png" width="100%" /></p>https://andre.bering.in/posts/2020-04-07-renaming-azure-root-management-group-not-possible/Tue, 07 Apr 2020 10:00:00 +0000Announcement from Microsoft: Introducing Microsoft 365 Personal and Family subscriptionshttps://andre.bering.in/posts/2020-03-30-announcement-from-microsoft-introducing-microsoft-365-personal-and-family-subscriptions/<p><img alt="Microsoft Teams" class="lb lb-img-noborder" noborder="yes" src="/2020/03/30/1/teams.jpg" width="100%" /></p> <p>Today Microsoft announced that Office 365 will become Microsoft 365 and therefore announced new Microsoft 365 Personal and Family subscriptions which will be available on April 21st. But this announcement is bigger than just a simple rebranding of a product.</p> <p>Apart from renaming Microsoft announced that two new Microsoft 365 experiences will roll out as a preview in the coming months - a new Microsoft Family Safety app and new features in Teams.</p> <p>But Microsoft even announced more today. Microsoft Edge (Chromium based) will get new features. You can find all the details about this <a href="https://blogs.windows.com/windowsexperience/2020/03/30/the-top-10-reasons-to-switch-to-the-new-microsoft-edge/">here</a>.</p> <p>In addition Microsoft unveiled a new editor - Microsoft Editor - which is an AI powered service available in 20 languages. All the details can be found <a href="https://techcommunity.microsoft.com/t5/microsoft-365-blog/introducing-microsoft-editor-bring-out-your-best-writer-wherever/ba-p/1247931">here</a>. This editor can be used on its own as standalone browser extension for Microsoft Edge and Google Chrome, or in Word and Outlook.com.</p> <p>For PowerPoint Microsoft introduced an AI assistant which should assist you in becoming a better presenter by observing your presentation style which I think is a great new feature.</p> <p>But this is not the end of new features. But instead of rephrasing all of the new announcements I recommend that you simply go the first source of this post and have a look at all the details of Microsoft's announcement.</p> <h4>Sources</h4> <ol> <li><a href="https://www.microsoft.com/en-us/microsoft-365/blog/2020/03/30/introducing-new-microsoft-365-personal-family-subscriptions/">Introducing the new Microsoft 365 Personal and Family subscriptions</a></li> <li><a href="https://azure.microsoft.com/en-us/blog/extending-the-power-of-azure-ai-to-microsoft-365-users/?utm_source=dlvr.it&amp;utm_medium=twitter">Extending the power of Azure AI to Microsoft 365 users</a></li> <li><a href="https://blogs.windows.com/windowsexperience/2020/03/30/the-top-10-reasons-to-switch-to-the-new-microsoft-edge/">The top 10 reasons to switch to the new Microsoft Edge</a></li> <li><a href="https://techcommunity.microsoft.com/t5/microsoft-365-blog/introducing-microsoft-editor-bring-out-your-best-writer-wherever/ba-p/1247931">Introducing Microsoft Editor – Bring out your best writer wherever you write</a></li> </ol>https://andre.bering.in/posts/2020-03-30-announcement-from-microsoft-introducing-microsoft-365-personal-and-family-subscriptions/Mon, 30 Mar 2020 21:00:00 +0000Weekly CW012-2020https://andre.bering.in/posts/2020-03-20-weekly-cw012-2020/<p><img alt="Weekly CW12" class="lb lb-img-noborder" noborder="yes" src="/2020/03/20/1/weekly-cw12.svg" width="100%" /></p> <p>This edition of my weekly is a little bit late not because of Corona but instead I simply forgot it because I'm on holiday (at home).</p> <p>Year after year since I'm working in IT I keep on reading stories about how awesome VIM is. Nevertheless I never got into it mostly I guess because I have been a Windows user most of the time. But I'm still curious to get into it even more lately because of <a href="https://docs.microsoft.com/en-us/windows/wsl/wsl2-index">WSL2</a> which makes all Linux tooling available for Windows users. Interesting to read why and how others are using VIM: »<a href="https://dev.to/atsmith813/confession-i-m-a-vim-user-2nel">Confession: I'm a Vim user</a>«</p> <p>The combination of Kubernetes and <a href="https://keda.sh">KEDA</a> as an extension is really powerful. Even more impressive it is to see a demo like »<a href="https://www.youtube.com/watch?v=sRpCDx1rK00">KubeView &amp; Keda Demo</a>« by <a href="https://twitter.com/BenCodeGeek">Ben Coleman</a>.</p> <p>I guess almost everyone knows WD-40. Therefore I think it is quite interesting to read »<a href="https://jalopnik.com/the-history-of-wd-40-is-stranger-than-you-think-and-no-1841585147">The History Of WD-40 Is Stranger Than You Think And No This Isn't Sponsored Content I Just Thought It Was Weird«</a>.</p> <p>Trying to get started with Power Platform? Then <a href="https://twitter.com/tracyvds/">Tracy van der Schyff</a> wrote something for you. »<a href="https://tracyvanderschyff.com/2020/03/18/power-platform-what-how-when-why/amp/">Power Platform: What How When &amp; Why</a>« is a really good high level introduction on the platform.</p> <p>But most importantly for this weeks edition is: <a href="https://twitter.com/hashtag/staythefhome">#StayTheFHome</a></p>https://andre.bering.in/posts/2020-03-20-weekly-cw012-2020/Fri, 20 Mar 2020 10:00:00 +0000Weekly CW011-2020https://andre.bering.in/posts/2020-03-13-weekly-cw011-2020/<p><img alt="Weekly CW11" class="lb lb-img-noborder" noborder="yes" src="/2020/03/13/1/weekly-cw11.svg" width="100%" /></p> <p>Looking for great input on .NET architecture? Then have a look at this <a href="https://twitter.com/nishanil/status/1237757616337457164">tweet</a> by <a href="https://twitter.com/nishanil">Nish Anil</a>. Microsoft made four new e-books available. These are in detail:</p> <ul> <li><a href="https://dotnet.microsoft.com/learn/azure/architecture#ebook-cloud-native-azure-swimlane">Architecting Cloud-Native .NET Apps for Azure</a></li> <li><a href="https://dotnet.microsoft.com/learn/aspnet/architecture#ebook-blazor-for-web-forms-devs-swimlane">Blazor for ASP.NET Web Forms Developers</a></li> <li><a href="https://dotnet.microsoft.com/learn/aspnet/architecture#ebook-grpc-for-wcf-devs-swimlane">gRPC for WCF developers e-book</a></li> <li><a href="https://dotnet.microsoft.com/learn/desktop/architecture#ebook-modernizing-existing-desktop-apps-swimlane">Modernizing Desktop Apps on Windows 10 with .NET Core 3.0</a></li> </ul> <p>Are you an ASP.NET developer who is interested in Kubernetes? Have a look at this introduction: »<a href="https://www.youtube.com/watch?list=PL1rZQsJPBU2St9-Mz1Kaa7rofciyrwWVx&amp;t=1240s&amp;v=V_EszvGJ8O8&amp;app=desktop">ASP.NET Community Standup - Feb 25, 2020 - Intro to Kubernetes for ASP.NET Core devs</a>«</p> <p>If you are using Git you've probably heard of Git Flow. George Stocker has an interesting point in »<a href="https://georgestocker.com/2020/03/04/please-stop-recommending-git-flow/">Please stop recommending Git Flow!</a>«.</p>https://andre.bering.in/posts/2020-03-13-weekly-cw011-2020/Fri, 13 Mar 2020 07:00:00 +0000