Microsoft 365 Room Mailboxes: The IT Manager's Setup and Hygiene Checklist
A vendor-neutral checklist for IT managers setting up (or cleaning up) meeting room mailboxes in Microsoft 365. Naming, calendar processing, Places metadata, time zones, working hours and the quarterly audit that keeps Outlook honest.
If you're an IT manager rolling out (or cleaning up) meeting room mailboxes in Microsoft 365, this is the checklist you wish someone had handed you on day one. It covers the configuration that actually matters once rooms are in heavy use: the parts that decide whether a booking will succeed, whether your room displays will read the calendar correctly, and whether the office manager will be in your inbox next Monday.
It assumes you're an Exchange Online administrator with access to the Exchange admin center, the Microsoft 365 admin center, and Exchange Online PowerShell. It's vendor-neutral; everything here applies whether you're planning to layer Joan, Robin, Archie, Lobby or a homegrown tablet on top.
1. Naming conventions
Get this wrong and every other thing in your office gets harder. Get it right and it pays back forever.
The convention that scales:
[Office Code] [Floor] [Capacity] [Room Name]
So BER-3-8-Greenhouse for an 8-seat room called Greenhouse on the third floor of the Berlin office. The pattern matters more than the exact format. Three rules:
- Office code first. When users open the room finder, alphabetical order is what they get. Office code first means rooms in the same building cluster together.
- Capacity in the visible name. Even though it's a separate property, capacity in the display name sharply reduces "I booked the boardroom for a 1:1."
- Human room name at the end. Numbers are forgettable. Names ("Greenhouse," "Penny Lane," "The Vault") get remembered.
Set the same string for both DisplayName and the alias, with the alias machine-friendly (no spaces). Renaming later is messy because Outlook clients cache the old display name for weeks.
2. Creating the room mailbox itself
Don't create rooms one at a time in the GUI. Use PowerShell. It's faster, it's audit-friendly, and it's the only way to keep settings consistent across dozens of rooms.
The shortest sensible recipe:
New-Mailbox -Name "BER-3-8-Greenhouse" `
-DisplayName "BER-3-8-Greenhouse" `
-Alias "ber-3-8-greenhouse" `
-Room `
-ResourceCapacity 8 `
-EnableRoomMailboxAccount $false
EnableRoomMailboxAccount is the one most people miss. If you ever plan to sign a Microsoft Teams Rooms device into the mailbox, you'll set this to $true and assign a password. For everything else (a display reading the calendar over Graph, or a calendar-only resource), keep it disabled. Fewer accounts that can be phished is fewer accounts that can be phished.
3. Calendar processing: the file you actually have to get right
This is where 80% of "the room won't book" tickets are born. Every room mailbox has a CalendarProcessing object that defines how invites are handled. The defaults are mostly sensible. Mostly.
Set-CalendarProcessing -Identity "BER-3-8-Greenhouse" `
-AutomateProcessing AutoAccept `
-AllowConflicts $false `
-AllowRecurringMeetings $true `
-BookingWindowInDays 365 `
-MaximumDurationInMinutes 1440 `
-EnforceCapacity $true `
-DeleteSubject $false `
-AddOrganizerToSubject $true `
-DeleteComments $false `
-RemovePrivateProperty $false
The settings that genuinely matter:
AutomateProcessing AutoAccept. Anything else (None, AutoUpdate) means humans are in the loop and bookings will sit unanswered.AllowConflicts $false. The single most underrated value. If this is$true, the room cheerfully double-books.DeleteSubject $false. The default is$true, which strips the meeting title and replaces it with the organiser's name. Most offices want the title visible on displays and in the room finder. Turn it off.AddOrganizerToSubject $true. Useful default ifDeleteSubjectis also$false.EnforceCapacity $true. Newer flag. Outlook will warn organisers that they've invited more people than the room holds.
For a high-stakes room (an exec boardroom managed by an EA), use AutomateProcessing AutoUpdate with a delegate set:
Set-CalendarProcessing -Identity "LON-12-16-Boardroom" `
-AutomateProcessing AutoUpdate `
-ResourceDelegates "ea@yourco.com" `
-ForwardRequestsToDelegates $true
Default-on is wrong for the rest.
4. Time zone, working hours, language
The most underrated source of "the display is wrong" tickets.
Every mailbox has a regional configuration. Set it explicitly:
Set-MailboxRegionalConfiguration -Identity "BER-3-8-Greenhouse" `
-TimeZone "W. Europe Standard Time" `
-Language "en-GB" `
-LocalizeDefaultFolderName $true
Set the time zone to the building's actual time zone, not whatever was on the admin's laptop when they ran the command. The "Browse" room finder in Outlook trusts this value implicitly.
Working hours live on the mailbox itself:
Set-Mailbox -Identity "BER-3-8-Greenhouse" `
-SchedulerWorkingHoursStartTime "08:00:00" `
-SchedulerWorkingHoursEndTime "19:00:00" `
-SchedulerWorkingHoursDays "Monday,Tuesday,Wednesday,Thursday,Friday"
If you don't set them, Outlook treats every room as 24/7-bookable, which means it cheerfully suggests your London boardroom for a 02:00 Tokyo all-hands.
5. Microsoft Places: the metadata layer
Microsoft Places is the modern home for room metadata, room lists and floor mapping. If you're building from scratch on M365, do the Places setup at the same time as the mailboxes; the Outlook room finder is steadily migrating to read Places-first.
The minimum:
- Create a Building in Places per physical office.
- Create a Floor under each building.
- Associate every room mailbox with a floor.
- Set capacity, audio, video and display equipment, accessibility flag, and isWheelchairAccessible per room.
Set-Place -Identity "BER-3-8-Greenhouse" `
-Capacity 8 `
-AudioDeviceName "Yealink VC210" `
-VideoDeviceName "Yealink VC210" `
-DisplayDeviceName "Samsung 55in" `
-IsWheelchairAccessible $true `
-Floor 3 `
-FloorLabel "Level 3" `
-ParentId "<Berlin Building Id>"
If you're on Exchange-only without Places yet, fall back to Room Lists (a distribution group of rooms grouped by location):
New-DistributionGroup -Name "Berlin Rooms" `
-DisplayName "Berlin Rooms" `
-RoomList
Add-DistributionGroupMember -Identity "Berlin Rooms" `
-Member "BER-3-8-Greenhouse"
Outlook's "Find a room" dialog uses room lists to scope the search. Rooms not in any list don't show up there.
6. Permissions and the display service principal
Two layers of permissions matter.
The first is internal users. By default, an Exchange Online room mailbox shares free/busy with the whole tenant, which is fine. The thing to actively configure is whether internal users can see event details (title, organiser, attendees). The default surfaces titles to internal viewers, which is what most offices want. For a privacy-sensitive room (an HR meeting room, an exec one-to-one room), set it to availability-only:
Set-MailboxFolderPermission -Identity "HR-1-4-PrivateOne:\Calendar" `
-User Default `
-AccessRights AvailabilityOnly
The second is the display app. Whatever display tool you're putting on top will read calendars via Microsoft Graph using an Azure AD application. Three rules for that registration:
- Application permissions, not delegated. Room displays are not signed-in users.
Calendars.Readis enough for read-only displays.Calendars.ReadWriteis needed only if the display offers check-in or release-from-the-display.- Use
ApplicationAccessPolicyto scope the app to the room mailboxes only, not your entire tenant. Five lines of PowerShell. Do it once.
New-ApplicationAccessPolicy -AppId "<DisplayApp App Id>" `
-PolicyScopeGroupId "All-Room-Mailboxes@yourco.com" `
-AccessRight RestrictAccess `
-Description "Room display app, room mailboxes only"
When InfoSec asks "what can this third-party tool actually see," this is the answer they want. Have it ready.
7. MailTips and the quiet-policy stack
MailTips are the small notes that pop up in Outlook before the user sends. Two are worth setting per room:
- A capacity reminder if the meeting size is over the room's seats.
- A custom note for special-case rooms ("HR meetings only," "No whiteboard," "Video conferencing not installed").
Set-Mailbox -Identity "BER-3-8-Greenhouse" `
-MailTip "Room seats 8. Tools: 55-inch screen, Yealink VC210, whiteboard."
The MailTip shows up the moment the user adds the room to an invite, before they hit send. It prevents most of the "I didn't realise this room had no video conferencing" tickets.
8. The audit log
Bookmark these two reports.
The first is the per-mailbox audit log:
Search-MailboxAuditLog -Identity "BER-3-8-Greenhouse" `
-ShowDetails -StartDate (Get-Date).AddDays(-30) `
-EndDate (Get-Date)
Two patterns to look for on a monthly cadence:
- Bookings per room. Rooms with zero bookings in a month are usually a metadata problem (capacity 0, wrong room list, no Places entry) or a discoverability problem (bad name).
- Declined invitations. A spike here usually means a double-booking storm or a calendar processing rule that flipped to
AutoUpdatewithout a delegate. Dig in.
The second is Microsoft Graph's getSchedule and findRooms endpoints, which mirror what your display app sees. If a room is missing from findRooms, it's also missing from "Find a room" in Outlook for new users.
9. Hygiene: deleting decommissioned rooms
The thing nobody does. When a room is decommissioned, torn down, repurposed, renamed, the mailbox often stays. People keep booking it. Recurring meetings keep referencing it. Reports include it. Displays read its empty calendar and quietly fail.
The right cadence is a quarterly room audit:
- Pull the full room mailbox list with
Get-Mailbox -RecipientTypeDetails RoomMailbox. - Cross-check against your facilities team's actual room inventory.
- For any mailbox that no longer maps to a real room, transfer or cancel its open bookings, then disable the mailbox.
- For any real room without a mailbox, add one.
Fifteen minutes a quarter. Saves hours a month.
10. Hand-off to the display layer
Once the mailboxes are clean and the metadata is right, the display layer sits on top. Whatever you choose, these are the things to verify on rollout day:
- The display app principal has been granted
Calendars.Readon every room mailbox (a single missed room shows as "No upcoming meetings" forever). - The
ApplicationAccessPolicyis in place. InfoSec will ask. - The display reads each room's time zone correctly. Walk through one meeting on each floor.
- Meeting titles appear correctly. If they're showing as "Busy" or only the organiser's name,
DeleteSubjectwas left at$true. - Auto-release is on, with a 10-minute window. Anything longer than 15 minutes is too forgiving.
- The display shows a "last updated" timestamp or offline indicator. If it ever lies silently, you'll wish you'd insisted on this.
The 30-minute rollout audit
If you've inherited an M365 environment and want to know its state, this is the audit:
- Mailbox list: is every room a
RoomMailbox, named consistently? - Places (or Room Lists): is every room mapped to a building and floor?
- Capacity: set on every mailbox?
- Time zone, working hours, language: match the building?
CalendarProcessing:AutoAccept,AllowConflicts $false,DeleteSubject $falseon every general-purpose room?- MailTips: set on rooms with quirks?
- Display app: registered, application-permissions only, scoped via
ApplicationAccessPolicy? - Decommissioned rooms: present? If yes, disable.
Eight bullets, thirty minutes, every quarter. That's the entire job.
TL;DR
- Name rooms
OFFICE-FLOOR-CAPACITY-Name. Office code first. - Create rooms in PowerShell, not the GUI. Set
ResourceCapacityat create time. - Set
CalendarProcessingtoAutoAccept,AllowConflicts $false,DeleteSubject $false. - Set
MailboxRegionalConfigurationtime zone and Scheduler working hours per building. - Use Microsoft Places (or Room Lists) so the room finder behaves.
- Give your display app application permissions,
Calendars.Readonly, scoped viaApplicationAccessPolicy. - Set MailTips for quirks (capacity, equipment, room purpose).
- Audit the mailbox list quarterly. Disable decommissioned rooms.
If your room mailboxes are clean and the next thing on the list is a display layer that reads them, that's the slice Lobby is built for: a clear room-status display outside every meeting room door. Microsoft 365 support is in active rollout; if you're an M365 shop and want early access, drop us a note.
Sources
- Microsoft Learn, Create and manage room mailboxes: learn.microsoft.com
- Microsoft Learn, Set-CalendarProcessing reference: learn.microsoft.com
- Microsoft Learn, Microsoft Places overview: learn.microsoft.com
- Microsoft Learn, Set-Place reference: learn.microsoft.com
- Microsoft Learn, Limiting application permissions to specific Exchange Online mailboxes: learn.microsoft.com