Summary

Sam asked how to backfill the SAIL Boat Outlook calendar without bombarding everyone with notifications. The recommendation is to treat SAIL Boat as a shared visibility calendar and write no-attendee appointment blocks directly onto that calendar.

Recommendation

Use direct shared-calendar writes for SAIL Boat events with no attendees, no Teams link, reminder off, and stable idempotency/matching from Salesforce Time_Off_Request__c IDs. Avoid creating or updating meeting-style events with attendees during the backfill.

Rationale

Microsoft Graph creates invitations when an event is sent with attendees. Graph event updates also have notification behavior around attendee changes and recurring meetings. There is not a safe general-purpose sendUpdates=none control in Microsoft Graph for this scenario. The safest backfill shape is therefore calendar-only appointment blocks rather than invite-based meetings.

Suggested Execution Shape

  1. Export the 2026 approved Litify time-off rows needing SAIL Boat reconciliation.
  2. Resolve SAIL Boat calendar ID through Outlook shared-calendar tooling.
  3. Read the target date windows and match existing events by stored Outlook ID where possible, then by employee/date/title fallback.
  4. For missing events, create appointment blocks with no attendees and isReminderOn = false.
  5. For existing no-attendee events, update only subject/body/category when needed.
  6. Skip or quarantine any event that has attendees or a meeting link unless Sam separately approves the risk.
  7. Run a 5 to 10 record pilot first, verify no staff notifications, then process the rest in small batches.

Current Caveat

Prior direct Outlook lookup against stored Salesforce Outlook event IDs was inconclusive, so the first live step should include a matching diagnostic before writes. This prevents duplicate calendar entries and avoids editing meeting objects that could notify people.

Status

Recommendation captured. No live SAIL Boat calendar write was performed in this step.