Calendox Docs
Integrations

Exchange Server for IT administrators

What your IT administrator checks and allows for Calendox to reach Exchange Server mailboxes — requirements, sign-in, access, revocation and moved mailboxes.

A user in your organisation wants to connect the calendars in their Exchange mailbox to Calendox. They sign in with their mailbox address and Exchange password from the Exchange Server card — the user steps are in Connect Exchange Server Calendar. This page lists what Calendox needs from your environment, how it signs in, how to allow or audit it, and what happens when a mailbox moves.

Calendox reaches Exchange Server through Exchange Web Services (EWS) — the same interface Outlook for Mac, Outlook mobile and most third-party calendar tools use. Exchange Server continues to provide EWS; the announced EWS retirement concerns Exchange Online only.

What does Calendox need from your environment?

RequirementWhyHow to check
Exchange Server 2016 or later (Exchange Server SE or 2019 recommended)Autodiscover v2 and the EWS schema Calendox usesGet-ExchangeServer | Format-Table Name, AdminDisplayVersion
EWS published to the internet over HTTPSCalendox is an internet service and connects to https://mail.example.com/EWS/Exchange.asmx on your external name, exactly as Outlook Anywhere and Outlook on the web are publishedGet-WebServicesVirtualDirectory | Format-List ExternalUrl; open the URL from outside your network — a sign-in prompt is the right answer
A publicly trusted TLS certificate on the external EWS nameCalendox never relaxes certificate checks; self-signed and internal-CA certificates cannot be acceptedMicrosoft Remote Connectivity Analyzer → Exchange Web Services
Autodiscover v2 (recommended)Lets users connect by mailbox address alone: https://autodiscover.example.com/autodiscover/autodiscover.json/v1.0/alex.winters@example.org?Protocol=EWSOpen that URL in a browser; it answers { "Protocol": "EWS", "Url": "…" } without signing in. Without it, users enter the external EWS name themselves
Basic or NTLM authentication on the EWS virtual directoryCalendox signs in with the user's mailbox password — see How does Calendox sign in?Get-WebServicesVirtualDirectory | Format-List *Authentication*
EWS allowed for the mailbox and for CalendoxEWS must not be turned off (EwsEnabled False) for the mailbox or the organisation — the organisation's default blank value is fine; where an EWS application allow list is enforced, Calendox/* must be on it, and no block-list entry may match itGet-CASMailbox <user> | Format-List Ews*; Get-OrganizationConfig | Format-List Ews*

How does Calendox sign in?

Calendox signs in to EWS with the user's mailbox address (or DOMAIN\user) and Exchange password over Basic or NTLM authentication. Microsoft sign-in to an on-premises server is not currently offered, so a server that accepts only Negotiate/Kerberos, or only Microsoft sign-in, cannot be connected.

To enable password sign-in on the EWS virtual directory:

Set-WebServicesVirtualDirectory -Identity "<server>\EWS (Default Web Site)" -BasicAuthentication $true

or, for NTLM:

Set-WebServicesVirtualDirectory -Identity "<server>\EWS (Default Web Site)" -WindowsAuthentication $true

Security note. Basic and NTLM sign-in to EWS do not go through multi-factor authentication, and a pre-authentication proxy in front of EWS (ADFS, Entra Application Proxy, an MFA gateway) blocks password sign-in for cloud apps. If password sign-in to EWS is not acceptable for your organisation, do not enable it — Calendox then cannot connect to your server. The password is stored encrypted by Calendox, used only against the EWS endpoint recorded at connect time, and deleted when the user disconnects the calendar or deletes their account.

How can changes reach Calendox sooner?

Nothing further is required for sync: Calendox checks each connected calendar on its own, and changes reach it within about 5 minutes. Optionally, allow your Exchange server outbound HTTPS to https://calendox.com/api/calendar/exchange/notifications/ — then the server can tell Calendox about a change as it happens, and changes arrive sooner. If that address stays blocked, nothing breaks and there is nothing to configure; the user's account card simply notes "Your server isn’t reaching Calendox yet — changes sync every 5 minutes."

How do I allow or audit Calendox?

Calendox identifies itself on every request with the user agent Calendox/1 (+https://calendox.com/docs/integrations/exchange-on-premises), so you can allow or audit it by user agent; the entry Calendox/* matches it. EWS access is set for each mailbox and for the whole organisation, so check both, then change only what blocks Calendox:

Get-OrganizationConfig | Format-List EwsEnabled,EwsApplicationAccessPolicy,EwsAllowList,EwsBlockList
Get-CASMailbox <user> | Format-List EwsEnabled,EwsApplicationAccessPolicy,EwsAllowList,EwsBlockList

# Only if the mailbox shows EwsEnabled False:
Set-CASMailbox <user> -EwsEnabled $true

# Only if the mailbox shows EnforceAllowList (adds; existing entries stay):
Set-CASMailbox <user> -EwsAllowList @{Add="Calendox/*"}
# Only if the organisation shows EnforceAllowList (adds; existing entries stay):
Set-OrganizationConfig -EwsAllowList @{Add="Calendox/*"}

# Only if the mailbox shows EnforceBlockList and an EwsBlockList entry matches Calendox (removes that entry only):
Set-CASMailbox <user> -EwsBlockList @{Remove="<matching entry>"}
# Only if the organisation shows EnforceBlockList and an EwsBlockList entry matches Calendox (removes that entry only):
Set-OrganizationConfig -EwsBlockList @{Remove="<matching entry>"}

EwsEnabled False on the organisation turns EWS off for every mailbox, whatever the mailbox setting says: no mailbox or allow-list change helps, and Calendox cannot connect until the organisation setting is True or blank — an organisation-wide decision. Use the @{Add=…} and @{Remove=…} forms shown: a plain list such as -EwsAllowList "Calendox/*" replaces every entry already on the list. If the block-list entry that matches Calendox is a wildcard that also matches other apps, removing it unblocks them too; to keep them blocked, first add narrower entries for them with @{Add=…}, then remove it. Calendox never needs EwsApplicationAccessPolicy itself changed. A change may not apply immediately.

Calendox reads only the user's own calendar folders and reads and writes calendar items in them. It never reads mail, contacts or other mailboxes, and it never stores event titles, descriptions or locations — only timing and a content fingerprint.

How do I check the setup before users try?

  1. Run the Microsoft Remote Connectivity Analyzer's Exchange Web Services check against the external EWS name — it verifies publishing, the certificate chain and authentication in one pass.
  2. Open https://autodiscover.example.com/autodiscover/autodiscover.json/v1.0/alex.winters@example.org?Protocol=EWS (with your own domain and a real mailbox) from outside your network; a JSON answer with the EWS URL means users can connect by address alone.
  3. Open https://mail.example.com/EWS/Exchange.asmx from outside your network; a sign-in prompt is the expected result.

How do I revoke a user's access?

The cleanest way is for the user to remove the calendar in Calendox: that deletes the copies Calendox made in the mailbox, then the stored username and password. From your side, changing the user's password makes the next request fail and Calendox asks the user to update the stored password. Disabling EWS for the mailbox (Set-CASMailbox <user> -EwsEnabled $false) makes every request fail from then on and the user's syncs stop receiving and sending changes. Calendox then tells the user once — by email, in-app and on the account card (Access limited) — and offers them a message for you: for a calendar that is the source of an active sync, after about an hour without a working connection; for any other calendar, when a booking page or the Unified Calendar next meets the refusal, the user deletes an event in Calendox that has a copy there or a sync can't copy an event into it, and a second request is refused too, never within an hour of the user connecting it, updating its password or changing its syncs. Calendox also can no longer delete the copies it made in that mailbox: until the user has been told, removing a calendar that holds such copies fails, and afterwards the user can remove it only by confirming that those copies stay in the mailbox. To have the copies deleted, ask the user to remove the calendar first.

What happens when you move a mailbox?

Calendox's connection stays with the external EWS name it was set up on. Moving a mailbox between databases or servers inside your organisation, behind that same name, usually needs nothing from the user while the name still reaches the mailbox — Exchange routes Calendox's requests to the mailbox's new server; changes may pause while the move completes. The connection doesn't follow a mailbox to Microsoft 365 or to another organisation's Exchange server, and doesn't survive that name being retired: after such a move, the user removes the account, connects the mailbox again where it now lives and re-creates their syncs — see What if my mailbox moves or becomes unavailable?. Copies Calendox placed in the mailbox move with it and stay there; the user can delete them in Outlook.

For a calendar that is the source of an active sync, Calendox tells the user once — by email, in-app and on the account card (Mailbox unavailable) — when nothing has worked for 24 hours and a second check agrees: the server answers that the mailbox isn't there, can't be reached or keeps failing, or a move is still in progress. Any other calendar gets the same message only for the server's answer that the mailbox isn't there, when a booking page or the Unified Calendar next meets it, the user deletes an event in Calendox that has a copy there or a sync can't copy an event into it, and a second check agrees — never within 24 hours of the user connecting it, updating its password or changing its syncs. The user can send you the card's message, which lists what to check (mailbox_unavailable below). Right after that, Calendox asks your organisation's own Autodiscover once where the mailbox lives now — the addresses of the user's own email domain (for example autodiscover.example.com, then example.com), without signing in and without following a redirect to another domain. If it answers with Microsoft 365, the card says the mailbox appears to have moved to Microsoft 365; the email doesn't change. Either way the user first checks with you where the mailbox lives now, and if it didn't move, Update password on the card resumes the connection once Exchange opens the mailbox again. Calendox asks the same once when Microsoft 365 stops serving a work or school mailbox connected through the Outlook Calendar card: if your server then answers with its own Exchange Web Services address, that card says the mailbox appears to have moved to your Exchange Server, and the user connects it from the Exchange Server card once you confirm the move.

Which messages may users send me?

A user whose sign-in was blocked can send you a message straight from the connect dialog. When a calendar that was already connected stops working and the fix is yours, they can send it from its account card or from the email Calendox sent them; that message opens "Hi — my Exchange calendar was connected to Calendox and stopped working.", and the email's copy leaves out the server name. A work or school mailbox connected through the Outlook Calendar card that appears to have moved to your Exchange Server offers one too, on its account card only; it opens "Hi — my Microsoft 365 calendar was connected to Calendox and stopped working." Each carries one of these codes — what it means and what to do:

CodeMeaningAction
autodiscover_not_foundAutodiscover v2 is not published for the domain, or the server address the user entered doesn't answerPublish Autodiscover v2 (https://autodiscover.example.com/autodiscover/autodiscover.json) or give users the external EWS address — Get-WebServicesVirtualDirectory | Format-List ExternalUrl
server_unreachableThe EWS name does not resolve or does not accept connections from the internetPublish /EWS/Exchange.asmx on port 443 externally (the same publishing Outlook Anywhere and Outlook on the web use) and allow /EWS/* on the reverse proxy or firewall
private_addressThe name resolves to an internal address only — Calendox is an internet service and cannot reach internal addressesExpose EWS through your existing external name
tls_untrustedSelf-signed or internal-CA certificate on the external EWS nameInstall a publicly trusted certificate on the external EWS name — self-signed and internal-CA certificates cannot be accepted
auth_method_unsupportedEWS offers only sign-in methods cloud apps can't use (for example Negotiate/Kerberos only)Enable Basic or NTLM on the EWS virtual directory: Set-WebServicesVirtualDirectory -Identity "<server>\EWS (Default Web Site)" -BasicAuthentication $true (or -WindowsAuthentication $true)
modern_auth_requiredThe server no longer accepts password sign-in for this user: it requires Microsoft sign-in (not currently offered for Exchange Server) or EWS sits behind a pre-authentication proxyKeep Basic or NTLM enabled on the EWS virtual directory. A pre-authentication proxy or MFA gateway in front of EWS refuses password sign-in too; lifting it for /EWS/Exchange.asmx opens EWS password sign-in to every client, so it is your organisation's decision (see the security note above). If an authentication policy blocks legacy authentication for EWS, give this user a policy that doesn't (Set-User <user> -AuthenticationPolicy …) rather than changing the blocking policy, which affects every user it covers
credentials_rejectedExchange refused the sign-inUsually a typo, or DOMAIN\user versus the email address. If it repeats with a correct password: check the account in Active Directory — an expired password, a lockout or a disabled account is refused like a wrong one, and an expired password must be changed by the user first; set Extended Protection on the front-end EWS virtual directory to Microsoft's recommended Accept, not Required, with no TLS offloading in front of Exchange; and check for a pre-authentication proxy in front of EWS (ADFS, Entra Application Proxy, an MFA gateway) — those block password sign-in for cloud apps
ews_access_deniedUsually EWS is disabled for the mailbox or the organisation, or an EWS application allow or block list excludes Calendox; an IP restriction, reverse proxy, WAF or IIS rule in front of /EWS can also answer 403Check EwsEnabled and EwsApplicationAccessPolicy on the mailbox and the organisation; if the organisation shows EwsEnabled False, only setting it to True or blank restores access; then enable EWS for the mailbox, add Calendox/* to an enforced allow list with @{Add=…}, or remove a matching block-list entry with @{Remove=…} — never a plain list, which replaces your entries. See the commands. If those settings already allow Calendox and a proxy, WAF or IIS rule in front of EWS filters on the user agent, let /EWS/* with the Calendox user agent through it. An IP restriction or pre-authentication in front of /EWS blocks Calendox as well; lifting it for /EWS/Exchange.asmx opens EWS to every client, so it is your organisation's decision. An exception for the Calendox user agent doesn't narrow that: any client can send it
server_version_unsupportedThe server runs a version older than Exchange Server 2016Exchange Server 2016 or later is required (Exchange Server SE or 2019 recommended)
throttledThe server answered that it is busyNothing unless it persists; then review the EWS throttling policy for the mailbox — Get-ThrottlingPolicyAssociation <user> | Format-List
mailbox_mismatchThe address entered and the sign-in belong to different mailboxesNothing on your side — the user enters the address of the mailbox they sign in to
mailbox_not_foundExchange can't open a mailbox for that address with this sign-inNothing on your side — confirm the user's Exchange mailbox address (it may differ from their Calendox login) and that they sign in with that mailbox's account
mailbox_in_exchange_onlineThe mailbox is in Microsoft 365, not on your serverNothing on your side — the user connects with Microsoft 365 instead; no Exchange password is needed
mailbox_unavailableA connected calendar's mailbox can no longer be opened through the external EWS name it was connected on: certificate, publishing or DNS, a pre-authentication gateway, an outage, a move, or a disabled mailboxWork through the labelled checks in the message: a publicly trusted certificate on the external EWS name, EWS still published and its name resolving, database copies mounted and the EWS application pool started, a move finished, a mailbox disabled by mistake reconnected. A pre-authentication proxy or MFA gateway in front of /EWS answers with a sign-in page instead of EWS; lifting it would open EWS password sign-in to every client — an organisation-wide decision. A mailbox moved to Microsoft 365 or to another organisation's Exchange server can't be followed — the user removes it and connects it where it now lives
mailbox_moved_onpremA Microsoft 365 work or school mailbox connected through the Outlook Calendar card appears to have moved to your Exchange Server: Microsoft 365 no longer serves it, and your organisation's Autodiscover for the address points to your own Exchange ServerConfirm where the mailbox lives now. If it moved, Calendox can't follow it: the user removes the Outlook account, connects the mailbox from the Exchange Server card and re-creates their syncs. For that, publish EWS and Autodiscover externally, keep Basic or NTLM enabled on the EWS virtual directory and EWS enabled for the mailbox, and add Calendox/* to an enforced allow list with @{Add=…} — see the commands. If it is still in Microsoft 365, check its Exchange Online license; the user then reconnects the Outlook account
server_changedThe address is already connected through another server name (moved mailbox or renamed EWS host)Nothing on your side unless the mailbox moved; Calendox never re-points an existing connection
account_other_providerThe address is already connected to the user's Calendox account through Google or Microsoft 365Nothing on your side — to connect the mailbox as an Exchange Server calendar instead (for example after it moved to your server), the user removes that connection first
account_meeting_appThe address is already connected to the user's Calendox account for Microsoft Teams or Google Meet meeting links, not as a calendarNothing on your side — to connect the mailbox as an Exchange Server calendar instead, the user turns that meeting app off first; it can't then be connected with the same address

Next steps