Microsoft 365

This app allows accessing the Microsoft 365 platform directly in Eliona using the Microsoft Graph API.

Microsoft Graph is the gateway to data and intelligence in Microsoft 365. It provides a unified programmability model that you can use to access the tremendous amount of data in Microsoft 365, Windows, and Enterprise Mobility + Security.

This app connects rooms and other resources to to Eliona and provides information about their booking status.

The main ability of the app, though, is the possibility to use the whole Graph API directly in Eliona using the authentication-providing proxy functionality.

Installation

The Microsoft 365 App is installed via the App Store in Eliona.

Assets

The Microsoft 365 App automatically creates all the necessary asset types and assets that are accessible via the configured endpoints. The following asset types are created:

  • Room: A room in Azure AD.

  • Equipment: Any piece of equipment that can be booked. Like a room, but generalized.

Following attributes are defined:

AttributeDescriptionRoomEquipmentFilterable

address

Physical Address

x

x

nickname

Nickname

x

x

label

Label

x

x

geo_coordinates

Geo Coordinates

x

x

phone

Phone Number

x

x

email_address

Email Address

x

x

x

booking_type

Booking Type

x

x

building

Building

x

x

capacity

Capacity

x

x

floor_label

Floor Label

x

x

floor_number

Floor Number

x

x

is_wheel_chair_accessible

Wheelchair Accessibility

x

x

tags

Tags

x

x

display_device_name

Display Device Name

x

x

audio_device_name

Audio Device Name

x

x

video_device_name

Video Device Name

x

x

on_schedule

On Schedule

x

x

Configuration

For a detailed guide to configuring apps, follow the manual.

The Microsoft 365 App is configured by defining one or more authentication credentials. Each configuration requires the following data:

AttributeDescription

tenantId

ID or domain of the company

clientId

ClientID / Azure AD Application ID

clientSecret

An "app password" (for app permissions)

username

Delegated user's name (for delegated permissions)

password

Delegated user's password (for delegated permissions)

forEliona

Indicates whether the config should be used for asset creation

forProxy

Indicates whether the config should be used for app frontend and proxy API

enable

Flag to enable or disable fetching from this API

refreshInterval

Interval in seconds for collecting data from API

requestTimeout

API query timeout in seconds

assetFilter

Filter for asset creation, more details can be found in app's README

projectIDs

List of Eliona project ids for which this device should collect data. For each project id, all assets are automatically created in Eliona. The mapping to Eliona assets is stored as an asset mapping in the app.

The configuration must contain either client secret for app permissions or user credentials for delegated permissions.

The configuration is done via a corresponding JSON structure. As an example, the following JSON structure can be used to define an endpoint for app permissions:

{
  "clientId": "adasf8676a-example-client-id-asfd2867130",
  "clientSecret": "8nx-8Kelionathebestwfmbsdiurnc987vcu",
  "tenantId": "tenant-id",
  "username": "",
  "password": "",
  "enable": true,
  "refreshInterval": 60,
  "requestTimeout": 120,
  "assetFilter": [],
  "projectIDs": [
    "10"
  ]
}

Endpoints can be created using this structure in Eliona under Apps > Kontakt.io > Settings. To do this, select the /configs endpoint with the POST method.

Required privileges

For the basic use-case of reading rooms and equipment and their availability, the application needs following Application permissions:

  • Place.Read.All

  • User.Read.All

  • Calendars.Read

Setup for bookings

To allow the Microsoft 365 app create and manage bookings on behalf of users, a "Device code authentication flow" is used. For that to work, the administrator has to go to Microsoft Entra -> Applications -> App registrations -> Authentication and there "Allow public client flows".

As bookings are done on behalf of a user, the app requires following Delegated permissions:

  • User.Read

  • Calendars.ReadWrite

Last updated