Share via


Can't save a meeting as a draft in Outlook for Mac by using Office JS API

Original KB number:   4505745

Symptoms

Microsoft Outlook for Mac doesn't support saveAsync on a meeting in Compose mode. Outlook add-ins can't get the item identifier. It means that the add-ins can't 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 is 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. Select one of the following APIs 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.