Docs Portal
Connector Guides
API ReferenceConsole

Microsoft Graph Source Connector

Microsoft logo

The Microsoft Graph Source connector integrates with the Microsoft Graph API to synchronize room calendar data from Microsoft 365 (Exchange Online) into the Mapped platform. It polls room mailbox calendars for booking events, creating a live view of meeting room usage across your organization.

Use Cases

  • Room booking visibility: Surface real-time and upcoming meeting room bookings from Exchange Online into the Mapped graph for occupancy awareness and space analytics.
  • Calendar event synchronization: Automatically sync current and future calendar events for mapped conference rooms, keeping the Mapped platform up to date with scheduling changes.
  • Historical calendar backfill: On-demand sync of calendar events within a custom date range to populate historical booking data for rooms.

Configuration

Auth Requirements

The connector authenticates to Microsoft Graph using Azure AD OAuth 2.0 Client Credentials flow. An Azure AD App Registration with the appropriate Microsoft Graph API permissions is required.

To obtain the required credentials, follow Microsoft's Graph's instructions to Get access without a user with the permissions described below.

CredentialDescriptionRequired
Tenant IDAzure AD tenant identifier (directory ID)Yes
Client IDApplication (client) ID from the Azure AD registrationYes
Client SecretClient secret generated for the Azure AD appYes

Required Microsoft Graph API Permissions (Application)

PermissionTypeDescription
Calendars.ReadApplicationRead calendars in all mailboxes
Place.Read.AllApplicationRead all company places (rooms)

Credentials are validated on save by authenticating against the Microsoft identity platform. Invalid credentials will be rejected immediately.

Place Mappings

After authentication, the connector fetches the list of rooms from the Microsoft Graph Places API. Each room can be mapped to a Mapped Space entity.

FieldDescriptionRequired
Building NameBuilding name (auto-populated from room display name)Yes
Building AddressAddress of the buildingNo
Floor NameFloor nameNo
Floor LevelFloor level numberNo
Space NameRoom display name (auto-populated)Yes
Space Ref IDUnique room identifier from Microsoft GraphYes

Each room mapping also stores the room email address internally, which is used to query the calendar view for that room's mailbox.

Calendar Sync (Action

The Calendar Sync action allows manual, on-demand synchronization of calendar events for a specific date range. This is useful for backfilling historical data or re-syncing a particular time window.

  • Select a Start Date and End Date (maximum range: 365 days).
  • The sync processes all booking events within the specified range for every mapped room.
  • Only one Calendar Sync action can run at a time per connector instance.

Polling Schedule

FunctionIntervalDescription
Current EventsEvery 30 minutesFetches events that were created or modified since the last successful poll
Future EventsOnce per dayFetches events scheduled within the next 30 days (configurable via futureEventsWindow setting)

Mapped Concepts

Graph Entities

This connector creates the following entities in the Mapped graph:

Microsoft Graph APIMapped EntityDescription
Room (Place)SpaceA conference room or bookable space
Calendar View EventsSpaceBookingCalendarA booking calendar associated with a room
Calendar EventCalendarEventAn individual booking/meeting event on the calendar

Space

Represents a bookable room from Microsoft 365, created from the Place Mappings configuration.

Key Fields

GraphQL FieldDescription
nameRoom display name
exactTypeSubclass of Space (e.g. Room)
mappingKeyUnique key from place mapping
identitiesExternal identity URN

SpaceBookingCalendar

Represents the booking calendar for a specific room. One calendar is created per mapped room.

Key Fields

GraphQL FieldDescription
nameCalendar for {room name}
mappingKeyDerived from the parent Space mapping key
hasCalendarEventList of CalendarEvent entities on this calendar
isCalendarOfThe Space this calendar belongs to

CalendarEvent

Represents an individual meeting or booking on a room calendar. Cancelled events are automatically excluded.

Key Fields

GraphQL FieldDescription
nameEvent subject/title
startTimeEvent start time (ISO 8601)
endTimeEvent end time (ISO 8601)
hasLocationThe Space where the event takes place
identitiesExternal identity URN based on the iCalUId
mappingKeyUnique key derived from the event's iCalUId

When an event is moved to a different room, the connector automatically updates the hasLocation relationship to reflect the new room assignment.

Sample Code

Query Spaces with their Calendars and Events

Request Response
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
  spaces {
    id
    name
    exactType
    hasCalendar {
      ... on SpaceBookingCalendar {
        id
        name
        hasCalendarEvent {
          id
          name
          startTime
          endTime
          hasLocation {
            id
            name
            exactType
          }
        }
      }
    }
  }
}

Query CalendarEvents with location

Request Response
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
  calendarEvents {
    id
    name
    startTime
    endTime
    hasLocation {
      ... on Space {
        id
        name
        exactType
        floor {
          name
        }
      }
    }
    identities {
      ... on ExternalIdentity {
        value
        scope
      }
    }
  }
}

Query a specific Space's booking calendar

Request Response
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
  spaces(filter: {id: {eq: "your-Space-Id"}}) {
    id
    name
    hasCalendar {
      ... on SpaceBookingCalendar {
        id
        name
        exactType
        hasCalendarEvent {
          id
          name
          startTime
          endTime
        }
      }
    }
  }
}

Graph Diagrams

Diagram of Space hasCalendar SpaceBookingCalendar, which in turn isCalendarOf Space. SpaceBookingCalendar also hasCalendarEvent CalendarEvent, which hasLocation Space and is linked to an xternal Identity.