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

MrPM-21-Flow2-01

MrPM-21-Flow2-02

MrPM-21-Flow2-03

MrPM-21-Flow2-04

MrPM-21-Flow2-05

MrPM-21-Flow2-06

MrPM-21-Flow2-07

MrPM-21-Flow2-08

MrPM-21-Flow2-09

MrPM-21-Flow2-10

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

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

#MrPowerMagic Youtube