Transaction Errors
When an appointment sync to Exchange fails, the connector classifies the failure into one of the shapes below and records it on the transaction row visible on the Errors page. The transaction Status is the primary signal; the message column carries the underlying exception text.
For Azure AD app-registration and consent walkthroughs, see Troubleshooting. This page covers the runtime classifications.
The Exchange connector does not yet emit stable DSEX codes in the transaction message. The prefix is reserved for a future release. For now, the Status column is the primary lookup key. Each section below also shows the underlying exception type for diagnostic searching.
Retried statuses are transient and self-heal on the next retry pass. Fix configuration statuses need the Exchange connector or Azure app to be changed first. Undiagnosed failure shapes should be sent to support so a rule can be added.
Each section pairs 💡 (what it means) with 🛠️ (what to do).
Quick lookup
| Status | Goes to | Exception | Retry |
|---|---|---|---|
InvalidBackOfficeSettings | Expired client secret | ExpiredExchangeClientSecretException | fix config |
InvalidBackOfficeSettings | Incomplete credentials | IncompleteExchangeCredentialsException | fix config |
Skipped | Credentials rejected after the call | ExchangeCredentialsException | fix config |
Skipped | Exchange integration disabled | ExchangeIntegrationEnabledException | fix config |
Skipped | Invalid user in the directory | ExchangeInvalidUserException | fix config |
EmptyBackOffice | No mapping entry | ExchangeItemMappingException | retried |
Failed | Access denied by the Azure AD app | ExchangeAccessDeniedException | fix config |
Failed | Microsoft Graph transient | ExchangeTransientException | retried |
Failed | Unexpected exception | any other | undiagnosed |
Expired client secret
InvalidBackOfficeSettingsfix configurationAADSTS7000222 (or invalid_client) and the connector translates that into a typed failure carrying the offending Client ID.- Open the Azure portal and navigate to the Exchange app registration.
- Under Certificates & secrets, generate a new client secret. Copy the secret value immediately - it is only shown once.
- Update the secret on the Exchange configuration page under the Microsoft Entra ID section.
Client secrets expire after 6, 12, or 24 months. Set a reminder to rotate them before they expire.
Incomplete credentials
InvalidBackOfficeSettingsfix configurationCredentials rejected after the call
Skippedfix configurationCalendars.ReadWrite, MailboxSettings.ReadWrite, User.Read.All) are present and that Grant admin consent has been clicked.Exchange integration disabled for the assigned resources
Skippedfix configurationResource (No) pairs), or "No resources were assigned to this appointment" when the appointment has no assignments at all.Skipped status is correct and no action is needed.Invalid user in the directory
Skippedfix configurationNo mapping entry
EmptyBackOfficeretried automaticallyAccess denied by the Azure AD app
Failedfix configuration"The Azure AD app does not have sufficient permissions to write events to the calendar." prefix.- In the Azure portal, open the Exchange app registration and go to API permissions.
- Make sure
Calendars.ReadWriteis granted as an Application permission (not Delegated). - Click Grant admin consent for [Your Organization].
- Replay the failed transaction from the Errors page.
Microsoft Graph transient
Failedretried automaticallyTransient error from Microsoft Graph: <inner>. Will retry on the next sync attempt..Failed so the retry job picks it up on the next pass. If the rate of transients spikes, check the Microsoft 365 service health dashboard and tenant-level Graph throttling.Unexpected exception
FailedundiagnosedFailed so the retry job can replay it, but it also writes a full stack trace to the operational log so the maintainers can add a typed rule.