Cannot save a meeting as a draft in Outlook for Mac by using Office JS API

Original KB number:   4505745

Symptoms

Microsoft Outlook for Mac does not support saveAsync on a meeting in Compose mode. Outlook add-ins cannot get the item identifier. This means that the add-ins cannot uniquely identify and communicate with Microsoft Exchange to update or listen for changes on the item.

Workaround

To work around this issue, you can set an extended property (customProperty: Office JS API) on the item. An extended property is part of the item and will be available on Exchange as soon as the item is sent. Therefore, the add-in can query or listen to items that have this extended property set.

To set the property, follow these steps:

  1. Choose one of the following API sets to use:

    1. EWS
    2. REST
    3. Graph
  2. Get a valid token for each API set:

    1. EWS: Use getCallbackTokenAsync
    2. REST: Use getCallbackTokenAsync with options.isRest = true
    3. Graph: Use onBehalfOf token
  3. Query or listen for calendar events:

    1. EWS: Subscribe to the created event
    2. REST: Subscribe to the created notification, and filter based on the extended property
    3. Graph: Subscribe to the created notification, and filter based on the extended property
  4. Find the corresponding extended property on Exchange:

    1. EWS:

      ExtendedFieldURI {PropertySet = PS_PUBLIC_STRINGS, PropertyName = cecp-<add-in id from manifest>}

    2. REST/Graph:

      SingleValueExtendedProperties { PropertyId = String {00020329-0000-0000-c000-000000000046} Name cecp-<add-in id from manifest>}

  5. Use the notification that's sent to the webhook to update the backend with itemId when the subscription is successful.