Kalender-Sync mit Power Automate: Termine zwischen Systemen synchronisieren, ohne Duplikate und Endlosschleifen

Kalender-Sync mit Power Automate: Trigger, Aktionen und Konfliktbehandlung, um Termine zuverlässig zwischen Systemen abzugleichen.

Power Automate kann Termine zwischen Kalendern synchronisieren, aber je Flow nur in eine Richtung. Der Office 365 Outlook-Connector liefert dafür einen Änderungs-Trigger sowie Aktionen zum Lesen, Erstellen und Aktualisieren von Ereignissen.

Eine eingebaute beidseitige Synchronisierung gibt es nicht. Wer beide Richtungen braucht, baut zwei getrennte Flows und schützt sie gegen gegenseitiges Auslösen.

Diese Anleitung zeigt die Bausteine, den Aufbau und die Einschränkungen, die Microsoft in der Connector-Dokumentation als bekannte Probleme führt.

Welche Trigger und Aktionen brauchen Sie für einen Kalender-Sync?

Ein Kalender-Sync besteht aus vier Bausteinen: einem Änderungs-Trigger in der Quelle, einer Suchaktion im Ziel sowie je einer Aktion zum Erstellen und Aktualisieren. Alle vier stammen aus dem Office 365 Outlook-Connector.

Baustein | Operation | Was sie liefert

Baustein: Änderungs-Trigger · Operation: Wenn ein Ereignis hinzugefügt, aktualisiert oder gelöscht wird (V3) · Was sie liefert: Ereignisdaten plus ActionType mit den Werten added, updated oder deleted

Baustein: Ziel durchsuchen · Operation: Kalenderansicht von Ereignissen abrufen (V3) · Was sie liefert: Alle Termine samt Serieninstanzen in einem Zeitfenster, maximal 256 je Aufruf

Baustein: Einzelsatz lesen · Operation: Ereignis abrufen (V3) · Was sie liefert: Den aktuellen Stand eines Termins vor dem Überschreiben

Baustein: Schreiben · Operation: Ereignis erstellen (V4) und Ereignis aktualisieren (V4) · Was sie liefert: Neuen Termin anlegen oder bestehenden Termin ändern

Der Trigger begrenzt sein Fenster über die Parameter Incoming Days Tracked und Past Days Tracked. Für Google Calendar gibt es einen eigenen Connector mit vergleichbarem Aufbau.

Wie bauen Sie den Sync-Flow von der Quelle ins Ziel?

Der Flow folgt vier Schritten: Änderung erkennen, Ziel durchsuchen, Treffer zählen, erstellen oder aktualisieren. Microsoft beschreibt dieses Muster im Tutorial Filtern und Kopieren von Daten mit Power Automate.

  1. Quelle überwachen: Der Trigger V3 startet den Flow bei jeder Änderung im Quellkalender.
  2. Zuordnung festlegen: Sie brauchen ein Merkmal, das Quelle und Ziel eindeutig verknüpft. Geeignet sind iCalUId oder eine Kombination aus Betreff und Startzeit.
  3. Ziel durchsuchen: Kalenderansicht von Ereignissen abrufen (V3) mit Start Time, End Time und einer Filterabfrage.
  4. Verzweigen: Ist die Trefferliste leer, folgt Ereignis erstellen (V4). Sonst folgt Ereignis aktualisieren (V4).

Die Prüfung auf einen leeren Treffer schreiben Sie als Ausdruck in eine Bedingung. Die Funktion length() zählt die Einträge im Feld value.

1@equals(length(body('Kalenderansicht_von_Ereignissen_abrufen')?['value']), 0)

Liefert der Ausdruck true, existiert im Ziel noch kein Gegenstück. Diesen Zweig verbinden Sie mit der Erstellen-Aktion, den anderen Zweig mit der Aktualisieren-Aktion.

Wie verhindern Sie eine Endlosschleife zwischen zwei Kalendern?

Zwei Flows, die sich gegenseitig schreiben, erzeugen ohne Schutz eine Endlosschleife. Microsoft schreibt dazu im Tutorial: Änderungen im Ziel werden nicht in die Quelle kopiert, weil beidseitige Synchronisierungen nicht unterstützt werden.

Der Leitfaden Anti-Muster vermeiden nennt zwei Gegenmaßnahmen. Erstens Triggerbedingungen, die nur bei relevanten Änderungen starten. Zweitens die Aktion Beenden, sobald der Flow eine selbst erzeugte Änderung erkennt.

Power Automate warnt beim Speichern eines gefährdeten Flows mit dem Hinweis, dass Aktionen zu einer Endlos-Triggerschleife führen können. Diese Warnung ersetzt keine Prüfung im Flow.

1@equals(triggerOutputs()?['body']?['ActionType'], 'updated')
2@contains(triggerOutputs()?['body']?['categories'], 'Sync-Kopie')
3@equals(triggerOutputs()?['body']?['responseType'], 'organizer')

Die erste Zeile trennt echte Änderungen von Neuanlagen. Die zweite Zeile erkennt eine Kopie, die der Gegenflow selbst geschrieben hat. Markieren Sie dafür jeden erzeugten Termin über das Feld categories.

Die dritte Zeile filtert nach der Rolle. Nur wenn der Postfachbesitzer Organisator ist, schreibt der Flow weiter.

Wie stellen Sie die Parallelität für denselben Termin ein?

Setzen Sie die Parallelitätssteuerung im Trigger auf den Grad 1. Dann verarbeitet Power Automate die Läufe nacheinander statt gleichzeitig. Ohne diese Einstellung startet der Trigger so viele Läufe wie möglich parallel.

Der Artikel Power Automate-Trigger optimieren nennt den Grund. Liest ein Lauf den alten Stand, während ein anderer bereits schreibt, entsteht ein Dirty Read.

In der Codeansicht sieht die Einstellung so aus:

1{
2 "triggers": {
3 "Wenn_ein_Ereignis_geaendert_wird": {
4 "type": "OpenApiConnection",
5 "runtimeConfiguration": {
6 "concurrency": {
7 "runs": 1
8 }
9 }
10 }
11 }
12}

Zwei Nebenwirkungen sollten Sie kennen. Die Parallelitätssteuerung lässt sich nicht mehr entfernen, ohne den Trigger neu anzulegen. Und mit aktiver Steuerung sinkt das Aufteilungslimit für Trigger-Arrays auf 100 Elemente.

Warum sind nach dem Update Ort und Teilnehmende plötzlich leer?

Weil Ereignis aktualisieren (V4) alle nicht übergebenen Felder auf Standardwerte zurücksetzt. Microsoft führt dieses Verhalten in den bekannten Problemen des Connectors und empfiehlt, vorher Ereignis abrufen (V3) auszuführen.

Feld | Pflicht in V4 | Verhalten ohne Wert

Feld: subject · Pflicht in V4: ja · Verhalten ohne Wert: Aktion schlägt fehl

Feld: start, end, timeZone · Pflicht in V4: ja · Verhalten ohne Wert: Aktion schlägt fehl

Feld: location · Pflicht in V4: nein · Verhalten ohne Wert: Wird geleert

Feld: requiredAttendees, optionalAttendees · Pflicht in V4: nein · Verhalten ohne Wert: Werden geleert, Einladungen entfallen

Feld: body · Pflicht in V4: nein · Verhalten ohne Wert: Wird geleert

Feld: categories · Pflicht in V4: nein · Verhalten ohne Wert: Wird geleert, Ihre Sync-Markierung geht verloren

Füllen Sie deshalb auch die Felder, die Sie gar nicht ändern wollen. Die Werte holen Sie aus der vorgelagerten Leseaktion.

Wichtig ist auch die Rolle: Treten Sie als Organisator auf, versendet die Aktion Besprechungsupdates an alle Teilnehmenden.

Wie holen Sie mehr als 256 Termine ab?

Kalenderansicht von Ereignissen abrufen (V3) gibt höchstens 256 Termine je Aufruf zurück. Für größere Kalender blättern Sie über die Parameter Top Count und Skip Count in mehreren Durchläufen.

Durchlauf | Top Count | Skip Count | Ergebnis

Durchlauf: 1 · Top Count: 250 · Skip Count: 0 · Ergebnis: Termine 1 bis 250

Durchlauf: 2 · Top Count: 250 · Skip Count: 250 · Ergebnis: Termine 251 bis 500

Durchlauf: 3 · Top Count: 250 · Skip Count: 500 · Ergebnis: Termine 501 bis 750

Beenden Sie die Schleife, sobald ein Durchlauf weniger Einträge liefert als in Top Count angefordert. Ohne Paging fehlen ältere Einträge im Ziel, und der Flow meldet dabei keinen Fehler.

Typische Fehler und Ursachen

  • Felder gehen nach dem Update verloren. Ursache: Ereignis aktualisieren (V4) setzt jedes ausgelassene Feld auf den Standardwert zurück. Lösung: Vor dem Update Ereignis abrufen (V3) einbauen und alle Werte zurückschreiben. Quelle: Office 365 Outlook-Connector.
  • Der Trigger feuert bei einer Serie vielfach. Ursache: Er löst je Serieninstanz aus, bei 15 Vorkommen also 15 Mal. Lösung: Jede Instanz idempotent verarbeiten und vor dem Erstellen immer erst im Ziel suchen. Quelle: Office 365 Outlook-Connector.
  • Ein angenommener Termin erscheint als neues Ereignis. Ursache: Outlook legt das Ereignis bei der Annahme neu an und vergibt eine neue Id samt neuem Erstellungsdatum. Lösung: Trigger-Ausgabe über responseType filtern, bevor eine Schreibaktion folgt. Quelle: Office 365 Outlook-Connector.
  • Termine außerhalb des Zeitfensters kommen als deleted an. Ursache: Der Trigger meldet jede Änderung außerhalb des eingestellten Intervalls mit ActionType gleich deleted, weil das Fenster nur einmal pro Woche nachgeführt wird. Lösung: Löschungen nie ungeprüft übernehmen, sondern den Termin zuerst über Ereignis abrufen (V3) verifizieren. Quelle: Office 365 Outlook-Connector.
  • Der Flow läuft dauerhaft im Kreis. Ursache: Zwei Flows schreiben gegenseitig in ihre Quelle, ohne Markierung der eigenen Kopien. Lösung: Triggerbedingung setzen und die Aktion Beenden nutzen, sobald eine eigene Kopie erkannt wird. Quelle: Anti-Muster vermeiden.

Häufige Fragen

Unterstützt Power Automate eine echte bidirektionale Kalender-Synchronisierung?

Nein, nicht als eingebaute Funktion. Microsoft weist im Tutorial zum Kopieren von Daten darauf hin, dass Änderungen im Ziel nicht zur Quelle zurückfließen. Für beide Richtungen brauchen Sie zwei Flows mit eigener Konfliktlogik.

Wie verhindere ich, dass mein Kalender-Sync-Flow sich selbst auslöst?

Setzen Sie eine Triggerbedingung und markieren Sie jede erzeugte Kopie im Zielsystem, etwa über das Feld categories. Erkennt der Flow seine eigene Markierung, beendet er sich über die Aktion Beenden, statt erneut zu schreiben.

Warum werden nach einem Update Felder wie Ort oder Teilnehmende leer?

Weil Ereignis aktualisieren (V4) alle nicht gesetzten Felder zurücksetzt. Rufen Sie vorher Ereignis abrufen (V3) auf und übernehmen Sie alle bestehenden Werte, auch wenn sich nur ein Feld ändert.

Wie gehe ich mit wiederkehrenden Terminen im Sync-Flow um?

Der Trigger feuert je Instanz einer Serie separat. Verarbeiten Sie jede Instanz einzeln und idempotent. Der Flow prüft also vor dem Erstellen immer erst, ob der Termin im Ziel bereits existiert.

Was tue ich, wenn ein Kalender mehr als 256 Termine enthält?

Nutzen Sie Top Count und Skip Count, um die Termine in mehreren Durchläufen abzurufen. Das gilt besonders für die erste Vollsynchronisierung großer Kalender.

Wer einen Kalender-Sync produktiv betreibt, sollte diese Konfliktfälle vor dem Livegang durchspielen. Bei NordFlux planen wir Trigger-Bedingungen, Parallelitätssteuerung und Fehlerbehandlung von Anfang an mit ein. Mehr dazu unter Power-Automate-Beratung von NordFlux.

Simon Glowik, Gründer von NordFlux
Über den Autor

Gründer von NordFlux. Sieben Jahre Erfahrung von Web und SEO bis zur Automatisierung im Konzern-Maßstab, heute pragmatisch für den Mittelstand und mit deutscher Datenhoheit.

Zertifizierungen

  • Microsoft zertifiziert — PL-900 und AZ-900
  • UiPath zertifiziert — Automation Developer Associate
Alle Beiträge
Weiterlesen

Verwandte Anleitungen

Kostenlose Erstanalyse

Kalender-Sync mit Duplikaten oder Endlosschleife statt sauberem Abgleich?

Ein Termin-Sync zwischen Systemen wirkt einfach, bis Duplikate, Endlosschleifen oder Race Conditions den Kalender unbrauchbar machen, weil die Konfliktbehandlung fehlt. NordFlux baut Synchronisationsflows, die Quelle und Ziel sauber abgleichen und typische Fallstricke von Anfang an ausschließen. Im ersten Gespräch analysieren wir Ihr Sync-Szenario und zeigen, wo die Risiken liegen.

Power Automate Beratung

  • Sync-Logik ohne Duplikate und Endlosschleifen
  • Race-Condition-sichere Konfliktbehandlung zwischen den Systemen
  • Zuverlässiger Abgleich auch bei parallelen Änderungen
Kalender-Sync mit Power Automate: Anleitung