When you’re working with Room and Equipment mailboxes, you may have noticed the Maximum booking lead time is set to 180 days by default. As a user, you will receive a notification like
- Your meeting request was declined. This resource can only be scheduled up to 180 days in advance.
- Your meeting request was declined. It didn’t specify an end date. The end date must be before x/x/xxxx.
If you are a user, ask your system administrator or IT guy to read this post 🙂
As an administrator, you are able to adjust this booking window from 180 to anything between 0 and 1080 days (approx. 3 years). You can do this by using the Exchange Admin Center (setting the mailboxes one at a time), or by using Powershell (one at a time, or a selection/all at once).
Set Maximum booking lead time in Exchange Admin Center
When you only need to set one resource mailbox, this is probably the easiest way to adjust the days:
- Go to O365 admin (https://outlook.office365.com/ecp/)
- Click Exchange
- Click Recipients
- Click Resources
- Double-click the room in question
- Click booking options
- Adjust the Maximum booking lead time (days) and click OK
Set Booking Window in Days with Powershell
To set the Booking Window in Days with Powershell, you’ll first need to connect to Microsoft Office 365 and import the MSOnline module:
$UserCredential = Get-Credential $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection Import-PSSession $Session -DisableNameChecking Import-module MSOnline
Then, select the room and equipment mailboxes and pipe to Set-CalendarProcessing. To set the window to 365 days, use -BookingWindowInDays 365:
Get-Mailbox | Where-Object {$_.recipientTypeDetails -eq "RoomMailbox" -or $_.recipientTypeDetails -eq "EquipmentMailbox"} | Set-CalendarProcessing -BookingWindowInDays 365
To verify all room and equipment mailboxes are set to 365 days booking window, use something like this. It will show a two-columned list of resource mailboxes and bookingwindowdays:
$allmailboxes = @() $mailboxes = get-mailbox |where {$_.recipientTypeDetails -eq "roomMailbox" -or $_.recipientTypeDetails -eq "EquipmentMailbox"} foreach ($mailbox in $mailboxes) {    $info = [PSCustomObject]@{        Name = $mailbox.name        Days = ($mailbox | Get-CalendarProcessing).BookingWindowInDays }        $allmailboxes += $info    } $allmailboxes
Add “-resultime unlimited” after get-mailbox to change the properties of all mailboxes.
Hi Klaas, thank you for your response. I believe you mean Resultsize, not resultime. Besides that, good tip. I hope my blog post gave you the answer to your problem.
Microsoft have renamed ‘Booking Options’ to ‘Automatic processing’
Can I run the below command to exclude the users from the default lead time and hours set without a delegate assigned.
Set-CalendarProcessing -Identity roomname@yourdomain.com -RequestOutOfPolicy user1@yourdomain.com, user2@yourdomain.com -ResourceDelegates theadmin@yourdomain.com