Forum Discussion

Benjamano's avatar
Benjamano
Copper Contributor
Sep 09, 2025
Solved

Graph API - Difference in Calendar events between users

Hi All, I have a .NET 3.1 WebApp running an Application Permission Graph API instance. I have noticed some discrepancies when using the .Calendar.CalendarView and .Events extensions. I have found t...
  • Surya_Narayana's avatar
    Sep 11, 2025

    hi Benjamano​ This is a known area where the Microsoft Graph Calendar API can behave differently than expected depending on user context, organizer vs. attendee role, and how the event is stored. A few points that may help explain the discrepancy you’re seeing:

    • CalendarView vs. Events endpoint
    • CalendarView expands recurring series into individual instances within the requested date range.
    • Events shows the master recurring series object, but may not expand all occurrences.
    • For attendee calendars, some instances may only materialize when the user opens their calendar in Outlook, so .CalendarView can differ per user.

    Organizer vs. Attendee differences

    • If the user is not the organizer, the instance data depends on meeting updates being successfully synced into that user’s mailbox.
    • If the colleague declined/did not respond, or if an update wasn’t fully propagated, the API might skip that instance.

    New Outlook vs. Old Outlook

    • The “New Outlook” is powered by an updated sync stack (similar to Outlook Web Access), which means events may appear in the UI before Graph API sync surfaces them consistently for every attendee.

    Permissions and Calendar Folders

    • With Application permissions, Graph reads directly from the user’s mailbox. If the mailbox has corrupted calendar entries or hasn’t synced all attendee copies, the API will reflect what’s actually stored — not always what Outlook visually reconciles.

    Workarounds / Next steps

    • Try calling both .CalendarView and .Events for the colleague to see if the master recurring event appears even if an instance is missing.
    • Query the event with $expand=instances on .Events to see if the problematic recurrence is being generated.
    • Validate whether the colleague is shown as an attendee with response.Organizer and response.Attendees.
    • As a check, you can also test using delegated permissions with that user to see if behavior is different.

    Unfortunately, this isn’t an uncommon issue with recurring events for non-organizers. If the mailbox copy isn’t fully synced, Graph won’t surface it reliably.

    If this is business-critical, I’d recommend opening a support ticket with Microsoft 365 since the tenant’s Exchange Online service logs may show why those specific instances aren’t materializing for your colleague in Graph.

     

Resources