Moving Off Exchange Web Services (EWS) to the Microsoft Graph
Our OnePlaceMail App uses the Microsoft Graph API wherever possible and any new developments we undertake we will use the Microsoft Graph API unless there are valid reasons not to such as lack of support for certain features at present.
When we initially developed our OnePlaceMail app the only way to operate with emails at an API level was to use Exchange Web Services (EWS). We developed all email operations in our app calling EWS and this worked successfully to a point.
We use Azure Application Insights to monitor our app for any issues and usage patterns on a continual basis. What we noticed was that there would be random errors accessing emails/attachments/email properties and category information for users at different times. When using the app, during the majority of sessions users experienced no issues, however, we were determined to eliminate these issues as best as possible so the experience for end-users was improved even more.
In addition, Microsoft does not see a future for EWS with no enhancements to be released. Their advice was to move to the Microsoft Graph API - read about it here.
Moving to the Microsoft Graph API
Over time, Microsoft started to extend the email capabilities of the Microsoft Graph, when we analyzed what was possible we realized we could effectively stop using EWS and move to the Microsoft Graph for all email-based operations in our app. Backing our decision to commit to the Microsoft Graph was the future direction of EWS mentioned previously. In addition, the hope was that moving to the Microsoft Graph API endpoint would help reduce the errors and random issues we were seeing in Application insights for end-users using the app.
We took the decision to move off EWS to the Microsoft Graph API and identified all calls we made to EWS and ran a project to move them to the Microsoft Graph API. This project came together really quickly and the result is that the majority of API calls in our OnePlaceMail app are now made to the Microsoft Graph API endpoints. In terms of email operations, we use the Microsoft Graph API for:
- Saving emails and attachments to SharePoint / Teams / OneDrive:
- Adding an email category to the master category list in Exchange
- Setting an email category on an email in Exchange:
In the first few weeks since moving to the Microsoft Graph for email operations in the app, we have noticed a significant reduction in issues overall in our analysis of Azure Application Insights. There are fewer random errors so it looks like we made the right decision to move to the Microsoft Graph which will lead to happy customers! We will look to continue to replace all remaining calls we make in our App to different endpoints to call the Microsoft Graph API when the capabilities are fully supported.
- Tags: Email Management