A cloud-based service included in Microsoft 365, delivering scalable messaging and collaboration features with simplified management and automatic updates.
Good day Roger,
Thank you for providing the current calendar processing configuration and explaining both requirements.
Requirement 1: Automatically process calendar events
1/ Create the event directly in the shared calendar (Recommended)
For a PTO (Paid Time Off) or team availability calendar, the recommended approach is for users to create the appointment directly in the shared calendar.
Please follow these steps:
Ensure users have Full Access or appropriate calendar permissions for the shared mailbox.
Open the shared mailbox calendar in Outlook.
Create the PTO appointment directly in that calendar.
Verify that the shared calendar is selected before saving the item.
When an appointment is created directly in the shared calendar, no meeting acceptance is required because the item is already being saved in the destination calendar.
Please note that an appointment created in the shared calendar isn't automatically added to the user's personal calendar. If users need the event to appear in both locations, they should either invite the shared mailbox from their personal calendar or add a separate entry to their own calendar.
2/ About Direct to Calendar
Direct to Calendar is designed for scenarios where meeting invitations are sent by approved senders and should be placed automatically on recipients' calendars.
If you choose to use this feature, keep the sender condition in the rule and add the shared mailbox as a recipient condition to limit the scope. I recommend testing with a small group first before broader use.
Requirement 2: Automatically remove cancelled events
Direct to Calendar doesn't remove cancelled calendar items. Its purpose is to process meeting invitations and optionally move invitation messages to Deleted Items after processing.
Regarding:
Set-CalendarProcessing -Identity "<shared mailbox>" -RemoveCanceledMeetings $true
This setting is documented for resource mailboxes such as room and equipment mailboxes. A standard shared mailbox doesn't use the same booking assistant functionality, so this setting shouldn't be relied upon as a solution for automatically removing cancelled events from a shared mailbox calendar.
You can consider the following options:
Option 1 (Recommended for a PTO calendar)
Keep the mailbox as a shared mailbox.
Allow users to create appointments directly in the shared calendar.
Remove cancelled entries manually when required.
Option 2: Consider a room or equipment mailbox if automatic booking and cancellation processing is a business requirement.
Resource mailboxes support Calendar Processing features such as automated booking behavior.
Option 3: Keep the shared mailbox and implement a custom Microsoft Graph automation solution. The process would be:
Register an application in Microsoft Entra ID.
Grant Calendars.ReadWrite permissions and complete admin consent.
Restrict the application to the required shared mailbox.
Use Microsoft Graph to retrieve calendar events.
Check the isCancelled property for each event.
Delete events where isCancelled = true.
Test recurring meetings and single occurrence cancellations.
Start with reporting only, then enable automatic deletion after validation.
Please note that this is a custom automation solution rather than a native Exchange Online feature. Your team should thoroughly test, secure, deploy and maintain the solution in accordance with your organization's requirements.
Additional information is available in the following resources:
Delete event - Microsoft Graph v1.0 | Microsoft Learn
If you would like to explore the Microsoft Graph workaround further, I recommend posting your question in the Microsoft Graph Community Hub. This community would be better suited to provide guidance on developing and implementing a custom automation solution. You'll get the most qualified group of respondents and other partners who read the forums regularly can share their knowledge or learn from your interaction.
If you have any questions, please don’t hesitate to reach out at any time.
Thank you for your patience and understanding.
If you have any extra questions about this answer, please click "Comment".