Outlook-koppeling instellen: stappen aan de Outlook- en i-Reserve-kant
De Outlook-koppeling vereist configuratie aan twee kanten: eerst een app-registratie in Azure / Entra ID (de klant-tenant), daarna de koppeling zelf in i-Reserve. Dit artikel beschrijft beide kanten in volgorde. De Azure-stappen staan los van i-Reserve en worden in het Azure-portaal uitgevoerd.
1. Aan de Outlook- / Azure-kant
1.1 App-registratie
- Azure Portal → App registrations → New registration.
- Registreer als single tenant (accounts alleen in deze organisatie).
- Noteer de Application (client) ID en de Directory (tenant) ID.
- Certificates & secrets → maak een client secret aan en noteer de waarde direct (is later niet meer leesbaar). Er wordt alleen secret-gebaseerde authenticatie gebruikt, geen certificaat.
- Stel de Redirect URI (type Web) in op de waarde die i-Reserve toont, doorgaans
{base_url}/integrations/redirect/{int_id}.
1.2 Machtigingen per modus
Voeg onder API permissions → Microsoft Graph de juiste permissie toe voor de modus die je gebruikt:
| Modus | Permissie | Bijzonderheden |
|---|---|---|
| Gedelegeerd | Delegated → Calendars.ReadWrite | Toestemming wordt gegeven door de gebruiker die inlogt. Scope: openid offline_access Calendars.ReadWrite (de offline_access levert het refresh-token). |
| Applicatie | Application → Calendars.ReadWrite | Admin consent verplicht (“Verleen beheerderstoestemming”). Zonder admin consent geeft Graph 403 op users/{upn}/…. |
Eén app-registratie kan beide permissie-typen dragen, zodat dezelfde app beide modi kan bedienen. Niet nodig: Place.Read.All, User.Read, Calendars.ReadWrite.Shared.
1.3 Least-privilege (aanbevolen voor app-only)
Standaard mag een app met application Calendars.ReadWrite alle mailboxen in de tenant lezen/schrijven. Beperk dit met een ApplicationAccessPolicy (Exchange Online PowerShell) die de app vastzet op een security-group met daarin alleen de zaal-mailboxen:
New-ApplicationAccessPolicy -AppId <client-id> `
-PolicyScopeGroupId zalen-rooms@klant.nl `
-AccessRight RestrictAccess `
-Description "i-Reserve room sync: alleen zaal-mailboxen"
1.4 Mailboxen / zalen
- Gedelegeerd: minimaal één gelicentieerde gebruiker met mailbox om mee in te loggen. De standaardagenda van die gebruiker synct.
- Applicatie: maak de zalen aan via Microsoft 365 admin → Resources → Rooms & equipment. Een resource-mailbox is normaal Unlicensed — dat is correct. Noteer de UPN van elke zaal (bv.
ZaalA@klant.onmicrosoft.com) en plaats ze in de security-group uit stap 1.3.
2. Aan de i-Reserve-kant
Ga naar Beheer → Integraties en voeg een Outlook-koppeling toe (of open een bestaande). De koppeling heeft een authenticatie-scherm en een configuratie-scherm.
2.1 Authenticatie-scherm (Azure-gegevens)
| Veld | Wat in te vullen |
|---|---|
| Tenant ID | De directory (tenant) ID van de M365-tenant. |
| Client ID | De application (client) ID van de app-registratie. |
| Client secret | De gegenereerde client-secret-waarde. |
| Return url | De redirect-URI. Gebruik exact de waarde die i-Reserve toont en registreer diezelfde URI in de Azure-app. |
Doorloop daarna de twee knoppen in volgorde:
- Stap 1: toestemming — opent het Microsoft consent-scherm. Log in met de dedicated gebruiker (gedelegeerd) of geef admin consent (applicatie) en keur de gevraagde agenda-permissie goed.
- Stap 2: verbinden met Outlook — wisselt de toestemming in voor de opgeslagen tokens (gedelegeerd: access + refresh; applicatie: app-only token). Hierna is de verbinding live.
2.2 Configuratie-scherm — algemeen gedrag
| Veld | Wat in te vullen |
|---|---|
| Veld voor i-Reserve boeking-id | Het boekingsveld dat de Outlook event-id bewaart (de koppeling tussen boeking en agenda-item). Default external_id. |
| Template | De template waarmee onderwerp/omschrijving van het agenda-item worden opgebouwd (outbound). |
| Teams-link aanmaken | Ja/Nee — maak een Teams online-vergadering voor het item. |
| Veld voor Teams-link | Boekingsveld om de Teams join-URL op te slaan (als bovenstaande Ja is). |
| Klantgegevens gebruiken | Ja/Nee — voeg de klant als deelnemer toe / gebruik klantgegevens op het item. |
| Agenda-item aanmaken op status | De boekingsstatus(sen) waarop een item in Outlook wordt aangemaakt (outbound, gedelegeerd). |
| Verwijderen op status | De boekingsstatus(sen) waarop het Outlook-item wordt verwijderd. |
| E-mail bij problemen | E-mailadres dat bij koppelproblemen wordt genotificeerd. |
2.3 Configuratie-scherm — inbound
| Veld | Wat in te vullen |
|---|---|
| Authenticatiemodus | Gedelegeerd (één gebruiker) of Applicatie (per zaal, app-only). Dit wisselt het koppelveld hieronder. |
| Zaal ↔ object (applicatie) | Per rij: de zaal-mailbox-UPN en het i-Reserve-object waarop die zaal landt. Eén rij per zaal; gebruik “Zaal toevoegen”. |
| Inbound object (gedelegeerd) | Het ene i-Reserve-object waarop afspraken uit de gebruikersagenda worden geboekt. |
| Inbound status | Status waarmee een nieuwe inbound-boeking wordt aangemaakt. |
| Inbound status met klant | Alternatieve status als de organisator aan een bestaande klant kon worden gekoppeld. |
| Lock-statussen (update) | Boekingen in deze statussen worden niet bijgewerkt door inbound. |
| Lock-statussen (delete) | Boekingen in deze statussen worden niet geannuleerd door inbound. |
| Toestaan boeking-update | Ja/Nee — sta toe dat inbound-wijzigingen bestaande boekingen bijwerken. |
| Negeer validatiefouten bij update | Ja/Nee — pas inbound-wijzigingen toe ook als validatie ze normaal zou weigeren. |
2.4 Activeren
Sla op en zet de koppeling op actief. Bevestig de verbinding op het test-/diagnosescherm en controleer dat er een Graph-subscription (webhook) is aangemaakt (gedelegeerd: één; applicatie: één per zaal).





