21 | Team me up, Scotty! 🚀

#MrPowerMagic hilft! 🔼

21.10.2021 | Alex und Ragnar Show | Folge 57

Im 21. Fall fĂŒr #MrPowerMagic beschĂ€ftigen wir uns mit der einfachen, automatisierten Beantragung und Erstellung eines Microsoft Teams-Teams.

Warum noch eine Lösung neben den ganzen, teilweise bezahlten Drittanbieteranwendungen? Warum nicht den Standardweg ĂŒber Teams nehmen? Weil jedes Unternehmen anders ist und manchmal eigene Lösungen benötigt. Hier liegt der Fokus ausschließlich auf der formalisierten Anlage von Teams. EinschrĂ€nkungen gibt es keine.

Status Quo

Ein Kunde kam vor einiger Zeit auf mich zu und bat mich, deren jetzigen Beantragungsprozess fĂŒr Microsoft Teams weiter zu digitalisieren und vor allem zu automatisieren. Damit hatte der Kunde natĂŒrlich sofort meine Aufmerksamkeit…

Derzeit werden Teams fĂŒr Microsoft Teams via E-Mail bei der IT „zu Fuß“ beantragt und der standardmĂ€ĂŸige Weg fĂŒr die Beantragung von Teams (oder auch Gruppen, SharePoint Sites, etc.) ist deaktiviert worden. Das hat jedoch nichts damit zu tun, dass das Unternehmen kein Vertrauen in seine Mitarbeiter hat oder nicht jede:r ein Team erstellen darf, sondern in diesem konkreten Fall hat das ausschließlich formale GrĂŒnde. Ganz im Gegenteil, das Unternehmen ist sogar ganz weit vorn, was #ModernWork und vor allem #HybridWork angeht!

Hier liegen die GrĂŒnde einfach in den formalen Anforderungen. Das Unternehmen besteht aus mehreren Unternehmensteilen bzw. auch mehreren Schwester- und Tochterunternehmen. Dennoch gibt es einen gemeinsamen Microsoft Tenant, da viele Mitarbeiter auch in anderen Unternehmensteilen unterwegs sind und die Kollaboration in der gesamten Gruppe gewĂ€hrleistet werden soll. Damit jedoch die Teams eindeutig einem Unternehmen zugeordnet werden können, hat das Unternehmen einen bestimmten BenennungsschlĂŒssel aufgestellt. Dieser gilt sowohl fĂŒr die Namen der einzelnen Teams, als auch insbesondere fĂŒr den zugrundeliegenden (E-Mail) Alias des Teams (korrekt: der zugrunde liegenden Microsoft 365-Gruppe). Anhand dieser Benennungsrichtlinie ist eindeutig und auf einen Blick erkennbar, welchem Unternehmensteil das Team zugeordnet ist. Diese Benennungsrichtlinie lĂ€sst sich jedoch nicht mit Bordmitteln aus dem Azure AD abbilden.

Zielsetzung

Da derzeit die IT-Abteilung die Teams gemĂ€ĂŸ der Benennungsrichtlinie erstellt – und auch dort Fehler passieren können – soll dieser Prozess zukĂŒnftig möglichst vollautomatisiert abgewickelt werden. Dazu kommt, dass die IT-Abteilung hĂ€ufig stark ausgelastet ist und es dadurch zu teilweise sehr langen Wartezeiten kommen kann, bis das Team dann tatsĂ€chlich aufgesetzt und einsatzbereit ist.

Eine weitere Anforderung an den Prozess ist, dass dieser ausschließlich Bordmittel der Microsoft 365 Suite verarbeiten soll.

EinschrĂ€nkungen hinsichtlich des Funktionsumfangs gab es bisher nicht und soll es auch zukĂŒnftig nicht geben, ebenso sollen weiterhin alle Mitarbeiter in der Lage sein, ein MS Teams Team nach Bedarf anzufragen und somit auch erstellt bekommen.

Umsetzung

FĂŒr die Beantragung eines Microsoft Teams-Team werden wir ein Microsoft Forms-Formular verwenden. Da das Forms-Formular ausschließlich intern im Unternehmen verwendet wird, können wir somit auch direkt die Antragsteller:innen identifizieren. Das ist wichtig, um diese dann direkt als Besitzer eines Teams zu hinzuzufĂŒgen.

Die Antworten aus der Forms-Anfrage landen dann – mittels eines Power Automate Flows – in einer Modern SharePoint Liste. Diese ist in der IT angesiedelt und bietet gleichzeitig einen guten Überblick aller Teams. Die Besonderheit liegt hier sicherlich in der Bereinigung und dem Namensschema. So werden aus dem Teams-Namen fĂŒr den Alias des Teams jegliche Sonderzeichen eliminiert, die Microsoft (derzeit) nicht verarbeiten kann, ggfs. vorhandene Leerzeichen entfernt und mögliche Umlaute durch die ausgeschriebenen Varianten (Ă€ zu ae, ĂŒ zu ue, ö zu oe) ersetzt. Dies stellt sicher, dass der Alias auch fehlerfrei genutzt werden kann. Weiteres dazu gibt es direkt im Abschnitt zum dazugehörigen Power Automate Flow.

Die Erstellung des Teams selbst wird dann wiederum mittels Power Automate Flow angestoßen und anschließend noch eine Nachricht in einem bestimmten Kanal des IT-Teams abgesetzt.

Der Prozess ist sehr schlank und erfĂŒllt die Anforderungen ohne großen Aufwand. Das schöne an diesem Prozess ist, dass dieser sich sehr einfach anpassen lĂ€sst, bzw. die erstellten Assets, wie das Formular, die Liste oder die Flows sich jederzeit um zusĂ€tzliche FunktionalitĂ€ten erweitern lassen.

Wie bei allen meinen FĂ€llen von #MrPowerMagic liegt der Fokus bei der FunktionalitĂ€t und der Lösung des Engpasses und weniger beim Design oder der Formvollendung. NatĂŒrlich könnte dies jederzeit ergĂ€nzt bzw. aufgewertet werden – designtechnisch und funktional. Im Rahmen der Demo ist dies jedoch nicht im Fokus.

Demo

Das Forms-Formular

Das Forms-Formular zur Beantragung eines Teams

Das Forms-Formular zur Erstellung eines Microsoft Teams-Team fragt alle notwendigen Parameter ab. Aufgrund der Besonderheit der Unternehmensteile, gibt es gleich die erste Frage als Auswahlfrage fĂŒr das jeweilige Zielunternehmen. Die AbkĂŒrzung jedes Unternehmensteils wird dann Bestandteil des Team-Namen und des dazugehörigen Alias.

Ebenso wird der Name des Teams abgefragt, die Beschreibung des Teams, ob es sich um ein privates oder ein öffentliches Team handeln soll.

Zu guter Letzt gibt es noch die Frage, ob Gastzugriff fĂŒr das Team benötigt wird oder nicht. Hier hinter verbirgt sich die Vorbereitung fĂŒr die Klassifizierung von Teams und den damit verbundenen Sicherheitseinstellungen. Technisch hat das momentan noch keine Auswirkungen.

Die Microsoft Lists Liste „Teamsanfragen“

Um uns die Arbeit bei der Automatisierung deutlich zu vereinfachen, habe ich eine Liste erstellt, die alle notwendigen Informationen fĂŒr die Erstellung des Teams bereithĂ€lt und Ausgang fĂŒr den Teams-Erstellungsflow ist:

Die Liste „Teamsanfragen“ als Basis der Automatisierung

Neben dem Titel, der den Namen des Teams reprĂ€sentiert, gibt es natĂŒrlich auch alle weiteren Spalten, die ebenfalls im Forms-Formular vorkommen. ZusĂ€tzlich gibt es noch eine Status-Spalte, die uns den aktuellen Status des Teams anzeigt. Frisch eingetroffene Anfragen haben den Status „neu“, bereits angelegte Teams haben den Status „angelegt“ und nicht mehr benötigte Teams haben den Status „archiviert“.

Besonderheit in der Liste sind jedoch die EintrĂ€ge in der Titel und der TeamsAlias-Spalte. Wie ihr erkennen könnt, wurden hier zum einen die Unternehmens-AbkĂŒrzungen eingearbeitet – im Teams-Namen mit zusĂ€tzlichen, eckigen Klammern – und zum anderen beim TeamsAlias insbesondere die Sonderzeichen und die Umlaute eliminiert und alles kleingeschrieben. Die Verbindung des Unternehmens erfolgt anschließend in Großbuchstaben mit Unterstrich (_). Dadurch wird gewĂ€hrleistet, dass dieser Alias auch den Bedingungen von Microsoft entspricht und es keine Fehler bei der programmatischen Anlage eines Teams geben kann. Wie das Ganze jetzt im Flow umgesetzt wurde, schauen wir uns im nĂ€chsten Absatz an.

Der Power Automate Flow fĂŒr die Teams-Anfrage

Eigentlich wĂ€re dieser Flow ja relativ einfach und schnell erledigt. Denn die einzige Aufgabe besteht ja eigentlich darin, wenn eine neue Anfrage fĂŒr ein Team ĂŒber das Formular eingeht, diese Angaben in die SharePoint-Liste zu ĂŒbertragen. Das wĂ€ren ein Trigger und zwei Aktionen. Aber…

Der wesentliche Part des Flows besteht darin, Text zu transformieren und auszutauschen. Das macht den Flow deutlich komplexer und auch deutlich lĂ€nger. Schauen wir uns den Flow mal genauer an…

Ausgelöst (der Trigger) wird der Flow, wenn eine neue Anfrage fĂŒr ein Team ĂŒbermittelt wird, also Jemand auf „Absenden“ im Formular klickt. Im nĂ€chsten Schritt werden die Details zu dieser Anfrage abgerufen (eine Aktion). Im nĂ€chsten Schritt werden zunĂ€chst vier Variablen initialisiert:

Die vier Variablen, die initialisiert werden

Als erstes wird ein Array mit den ganzen Sonderzeichen angelegt, die wir aus dem spĂ€teren Teams-Alias herausfiltern wollen. Das kann alternativ auch eine SharePoint-Liste oder jedwede andere Datenquelle sein, ich habe mich hier fĂŒr ein Array entschieden. Der Inhalt des Array ist wie folgt definiert:

createArray('[',']','.','@','ß','ÂČ','Âł','”','`','ÂŽ','°','^','=','(',')','&','$','§', '~','#','%','*',':','<','>','?','/','|',' ','!')

Diese Sonderzeichen (und auch Leerzeichen) werden elimiert.

Die zweite Variable bezieht sich auf das Unternehmen. Wir wollen ja die AbkĂŒrzungen des Unternehmens sowohl im Teams-Namen als auch im Teams-Alias unterbringen. Dazu haben wir im Forms Formular bereits vorgearbeitet und die AbkĂŒrzung des jeweiligen Unternehmens an den Anfang der Antwortoption gestellt (A1, B2, C3). Dadurch können wir jetzt sehr einfach den Rest aus der Antwortoption in unserer Variable entfernen, so dass nur noch das KĂŒrzel ĂŒberbleibt. Die Formel lautet in unserem Fall:

replace(trim(substring(Dynamisches_Feld_mit_der_Antwort_aus_Forms,0,3)),'[','')

Die Replace-Funktion wird hier ĂŒberhaupt nicht benötigt, sie hat aber auch keine Auswirkung auf die Formel, daher lasse ich diese einfach mal so stehen 😉 .

In der dritten Variable wird der zukĂŒnftige Teams-Alias erstellt, initial wird er mit dem Teams-Namen aus dem Forms-Formular befĂŒllt.

Die vierte Variable „varTrim“ ist eine Hilfsvariable, die wir spĂ€ter zum zwischenspeichern benutzen.

Im nĂ€chsten Schritt werden fĂŒr den Teams-Alias zunĂ€chst alle Sonderzeichen eliminiert. Dies wird dadurch erledigt, dass wir mittels einer Schleife durch das Array der Sonderzeichen iterieren und durch nichts ersetzen. Das machen wir fĂŒr jedes Sonderzeichen. Anders gesprochen, wir durchlaufen die Schleife fĂŒr jedes Sonderzeichen, und wenn ein Sonderzeichen im Namen gefunden wird, wird es einfach eliminiert.

Dabei wenden wir folgende Formel an:

replace(variables('Var_TeamsAlias'), item(), '')

Anschließend wird alles kleingeschrieben und die Umlaute entfernt. Zu guter Letzt wird dann noch das UnternehmenskĂŒrzel vorweggestellt und fertig ist der Teams-Alias.

Die Formeln im Überblick:

toLower(variables('Var_Trim'))

replace(replace(replace(variables('Var_TeamsAlias'),'ĂŒ','ue'),'Ă€','ae'),'ö','oe')

concat(variables('Var_Unternehmen'),'_',variables('Var_Trim'))

Und last but not least wird dann der Eintrag in der SharePoint-Liste vorgenommen. Damit endet der Flow.

Auch beim Teams-Namen wollen wir ja noch das UnternehmenskĂŒrzel einbringen.

concat('[',variables('Var_Unternehmen'),'] ',Dynamisches_Feld_mit_der_Antwort_aus_Forms)

Der Power Automate Flow fĂŒr die Erstellung des Teams

FĂŒr den zweiten Flow, die eigentliche Erstellung des Teams im System, gibt es einiges zu beachten. Aufgrund des Umfangs werde ich hier nur die wichtigsten Dinge beschreiben. Wenn Ihr weitere Information benötigt, kommt gern auf mich zu!

  • Auslöser des Flows ist, wenn in der SharePoint-Liste ein Element erstellt (oder geĂ€ndert) wird.
  • FĂŒr die Erstellung des Teams wird die Microsoft Graph API benötigt
  • Es muss eine Anwendung im Azure AD registriert werden
  • der Prozess der Teams-Erstellung ist zweistufig. ZunĂ€chst wird eine Microsoft 365 Gruppe erstellt und darauf aufbauend ein Microsoft Teams-Team (teamified). Jedes team hat eine dazugehörige M365 Gruppe.
  • Der Flow wird nur ausgefĂŒhrt, wenn der Status des Elements „neu“ ist

Mehr Informationen zum Flow findet Ihr in der Galerie:

Visual Portfolio, Posts & Image Gallery for WordPress

Hier könnt Ihr Euch den ganzen Fall noch einmal anschauen:

Lasst gern ein „Like“ da und abonniert meinen Youtube-Kanal…

#MrPowerMagic Youtube