Problembehandlung

Problembehandlung bei der Exchange Synchronisation

Finden von Reservationen mit Synchronisationsfehlern

Unter Listen –> Buchungen können Buchungen gefunden werden, bei welchem die Synchronisation fehlgeschlagen hat.

  • Buchungen mit Synchronisationsproblemen
  • Serienbuchungen mit Synchronisationsproblemen

In diesem Fall annulliert man am Besten die Buchung und erstellt eine neue.

Mit der Option

  • Buchungen mit fehlender Back-Synchronisation

findet man Buchungen, welche über das Addin in Outlook erstellt wurden, dann aber von Rooms nicht in Exchange gefunden wurden. Liegt das Erstelldatum der Buchung lange in der Vergangenheit, ist wohl die dazugehörige Outlook Buchung annulliert worden (bevor die Back-Synchronisation durgeführt wurde).

Wie kommt es zu einem Konfikt / fehlgeschlagener Synchronisation

Einzelbuchung

Eine Einzelbuchung mit dem Status Unsynchronisierbar –> Reservation.Unsynchronisierbar = 1, erhält keine direkten Updates mehr von Exchange. Updates von Rooms werden aber weiterhin nach Exchange synchronisiert.

Eine Einzelbuchung wird unsynchronisierbar wenn eine Notifikation von Exchange, welche wichtige Änderungen vornimmt, 5x nacheinander nicht verarbeitet werden konnte. Diese Anzahl von Updates, bis die Sync deaktiviert wird, kann in den RoomsAppSettings konfiguriert werden:

	<!--Stop sync after continuous failed updates to a reservation-->
	<add key="StopSyncAfterFailedAttempts" value="5" />

Beispiel:

  • Eine Reservation wird 5x nacheinander auf eine in dem Raum bereits besetzte Zeit verschoben.

Serie

Bei der Serie gibt es zwei verschiedene Konflikt Status:

UnsynchronizableUnrecoverableRoomsChanges –> Serie.SyncStatus = 1 UnsynchronizableUnrecoverableRoomsChanges –> Serie.SyncStatus = 2

Tritt einer dieser Status auf, wird die Serie komplett nicht mehr synchronisiert. Zu diesem Status kann es kommen wenn von Rooms aus Änderungen gemacht wurden, die nicht mehr synchronisiert werden können. Oder wenn, wie bei den Einzelbuchungen, wichtige Änderungen von Exchange 5x nacheinander nicht übernommen werden konnten.

Definitionen

  • Appiontment: Termin in Exchange/Outlook
  • Reservation: Termin in Rooms

Nicht unterstützte Verhalten in Outlook

Backsync Dienst

Der Backsync Dienst wird aktiv, wenn über das Addin eine Reservation/Appointment erstellt wird. Der Backsync dienst verknüpft die Reservation mit dem Appointment in Exchange.

Werden in der Zwischenzeit (zwischen erstellen des Termins und ausführen der Backsync) Änderungen am Termin vorgenommen, muss der Backsync Dienst dies abhandeln. Rooms ist dabei der Master. Dieses Verhalten kann mit der Konfiguration: “BackSync delay in minutes” getestet werden.

Vorbereitung

Möglicher FehlerResultatIntervallLogmeldung
Keine LizenzenAbbruch5 Minuten[BackSync] - Missing license
Person wird nicht gefundenAktion wird gelöscht
Person SyncMode auf NoneAktion wird gelöscht
Person Mailbox leerAktion wird gelöscht
Reservation ist in der VergangenheitAktion wird gelöscht
Serie ist komplett in der VergangenheitAktion wird gelöscht
Aktion keiner Reservation zugeteiltAktion wird gelöscht
Exception beim Suchen von ReservationIntervall erhöhtBackSyncIntervall[BackSync] - Error occured trying to find Reservation {0}
Reservation wird nicht gefundenAktion wird gelöscht[BackSync] - Reservation {0} was not found in Rooms BackSync failed

Aktion für Backsync einzelner Reservation

Möglicher FehlerResultatIntervallLogmeldung
Exception beim Durchführen der Backsync
–> Exchange Exception
Intervall erhöhtBackSyncIntervall[BackSync] - Exchange Error occured while trying to find or save Appointment, related Reservation: {0}, Mailbox: {1}"
Exception beim Durchführen der Backsync
–> DB Timeout
Service wird 5 Minuten gestoppt, beim 2. mal wird Aktion gelöscht
Exception beim Durchführen der Backsync
–> Exception
Intervall erhöhtBackSyncIntervall[BackSync] - Error occured during BackSync of Reservation: {0}
Appointment kann nicht gefunden werdenIntervall erhöhtBackSyncIntervall
Validation Errors beim Speichern der ReservationIntervall erhöhtBackSyncIntervall[BackSync] - Error occured while trying to change reservation {0}: {1}

Aktion für Backsync wenn Reservation Teil einer Serie ist

Möglicher FehlerResultatIntervallLogmeldung
Exception beim durchführen der Backsync
–> Exchange Exception
Intervall erhöhtBackSyncIntervall[BackSync] - Exchange Error occured while trying to find or save Appointment, related Serie: {0}, Mailbox: {1}
Exception beim durchführen der Backsync
–> DB Timeout
Service wird 5 Minuten gestoppt, beim 2. mal wird Aktion gelöscht
Exception beim durchführen der Backsync
–> Exception
Intervall erhöhtBackSyncIntervall[BackSync] - Error occured during BackSync of Serie: {0}
Master Appointment kann nicht gefunden werdenIntervall erhöhtBackSyncIntervall
Weniger Appointments als Reservationen vorhanden
–> Buchungen werden annulliert –> Validationserror beim Annullieren
[BackSync] - Error occured while trying to cancle reservation {0}: {1}
Validation Errors beim Speichern von ReservationAktion wird gelöscht[BackSync] - Error occured while trying to change reservation {0} in serie: {1}: {2}

Collaboration Dienst

Der Collaboration Dienst ist das Hauptstück der Synchronisation, er behandelt sowohl Subscription Updates von Exchange sowie auch Updates auf seiten Rooms.

Vorbereitung

Möglicher FehlerResultatIntervallLogmeldung
Keine LizenzenAbbruch5 Minuten[CollaborationService] - Missing license
Reservation ist in der VergangenheitAktion wird gelöscht
Serie ist komplett in der VergangenheitAktion wird gelöscht
Person wird nicht gefundenAktion wird gelöscht
Person SyncMode auf NoneAktion wird gelöscht
Person Mailbox leerAktion wird gelöscht

Vorbereitung für Exchange Subscription Update (IsSubscription = true)

Möglicher FehlerResultatIntervallLogmeldung
Keine Reservation verknüpft
Kommunikationsproblem mit Exchange beim suchen von Appointment
Intervall erhöhtExchangeManagerException[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Keine Reservation verknüpft
Appointment wird in Exchange nicht gefunden
Aktion wird gelöscht
Keine Reservation verknüpft
Appointment besitzt keine Rooms Identifizierung(AppointmentOid)
Aktion wird gelöscht
Keine Reservation verknüpft
Reservation oder Serie wird über AppointmentOid nicht gefunden
Aktion wird gelöscht
Reservation verknüpft wird nicht gefundenAktion wird gelöscht[CollaborationService] - Reservation {0} not found in rooms, subscription update will be removed
Bei IstSerieübernahme: Serie existiert nicht in RoomsAktion wird gelöscht
Bei IstSerieübernahme: Serie befindet sich in einem unsynchronisierbaren StatusAktion wird gelöscht

Exchange Subscription Update für das Löschen eines Termins (IsSubscription = true, IsDelete = true)

Möglicher FehlerResultatIntervallLogmeldung
Reservation/Serie kann nicht annulliert werdenSync Error Mail wird versendet –> Aktion wird gelöscht[CollaborationService] - Serie/Reservation {0} could not be cancled in rooms: {1}
Nach Annullation Reservation/Serie Exception bei Reset der SyncAktion wird gelöscht[CollaborationService] - Failed to reset SyncProperties of Serie/Reservation {0}

Exchange Subscription Update für einen Termin erhalten (Einzelreservation) (IsSubscription = true)

Möglicher FehlerResultatIntervallLogmeldung
Reservation ist nicht mehr synchronisert (keine SyncItemId)Aktion wird gelöscht[CollaborationService] - Reservation {0} is not synced anymore, ingoring subscription update
Appointment wird nicht gefunden
Exception
Intervall erhöhtExchangeManageException[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Appointment wird nicht gefundenAktion wird gelöscht[CollaborationService] - Reservation subscription update {0}, appointment not found, ingoring subscription update
Änderungen von Appointment kann nicht auf Reservation übernommen werden
–> Exception bei Update
Intervall erhöhtCollaborationAktionHandler Exception[CollaborationService] - Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Änderungen von Appointment kann nicht auf Reservation übernommen werdenAktion wird umgeschrieben von Subscription auf Update mit MeetingRequestUpdateType = SendToAll
- ErrorMail wird versendet

Exchange Subscription Update für einen Termin erhalten (Serie) (IsSubscription = true)

Möglicher FehlerResultatIntervallLogmeldung
Serie ist nicht mehr synchronisert (keine SyncItemId)Aktion wird gelöscht[CollaborationService] - Serie {0} is not synced anymore, ingoring subscription update
Appointment wird nicht gefunden
Exception
Intervall erhöhtExchangeManageException[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Appointment wird nicht gefundenAktion wird gelöscht[CollaborationService] - Serie subscription update {0}, appointment not found, ingoring subscription update
Es exisiteren mehr Appointments als Reservationen in RoomsAktion wird umgeschrieben von Subscription auf Update mit MeetingRequestUpdateType = SendToAll
- ErrorMail wird versendet
[CollaborationService] - Serie {0}, Subscription update, more appointments in exchange than in rooms appointment will be reset
[CollaborationService] - Validation Error occured during Sync but trying again: {0}
Reservation muss annulliert werden
–> Exception bei Annullierung
Intervall erhöhtCollaborationAktionHandler ExceptionException [CollaborationService] - Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Reservation muss annulliert werden
–> Validierungserror bei Annullierung
Aktion wird umgeschrieben von Subscription auf Update mit MeetingRequestUpdateType = SendToAll
- ErrorMail wird versendet
[CollaborationService] - Validation Error occured during Sync but trying again: {0}
Änderung eines Appointments kann nicht auf Reservation übernommen werden
–> Exception bei Update
Intervall erhöhtCollaborationAktionHandler Exception[CollaborationService] - Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Änderung eines Appointments kann nicht auf Reservation übernommen werden
–> Validierungserror bei Update
Aktion wird umgeschrieben von Subscription auf Update mit MeetingRequestUpdateType = SendToAll
- ErrorMail wird versendet
[CollaborationService] - Validation Error occured during Sync but trying again: {0}

Aktion für das Löschen eines Appointments nach Exchange, Serie/Reservation gelöscht/annulliert (IsDelete = true)

Möglicher FehlerResultatIntervallLogmeldung
Keine SyncItemId oder AppointmentOidAktion wird gelöscht[CollaborationService] - Cannot remove appointment, no syncitemid or appointmentoid
Exception beim Löschen des AppointmentsIntervall erhöhtExchangeManagerException[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Löschen des Appointments ist nicht erfolgreichAktion wird gelöscht[CollaborationService] - Failed removing appointment on Exchange {0}

Aktion für Update von Reservation/en nach Exchange, Vorbereitung

Möglicher FehlerResultatIntervallLogmeldung
Keine Reservation verknüpftAktion wird gelöscht
Exception beim Suchen der ReservationIntervall erhöhtCollaborationAktionHandler Exception
Reservation kann nicht gefunden werdenAktion wird gelöscht[CollaborationService] - Reservation not found in Rooms: {0}
Keine SyncItemId aber AppointmentOid gesetztWarten auf Backsync, Intervall erhöhtIntervall 0-5 jede Minute, Intervall 6 - 48 alle 30 minuten
Serie mit unsychronisierbarem StatusAktion wird gelöscht

Aktion für Update von Reservation nach Exchange, neue Reservation (SyncItemId leer)

Möglicher FehlerResultatIntervallLogmeldung
Exchange Exception beim Erstellen von AppointmentIntervall erhöhtCollaborationAktionHandler ExchangeManagerException[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Exception beim Erstellen von AppointmentIntervall erhöhtCollaborationAktionHandler Exception[CollaborationService] - Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Exception beim Speichern der Reservation (SyncItemId / AppointmentOid)Appointment wird wieder gelöschtCollaborationAktionHandler Exception[CollaborationService] - Reservation: {0} could not be saved after creation on Exchange, removing Appointment
[CollaborationService] - Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}

Aktion für Update von Reservation nach Exchange, Reservation aktualisiert (SyncItemId nicht leer)

Möglicher FehlerResultatIntervallLogmeldung
Exchange Exception beim Finden von AppointmentIntervall erhöhtCollaborationAktionHandler ExchangeManagerException[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Appointment nicht gefundenBei intervall > 1 wird Sync deaktiviert, intervall erhöhtCollaborationAktionHandler ExchangeManager (DataProcessing)[CollaborationService] - Appointment not found on Exchange for reservation: {0}
Appointment ist noch Teil einer Serie (in Rooms nicht mehr)Sync wird zurückgesetzt / Appointment wird gelöscht (Exception möglich) / Intervall erhöht2x alle 5 Minuten[CollaborationService] - Simple reservation in rooms is serie in Exchange, removing appointment re-sync reservation: {0}
Exchange Exception beim Speichern von AppointmentIntervall erhöhtCollaborationAktionHandler ExchangeManagerException[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Exception beim Speichern von AppointmentIntervall erhöhtCollaborationAktionHandler Exception[CollaborationService] - Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}

Aktion für Update von Serie nach Exchange, neue Serie (SyncItemId leer)

Möglicher FehlerResultatIntervallLogmeldung
Serie mit unsychronisierbarem StatusAktion wird gelöscht
Exchange Exception beim Speichern von AppointmentIntervall erhöhtCollaborationAktionHandler ExchangeManagerException[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Appointment konnte nicht richtig erstellt werdenIntervall erhöhtCollaborationAktionHandler ExchangeManager (DataProcessing)
[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Exception beim Erstellen von Serie AppointmentsMaster Appointment wird wieder gelöschtCollaborationAktionHandler ExchangeManager (DataProcessing)[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Einzelne Reservationen können nicht synchronisiert werdenSeriestatus wird auf Unsynchronisierbar gesetzt
Aktion wird gelöscht
[CollaborationService] - Serie {0}, sync is broken, reservations with no syncitemid: {1}, disabling sync

Aktion für Update von Serie nach Exchange, Serie aktualisiert (SyncItemId nicht leer)

Möglicher FehlerResultatIntervallLogmeldung
Serie mit unsychronisierbarem StatusAktion wird gelöscht
Exchange Exception beim Finden von AppointmentIntervall erhöhtCollaborationAktionHandler ExchangeManagerException[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Appointment nicht gefundenBei intervall > 1 wird Sync deaktiviert, intervall erhöhtCollaborationAktionHandler ExchangeManager (DataProcessing)[CollaborationService] - Appointment not found on Exchange for serie: {0}
Appointment ist nicht SerieMasterSync wird zurückgesetzt / Appointment wird gelöscht (Exception möglich) / Intervall erhöht2x alle 5 Minuten[CollaborationService] - Simple reservation in rooms is serie in Exchange, removing appointment re-sync reservation: {0}
Appointment konnte nicht richtig erstellt werdenIntervall erhöhtCollaborationAktionHandler ExchangeManager (DataProcessing)
[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Exception beim erstellen von Serie AppointmentsMaster Appointment wird wieder gelöschtCollaborationAktionHandler ExchangeManager (DataProcessing)[CollaborationService] - Exchange Error trying to sync Reservation: {0}, IsSubscription: {1}, IsDelete: {2}, IsSerieUebernahme: {3}, Mailbox: {4}
Einzelne Reservationen können nicht synchronisiert werdenSeriestatus wird auf Unsynchronisierbar gesetzt
Aktion wird gelöscht
[CollaborationService] - Serie {0}, sync is broken, reservations with no syncitemid: {1}, disabling sync

Push subscription Dienst

Die einzige Aufgabe des Push subscription Dienstes ist es, auf Exchange eine Subscription zu erstellen/aktualisieren. Dabei wird die entsprechende URL z.B. http://rooms.example.com/Webservices/SyncNotification.svc mitgegeben.

Nach erfolgreicher Subscription sendet Exchange Subscription Updates nach Rooms.

Neue Subscriptions erstellen/aktualisieren

Möglicher FehlerResultatIntervallLogmeldung
Subscription ist keine Person/RessourceException[PushSubscriptionService] - Error while creating a subscription for an unkown entity:
Subscriber hat inzwischen SyncMode NoneSync wird deaktiviert
Exception beim Erstellen des Push Subscription
–> ExchangeManagerException
In einer Minute wird erneut probiert[PushSubscriptionService] - {0} {1}, subscription exchange error, ({2} - {3}) ({4} - {5}).
Exception beim erstellen des Push Subscription
–> DB Timeout
Exception wird weitergeworfen
Exception beim erstellen des Push Subscribers
–> Exception
Sync wird deaktiviert[PushSubscriptionService] - {0} {1}, subscription error, ({2} - {3}).
Push subscription ist nicht erfolgreichIn einer Minute wird erneut probiert[PushSubscriptionService] - Subscription: {0} {1} is invalid: ‘{2}’.

Well Known Folders aktualisieren (Deleted-Items )

Möglicher FehlerResultatIntervallLogmeldung
Exception beim Abonnieren der FoldersIn einer Minute wird erneut probiert[PushSubscriptionService] - DeletedItemsFolder Subscription for {0} {1}, failed, ({2} - {3})
DB Timeout beim Abonnieren der FoldersException wird weitergeworfen

Sync deaktivieren (Subscription kann nicht aktualisiert werden)

Sync für die Person wird deaktiviert. (SyncMode auf None, Person erhält eine Mitteilung

Sync Intervalle

BackSyncIntervall

  • 3x alle 5 Sekunden sofort wieder
  • 3x alle 30 Sekunden
  • 3x alle 1 Stunde
  • 3x alle 6 Stunden
  • 2x alle 12 Stunden
  • Nach ca. 47 Stunden wird Aktion gelöscht, HandleSyncError aufgerufen

CollaborationAktionHandler ExchangeManagerException handling

Exchange FehlerIntervall
DataProcessing, InternalError3x Retry alle 5 Minuten
Connectivity24x Retry alle 60 Minuten
Authentication, Authorization8x Retry alle 120 Minuten
UserUnknown4x Retry alle 360 Minuten
Alle anderen Exchange Fehler3x Retry alle 3 Minuten

CollaborationAktionHandler Exception handling

  • Intervall 0 –> Retry in 1 Minute
  • Intervall 1 - 3 –> Retry nach alle 20 Minuten

Testing

Testen von verzögerter BackSync

Um eine verzögerte BackSync zu simulieren, kann folgender Gobaler Pararameter genutzt werden:

  • System –> Globale Parameter –>

Ändern des Cache Refresh intervalls der DeletedFolderIds bei der Push Subscription

In den RoomsAppSettings.config des Webservers:

	<add key="DeletedFolderIdsCacheRefreshInHours" value="12"/>
Zuletzt geändert February 3, 2024: fix: update tarife doc (5971f57)