rauhan.sheikh
← Back to Work Directory
PROFESSIONAL[MS-GRAPH]2024–2025

Microsoft Teams & Calendar Engine

Hiding deep Microsoft Graph API complexity behind an automated calendar & meeting sync engine for 20K+ EdTech users.

20K+
Active Users
Students and faculty seamlessly scheduled
Zero
Manual Effort
Eliminated manual link pasting & permissions config
99.9%
Reliability
Resilient token handling and rate-limit recovery

Engineered With

Node.jsExpressMicrosoft Graph APITypeScriptPostgreSQLRedis
Signature Engineering Story · EdTech Scale

Hiding Microsoft Graph Complexity

How a 5-step asynchronous resolution pipeline bridged the gap between Outlook calendar visibility and granular meeting security for 20,000+ students.

1

POST /me/events (Calendar)

Dispatches calendar event creation with `isOnlineMeeting: true`. This guarantees the class immediately appears on the instructor's personal Outlook calendar.

// THE CHALLENGE: Problem: Graph API event response does NOT allow setting granular meeting policies like lobby bypass or auto-record.
Sub-second resolution
Enforces RBAC policy
payload.ts// Graph API Adapter
POST /v1.0/me/events
{
  "subject": "Distributed Systems Lecture #04",
  "isOnlineMeeting": true,
  "onlineMeetingProvider": "teamsForBusiness"
}
Philosophy: Hide system complexity behind clean UX.Read Full Case Study

The Problem & Context

Graph API's onlineMeeting creation endpoint created meetings that did not appear on users' Outlook calendars, whereas creating a calendar event did not allow granular meeting configuration (waiting rooms, attendee permissions, recording policies). Faculty had to either manually configure meetings or paste links across different screens.

The Messy Part (Behind the Build)

Microsoft Graph doesn't immediately return the online meeting ID from a calendar event creation. The backend had to create the calendar event with isOnlineMeeting: true, extract the joinWebUrl, decode the meeting coordinates, resolve the hidden meeting ID, and patch the online meeting settings asynchronously before delivering the meeting link to the LMS.

Architecture & Design Decisions

Create Calendar Event -> Extract Join Web URL -> Resolve Online Meeting ID -> Patch Meeting Settings & Permissions -> Return Uniform LMS Object. Retries with exponential backoff on Graph throttling (429).

The Hidden Complexity of Microsoft Graph

When building lecture scheduling for over 20,000 active students, instructors needed scheduled meetings to appear directly on their corporate Outlook calendars while simultaneously adhering to strict academic permissions:

  • Muted attendee microphones by default
  • Restricted screen sharing
  • Automatic cloud recording enabled
  • Waiting room bypass for enrolled students only

The API Conflict

  • If you call /me/onlineMeetings, you get granular meeting controls, but no Outlook calendar event is created.
  • If you call /me/events with isOnlineMeeting: true, an event is placed on the calendar, but the response does not provide granular meeting policy controls.

The Solution: Multi-Step Resolution Pipeline

We designed an automated backend orchestrator:

  1. Dispatch POST /me/events with online meeting flags.
  2. Intercept the generated joinWebUrl from the response.
  3. Parse the thread coordinate identifiers and resolve the underlying onlineMeeting record.
  4. Issue a subsequent PATCH /me/onlineMeetings/{id} configuring attendance reports, lobby rules, and recording locks.
  5. Return a clean, unified lecture entity to the LMS frontend.

The user saw a single "Schedule Class" button and a 400ms turnaround. All complexity was absorbed by the backend.

What I'd Do Differently Today

Would implement a webhook listener for Microsoft Graph change notifications earlier to catch edge cases where meetings were modified or cancelled directly in Outlook by instructors.