27 | Zusammen, was zusammen gehört – automatisierte und konsolidierte Aufgabenlisten Teil I📎

#MrPowerMagic hilft! 🔮

17.02.2022 | Alex und Ragnar Show | Folge 70

Im 27. Fall für #MrPowerMagic dreht sich alles um konsolidierte Aufgabenlisten, und das vollständig automatisiert!

Konkret wollen wir eine Übersicht schaffen, in der alle einzelnen Planner-Aufgaben aus unzähligen Planner-Boards konsolidiert zusammengefasst werden, um eine einfache Übersicht aller Aufgaben, des Status und der Zuweisung zu erhalten, insbesondere bei stark verteilten Teams und damit verteilter Planner Boards. Ein Akt in zwei Teilen!

Status Quo

Mein Auftraggeber nutzt viele verschiedene MS Teams für die Projektabwicklung – wie vermutlich in vielen anderen Unternehmen auch. Für fast jedes Projekt gibt es ein eigenes MS Teams, da sowohl die Projektteam-Mitglieder als auch die externen Gäste innerhalb eines Teams sehr unterschiedlich sind, auch wenn es sich um den selben Kunden handelt.

Nun ist der organisatorische und technische Rahmen in allen Projekten annähernd gleich, also es gibt in jedem Projekt ein Standardverfahren für den Aufbau der Teams, der Kanäle, der Dokumentenablage, usw. Dies geschieht aus rein prozessualen und organisatorischen Gründen und nicht aus regulatorischen Gründen. Die Vorteile liegen ja auf der Hand, durch die hohe Standardisierung ist es für jedes Projektteam-Mitglied einfacher, sich in den einzelnen Projekten zurecht zu finden, da alles überwiegend an gleicher Stelle zu finden ist.

Die Herausforderung und somit die Kehrseite der Medaille ist somit die Zusammenfassung von Aufgaben aller bzw. vieler Planner-Boards aus den jeweiligen Projekt-Teams in einer Übersicht. Dies ist mit Bordmitteln derzeit schlicht nicht möglich.

Zielsetzung

Aus diesem Grund gab es die Anfrage an mich, ob es möglich wäre, mit Microsoft 365 Bordmitteln eine solche Übersicht zu schaffen.

Zunächst haben wir erst einmal gemeinsam die Anforderungen genau definiert, um eine generelle Lösungseinschätzung vornehmen zu können.

  • Es soll eine Übersicht geschaffen werden, in der alle oder viele Aufgabenlisten aus den jeweiligen Projektteams integriert sind und somit alle entsprechenden Aufgaben der integrierten Aufgabenlisten aggregiert sind.
  • Diese Übersicht sollte nach Möglichkeit alle relevanten Informationen auch für den direkten Absprung enthalten. So soll es z.B. möglich sein, eine Aufgabe direkt aus dieser Übersicht öffnen zu können oder auch auf die dazugehörigen Dokumente zugreifen zu können.
  • Es soll ebenfalls möglich sein, bestenfalls als Standard, aus der Übersichtsliste neue Aufgaben für verschiedene Projektteams erstellen zu können, ohne dafür in das jeweilige Projektteam wechseln zu müssen. Ggfs. mit verminderten Anfangsinformationen, die dann entweder automatisiert oder durch die zugewiesene Person im Anschluss ergänzt werden.

Umsetzung

Die Umsetzung der Lösung ist deutlich komplexer als gedacht.

Aufgrund der extremen Flexibilität haben wir uns für die Aufgaben-Übersicht für eine Microsoft Liste (Modern SharePoint-Liste) entschieden, Die Microsoft Liste kann alle notwendigen Anforderungen sehr gut abdecken, ist zudem flexibel um weitere (notendige) Datenfelder erweiterbar und bietet mit seinen verschiedenen Ansichten und Formatierungsoptionen fast unendliche Möglichkeiten der Strukturierung und Darstellung.

Damit jedoch alle Aufgaben relativ einfach und mit wenig Aufwand mit der zentralen Übersicht synchronisiert werden können, gibt es einige Voraussetzungen, die erfüllt sein müssen:

  • Die verschiedenen Projekt-Teams (MS Teams) und die dazugehörigen Planner-Boards müssen standardisiert und somit in jedem Team gleich aufgebaut sein
    • Es müssen die gleichen Buckets vorhanden sein.
    • Die Label der einzelnen Planner-Boards sollten ebenfalls einheitlich benannt sein.
    • Die Dokumentenablage sollte für die Aufgabenverwaltung in jedem Team gleich aufgebaut sein – z.B. im gleichen Kanal abgelegt werden, nach dem gleichen Muster (automatisiert).
  • Wir benötigen eine Hilfsliste, die uns alle (Projekt-)Teams auflistet
    • In der Liste sollte es eine Spalte für Person(en) (Ansprechpartner / Erstzuweisung Aufgaben) geben, die die Aufgabenverteilung innerhalb eines Teams verantworten / leiten
    • Für die eindeutige Zuordnung der Aufgaben weitere Referenz-Angaben, z.B. Kürzel,
    • Einige (technische) IDs des Teams und des Planners, um sich die Arbeit deutlich zu vereinfachen.
  • Power Automate muss natürlich freigeschaltet sein bzw. benötigen wir einen (technischen) User / Service, der die notwendige Automatisierung mittels Power Automate übernehmen kann.

Schauen wir uns nun an, wie wir das Ganze technisch umgesetzt haben…

Demo

Die SharePoint Listen

Liste Projektaufgaben

Die Liste Projektaufgaben ist das zukünftige Herzstück der Lösung. In dieser Liste sind alle Aufgaben aggregiert, egal welchem Team bzw. welchem Planner-Board diese Aufgabe nun konkret zugeordnet ist.

Ein sehr wichtiges Merkmal ist die Referenz-Nr., welche sich aus verschiedenen Merkmalen zusammensetzt und die eindeutige Identifikation über alle Bereiche ist – jede Planner-Aufgabe trägt die Referenz-Nr. als Titel, der Ordner für die Dokumentenablage trägt die Referenz-Nr. als Namen und in der Gesamt-Liste ist die Referenz-Nr. natürlich ebenfalls hinterlegt.

Die Spalte Status zeigt uns das aktuelle Bucket an, in welchem sich die Aufgabe gerade befindet, die Spalte Label zeigt uns die Label (Bezeichnungen) an, die in der Aufgabe hinterlegt sind und die Spalte PL_Status gibt uns den Status der Aufgabe wieder (nicht begonnen, In Arbeit, Erledigt).

Die Liste Projektaufgaben

Zugewiesen bedeutet, wer als Person der jeweiligen Aufgabe zugewiesen wurde, Faellig natürlich die nächste Fälligkeit, Link_PL ist der direkte Link zur Planner-Aufgabe und Link_Doks der Link zur Dokumentenablage der Aufgabe.

Die Aufgabe selbst wird zukünftig hier in der Liste angelegt und dann – je nach Auswahl des Teams – mit den weiteren Daten automatisch durch einen Flow angereichert. Dieser Flow erstellt auch die eigentliche Planner-Aufgabe in dem jeweiligen Planner-Board.

Neben der klassischen Listenansicht ist nun seit kurzem auch der Board View verfügbar, welcher uns auch in einer Microsoft Liste eine Kanban-ähnliche Oberfläche anbietet und somit fast dem Planner schon sehr nahe kommt 😉

Board View der Liste

Die Liste Projektteams

Die Liste Projektteams beinhaltet alle notwendigen Angaben zu den jeweiligen Teams, den Ansprechpartnern bzw. Verantwortlichen, als auch einige IDs und URLs, damit wir es später bei der Automatisierung deutlich leichter haben.

Neben einem Kürzel für die Referenz-Nr. (optional bzw. anpassbar) gibt es auch eine Personenspalte. Hier ist es gedacht, dass dieser hier hinterlegten Person alle Aufgaben, die in dem jeweiligen Team erstellt werden, zunächst einmal dieser Person zugeordnet werden (z.B. Teamleitung, fachl. Verantwortlicher, etc., je nach Zweck). Diese Person wird dann im zweiten Schritt die Aufgaben an das Team delegieren.

Die GruppenID ist die GUID (eindeutige Zahlen-Buchstaben-Kombination) für die Microsoft 365 Gruppe des Teams, diese benötigen wir zwingend bei der programmatischen Anlage der Aufgaben. Ähnlich verhält es sich mit der PlannerID, die GUID des jeweiligen Planner-Plans. Auch diese benötigen wir zwingend. Die KanalID ist hilfreich für die programmatische Benachrichtigung über die Aufgaben im jeweiligen Kanal des Teams und die SP_URL ist die URL der SharePoint-Site des jeweiligen Teams.

Die Hilfs-Liste Projektteams

Wofür benötigen wir das nun bzw. warum ist das hier angegeben? Da wir programmatisch eine Aufgabe erstellen wollen, benötigen wir zum einen die Angabe des Teams und anschließend die Angabe des Plans innerhalb des Teams. Da das jedoch automatisch passieren soll, können wir bei der Anlage ja nicht auswählen, in welchem Team und Planner-Board die Aufgabe angelegt werden soll. Natürlich könnten wir diese Angaben auch bei der Erstellung abfragen, der Aufwand wäre aber unnötig größer, als einmalig diese Werte direkt in die Hilfsliste einzutragen. Dies kann im Übrigen ebenfalls automatisiert werden.

Die KanalID müssen wir später angeben, wenn die Aufgabe erstellt wurde und eine entsprechende Benachrichtigung in dem jeweiligen Kanal des Teams erfolgen soll. Und last but not least, da wir für jede Aufgabe auch einen Dokumentenordner bereitstellen wollen, benötigen wir die Angabe des Speicherortes.

Die Liste Label

Die Liste Label wäre nicht zwingend erforderlich, war auf die Schnelle jedoch der einfachste Weg…

Die Liste ist quasi nur ein Mapping der Label ID in der Planner Aufgabe zum Label Text, so dass es einfacher ist, diese Label zu identifizieren und entsprechend in der Auswahlliste der Projektaufgaben zu übertragen. Diese Liste könnte natürlich auch als Array in dem Flow selbst vorliegen oder in einer anderen Form.

Die Liste Labels

Die Power Automate Flows

Der erste Flow zur Aufgabenanlage

Der erste Power Automate Flow startet, wenn eine neue Aufgabe in der Gesamtliste angelegt wurde. Im Groben legt dieser Flow eine Aufgabe im Ziel-Team an, mit den notwendigen Parametern aus der Liste und der Hilfsliste, generiert eine eindeutige Referenz-Nr., erstellt einen Ordner für die Dokumentenablage, benachrichtigt das Projekt-Team und das übergeordnete Team, dass eine neue Aufgabe vorliegt.

Hier eine Übersicht aller Schritte des Flows.

Der Flow für die Anlage der Aufgaben

Hier in der Galerie könnt Ihr Euch alle Schritte detaillierter anschauen.

Wenn die Aufgabe angelegt wird, ruft der Flow sich die Details aus der Hilfsliste ab und prüft im nächsten Schritt, welche Sprache der SharePoint-Site zugrunde liegt. Dies ist wichtig bei der Ordner-Erstellung, denn die Standard-Dokumentenbibliothek heißt z.B. auf deutsch „Dokumente“, auf englisch „Documents“. Je nach Spracheinstellung muss dann der entsprechende Wert gesetzt werden.

Im nächsten Schritt wird das Bucket abgerufen, in dem die Aufgabe erstmalig abgelegt werden soll, inkl. einiger Hilfsschritte. Anschließend wird die Referenz-Nr. generiert und der Ordner in der Dokumentenbibliothek angelegt.

Jetzt wird die eigentliche Aufgabe im Planner-Board des jeweiligen Projekt-Teams angelegt und anschließend sofort die bereits verfügbaren Details eingepflegt – der Link zur Dokumentenablage und der Link zum Listeneintrag in der Gesamtliste, sowie die Bemerkungen, etc,

Anschließend werden die Details aus der Planner-Aufgabe in die Liste zurück gespielt, so dass diese auch vollständig aktualisiert wurde. Im letzten Schritt werden noch jeweils eine Benachrichtigung mittels einer Adaptive Card im übergreifenden Team als auch im jeweiligen Kanal des Projekt-Teams abgesetzt. auch diese Adaptive Cards beinhalten einen direkten Link zur Aufgabe selbst und zum Listeneintrag in der Gesamtliste.

Flow zur Aktualisierung der Gesamtliste

Der zweite Flow sorgt dafür, dass Änderungen, die innerhalb der Planner-Aufgaben gemacht werden auch in die Gesamt-Liste zurück gespielt werden. Leider gibt es derzeit keinen Trigger bei Planner, der auslöst, wenn eine Änderung an einer Aufgabe vorgenommen wird. Daher müssen wir uns mit einem zeitlichen Trigger behelfen. Hier der Flow in der Übersicht:

Der zweite Flow

Und alle Schritte detaillierter in der Galerie:

Der Flow startet somit jeden Morgen um 4:00 und prüft alle Aufgaben, die nicht bereits erledigt sind. Natürlich sind hier auch andere Intervalle möglich.

Ebenfalls werden zwei Arrays initialisiert, welche uns nachher die Label und die zugewiesenen Personen liefert, die wir dann in die Liste zurückspielen können.

Im nächsten Schritt werden dann alle gefundenen Aufgaben nach ihren Details gefragt. Ebenfalls rufen wir die zugehörigen Details des entsprechenden Projektteams ab, da wir hier ebenfalls einige Angaben benötigen. Da diese Schritte für jede gefundenen Aufgabe wiederholt werden, müssen wir jedoch vor jedem Durchlauf die Array-Variablen wieder zurücksetzen.

Als erstes rufen wir dann das aktuelle Bucket ab, welchem die Aufgabe zugewiesen ist und ermitteln den dazugehörigen Namen. Nur der Name ist für uns von Wert, mit der ID können wir in unserer Gesamtliste nicht viel anfangen.

Im Anschluss werden die zugewiesene(n) Person(en) abgerufen und hilfsweise in die Variable übertragen. Anschließend passiert das gleiche mit den der Aufgabe zugewiesenen Label. Auch diese werden in der Variable zwischengespeichert.

Im letzten Schritt werden diese Angaben dann in die richtige Aufgabe in der Gesamtliste übertragen, damit auch hier alle Aufgaben entsprechend aktuell sind.

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

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

YouTube-Kanal von #MrPowerMagic