# Room and Equipment Mailboxes in Exchange Online: Booking Setup

> Create room and equipment mailboxes in Exchange Online, group rooms into room lists, and control who can book them with Set-CalendarProcessing.

Source: https://www.epifive.com/blog/room-equipment-mailboxes-booking-setup · Published 2026-10-26 · EpiFive

## Key takeaways

- Room mailboxes model physical locations and equipment mailboxes model movable resources, but both are created with New-Mailbox and booked through meeting requests.
- Booking behaviour is controlled by Set-CalendarProcessing, and AutomateProcessing must be AutoAccept for the booking rules to take effect.
- By default anyone can book a resource, the booking window is 180 days and the maximum meeting length is 1,440 minutes.
- Use AllBookInPolicy, BookInPolicy, AllRequestInPolicy and ResourceDelegates to switch between open booking, restricted booking and approval workflows.
- Room lists can only be created in Exchange Online PowerShell and help users find rooms by building in Outlook.

To make a meeting room or a piece of shared equipment bookable in Microsoft 365, create a resource mailbox with `New-Mailbox -Room` or `New-Mailbox -Equipment`, then tune its booking rules with `Set-CalendarProcessing`. Users add the resource to a meeting invitation like any other attendee, and Exchange accepts or declines the request automatically, or forwards it to an approver.

## Who this is for and what you will have

This guide is for administrators of small and mid-sized Microsoft 365 tenants who need a reliable way to book meeting rooms, projectors, loan laptops or a pool car without a separate booking system. By the end you will have:

- A room mailbox and an equipment mailbox with sensible names and metadata.
- Booking limits (how far ahead, how long, working hours only).
- Either open booking, restricted booking for named groups, or delegate approval.
- A room list so users can browse rooms by building.
- A verification routine and fixes for the common problems.

## Room versus equipment mailboxes

Microsoft defines two kinds of resource mailbox:

| Type | Represents | Examples |
| --- | --- | --- |
| Room mailbox | A resource assigned to a physical location | Conference room, auditorium, training room |
| Equipment mailbox | A resource that is not location specific | Portable computer, projector, microphone, company car |

Room mailboxes support extra metadata such as wheelchair accessibility, tags and audio, display and video device names. The admin centre lists those extra fields for room mailboxes only. Both types are booked in the same way, and the booking rules you configure later apply to both.

## Prerequisites

- An account with permissions to manage recipients in Exchange Online (for example, Exchange Administrator).
- The Exchange Online PowerShell module. If you have not connected before, see [/blog/connect-exchangeonline-errors-fix](https://www.epifive.com/blog/connect-exchangeonline-errors-fix) for connection problems.
- A naming convention. The Microsoft documentation suggests summarising key details in the Name value because users see the name when they pick the resource from the address book. A pattern such as `Room - HQ - 2F - Boardroom (12)` carries the building, floor and capacity without extra lookups.
- In a hybrid deployment, create resource mailboxes where they belong: room mailboxes for your on-premises organisation in on-premises Exchange, and room mailboxes for your Exchange Online organisation in Exchange Online.
- Do not use nested groups anywhere a resource mailbox setting accepts a group. Only non-nested groups work.

Connect first:

```powershell
Connect-ExchangeOnline -UserPrincipalName admin@contoso.com
```

## Create the mailboxes

### In the Exchange admin centre

1. Open the Exchange admin centre at `https://admin.exchange.microsoft.com` and go to **Recipients** > **Resources**.
2. Select **Add a room resource** or **Add an equipment resource**. The wizard is the same for both.
3. On the setup page enter a unique **Name** and a **Resource mail address**: an alias on the left of the at sign and an accepted domain on the right.
4. On the **Set properties** page you can optionally set **Capacity**, **Location**, **Phone number**, **Department**, **Company**, an **Address book policy** and the postal address fields.
5. On the **Booking delegate settings** page choose the booking options and whether requests are accepted automatically or sent to delegates (both are covered below).
6. Review, select **Create**, then **Done**.

### With PowerShell

The PowerShell syntax from Microsoft's documentation is:

```powershell
New-Mailbox -Name <Name> <-Room | -Equipment> [-Alias <Alias>] [-DisplayName "<DisplayName>"] [-PrimarySmtpAddress <EmailAddress>]
```

Create one of each:

```powershell
New-Mailbox -Name "HQ-2F-Boardroom" -Room -DisplayName "Boardroom (HQ 2F, 12 seats)" -PrimarySmtpAddress boardroom@contoso.com

New-Mailbox -Name "Projector-01" -Equipment -DisplayName "Projector 01" -PrimarySmtpAddress projector01@contoso.com
```

If you omit `-Alias`, the Name value is also used as the alias in the email address, so avoid spaces in Name when you do not pass `-PrimarySmtpAddress`.

### Add capacity and room metadata

`Set-Mailbox` can record capacity, and `Set-Place` adds metadata that improves search and room suggestions in Outlook. `Set-Place` is available only in the cloud service and Microsoft recommends the EXO V3 module for it.

```powershell
Set-Mailbox -Identity boardroom@contoso.com -ResourceCapacity 12

Set-Place -Identity boardroom@contoso.com -Building "HQ" -Floor 2 -FloorLabel "Second floor" -Capacity 12 -IsWheelChairAccessible $true -AudioDeviceName "Conference speakerphone" -DisplayDeviceName "75-inch display"
```

In a hybrid environment, `Set-Place` does not change City, CountryOrRegion, GeoCoordinates, Phone, PostalCode, State or Street on synchronised room mailboxes. Use `Set-User` or `Set-Mailbox` on-premises for those.

## Understand the booking defaults

Check what a new resource does out of the box:

```powershell
Get-CalendarProcessing -Identity boardroom@contoso.com | Format-List AutomateProcessing,AllBookInPolicy,AllRequestInPolicy,BookingWindowInDays,MaximumDurationInMinutes,AllowRecurringMeetings,ScheduleOnlyDuringWorkHours,DeleteSubject,AddOrganizerToSubject
```

From the Set-CalendarProcessing reference, the relevant defaults are:

| Setting | Default | Meaning |
| --- | --- | --- |
| AutomateProcessing | AutoAccept (for mailboxes created in the admin centre, or in PowerShell after 15 November 2018) | The resource booking attendant accepts or declines based on policy |
| AllBookInPolicy | True | In-policy requests from everyone are approved automatically |
| AllRequestInPolicy | False | Nobody is routed to a delegate for approval |
| BookingWindowInDays | 180 | How far ahead the resource can be booked (0 to 1080) |
| MaximumDurationInMinutes | 1440 | Longest allowed meeting (24 hours) |
| AllowRecurringMeetings | True | Recurring meetings are allowed |
| ScheduleOnlyDuringWorkHours | False | Requests outside working hours are accepted |
| AllowConflicts | False | Conflicting bookings are declined |
| DeleteSubject | True | The subject of the request is removed |
| AddOrganizerToSubject | True | The organizer's name replaces the subject |
| ProcessExternalMeetingMessages | False | Requests from external senders are rejected |

Note the last three. Many administrators are surprised that a room calendar shows the organizer's name rather than the meeting title. That is the default, not a fault.

The `AutomateProcessing` value matters. `None` disables calendar processing completely. `AutoUpdate` means only the Calendar Attendant works and requests stay tentative until a delegate approves. `AutoAccept` enables the resource booking attendant, which is what makes the booking rules in this article work. Resource mailboxes created in PowerShell before 15 November 2018 default to `AutoUpdate`, so set it explicitly on old resources.

## Configure who can book and how

### Open booking with limits

The default already allows anyone to book. Add limits that suit a typical office:

```powershell
Set-CalendarProcessing -Identity boardroom@contoso.com `
  -AutomateProcessing AutoAccept `
  -BookingWindowInDays 90 `
  -MaximumDurationInMinutes 480 `
  -ScheduleOnlyDuringWorkHours $true `
  -DeleteSubject $false `
  -AddOrganizerToSubject $false
```

This accepts bookings up to 90 days ahead, caps meetings at eight hours, declines requests outside the mailbox's working hours and keeps the real subject visible. Working hours default to 8:00 to 17:00 Monday to Friday and can be changed with the WorkDays, WorkingHoursStartTime, WorkingHoursEndTime and WorkingHoursTimeZone parameters of `Set-MailboxCalendarConfiguration`.

By default a recurring meeting that runs past the booking window is declined, because `EnforceSchedulingHorizon` defaults to true. Set it to false if you would rather accept the series and have Exchange trim it to the window.

To apply a rule to every room at once, filter by recipient type, as the Microsoft documentation does:

```powershell
Get-Mailbox -ResultSize Unlimited -Filter "RecipientTypeDetails -eq 'RoomMailbox'" | Set-CalendarProcessing -ScheduleOnlyDuringWorkHours $true -MaximumDurationInMinutes 540
```

### Restrict booking to named people

For a resource such as a company car, allow only specific users or a non-nested group to book. Everyone else is declined automatically:

```powershell
Set-CalendarProcessing -Identity car01@contoso.com `
  -AutomateProcessing AutoAccept `
  -AllBookInPolicy $false `
  -BookInPolicy "ayla@contoso.com","tony@contoso.com"
```

Microsoft calls this scoped auto-approval: AutomateProcessing is AutoAccept, ForwardRequestsToDelegates is false, AllBookInPolicy is false, AllRequestInPolicy is false and BookInPolicy lists the approved bookers.

### Require approval from a delegate

For a high-demand room or expensive equipment, let anyone request but require an approver:

```powershell
Set-CalendarProcessing -Identity projector01@contoso.com `
  -AutomateProcessing AutoAccept `
  -AllBookInPolicy $false `
  -AllRequestInPolicy $true `
  -ResourceDelegates "chris@contoso.com","michelle@contoso.com"
```

`ForwardRequestsToDelegates` defaults to true, so requests go to the delegates. If you assign more than one delegate, only one of them has to act on a request. Give the delegates access to the calendar folder so they can see it:

```powershell
Set-MailboxFolderPermission -Identity "projector01@contoso.com:\Calendar" -User chris@contoso.com -AccessRights Editor -SharingPermissionFlags Delegate
```

Repeat for each delegate. In the admin centre the same choice is under the **Booking** tab, **Manage delegate settings**.

Two further scenarios are worth knowing. `-AllRequestOutOfPolicy` lets all users submit requests that break the policy limits (for example, too long) for delegate approval, and `-RequestOutOfPolicy` does the same for named users only. Use these when you want most people held to the limits but a few exceptions to be approved by hand.

### Allow external organisers

If partners or customers send invitations to the room, set:

```powershell
Set-CalendarProcessing -Identity boardroom@contoso.com -ProcessExternalMeetingMessages $true
```

## Group rooms into a room list

Room lists are distribution groups that contain only room mailboxes. Microsoft recommends them if you have, or expect, more than 100 rooms, or rooms in several buildings. You can create room lists only in PowerShell, not in the admin centre.

```powershell
New-DistributionGroup -Name "HQ Meeting Rooms" -RoomList

Add-DistributionGroupMember -Identity "HQ Meeting Rooms" -Member boardroom@contoso.com
```

To turn an existing distribution group that already holds rooms into a room list:

```powershell
Set-DistributionGroup -Identity "Building 34 Conference Rooms" -RoomList
```

If you want a room hidden from the address book, use **Manage hide from GAL** on the **General** tab of the resource. A hidden resource can still be booked by anyone who types its email address.

## Verify the setup

1. Confirm the mailbox type:

   ```powershell
   Get-Mailbox -Identity boardroom@contoso.com | Format-List Name,RecipientTypeDetails,PrimarySmtpAddress
   ```

   You should see `RoomMailbox` or `EquipmentMailbox`.

2. Confirm the booking policy with the `Get-CalendarProcessing` command shown earlier.
3. List all resources: `Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails EquipmentMailbox,RoomMailbox`.
4. Confirm room lists and their members:

   ```powershell
   Get-DistributionGroup -ResultSize Unlimited -RecipientTypeDetails RoomList
   Get-DistributionGroupMember -Identity "HQ Meeting Rooms"
   ```

5. Send a real test: as a normal user, create a meeting in Outlook and add the room as a resource or in the Location field. Book the same slot from a second account to confirm the conflict is declined. Then try a meeting longer than your maximum and one outside the booking window, and check the decline message.

## Troubleshooting

### The room never responds to invitations

Check `AutomateProcessing`. If it is `None` or `AutoUpdate`, requests are not accepted automatically. This is most likely on resources created in PowerShell before 15 November 2018. Set it to `AutoAccept`.

### Requests are declined that should be allowed

Look at the limits first: `MaximumDurationInMinutes`, `BookingWindowInDays` and `ScheduleOnlyDuringWorkHours`. A recurring series is declined when it extends beyond the booking window while `EnforceSchedulingHorizon` is true, and when any occurrence conflicts while `AllowConflicts` is false. `ConflictPercentageAllowed` and `MaximumConflictInstances` both default to 0.

### Delegates never receive requests

Delegate routing needs `AutomateProcessing` set to `AutoAccept`, `ForwardRequestsToDelegates` true, `AllBookInPolicy` false and `AllRequestInPolicy` true (or the out-of-policy equivalents). The Set-CalendarProcessing reference also notes that setting `AutoUpdate` on a room mailbox means delegates do not get requests at all.

### Group values do not work

Nested groups are not supported in resource mailbox settings. Use a flat, non-nested group in `BookInPolicy`, `RequestInPolicy` or `ResourceDelegates`.

### The meeting title is missing

This is the `DeleteSubject` and `AddOrganizerToSubject` default behaviour described above. Set both to false. Users also need at least the LimitedDetails role on the resource's calendar folder to see subjects, because the default AvailabilityOnly role hides them.

### Attachments and body text are stripped

`DeleteAttachments` and `DeleteComments` also default to true, so attachments and body text in incoming requests are removed. Set them to false if people rely on the invitation body in the room's calendar.

### Synchronised room properties will not change

In hybrid setups, edit them on-premises as described under `Set-Place` above.

## Checklist

- Naming convention agreed, mailboxes created with `New-Mailbox -Room` or `-Equipment`.
- `AutomateProcessing` is `AutoAccept` on every resource.
- Booking window, maximum duration and working-hours limits set deliberately.
- Restricted resources use `BookInPolicy`; approval resources use `ResourceDelegates` with calendar permissions.
- Subject, body and attachment settings chosen on purpose.
- Room lists created for each building and populated.
- Test bookings run, including conflict, overlong and out-of-window cases.

If your resources become busy shared inboxes rather than calendars, see [/blog/shared-mailbox-vs-microsoft-365-group](https://www.epifive.com/blog/shared-mailbox-vs-microsoft-365-group) for when each mailbox type fits, and [/blog/calendar-permissions-exchange-online-powershell](https://www.epifive.com/blog/calendar-permissions-exchange-online-powershell) for managing calendar folder permissions.

## References

- Manage resource mailboxes in Exchange Online: https://learn.microsoft.com/en-us/exchange/recipients-in-exchange-online/manage-resource-mailboxes
- Set-CalendarProcessing: https://learn.microsoft.com/en-us/powershell/module/exchangepowershell/set-calendarprocessing
- Set-Place: https://learn.microsoft.com/en-us/powershell/module/exchangepowershell/set-place
- New-Mailbox: https://learn.microsoft.com/en-us/powershell/module/exchangepowershell/new-mailbox
- Connect to Exchange Online PowerShell: https://learn.microsoft.com/en-us/powershell/exchange/connect-to-exchange-online-powershell

## Frequently asked questions

### What is the difference between a room mailbox and an equipment mailbox?

A room mailbox represents a physical location such as a conference room or training room. An equipment mailbox represents a resource that is not tied to a location, such as a projector, a portable computer or a company car. Both are booked by adding them to a meeting request, and both are managed with the same cmdlets.

### How do I stop everyone from booking a room?

Run Set-CalendarProcessing with AllBookInPolicy set to false and list the permitted users or groups in BookInPolicy. Requests from anyone else are declined. If you would rather route other users' requests to an approver, set AllRequestInPolicy to true and add ResourceDelegates instead.

### Why does the meeting subject disappear from the room calendar?

DeleteSubject defaults to true on resource mailboxes, and AddOrganizerToSubject also defaults to true, so the organizer's name replaces the subject. Set DeleteSubject and AddOrganizerToSubject to false with Set-CalendarProcessing if you want the original subject kept.

### Can people outside my organisation book a room?

Not by default. ProcessExternalMeetingMessages defaults to false, so meeting requests from external senders are rejected. Set it to true on the resource mailbox if you want external organisers to be able to book it.

