What are the differences between EWS and Graph API?
While EWS and Graph connections do the same thing, they work in a different way from one another. Here are the key differences between the two to help with the decision on which one to use with your application.
Tenancy #
Graph API only supports calendars that are hosted on Microsoft 365 (not in Hybrid mode), currently supporting Microsoft 365 connections only (not Microsoft GCC, GCC High, or DoD). EWS additionally supports on-premises Exchange servers, as well as hybrid and on-cloud solutions.
Cronofy API support #
- Integrated conferencing: Graph API allows us to make use of the inbuilt Teams conferencing without an additional authorization. EWS does not, and connecting to Teams requires the end-user to go through a separate authorization flow to authorize their Teams as a conferencing service.
- Business Connect: Graph API cannot support Business Connect at the moment, but EWS does. This might change in the future with Microsoft updates to the Graph API, as well as us exploring alternative ways to make this possible.
- Free-busy Model: Graph API does not support the free-busy only model, unlike EWS connections.
Permissions #
EWS requires us to ask for full mailbox access, which allows Cronofy’s access to the emails. Although we do not access any of the emails, it is a part of the EWS permission model and there are no ways to limit this without affecting the functionality that we offer. Graph provides more granular scopes, which means that Cronofy would only ask for the read/write access to the calendar.
Enterprise Connect #
Graph API connects to a Microsoft 365 tenant through an authorization of an Azure Active Directory application by an IT admin. EWS requires some additional setup, which involves setting up a Service Account that would impersonate other users to make the connection possible. Since Graph API has a much more simple setup, there are less things that can go wrong during the connection process and less time to set it up.
Provider support #
Graph API is actively being developed by Microsoft and we can expect to provide more features in the future that are made available to us.
Miscellaneous #
Graph API allows us to correctly identify the built-in national holiday calendars as read-only, however EWS reports these to us as writable when they are not.