Organizing, editing, and coordinating meetings and events within Microsoft Teams calendars
Hola Nehal,
The behavior you are seeing is expected with the Graph calendar APIs. The /cancel action is specifically designed to cancel the meeting and send a cancellation message to the attendees. There is no documented request header or parameter on that endpoint to suppress those notifications. :contentReference[oaicite:0]{index=0}
Microsoft documents the cancellation action here.
There is a difference between "removing the organizer's calendar item" and actually "canceling the meeting."
When a Teams meeting is created through the calendar, the calendar event is the authoritative meeting object from the Exchange/Outlook side. Each attendee has their own copy of that meeting. A proper cancellation sends meeting-cancellation messages so Exchange can update those attendee copies. That is why Graph does not treat attendee notification as optional for a real cancellation.
Using DELETE instead of /cancel does not solve this either. Microsoft explicitly documents that deleting a meeting from the organizer's calendar also sends a cancellation message to the attendees.
So there is not currently a supported Graph equivalent of:
DELETE event
suppressCancellationMessages=true
Even if you could silently remove only the organizer's copy, the attendees would still have their meeting objects and could continue to see and join the Teams meeting. From a calendaring perspective, that is an orphaned meeting rather than a canceled meeting.
Since your use case is specifically for offboarding users, I would consider using Exchange Online's Remove-CalendarEvents cmdlet instead of enumerating and canceling individual events via Graph. It was designed for scenarios such as an employee leaving the organization:
Remove-CalendarEvents -Identity ******@company.com -CancelOrganizedMeetings -QueryWindowInDays 365
You can preview what it would affect first:
Remove-CalendarEvents -Identity ******@company.com -CancelOrganizedMeetings -QueryWindowInDays 365 -PreviewOnly -Verbose
That cmdlet still sends cancellations, though. Microsoft specifically notes that cancellation messages must be sent to remove meetings from attendees' and resources' calendars.
So if the requirement is truly "remove these meetings from everyone's calendars but tell nobody," I don't believe there is a supported Graph or Exchange mechanism that provides that behavior. The notification is part of the mechanism Exchange uses to propagate the cancellation.
If the real requirement is instead "remove the departing user's calendar objects without caring whether attendees retain their copies," that is a different problem. There may be other cleanup approaches worth discussing.
Thanks,
James