WIRLW - CW39 | what I read last week EN
Create solutions - but get your ego out of the way EN
Free Power Apps Developer Plan - Finally EN
The Azure Data Architecture Map EN
Azure SQL Import (bacpac) does not finish EN
Back to custom CMS EN
zurück zum Custom CMS DE
Back to Wordpress EN
Application Lifecycle Management (ALM) and Power Apps EN
Application Lifecycle Management (ALM) und Power Apps DE

This is the first post of hopefully a long term series. "WIRLW" stands for "what I read last week" (and maybe watched) and will be a loose collection of things I've read(/watched) in the last week (which you've might have already guessed). This won't be just another collection of links but I will also provide some notes for each link.

  • Elderblog Sutra: 13, published 2022-04-28
    This article is little bit older but Venkatesh Rao philosophizes about what it would mean to the blogging ecosystem if Elon Musk is buying Twitter.
  • Thread by @iximiuz, published 2022-08-28
    Pretty interesting read, seeing many myths about Containers (not the transport ones) being debunked. Key takeaways are:
    • Containers need not have a full Operating System inside them
    • it's possible to run a Container without an image but you probably shouldn't
    • you need Containers to build images
    • Containers are not just a Linux OS but instead a standardized execution environments
    • You can create a bootable Linux from an image. Even though it's possible you shouldn't do it except for your own entertainment.
  • Seeking the Productive Life: Some Details of My Personal Infrastructure—Stephen Wolfram Writings, published 2022-02-21
    This one is reread which just came to my mind the other night. I think it's interesting to see how highly efficient and successful people organize their daily workflow.
  • – Uncertainty, industrious compliance, and the illusion of control, published 2022-09-29
    Florian describes why long term planning almost never makes sense due to the huge amount of external influences which will overthrow your planning. Furthermore he explains why business planning might be flawed just because of the education people received in the past. Pretty interesting approach articulated in this article and why originality might be the solution to the described issues.
  • Google finds culture, not tech, is the biggest predictor of DevOps security outcomes - SiliconANGLE
    Nothing to add here from my side except the following quote:

    While delving deeper, the researchers, to their surprise, found that the most significant predictor of an organization’s software security practices was cultural, not technical. High-trust, low-blame cultures focused on performance were significantly more likely to adopt emerging security practices than low-trust, high-blame cultures focused on power or rules.

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.

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.

Have customer obsession

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.

Many roads lead to Rome

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.

Agree to disagree

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.


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 KISS.

Accept things for what they are

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.


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.

free developer plan meme

For as long as the Power Platform has existed, developers have wanted a free way to experiment with it.
In 2017, the "Power Apps Community Plan" was introduced. Even though this was free, it unfortunately did not offer all the possibilities that developers would like to play with.

Since this Microsoft Build, 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.

And so the Power Apps Developer Plan was introduced yesterday. Compared to the old Community Plan, this offers significantly more functions that can be used.

If you want to use your work or school account instead of your personal account, no problem simply look at this guide: Citizen Dev. Journey - Setting up your Microsoft Power Apps Test Environment | LinkedIn

I've written about the maps of Stephane Eyskens before. 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.

The Azure Data Architecture Map - Microsoft Tech Community

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.

Today I was facing the challenge that an import of a BACPAC file did not finish in a reasonable amount of time.

The process simply remained unchanged for about 4 hours in the state you can see in the above screenshot.

After investigating this further I found the money quote in the Microsoft documentation [1].

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.

The documentation also states that an import will be cancelled if it is not processed within four days.

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 here.

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.


  1. Import and export of a database takes a long time - Azure SQL Database | Microsoft Docs
  2. How to cancel Azure SQL Database Import or Export operation - Microsoft Tech Community
  3. An introduction to Data-Tier applications in SQL Server - WayBack

As you might have noticed I haven't published anything since the last entry where I mentioned that I switched back to WordPress.

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 wp cli which didn't work out very well for me.

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 Aaron Pericki.

Moreover I looked into IndieWeb and therefore I decided to split content into different types like notes, articles and bookmarks. Due to this the feed structure of this site will change a little bit. You can find all details for feeds here.

If nothing is changed in the Feed Reader, all content will show up in this default feed (/feed) in the future.

Wie vielleicht jemand bemerkt hat, habe ich seit dem letzten Eintrag, in dem ich erwähnte, dass ich zurück zu WordPress gewechselt habe, nichts mehr veröffentlicht.

Da ich ein technischer Mensch bin, mag ich den Weg, um Inhalte in WordPress einzupflegen, nicht wirklich. In der Zwischenzeit habe ich versucht, dies mit Hilfe des wp cli zu umgehen, was bei nicht sehr gut funktioniert hat.

Deshalb habe ich mich entschlossen, wieder den eines eigenen CMS zu gehen. Diesmal in Python. Für die Speicherung von Inhalten folge ich einem Ansatz, der von Aaron Pericki inspiriert wurde.

Außerdem schaute ich in IndieWeb und entschied mich daher, Inhalte in verschiedene Typen wie Notizen, Artikel und Lesezeichen aufzuteilen. Dadurch wird sich die Feed-Struktur dieser Seite ein wenig ändern. Alle Details zu den Feeds sind hier zu finden.

Wird im Feed Reader nichts geändert, tauchen in Zukunft alle Inhalte in diesem Standard-Feed (/feed) auf.

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.

All URL patterns used so far should still work. If not, please leave a comment.


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.

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 "finished" tooling of the "Microsoft Power Platform Build Tools for Azure DevOps - Power Platform | Microsoft Docs". 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.

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 Service Principals.

Authentication methods Figure: Authentication methods

The old (not recommended) 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. When changing to or starting with the current version of the Build Tools, you should always be using Service Principals.

Two versions are available in the Visual Studio Marketplace: 1. Power Platform Build Tools - Visual Studio Marketplace
2. (DEPRECATED) PowerApps BuildTools - Visual Studio Marketplace

As described above, this extension [2] is now marked as "DEPRECATED", so only [1] should be used.
The tools currently available for Azure DevOps are basically a wrapper around the SolutionPackager for D365 Customer Engagement (CRM).

The final architecture, for the integration of Azure DevOps and Power Platform, will look like the following on an abstract level.

Architecture overview Figure: Architecture overview

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 normal way, because usually only source code and not compiled binaries are versioned.

Read more


Dieser Artikel wird erklären, wie man Application Lifecycle Management (ALM) in Azure DevOps für Power Apps anwenden kann. Es wird gezeigt wie die benötigte Azure DevOps Umgebung eingerichtet wird. Weiterhin wird beschrieben, wie Quellcode/Power Apps versioniert werden kann/können, Qualitätssicherung durchgeführt und im Anschluss in die Produktionsumgebung ausgeliefert werden kann.

Die Entstehungsgeschichte des Artikels ist länger. Der erste Entwurf wurde von mir schon im Jahr 2019 geschrieben. In der Zwischenzeit habe ich immer wieder daran gearbeitet. Was mich letztendlich von der Veröffentlichung abgehalten hat, war das meiner Meinung nach noch nicht "fertige" Tooling der »Übersicht über Buildtools für Azure DevOps - Power Apps | Microsoft Docs«. Das ursprünglich verfügbare Tooling (Azure DevOps Extension) ist jetzt zwar immer noch verfügbar aber seit dem Sprung auf Version auf 0.3.7 als »DEPRECATED« gekennzeichnet worden. Schon seit dem Versionssprung von 0.1.16 zur Version 0.3.6 wurde das ursprüngliche Tooling grundlegend überarbeitet/verbessert.

In Version 0.1.16 mussten noch zum Einrichten der Verbindung die Zugangsdaten (Benutzername/Passwort) im Klartext hinterlegt werden. Seit der Version 0.3.6 kann diese Authentifizierung endlich mittels Service Principals abgebildet werden.

Authentifizierungsmethoden Abbildung: Authentifizierungsmethoden

Die alte (nicht zu empfehlende) Methode (gelb) steht weiter zur Verfügung. Somit ist der Übergang auf die neue Option (grün) nahtlos möglich, auch für Nutzer die bereits vorherige Versionen der BuildTools verwendet haben oder noch keine Service Principals eingerichtet haben. Beim Umstieg auf die oder Beginn mit der aktuellen Version der Build Tools sollte auf jeden Fall der Wechsel auf die Service Principals erfolgen.

Zwei Versionen sind im Visual Studio Marketplace verfügbar: 1. Power Platform Build Tools - Visual Studio Marketplace
2. (DEPRECATED) PowerApps BuildTools - Visual Studio Marketplace

Wie zuvor beschrieben ist diese Extension [2] mittlerweile als »DEPRECATED« gekennzeichnet, daher sollte nur noch [1] verwendet werden.
Die Werkzeuge, die aktuell für Azure DevOps verfügbar sind, sind grundlegend ein Wrapper um den SolutionPackager für D365 Customer Engagement (CRM).

Die finale Architektur, für die Integration von Azure DevOps und Power Plattform, wird auf abstrakter Ebene wie folgt aussehen.

Architektur Übersicht Abbildung: Architektur Übersicht

Microsoft selbst schlägt zwei verschiedene Vorgehensweisen für ALM in Verbindung mit der Power Plattform vor. [^1] In dieser Anleitung wird die erste Variante beschrieben, bei der nur der Quellcode versioniert wird, aber nicht die gepackten Solutions. Im Kontext klassischer Softwareentwicklung ist dies auch der normale Weg, weil sonst auch nur Quellcode und nicht kompilierte Binaries versioniert werden.

Read more