The processing pipeline per invite
An invite to a room hits the Resource Booking Attendant (if AutomateProcessing=AutoAccept): conflict check → policy checks (window, duration, recurrence caps) → in-policy = accepted + calendar written; out-of-policy = declined OR routed to DELEGATES per the request-in-policy settings. AutomateProcessing=None (mail sits unanswered — the 'room ignores me' state) usually means a mis-provisioned resource or someone 'fixing' a delegate issue by turning the attendant off.
The properties that answer real tickets
| Ticket | Property (Get-CalendarProcessing) |
|---|---|
| "Room ignores invites" | AutomateProcessing (None vs AutoAccept) |
| "Declines everything after next quarter" | BookingWindowInDays (default 180) |
| "Our all-day offsite was declined" | MaximumDurationInMinutes (default 1440) |
| "Recurring series partially booked" | Conflict/recurrence thresholds (AllowRecurringMeetings, ConflictPercentageAllowed, MaximumConflictInstances) |
| "Subject shows 'Busy' not who booked" | AddOrganizerToSubject / DeleteSubject (privacy trade — also what the Teams Rooms console displays!) |
| "Externals can't book our client suite" | ProcessExternalMeetingMessages (default false — deliberate) |
| "Some people book instantly, others wait" | BookInPolicy vs RequestInPolicy vs RequestOutOfPolicy population lists — the tiered-access machinery |
Design patterns
Standard rooms: pure auto-accept, subject shown, sane horizon. Managed spaces (boardrooms, labs): RequestInPolicy for everyone + delegates who approve (delegates are FullAccess-ish humans — the delegation concept's timers apply to their experience). Equipment: same machinery, stricter caps. And the fleet dependency: the Teams Rooms curriculum's 'meetings don't appear on the console' incident class is THIS blob mis-set — CalendarProcessing is where the panel's reality is authored.
Booking-window maths bites annually: BookingWindowInDays=180 means December planning for next summer bounces — raise deliberately before the planning season ticket wave, not during.
What to watch (proofs)
- The per-resource truth: Get-CalendarProcessing <room> | fl — the whole ticket table answers from one output; export fleet-wide quarterly (rooms drift as admins hand-tweak).
- Decline forensics: the attendant's decline responses state the violated rule — read the room's reply before theorising.
- Tiered-access reality: BookInPolicy lists vs the intended VIP groups — stale name-based lists rot as people move (prefer groups).
- Utilisation vs config: booking density per room (calendar reports/Places tooling) against caps — the data that justifies loosening or tightening each blob.