Event-Erstellung: Ist-Zustand & Anforderungen zur Optimierung

Analyse des aktuellen Prozesses und Anforderungskatalog für eine dynamische, modulare Event-Erstellung

Dieses Dokument ist auch als Word-Datei verfügbar: DOCX herunterladen

Teil 1: Ist-Zustand – Was passiert aktuell bei der Event-Erstellung?

1.1 Übersicht Gesamtprozess

Die Event-Erstellung durchläuft zwei Phasen: eine manuelle Eingabe in der Power App und eine automatische Backend-Verarbeitung durch Power Automate Flows.

Gesamtablauf auf einen Blick

  1. Organizer öffnet die App → Navigiert zu „Create new event“
  2. Wählt einen von 3 Event-Typen (B2Run, JP Morgan, Other Deloitte Event)
  3. Füllt das jeweilige feste Formular aus
  4. Klickt „Submit“ → Datensatz wird in SharePoint-Liste Events gespeichert
  5. SharePoint-Trigger löst den Hauptflow NewEventAdded_SiteProvis aus
  6. Flow erstellt automatisch: Subsite, Teilnehmerliste, Outlook-Termin, Benachrichtigung, Berechtigungen

1.2 Phase 1: Eingabe in der Power App

1.2.1 Event-Typ-Auswahl (EventCreationSelectionScreen)

Der Organizer sieht drei Kacheln mit Logo und Beschreibung:

KachelNavigiert zuSetzt Content Type auf
B2RunEventCreationB2EventFormB2Run Event
J.P. Morgan LaufEventCreationJPMorganJP Morgan Run
Other Deloitte EventsEventCreationOtherEventFormOther Deloitte Event

Jeder Event-Typ hat ein eigenes, fest codiertes Formular (separate YAML-Datei mit eigener DataCard-Struktur).

1.2.2 Formularfelder im Detail

Die drei Formulare teilen sich einen gemeinsamen Kern, haben aber je nach Typ zusätzliche Felder:

Feld Typ Pflicht? B2Run JP Morgan Other
TitleTextJa
OrganizerMulti-PersonJa
StandortChoice / TextB2Run: Nein, JP: Ja
Standort FilterDropdownNein
Event time (Start)DateTimeJa
Event end timeDateTimeJa
Last Register Date TimeDateTimeJa
Last Deregister Event TimeDateTimeJa
Event descriptionMehrzeil. TextJa
Max. parcipientsNumberJa✓ (berechnet)
Event imageAttachmentNein
Content typeDropdown (hidden)Nein (auto)
Current parcipientsNumberNein (auto: 0)
Wait listNumberNein (auto: 0)
Nur B2Run
Max Fun-runnerNumberJa
Durchstarter visibleToggleNein
Max DurchstarterNumberBedingt
StartblockMulti-ChoiceJa
T-Shirt Größe visibleToggleNein
T-ShirtgrößenMulti-ChoiceBedingt
Nordic Walker visibleToggleNein
Age Group visibleToggleNein
Nur Other Event / OtherEventForm
Audience MailTextNein
Allergien visibleToggleNein
Essenswünsche visibleToggleNein
Hotelwunsch visibleToggleNein
Info Hotel / Einzelzimmer / Doppelzimmer / Location HotelDiverseNein
Frage Freitextfeld 1–7TextNein
Info Freitextfeld 1–7TextNein
Frage Dropdownfeld 1–2TextNein
Dropdownfeld 1–2TextNein
Info Dropdownfeld 1–2TextNein

1.2.3 Validierung & Submit

Alle drei Formulare verwenden die gleiche Logik:

Submit-Button wird erst aktiv, wenn alle Pflichtfelder ausgefüllt sind (DisplayMode-Prüfung auf IsBlank/IsEmpty).

Bei Klick auf Submit:

  1. SubmitForm(Form) – Datensatz wird in SharePoint-Liste Events geschrieben
  2. ResetForm(Form) – Formular wird zurückgesetzt
  3. Navigate(StartScreen) – Weiterleitung zum Startbildschirm
  4. Notify("Das Event wurde erfolgreich angelegt...") – Erfolgsmeldung

1.3 Phase 2: Automatische Backend-Verarbeitung (Power Automate)

1.3.1 Hauptflow: NewEventAdded_SiteProvis

Wird automatisch ausgelöst durch SharePoint-Trigger „When an item is created“ auf der Events-Liste (Prüfintervall: 1 Minute). Besteht aus 25 Actions in 6 Clustern:

ClusterWas passiertTechnische Details
1. Initialisierung Event-Status wird auf „Under Construction“ gesetzt, 6 Workflow-Variablen werden initialisiert SharePoint PatchItem + 5x InitializeVariable (varSiteTitle, varSiteURL, varSubject-Name, varFinalURL, varContentTypeName)
2. URL-Bereinigung Event-Titel wird von Sonderzeichen bereinigt für gültige SharePoint-URL Compose erstellt Filter-Array (Leerzeichen, :, #, %, ", *, ?, /, \, |), Foreach-Loop entfernt jedes Zeichen iterativ
3. Subsite erstellen Eigene SharePoint-Subsite für das Event wird angelegt HTTP POST an /_api/web/webinfos/add mit Template STS#3 (Team Site). Response wird geparst für ServerRelativeUrl
4. Template anwenden Teilnehmerliste mit passendem Spalten-Schema wird erstellt Switch auf Content Type → Child Flow ApplyTemplateB2Run oder ApplyTemplateOtherEvent
5. Outlook-Termin Kalender-Event in Shared Mailbox wird erstellt (Basis für spätere Teilnehmer-Einladungen) Child Flow CreateOutlookEventSharedMailbox. Zurückgegebene Outlook-Event-ID wird in Events-Liste gespeichert. URL bekommt /Lists/Teilnehmerliste angehängt
6. Benachrichtigung & Berechtigungen Organizer erhält Bestätigungsmail mit Link. Bei definierter Audience werden Zugriffsrechte gesetzt Logos laden (Data-URI), Foreach über Organizer → E-Mail aus Shared Mailbox. Condition prüft Audience Mail → Child Flow EventPermission

1.3.2 Child Flow: ApplyTemplateB2Run

Empfängt die Subsite-URL und erstellt die Teilnehmerliste via SharePoint REST API:

  1. POST an /_api/web/lists → erstellt Liste „Teilnehmerliste“ (Template 100)
  2. Einzelne HTTP-Requests erstellen Felder: Teilnehmername, Email, Status (Choice: Registered/Waitlist/Cancelled), Nr, CheckIn
  3. 7 Freitextfelder (Freitextfeld1–7) werden immer erstellt
  4. Standard-Ansicht wird abgerufen, Erfolg wird bestätigt

1.3.3 Child Flow: ApplyTemplateOtherEvent

Identische Struktur wie ApplyTemplateB2Run. Erstellt die gleichen Basis- und Freitextfelder. Separater Flow für potenzielle zukünftige Unterscheidung.

1.3.4 Child Flow: CreateOutlookEventSharedMailbox

Empfängt Event-Details (Titel, Beschreibung, Start, Ende, Ort) → erstellt Outlook-Kalendereintrag via Office 365 Connector → gibt Event-ID zurück.

1.3.5 Child Flow: EventPermission

Wird nur aufgerufen wenn Audience Mail gesetzt ist:

  1. Bestehende Freigaben entfernen
  2. Audience-Gruppe erhält Lesezugriff
  3. Organizer erhält Vollzugriff

1.4 Datenmodell

1.4.1 SharePoint-Liste: Events (Master)

Enthält 38+ Spalten, unabhängig davon ob der Event-Typ sie benötigt:

Titel, Status, Teilnehmerliste URL, Event image, Current parcipients, Max. parcipients, Wait list, Outlook EventID, T-Shirtgrößen, Event end time, ID, Last Deregister Event Time, Organzier, Erstellt von, Max Fun-runner, Current Fun-Runner, Max Durchstarter, Inhaltstyp, Standort, Standort Filter, Last Register Date Time, Startblock, T Shirt Größe visible, Allergien visible, Essenswünsche visible, Audience, Frage Freitextfeld 1–2, Dropdownfeld 1–2, Frage Dropdownfeld 1–2, Info Freitextfeld 1–2, Info Dropdownfeld 1–2, Audience Mail, Location Hotel, Event description

1.4.2 SharePoint-Liste: Teilnehmerliste (pro Event-Subsite)

Jedes Event bekommt eine eigene Teilnehmerliste mit immer denselben Spalten:

SpalteTypImmer vorhanden?
TeilnehmernameTextJa – immer
EmailTextJa – immer
StatusChoiceJa – immer
Nr.NumberJa – immer
CheckInBooleanJa – immer
AnredeTextJa – immer
Vorname / NachnameTextJa – immer
HotelRequired / RoomType / PreferredRoommateDiverseJa – auch wenn nicht benötigt
Allergies / FoodPreferencesTextJa – auch wenn nicht benötigt
TShirtGroesseTextJa – auch wenn nicht benötigt
Freitextfeld1–7TextJa – immer alle 7
Dropdownfeld1TextJa – auch wenn nicht benötigt
LocationHotelTextJa – auch wenn nicht benötigt
JobTitle / CompanyName / Department / Office*TextJa – immer
Abmeldung amDateTimeJa – immer

1.5 Anmelde- und Abmeldeprozess auf Basis der Event-Erstellung

Nach der Event-Erstellung (Subsite + Teilnehmerliste + Outlook-Termin) steht das Event für Teilnehmer zur Anmeldung bereit. Der gesamte Anmelde- und Abmeldeprozess basiert auf der bei der Event-Erstellung angelegten Teilnehmerliste und wird durch mehrere Power Automate Flows gesteuert.

1.5.1 Anmeldung (RegisterParticipant)

Wenn ein Teilnehmer sich über die Power App für ein Event anmeldet, wird ein Eintrag in einer Queue-Liste erstellt. Der Flow RegisterParticipant (SharePoint-Trigger, 5 Minuten Intervall) verarbeitet diese Einträge:

Entscheidungslogik

  1. Event-Daten laden: Aktuelle Teilnehmerzahl und Maximalkapazität aus der Events-Liste abrufen
  2. Kapazitätsprüfung: Ist Current parcipients < Max. parcipients?
  3. Platz frei → Status „Registered“: Eintrag in Teilnehmerliste mit Status „Registered“, Bestätigungsmail über Shared Mailbox, Outlook-Kalender-Eintrag via Child Flow RegisterOutlookEventParticipant
  4. Kein Platz → Status „Waitlist“: Eintrag in Teilnehmerliste mit Status „Waitlist“, Wartelisten-Info an Teilnehmer

Wichtig: Die Anmeldedaten werden in die bei der Event-Erstellung fest angelegte Teilnehmerliste geschrieben. Da diese immer alle möglichen Spalten enthält (vgl. Abschnitt 1.4.2), werden auch Felder befüllt, die für das jeweilige Event gar nicht relevant sind – und umgekehrt bleiben nicht benötigte Spalten leer.

1.5.2 Anmeldeformular (Teilnehmer-Seite)

Das Anmeldeformular in der Power App ist aktuell statisch aufgebaut. Die App zeigt abhängig vom Event-Typ und den „visible“-Toggle-Spalten in der Events-Liste bestimmte Felder an:

Die Steuerung erfolgt über If(LookUp(Events, ID=varEventID, 'T Shirt Größe visible'), DisplayMode.Edit, DisplayMode.Disabled) – jedes bedingte Feld hat eine eigene Sichtbarkeitslogik.

1.5.3 Abmeldung (DeregisterParticipant)

Bei einer Abmeldung wird der Flow DeregisterParticipant (SharePoint-Trigger, 5 Minuten Intervall) ausgelöst:

Abmeldeprozess mit automatischer Wartelisten-Nachrückung

SchrittAktionErgebnis
1 Teilnehmer A meldet sich ab Status → „Cancelled“, Outlook-Termin wird entfernt
2 Warteliste wird geprüft Teilnehmer B gefunden (ältester Eintrag, FIFO-Prinzip)
3 Teilnehmer B rückt nach Status → „Registered“
4 Benachrichtigung Bestätigungsmail + Outlook-Kalendereintrag für B

FIFO-Prinzip: Die Nachrückung erfolgt strikt nach Eingangsreihenfolge – wer sich zuerst auf die Warteliste gesetzt hat, rückt zuerst nach.

1.5.4 Unterstützende Flows

FlowTriggerFunktion
CheckRegistrationStatusParticipant Power App Prüft den Anmeldestatus eines Nutzers (registered / waitlist / not_registered). Steuert die Anzeige des passenden Buttons in der App (Anmelden / Abmelden / Von Warteliste entfernen).
GetWaitinglistPosition Power App Ermittelt die aktuelle Position eines Teilnehmers auf der Warteliste (FIFO-Sortierung nach Erstelldatum). Position 1 = nächster Nachrücker.
GetParticipantEvents Power App Listet alle Events auf, für die ein Nutzer angemeldet ist oder auf der Warteliste steht („Meine Events“-Ansicht).
RegisterOutlookEventParticipant Child Flow Fügt einen Teilnehmer zum bestehenden Outlook-Kalendereintrag hinzu (Microsoft Graph API). Wird von RegisterParticipant und DeregisterParticipant (Nachrückung) aufgerufen.

1.5.5 Zusammenspiel Event-Erstellung ↔ Anmeldung

Die bei der Event-Erstellung getroffenen Entscheidungen bestimmen direkt das Verhalten der Anmeldeflows:

Teil 2: Identifizierte Probleme

P1: Starre, dreifach duplizierte Formulare

Es existieren 3 separate Formular-Screens (B2Run: ~1.900 Zeilen YAML, Other: ~3.500 Zeilen, JP Morgan: ~1.200 Zeilen) mit großer Überschneidung. Jede Änderung an gemeinsamen Feldern muss in allen drei Formularen nachgezogen werden.

P2: 4-facher Änderungsaufwand bei Feld-Erweiterungen

Wenn ein neues Feld benötigt wird (z.B. „Dietary Requirements“), muss es an 4 Stellen angepasst werden:

  1. Event-Erstellungsformular in der Power App (DataCard hinzufügen)
  2. Event-Erstellungsflow (Template-Flow muss Spalte in Teilnehmerliste erstellen)
  3. Anmeldeformular in der Power App (Teilnehmer müssen das Feld sehen und ausfüllen)
  4. Anmeldeflow (RegisterParticipant muss das Feld in die Teilnehmerliste schreiben)

P3: Überladene Teilnehmerliste

Jedes Event erhält immer alle möglichen Spalten in der Teilnehmerliste – auch wenn es ein kleines Firmenfest ist, das nur Name und E-Mail braucht. Das führt zu unübersichtlichen Listen mit vielen leeren Spalten.

P4: Keine Vorschau der Anmeldeseite

Der Organizer sieht beim Erstellen eines Events nicht, wie die Anmeldeseite für Teilnehmer später aussehen wird. Fehler in der Konfiguration fallen erst auf, wenn Teilnehmer sich anmelden.

P5: Keine nachträgliche Änderung

Einmal erstellte Events können nicht über die App angepasst werden. Wenn z.B. ein zusätzliches Feld gebraucht wird oder sich die Max-Teilnehmerzahl ändert, muss dies manuell in SharePoint geändert werden.

P6: Zwei nahezu identische Template-Flows

ApplyTemplateB2Run und ApplyTemplateOtherEvent haben die gleiche Struktur und erstellen die gleichen Felder. Zwei Flows zu pflegen für faktisch dieselbe Logik erhöht den Wartungsaufwand unnötig.

Teil 3: Anforderungskatalog – Dynamische Event-Erstellung

3.1 Übersicht Ziel-Architektur

Ist-Zustand

  • 3 feste Formulare
  • 2 Template-Flows
  • Immer alle Spalten in Teilnehmerliste
  • Keine Vorschau
  • Keine nachträgliche Änderung
  • 4-facher Änderungsaufwand

Soll-Zustand

  • 1 dynamisches Formular mit Menükarten-Prinzip
  • 1 universeller Template-Flow mit dynamischer Spaltenliste
  • Teilnehmerliste nur mit benötigten Spalten
  • Live-Vorschau der Anmeldeseite
  • Event nachträglich bearbeitbar
  • 1-facher Änderungsaufwand (Feld-Konfiguration steuert alles)

3.2 Detaillierte Anforderungen

Teil 4: Architekturskizze Soll-Zustand

4.1 Ablauf Event-Erstellung (Neu)

  1. Organizer öffnet App → Klickt „Neues Event erstellen“
  2. Optional: Vorlage wählen (B2Run, Firmenfest, Leer, ...) → Formular wird vorbefüllt
  3. Basisfelder ausfüllen (Titel, Organizer, Datum, Max. Teilnehmer, Beschreibung, Bild)
  4. Module aus Menükarte hinzufügen per „+“-Klick:
    • z.B. + T-Shirt → Konfiguration: Welche Größen?
    • z.B. + Hotel → Konfiguration: Nur Einzelzimmer? Standort?
    • z.B. + Freitextfeld → Eingabe: Frage + Info-Text
  5. Vorschau prüfen: Anmeldeseite wird live im Vorschau-Panel angezeigt
  6. Submit: Event + Feld-Konfiguration werden gespeichert
  7. Flow wird ausgelöst:
    • Subsite erstellen (wie bisher)
    • Universeller Template-Flow liest Feld-Konfiguration → erstellt nur benötigte Spalten
    • Outlook-Termin erstellen (wie bisher)
    • Benachrichtigung + Berechtigungen (wie bisher)

4.2 Ablauf Teilnehmer-Anmeldung (Neu)

  1. Teilnehmer öffnet Event in der App
  2. App liest Feld-Konfiguration des Events
  3. Anmeldeformular wird dynamisch generiert – nur die konfigurierten Felder
  4. Teilnehmer füllt aus und klickt „Anmelden“
  5. RegisterParticipant-Flow liest Konfiguration und schreibt nur relevante Felder

4.3 Ablauf Event nachträglich bearbeiten (Neu)

  1. Organizer öffnet bestehendes Event in der App
  2. Formular lädt im Edit-Modus mit bestehender Konfiguration
  3. Organizer kann Basis-Daten ändern und Module hinzufügen/entfernen
  4. Bei „Speichern“: Flow prüft Delta (neue Spalten? entfernte Spalten?) und passt Teilnehmerliste an
  5. Outlook-Termin wird bei Bedarf aktualisiert

4.4 Neues Datenmodell (Entwurf)

KomponenteBeschreibung
Events-Liste (angepasst) Enthält nur noch Basis-Felder + eine Spalte FieldConfig (JSON-String oder Verweis auf Config-Liste). Alle event-typ-spezifischen „visible“-Toggle-Spalten entfallen.
FieldConfig (neu) Speichert pro Event, welche Module/Felder aktiv sind. Mögliche Struktur:
[{"module": "tshirt", "options": ["S","M","L","XL"], "required": true}, {"module": "freitext", "label": "Allergie?", "info": "Bitte angeben"}, ...]
Teilnehmerliste (dynamisch) Wird pro Event individuell zusammengestellt. Nur Basis-Spalten + die aus der FieldConfig abgeleiteten Spalten.

Teil 5: Was entfällt / sich vereinfacht

AktuellNeuÄnderung
3 Formular-Screens (B2Run, JP Morgan, Other) 1 dynamischer Formular-Screen Entfällt: 2 Screens + ~4.700 Zeilen YAML
EventCreationSelectionScreen (Event-Typ-Auswahl) Optionale Vorlagen-Auswahl im neuen Formular Entfällt als separater Screen
ApplyTemplateB2Run (Child Flow) 1 universeller ApplyTemplateDynamic Flow 2 Flows → 1 Flow
ApplyTemplateOtherEvent (Child Flow)
Switch-Logik im Hauptflow (Content Type) Entfällt – universeller Flow wird immer aufgerufen Vereinfacht
~20 „visible“-Toggle-Spalten in Events-Liste 1 FieldConfig-Spalte (JSON) Entfällt: ~20 Spalten
Statisches Anmeldeformular Dynamisches Anmeldeformular aus FieldConfig Einmalig umbauen, danach wartungsfrei
4-facher Änderungsaufwand bei neuem Feld 1x Modul-Definition anlegen 75% weniger Aufwand

Teil 6: Zusammenfassung der Anforderungen

IDAnforderungPrioritätLöst Problem
ANF-01Dynamisches Formular mit Menükarten-PrinzipHochP1, P2
ANF-02Feld-Konfiguration als Single Source of TruthHochP2, P3
ANF-03Dynamische Teilnehmerliste (nur benötigte Spalten)HochP3
ANF-04Live-Vorschau der AnmeldeseiteHochP4
ANF-05Nachträgliche Bearbeitung von EventsHochP5
ANF-06Universeller Template-FlowMittelP6, P2
ANF-07Dynamisches AnmeldeformularHochP2, P3
ANF-08Übersichtliches UI-DesignMittelP1
ANF-09Event-Vorlagen / SchnellstartNice-to-haveP1
ANF-10RückwärtskompatibilitätMittel