Sam selected A and C from the prior self-audit: pursue the recommended shared-mailbox destination strategy and build a dry-run migration package for SAIL Boat to SAIL-AWAY.
Loaded Outlook Calendar and Salesforce workup guidance. Ran repo preflight: TODO-AGENT-START-HERE, FOLDER-INDEX, and git status. Workspace was already heavily dirty, so work was contained to admin/outlook-audits/sail-away-calendar-migration-20260603.
Verified via Microsoft Graph that SAIL-AWAY exists as a Microsoft 365 Unified group at sailaway@kylawoffice.com, group id 4c47877b-b47b-4be9-b929-ff80f3c77b6c. Verified app-only Graph can read Nathaniel Hatfield's SAIL Boat calendar and events. Verified the SAIL-AWAY group calendar endpoint remains blocked with 403 ErrorAccessDenied.
Checked Exchange Online tooling. PowerShell and ExchangeOnlineManagement 3.9.2 are installed. Normal Connect-ExchangeOnline browser auth failed on macOS 26.5.0. The module supports device-code auth, but that requires human confirmation, so no shared mailbox was created.
Built a read-only dry-run script plus unit tests:
Ran TDD checks. Initial test failed because the module was missing. After implementation, four unit tests passed and py_compile passed.
Ran the dry-run from 2026-06-03T00:00:00Z through 2027-12-31T23:59:59Z. Outputs:
Dry-run exported 1,025 future SAIL Boat source events and generated 1,025 copy-plan rows. Duplicate source keys: 0. Destination status: blocked because the current SAIL-AWAY group calendar returns 403. Warnings: 979 recurring occurrence review warnings and 1 zero-duration event.
QA sampled 50 records across the export. Sample passed: source IDs, subjects, start/end fields, and generated keys matched.
Salesforce read-only checks against LITIFY_ORG confirmed Time_Off_Request__c has Outlook_Event_ID__c, Outlook_Event_Title__c, and Outlook_Sync_Status__c. Future PTO records with Outlook event IDs: 26. Future PTO records with Outlook event IDs and missing Ending_Date_Time__c: 17. One future PTO row has identical beginning and ending datetime: a4RUV000004PbDN2A0, OOO - Angie V., 2026-06-11T16:00:00.000+0000.