---
title: "Microsoft Outlook 365 Calendar Integration"
slug: "interview-management-microsoft-outlook-365-calendar-integration"
updated: 2024-02-29T08:04:25Z
published: 2024-02-29T08:04:25Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.infinite.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Outlook 365 Calendar Integration

Abstract

Product: **BrassRing**

Outlook 365 is part of Microsoft Office 365 Suite, a cloud-based subscription service that allows organizations to create, communicate, and collaborate by using Microsoft tools. Infinite takes no responsibility for the content in third-party programs, and the process on this page might not accurately represent the Microsoft 365 system. Infinite is not responsible for the content on third-party websites.

### Connecting to your Calendar

The **Manage Schedules** page in Interview Manager is used to select the interviewers for an interview and look up their real-time availability based on their Outlook calendar. The free or busy schedules can be viewed for any BrassRing user and those that have shared their calendars with the BrassRing user. **Connect your calendar** allows the BrassRing user to log in to their Office 365 account and give consent to the BrassRing application to access the organization calendar.

![image017.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/0bbf1866-d921-4cf0-8be3-1d5274b450e2.jpg)

### Calendar Integration Configuration Types

Clients must register their own app in Microsoft Azure Portal and then enter the **Tenant ID, Application Key Application Secret**in Workbench. There are three integration types:

1. **Basic**. BrassRing provides an inbuilt Office 365 app to validate the integration. It is only intended for testing and validating the integration by connecting to the organization’s Office 365 calendar, giving consent to the BrassRing app, and getting the free or busy schedule of the users in their organization.
2. **Advanced**. Advanced configuration should be used for the production environment, but can be used for the staging environment, provided the respected staging URIs are added in the AZURE configuration along with production URIs. For more information, see Step 10 in the Microsoft Azure configuration section. After that only one set of keys can be used for both the staging and production environment. There is no need to create two separate applications inside the Azure portal. With the Advanced configuration, there are two consent options available:
  1. **User Consent.** The users must sign in to their Office 365 account by using the Connect your calendar option and provide consent. For more information, see [Calendar Integration](/v1/docs/connect-an-office-365-or-google-calendar).
  2. **Admin Consent.** The user is signed in to their Office 365 account by using their BrassRing user email ID and they can obtain the free or busy schedules of any user with the domain.
3. **None**. This is the default option and means that there is no integration.

### Troubleshooting Basic Configurations

If a calendar cannot be connected after selecting the Basic configuration, your organization's Azure Admin might not have enabled the required privileges for Basic setup to access the data. Work with the Azure Admin to enable the setting inside Azure Admin Portal. Alternatively, use an Advanced Configuration to create keys that can be used for both the staging and production environments.

1. Sign in to the Azure portal as a Global Administrator.
2. Select Azure Active Directory → Enterprise applications → User settings.
3. Enable user consent in the [Users can consent to apps accessing company data on their behalf] field.

### Configuration Process

#### Microsoft Azure Configuration

1. Log in to [Azure Portal](https://portal.azure.com) and select **View**for [Manage Azure Active Directory].

![image36.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/2106418c-6e38-45e1-88c5-1a0573e90bd2.jpg)
2. Expand the menu by selecting the **>> icon.**

![image37.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/c7cb9c8f-08f5-45bb-aa9a-0d21f6e22616.jpg)
3. Select App registrations.

![image024.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/4074acf9-5f7a-4eb8-9769-cd0da27d7ec9.jpg)
4. Select **New registration.**

![image025.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/9c80b013-e80a-4ea1-bfe6-ebc54218c681.jpg)
5. Enter a **name**for the application, select **the single tenant option** in the [Supported account type], and select **Register**.

![image38.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/5afd9a36-8431-43bb-aa2b-6cb87ed578c1.jpg)
6. After the app is created, note the **Application (client) ID** and the **Directory (tenant) ID.**

![image027.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/8cbf7d70-a609-4f52-8f91-b571d89e7dd9.jpg)
7. Select **Authentication**.
8. Select **Add a Platform.**

![image39.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/ba6ea3ae-80d3-47b3-9189-446646ea9297.jpg)
9. Select **Web**.

![image40.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/2a70aaa6-860d-4d59-917b-01969498a187.jpg)
10. Enter the redirect **URIs**for the environment needed. Ensure all URIs for the environment are entered.
  1. To enter multiple URIs, enter a URI in the [Redirect URI box], and select **Configure**. Then, select **Add URI** and repeat the process for all URIs.
  2. **US Production**
    - https://trm.brassring.com/mobile/getcalendar
    - https://trmx.brassring.com/mobile/getcalendar
    - https://trmx128.brassring.com/mobile/getcalendar
    - https://trm128.brassring.com/mobile/getcalendar
  3. **Staging**
    - https://staging.brassring.com/mobile/getcalendar
    - https://staging128.brassring.com/mobile/getcalendar
    - https://trmx-staging.brassring.com/mobile/getcalendar
    - https://trmx-staging128.brassring.com/mobile/getcalendar
  4. **EU Production**

![image028.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/4c9a4539-8285-4e7d-98ec-2f7ae8d27923.jpg)
    - https://krb.brassring.com/mobile/getcalendar
    - https://krbx.brassring.com/mobile/getcalendar
11. After all URIs for the environment are entered, select **Save**.
12. Select **Certifications & secrets** and select **New client secret.**

![image029.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/818e2b6c-a1f7-461c-9ae7-8d609f023cb2.jpg)
13. Enter a description, and select an **Expiry setting** that is appropriate to your organization's IT policies.

![image030.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/485818b7-06cd-421d-b10d-9a3dea4a8a23.jpg)
  - 1 year - The secret key expires in 1 year from the date of creation and must be renewed before it expires. The integration fails after the expiry date.
  - 2 year - The secret key expires in 2 years from the date of creation and must be renewed before it expires. The integration fails after the expiry date.
  - Never - The secret key never expires and does not need to be renewed.
14. Select **Add**. After the client secret is created, note the value.
15. Select **API permissions** and then select **Add a permission.**

![image031.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/e701bfb9-75bd-4229-838d-cf5dfa793b75.jpg)
16. Select **Microsoft Graph.**

![image032.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/07f618ff-8d15-4b2a-b252-bdb755844e1e.jpg)

![image033.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/ffb036a8-db1e-4f31-8bfa-87d39d3f7651.jpg)
  1. For the **User Consent workflow,**select **Delegated permissions.**
  2. For the **Admin Consent workflow,** select **Application permissions.**
17. Expand the **Calendars**menu, select **Calendars.Read**, and select **Add permission.**

![image034.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/bfa3eab1-25ae-4c72-9d14-99b27fb26763.jpg)
18. For the **Admin Consent workflow,** select **Grant admin consent** and the status updates to [Granted].

![image41.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/33295b9d-d142-4e75-a7ff-3589fd9b5038.jpg)
19. The Azure integration is now configured.

#### Workbench Configuration

1. In Workbench select Tools → Interview Manager → Calendar Configuration.
2. Select **Advanced**for **Configuration Type.**
3. If your organization uses a custom Microsoft login URL, this can be appended with **whr**query string parameter on this page. For example: https://login.microsoftonline.com/common/oauth2/v2.0/authorize?whr=<tenant name in Azure>
4. Select **Select Provider.**
5. Select **Office 365** by using the pulldown menu, and select **OK**.

![image42.jpg](https://cdn.us.document360.io/4bb62c4c-9973-48ec-ab93-23d4b1755503/Images/Documentation/61046611-32d1-43b7-b38b-1fda9f5982bc.jpg)
6. Enter the **Tenant ID, Application ID,**and **Application Secret** value.
7. Select **System Admin consent received** if the Admin consent workflow has been enabled.
8. Select**Test Calendar Configuration**. Calendars cannot be used until they have been tested.
9. Select **Save**.

### GetScheduleAPI Request/Response data

BrassRing uses the GetSchedule API (POST /{user}/calendar/getSchedule) from Microsoft Graph to get the free busy times for an Office 365 user. API documentation can be found [here](https://docs.microsoft.com/en-us/graph/overview?view=graph-rest-1.0)). This is the only API endpoint that BrassRing uses to get the free or busy information of an Office 365 user. The request to this API from BrassRing includes the list of email addresses for whom the free or busy schedule is being requested (this is usually the interviewers selected in the Manage Schedules screen).

Request Body Sample:

```plaintext
{ "schedules":["test@test.onmicrosoft.com"], "startTime":{"dateTime":"2019-11-19T00:00:00"}, "endTime":{"dateTime":"2019-11-25T00:00:00"} }
```

The response from the API is the free or busy schedule of the requested users. This GetSchedule API response does not include the actual meeting body or any attachments. The list of possible data elements for a meeting are listed [here](https://docs.microsoft.com/en-us/graph/api/resources/scheduleitem?view=graph-rest-1.0).

Response Sample:

```plaintext
{ "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.scheduleInformation)", "value":[ { "scheduleId":"test@test.onmicrosoft.com", "availabilityView":"0000000000000000000000000000000000000", "scheduleItems":[ { "status":"tentative", "start":{ "dateTime":"2019-11-19T19:00:00.0000000", "timeZone":"UTC" }, "end":{ "dateTime":"2019-11-19T19:30:00.0000000", "timeZone":"UTC" } ], "workingHours":{ "daysOfWeek":[ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime":"08:00:00.0000000", "endTime":"17:00:00.0000000", "timeZone":{ "@odata.type":"#microsoft.graph.customTimeZone", "bias":300, "name":"Customized Time Zone", "standardOffset":{ "time":"02:00:00.0000000", "dayOccurrence":1, "dayOfWeek":"sunday", "month":11, "year":0 }, "daylightOffset":{ "daylightBias":-60, "time":"02:00:00.0000000", "dayOccurrence":2, "dayOfWeek":"sunday", "month":3, "year":0 } } } } ] }
```
