How can we help you?

Outlook365: Can't See Shared Calendars

It can be the case that after enabling the Outlook365 integration, you may see that only your primary calendar is available for scheduling and you cannot see shared calendars, shared mailbox calendars, or other calendars where you have edit access.

Screen_Shot_2018-07-20_at_10.04.29_AM.png

The reason for this issue is that Outlook365 has changed their approach to calendar sharing permissions. In order for Greenhouse to access your available shared calendars, your Outlook365 calendars must be using their new approach. While Outlook365 intends to eventually roll all of its customers over to the new approach, to access your shared calendars through the integration, you can manually make your shared calendars adopt the new approach.

Microsoft has documented this in their Known Issues release. Their official explanation is copied here. The Greenhouse integration relies on Outlook365’s calendar REST API, which can only be used to access shared calendars using the “new” approach.

 

Manually Make Shared Calendars Adopt New Approach

Both the calendar owner and the user who needs to schedule to the calendar should log into the Outlook365 web app. This cannot be fixed through the desktop application.

The owner of the calendar should right-click on the calendar to open the Sharing Permissions (for a shared mailbox, a user with access to manage the mailbox’s sharing permissions must open the shared mailbox directly).

Screen_Shot_2018-07-20_at_10.44.55_AM.png 

The calendar owner should remove the user’s access to the calendar and then re-add the user’s access (the can edit permission is needed to scheduled to a calendar via the integration).

Screen_Shot_2018-07-20_at_10.49.07_AM.png

The recipient user who wants to access the calendar in Greenhouse must re-accept the shared calendar invitation through the web app.

Screen_Shot_2018-07-20_at_10.50.46_AM.png

After completing these steps, the user who accepts the invitation should see the re-shared calendars in their Greenhouse account!

 

Microsoft Outlook365 Explanation: Accessing a Shared Calendar

When attempting to access events in a calendar that has been shared by another user using the following operation:

GET \users('{id}')\calendars('{id}')\events

You may get HTTP 500 with the error code ErrorInternalServerTransientError. The error occurs because:

  • Historically, there are two ways that calendar sharing has been implemented, which, for the purpose of differentiating them, are referred to as the "old" approach and "new" approach.
  • The new approach is currently available for sharing calendars with view or edit permissions, but not with delegate permissions.
  • You can use the calendar REST API to view or edit shared calendars only if the calendars were shared using the new approach.
  • You cannot use the calendar REST API to view or edit such calendars (or their events) if the calendars were shared using the old approach.

If a calendar was shared with view or edit permissions but using the old approach, you can now work around the error and manually upgrade the calendar sharing to use the new approach. Over time, Outlook will automatically upgrade all shared calendars to use the new approach, including calendars shared with delegate permissions.

To manually upgrade a shared calendar to use the new approach, follow these steps:

  1. The recipient removes the calendar that was previously shared to them.
  2. The calendar owner re-shares the calendar in Outlook on the web, Outlook on iOS, or Outlook on Android.
  3. The recipient re-accepts the shared calendar using Outlook on the web. (It will be possible to use other Outlook clients soon.)
  4. The recipient verifies that the calendar has been re-shared successfully using the new approach by being able to view the shared calendar in Outlook on iOS or Outlook on Android.

A calendar shared with you in the new approach appears as just another calendar in your mailbox. You can use the calendar REST API to view or edit events in the shared calendar, as if it's your own calendar. As an example:

GET \me\calendars('{id}')\events