EWS coverage
41 of 96 EWS operations are answered through Microsoft Graph today: 31 fully and 10 with the limits listed below. Everything else answers with a clear EWS error and appears in your gap report.
- 31 translated
- 10 partial
- 55 not translated
The table is generated from the bridge’s operation registry at request time: the same list the bridge dispatches on. “Partial” in a single answer (a field Graph cannot provide, an unmapped extended property) is reported per request in your gap report. Missing an operation you need? Write to support@avakode.com.
96 operations: 31 translated 10 partial 55 not translated
First queue — reading — 6 translated, 0 partial, 0 not translated
| Operation | Status | Notes |
|---|---|---|
FindFolder | translated | |
FindItem | translated | restrictions Graph cannot filter are applied by the bridge (partial); QueryString (AQS) → $search (KQL) on mail folders only, partial: at most 1000 hits (a search that reaches them is reported as truncated, TotalItemsInView a lower bound), Restriction/SortOrder next to it applied by the bridge, category/isflagged/isread keywords refused |
GetAttachment | translated | ItemAttachment (A9): the attached message, calendar item or contact with the mapped properties (as AllProperties, partial); its own attachments and extended properties are not returned; ReferenceAttachment not translated; files over 15 MB (Workers; 100 MB self-hosted) are not translated (memory of the answer) |
GetFolder | translated | |
GetItem | translated | ExtendedProperty via singleValueExtendedProperties; unmapped properties are partial |
ResolveNames | translated |
First queue — writing, calendar, contacts, availability, OOF — 12 translated, 0 partial, 0 not translated
| Operation | Status | Notes |
|---|---|---|
CopyItem | translated | messages only (Graph has no copy for events/contacts) |
CreateAttachment | translated | ItemAttachment (A9): the Message, CalendarItem or Contact inside converted as CreateItem converts it (unmapped fields partial); attachments over 3 MB are not translated |
CreateItem | translated | Recurrence, MimeContent, ItemAttachment and SendToNone for meetings with attendees are not translated |
DeleteAttachment | translated | |
DeleteItem | translated | SendToNone on a meeting the user organizes is refused (Graph always cancels) |
GetUserAvailability | translated | Suggestions are not translated; WorkingHours only when Graph returns a custom time zone or UTC |
GetUserOofSettings | translated | AllowExternalOof is not available from Graph |
MarkAllItemsAsRead | translated | |
MoveItem | translated | messages only (Graph has no move for events/contacts) |
SendItem | translated | the sent copy always goes to Sent Items (partial otherwise) |
SetUserOofSettings | translated | |
UpdateItem | translated | unmapped fields are reported partial; ConflictResolution is not enforced |
Not translated — 0 translated, 0 partial, 55 not translated
| Operation | Status | Notes |
|---|---|---|
AddDelegate | not translated | delegate management: Graph has no delegates (calendar sharing is calendarPermission only) |
AddDistributionGroupToImList | not translated | Unified Contact Store is not translated |
AddImContactToGroup | not translated | Unified Contact Store is not translated |
AddImGroup | not translated | Unified Contact Store is not translated |
AddNewImContactToGroup | not translated | Unified Contact Store is not translated |
AddNewTelUriContactToGroup | not translated | Unified Contact Store is not translated |
ApplyConversationAction | not translated | conversation operations: Graph has conversationId on messages but no conversation nodes or actions |
ArchiveItem | not translated | archive mailboxes: Graph v1.0 does not reach the archive mailbox |
CreateFolderPath | not translated | folder write operations are not in the MVP |
CreateManagedFolder | not translated | managed folders are not translated |
CreateUserConfiguration | not translated | user configuration objects: Graph has no folder-associated configuration items |
DeleteUserConfiguration | not translated | user configuration objects: Graph has no folder-associated configuration items |
DisableApp | not translated | mail app management: Outlook add-ins have no Graph equivalent |
DisconnectPhoneCall | not translated | Unified Messaging is not translated |
ExportItems | not translated | bulk transfer: Graph v1.0 has no item export/import stream |
FindConversation | not translated | conversation operations: Graph has conversationId on messages but no conversation nodes or actions |
FindMessageTrackingReport | not translated | message tracking is not translated |
GetAppManifests | not translated | mail app management: Outlook add-ins have no Graph equivalent |
GetAppMarketplaceUrl | not translated | mail app management: Outlook add-ins have no Graph equivalent |
GetClientAccessToken | not translated | mail app management: Outlook add-ins have no Graph equivalent |
GetConversationItems | not translated | conversation operations: Graph has conversationId on messages but no conversation nodes or actions |
GetDiscoverySearchConfiguration | not translated | eDiscovery: moved to Microsoft Purview (Graph security cases), another model |
GetHoldOnMailboxes | not translated | eDiscovery: moved to Microsoft Purview (Graph security cases), another model |
GetImItemList | not translated | Unified Contact Store is not translated |
GetImItems | not translated | Unified Contact Store is not translated |
GetMessageTrackingReport | not translated | message tracking is not translated |
GetNonIndexableItemDetails | not translated | eDiscovery: moved to Microsoft Purview (Graph security cases), another model |
GetNonIndexableItemStatistics | not translated | eDiscovery: moved to Microsoft Purview (Graph security cases), another model |
GetPasswordExpirationDate | not translated | password expiration is not available through Graph |
GetPersona | not translated | not translated: Graph has no personas; FindPeople hands out bridge persona ids of contacts and directory users |
GetPhoneCallInformation | not translated | Unified Messaging is not translated |
GetReminders | not translated | reminders are not translated |
GetSearchableMailboxes | not translated | eDiscovery: moved to Microsoft Purview (Graph security cases), another model |
GetServiceConfiguration | not translated | service configuration is not translated |
GetSharingFolder | not translated | sharing operations are not translated |
GetSharingMetadata | not translated | sharing operations are not translated |
GetUserConfiguration | not translated | user configuration objects: Graph has no folder-associated configuration items |
GetUserRetentionPolicyTags | not translated | retention policy tags are not translated |
InstallApp | not translated | mail app management: Outlook add-ins have no Graph equivalent |
MarkAsJunk | not translated | junk reporting: no Graph v1.0 equivalent |
PerformReminderAction | not translated | reminders are not translated |
PlayOnPhone | not translated | Unified Messaging is not translated |
RefreshSharingFolder | not translated | sharing operations are not translated |
RemoveContactFromImList | not translated | Unified Contact Store is not translated |
RemoveDelegate | not translated | delegate management: Graph has no delegates (calendar sharing is calendarPermission only) |
RemoveDistributionGroupFromImList | not translated | Unified Contact Store is not translated |
RemoveImContactFromGroup | not translated | Unified Contact Store is not translated |
RemoveImGroup | not translated | Unified Contact Store is not translated |
SearchMailboxes | not translated | eDiscovery: moved to Microsoft Purview (Graph security cases), another model |
SetHoldOnMailboxes | not translated | eDiscovery: moved to Microsoft Purview (Graph security cases), another model |
SetImGroup | not translated | Unified Contact Store is not translated |
UninstallApp | not translated | mail app management: Outlook add-ins have no Graph equivalent |
UpdateDelegate | not translated | delegate management: Graph has no delegates (calendar sharing is calendarPermission only) |
UpdateUserConfiguration | not translated | user configuration objects: Graph has no folder-associated configuration items |
UploadItems | not translated | bulk transfer: Graph v1.0 has no item export/import stream |
Pilot tail — by usage in public code (mail tips, delegates, people search) — 0 translated, 3 partial, 0 not translated
| Operation | Status | Notes |
|---|---|---|
FindPeople | partial | one source per call (a contacts folder or the directory, no aggregation of one person across both); sorted by display name, paged by the bridge over up to 1000 read; no RelevanceScore; the directory: users with a mailbox only (groups and mail contacts are not searched, hidden-from-GAL is not applied); Restriction, AggregationRestriction and other sorts are not translated; PersonaIds are bridge ids (GetPersona not translated) |
GetDelegate | partial | calendar delegates only (calendarPermission roles delegateWith[out]PrivateEventAccess): CalendarFolderPermissionLevel Editor and ViewPrivateItems; Tasks/Inbox/Contacts/Notes/Journal permission levels, ReceiveCopiesOfMeetingMessages and SID are not available from Graph (left out); DeliverMeetingRequests from mailboxSettings (no NoForward); a UserId without PrimarySmtpAddress is not translated |
GetMailTips | partial | MailTipsRequested → MailTipsOptions (OutOfOffice, MailboxFull, CustomMailTip, member counts, MaxMessageSize, DeliveryRestricted, IsModerated); InvalidRecipient has no Graph option (not returned); PendingMailTips always empty; up to 100 recipients per call |
Second queue — synchronization, folders, id conversion, search, photos — 8 translated, 2 partial, 0 not translated
| Operation | Status | Notes |
|---|---|---|
ConvertId | translated | EwsId (bridge or Exchange ids) ↔ EntryId / HexEntryId; folders (no immutable id) as restId — mail, calendar and contacts folders, others not translated per id; EwsLegacyId, StoreId, OwaId and public folder ids have no Graph equivalent (per-id error) |
CopyFolder | translated | mail folders only |
CreateFolder | translated | search and tasks folders and calendar subfolders are not translated; a ContactsFolder or CalendarFolder under msgfolderroot is created under the default Contacts / Calendar folder (partial); FolderIds come without ChangeKey |
DeleteFolder | translated | calendars and contacts folders are deleted with DELETE whatever the DeleteType (partial) |
EmptyFolder | translated | mail folders only; lists and deletes until empty within 2000 deletions / 25 s per call — entries left (or refused by Graph) → ErrorBatchProcessingStopped, the client repeats (partial) |
GetUserPhoto | translated | HasChanged is always true; unknown address → ErrorNonExistentMailbox and no photo → ErrorItemNotFound (Exchange: bare HTTP 500); REST form: image/jpeg with ETag, If-None-Match → 304, no photo → 404 |
MoveFolder | translated | mail folders only |
UpdateFolder | translated | DisplayName only; other folder fields are reported unsupported |
SyncFolderHierarchy | partial | mail folders only (Graph mailFolders delta); whole mailbox only (no subtree); FolderClass and ChangeKey are not in the delta |
SyncFolderItems | partial | SyncState is a stored chain (30 days after last use); Create vs Update from the ids the chain delivered (a Bloom filter: at most 0.2% of new items created before the previous answer may come as Update); a folder above ≈1.5 million items on Workers (≈5.5 million self-hosted; chains over 512 KB are kept as R2/file blobs) outgrows its chain → not translated; read flag changes arrive as Update (no ReadFlagChange); up to 20 Graph requests / 25 s per call; properties outside the delta query (ItemShape changed mid-chain, extended properties of contacts and calendar items) read per item with $batch within that budget; primary calendar only, as occurrences within −1/+2 years; the default Contacts folder only while it holds a contact (Graph gives its id only as a contact's parentFolderId); NormalAndAssociatedItems not translated |
Third queue — by usage in public code (rooms, inbox rules, notifications, distribution lists, time zones) — 5 translated, 5 partial, 0 not translated
| Operation | Status | Notes |
|---|---|---|
ExpandDL | translated | direct members with an e-mail address (users, groups; organizational contacts only with OrgContact.Read.All, which the default consent lacks — left out, partial), not recursive, as EWS; private distribution lists (contact groups) are not translated |
GetRoomLists | translated | room lists come from Graph places (set up in the tenant); up to 1000 (pages by nextLink or $skip) |
GetRooms | translated | unknown room list → ErrorNameResolutionNoResults, an existing one without rooms → empty Rooms; up to 1000 rooms (pages by nextLink or $skip) |
Unsubscribe | translated | pull and streaming subscriptions |
UpdateInboxRules | translated | conditions FromConnectedAccounts, ItemClasses, MessageClassifications, WithinDateRange and actions SendSMSAlertToRecipients, ServerReplyWithMessage have no Graph equivalent (the request is refused before any write); operations are applied one by one (a failure leaves the earlier ones applied, partial); RemoveOutlookRuleBlob is not applied (partial); WithinSizeRange in whole kilobytes |
GetEvents | partial | events come from Graph delta at poll time (latency = the polling interval): a move out of a folder arrives as DeletedEvent (MovedEvent only between subscribed folders), items moved in that arrived before the subscription do not appear, CopiedEvent and FreeBusyChangedEvent are never produced; up to 50 events per notification (MoreEvents) |
GetInboxRules | partial | OutlookRuleBlobExists is always false (Graph does not expose the Outlook rule blob); IsNotSupported = isReadOnly, IsInError = hasError |
GetServerTimeZones | partial | Name is "(UTC±hh:mm) <Id>", not the Windows display name; transitions groups for the current and the next year (one when the rules agree), later years repeat the next year's rule, earlier rule changes not listed; a zone with more than two changes in the current year is ErrorTimeZone |
GetStreamingEvents | partial | one SOAP envelope per event batch, ConnectionStatus OK at least every 40 s, Closed at the end; latency up to one poll interval; the same event rules as GetEvents (moves out as DeletedEvent, no CopiedEvent/FreeBusyChangedEvent); at least once: the last batch again after a connection dropped before Closed; a failing subscription is named in ErrorSubscriptionIds, the others go on |
Subscribe | partial | pull and streaming subscriptions to mail folders (up to 50 per subscription); push subscriptions, SubscribeToAllFolders and calendar/contacts folders are not translated; MovedEvent only between subscribed folders, CopiedEvent and FreeBusyChangedEvent are not produced |