Solutions sind im Kontext der Power Platform und Dynamics 365 CE, Pakete, die verschiedene Power Platform Komponenten enthalten. Diese können z.B. sein: Tabellen, Apps, Formulare (Forms), Listen-Ansichten (Views), Plugins, Flows, …

Solutions ermöglichen es, Komponenten von einer Umgebung (Export) in eine andere Umgebung (Import) zu kopieren und damit die in der jeweiligen Solution enthaltenen Komponenten und Funktionen in der neuen Umgebung bereitzustellen.

Dieses Konzept wird sich bereits während der Entwicklung neuer Power Platform Lösungen - daher auch der Name Solution - zunutze gemacht, indem die Lösung aus der Entwicklungs-Umgebung in eine Test-Umgebung übertragen wird. In der Entwicklung ist das natürlich kein einmaliger Vorgang, sondern einer, der sich immer wieder widerholt um z.B. die Lösung zu erweitern, oder beim Testen aufgefallene Fehler zu beheben. Daraus ergibt sich so etwas wie ein Kreislauf, der in Fachkreisen als Application-Lifecycle bezeichnet wird. Um einen Überblick zu behalten, welcher Entwicklungs-Stand in der jeweiligen Umgebung enthalten ist, werden die Solutions in Versionen verwaltet. Nun spricht man von dem Application-Lifecycle-Management oder kurz ALM.

Solutions sind aber nicht nur nützlich um ALM innerhalb der eigenen Organisation zu betreiben. Sie können darüber hinaus auch genutzt werden um fertige Lösungen in Umgebungen fremder Organisationen zu verteilen. Und damit wird aus einer Solution ein vertreibbares Produkt, welches sich dann natürlich auch monetarisieren lässt.

Managed und Unmanaged Solutions:

Es gibt zwei unterschiedliche Typen von Solutions. Initial - also während der Entwicklung - ist eine Solution immer eine Unmanaged-Solution. Erst während des Export-Vorganges kann bestimmt werden, ob sie Solution als Managed- oder Unmanaged-Solution exportiert werden soll. Der Solution-Typ kommt daher erst beim Import in eine neue Umgebung zum Tragen.

Beide Typen können sich - wie oben beschrieben - als Pakete vorgestellt werden. Der Unterschied zwischen den beiden Typen wird beim Löschvorgang am deutlichsten. Wird eine Unmanaged-Solution gelöscht, wird lediglich das Paket (die Schachtel) gelöscht, die Inhalte des Paketes bleiben in der Umgebung bestehen. Wird hingegen eine Managed-Solution gelöscht, wird das Paket sowie all seine Inhalte aus der Umgebung entfernt.

Gleiches gilt auch für Komponenten innerhalb einer Solution. Wird eine Komponente aus einer Lösung entfernt, weil sie nicht mehr benötigt wird, wird die entsprechende Komponente in einer Umgebung, in welcher die Solution als Unmanaged-Solution existiert, beim Import der Version nicht gelöscht. Der gleiche Vorgang würde bei einer Managed-Solution das Entfernen der Komponente aus der Umgebung bewirken.

Weitere wichtige Eigenschaften, welche eine Managed-Solution mit sich bringt:

  • Managed-Solutions können nicht exportiert werden
  • Komponenten in einer Managed-Solution können nicht direkt bearbeitet werden. Sie müssen dazu zu einer Unmanaged-Solution hinzugefügt werden. Dadurch entstehen Abhängigkeiten zwischen Solutions, die beim Löschen von Solutions oder Komponenten Auswirkungen haben können.

    Microsoft empfiehlt bereits in Testumgebungen mit Managed-Solutions zu arbeiten. Aus unserer Erfahrung können wir diese Empfehlung nur unterstreichen, auch wenn es in der Community andere, durchaus nachvollziehbare Meinungen gibt. Wir haben beide Varianten während der Entwicklungsphase und auch im Produktiven Einsatz getestet und uns dazu entschieden jede Version einer Solution in beiden Varianten zu exportieren. Die Managed-Variante wird als sogenanntes Release-Artefakt verwendet, während wir die Unmanaged-Variante als Version in unserem Git-Repository hinterlegen.

Solution-Layer:

Der große Vorteil von Power Platform und Dynamics 365 CE Solutions ist, dass sich diese für den eigenen Bedarf anpassen lassen. Um dies zu ermöglichen, werden die Solutions in sogenannten Layern (Ebenen) verwaltet.

Bildquelle: https://learn.microsoft.com/en-us/power-apps/maker/data-platform/solution-layers

Ganz unten in der Hierarchy der Layer findet man die Layer in denen die Manages-Solutions liegen, deshalb werden diese Layer auch als Managed-Layer bezeichnet. Dabei bauen die Solutions von Drittanbietern auf den System-Solutions auf.

Über den Managed-Layern befinden sich die Unamanged-Layer mit den Unmanaged-Solutions. Das hat den großen Vorteil, dass man über eine Unmanaged-Solution immer Anpassungen vornehmen kann. Gleichzeitig sollte man sich über diesen Umstand bewusst sein, weil sich unter Umständen Updates in Managed-Solutions nicht mehr auswirken.

Solltet ihr einer solchen Situation sein, könnt ihr euch für eine Komponente ansehen, über welche Solution diese derzeit aktiv ist und könnt dort auch darauf Einfluss nehmen: Solution layers - Power Apps | Microsoft Learn

Bildquelle: https://learn.microsoft.com/en-us/power-apps/maker/data-platform/solution-layers

Default-Solution:

Die Default-Solution ist eine besondere Solution, welche vom System erstellt wird, immer Unmanaged ist und in der Ebenen-Hierarchie immer ganz oben liegt. Sie kann nicht exportiert werden.

Aus diesem Grund ist unbedingt davon abzuraten, Anpassungen in der Default-Solution vorzunehmen. Diese sollten immer in eigenen, Unmanaged-Solutions stattfinden, welche später exportiert werden können.

Fazit

Es gibt 2 verschiedene Typen von Solutions: Unmanaged-Solutions und Managed-Solutions. In einer Entwicklungsumgebung, in der üblicherweise eine neue Solution angelegt wird, ist diese Solution immer vom Typ Unamanged. Erst beim Export einer Unamanged-Solution kann man diese als Managed-Solution exportieren. Managed-Solutions können nicht exportiert werden.

Solutions werden vom System in Layern (Ebenen) verwaltet. Dabei überschreiben neuere Solutions immer bereits vorhandene Solutions und Unmanaged-Solutions immer Managed-Solutions.

Eine besondere Unmanaged-Solution ist die Default-Solution. Sie wird vom System erstellt und ist in der Hierarchie immer ganz oben.

Änderungen in Form von Anpassungen oder Erweiterungen sollten niemals in der Default-Solution stattfinden.