Microsoft Calendar Integration¶
Sync Outlook/Microsoft 365 calendar events with Kiket for team capacity planning and availability tracking.
Overview¶
The Microsoft Calendar integration automatically imports calendar events from Outlook and updates team member availability. This is ideal for organizations using Microsoft 365.
Prerequisites¶
Before connecting Microsoft Calendar, you need:
- Microsoft OAuth Extension installed (
microsoft-oauth) - Microsoft Calendar Extension installed (
microsoft-calendar) - A Microsoft 365 or personal Microsoft account
Installation¶
Step 1: Install OAuth Provider¶
First, install the Microsoft OAuth provider extension:
- Go to Settings > Extensions > Browse
- Search for "Microsoft OAuth"
- Click Install
- Configure the OAuth credentials:
- Register an application in Azure Portal
- Set the redirect URI to
https://your-domain.kiket.dev/oauth/microsoft-oauth/callback - Create a client secret
- Enter the Application (Client) ID and Client Secret in Kiket
Step 2: Azure AD App Registration¶
When creating your Azure AD app registration:
- Go to Azure Portal > Azure Active Directory > App registrations
- Click New registration
- Enter a name (e.g., "Kiket Calendar Integration")
- Set supported account types:
- Single tenant: For your organization only
- Multi-tenant: For any Microsoft account
- Add a redirect URI:
https://your-domain.kiket.dev/oauth/microsoft-oauth/callback - Under API permissions, add:
Calendars.Read(Delegated)User.Read(Delegated)- Under Certificates & secrets, create a new client secret
Step 3: Install Calendar Extension¶
- Go to Settings > Extensions > Browse
- Search for "Microsoft Calendar"
- Click Install
Step 4: Connect Your Account¶
- Go to Settings > Connected Accounts
- Click Connect next to Microsoft
- Sign in with your Microsoft account
- Grant the requested calendar permissions
Adding a Calendar Feed¶
Once connected:
- Go to Capacity > Calendar Settings
- Click Add Calendar
- Select Microsoft Calendar as the source
- Choose the calendar(s) you want to sync
- Configure sync settings:
- Sync Interval: How often to check for updates (default: 60 minutes)
- Sync Window: How far ahead to sync events (default: 180 days)
- Include Private: Whether to sync private events (title only)
- Include Tentative: Whether to sync tentative events
Event Type Mapping¶
Outlook calendar events are automatically categorized based on keywords and Outlook categories:
| Event Type | Keywords |
|---|---|
| Holiday | "holiday", "bank holiday" |
| PTO | "vacation", "pto", "out of office", "ooo", "time off" |
| Travel | "travel", "flight", "trip" |
| Focus | "focus", "deep work", "heads down", "focus time" |
| Training | "training", "learning", "workshop" |
| Other | Everything else |
Outlook's "Show As" status is also considered:
- Free: Typically ignored for capacity
- Tentative: Included if "Include Tentative" is enabled
- Busy/Out of Office: Always included
- Working Elsewhere: Included as "other"
Using with Microsoft Teams¶
If you also use the Microsoft Teams extension, both can share the same Microsoft OAuth connection:
- Install
microsoft-oauth(one time) - Connect your Microsoft account
- Install both
microsoft-teamsandmicrosoft-calendar - Both extensions will use the same connection
This is the recommended setup for Microsoft 365 organizations.
Health Monitoring¶
Kiket monitors calendar feed health and alerts you when syncs fail:
- Healthy: Syncing normally
- Degraded: Multiple consecutive failures (3+)
- Unhealthy: Failing for 12+ hours
You'll receive notifications in Kiket and optionally via Microsoft Teams when issues occur.
Troubleshooting¶
"Insufficient privileges" error¶
This usually means the Azure AD app doesn't have the required permissions:
- Go to Azure Portal > App registrations
- Select your app
- Go to API permissions
- Ensure
Calendars.Readis added - Click Grant admin consent if required by your organization
"AADSTS50011: Reply URL does not match"¶
The redirect URI doesn't match:
- Go to Azure Portal > App registrations
- Select your app
- Go to Authentication
- Add the exact URL:
https://your-domain.kiket.dev/oauth/microsoft-oauth/callback
Events not appearing¶
- Verify the calendar is selected for sync
- Check if events fall within the sync window
- For private events, ensure "Include Private" is enabled
- Check the feed health status
Token refresh failing¶
Microsoft tokens expire after 90 days of inactivity:
- Go to Settings > Connected Accounts
- Click Reconnect next to Microsoft
- Sign in again to refresh the token
API Reference¶
The Microsoft Calendar extension provides these commands:
# Trigger manual sync
microsoftCalendar.sync:
calendar_id: "primary"
# List available calendars
microsoftCalendar.listCalendars: {}
Security¶
- Only the
Calendars.ReadandUser.Readscopes are requested by default - Events are synced as read-only; Kiket cannot modify your Outlook calendar
- Tokens can be revoked at any time from Settings > Connected Accounts
- You can also revoke access from Microsoft Account Security
Enterprise Considerations¶
For enterprise deployments:
- Tenant Restriction: Set the Tenant ID in the Microsoft OAuth extension to restrict to your organization
- Admin Consent: If your organization requires admin consent, an Azure AD admin must approve the app
- Conditional Access: Ensure Kiket's IP addresses are allowed if you have conditional access policies