I was at a clients site during the week helping them out with some Exchange 2003 issues and was talking to them about Exchange 2007/2010 and one of the things that really got them excited was the way that Exchange 2007/2010 deals with resource mailboxes.
This particular client has had no end of troubles with resource mailboxes. This motivated me to post this blog on how things were and how they are now, and most importantly how to set up your resource mailboxes in Exchange 2007/2010.
The Exchange 2003 Way
This is going to be a fairly brief run down on how to set up and configure resource mailboxes in Exchange 2000/2003
Technique 1 – Manual Configuration
- Open ADUC and create the required user object in AD and give them a mailbox on the appropriate Exchange server and mailbox store
- Log in using the AD account you created for this resource.
- Configure Outlook for this account
- Go to Tools > Options
- In the Calendar section clear the “Default reminder” checkbox
- Click on the “Calendar Options” button
- Set the hours that this resource is available during the working week by using the “Calendar work week” section, in this example the resource is available Mon – Fri 9am – 4pm.
Now that we have set up the basic calendar options we have to set up the mailbox to automatically respond to meeting requests.
- Whilst in Tools > Options > Calendar Options
- Click on Resource Scheduling
- Check the “Automatically accept meeting requests and process cancellations” and “Automatically decline conflicting meeting requests” checkboxes
- Click OK. A second dialog box will appear, asking to set standard permissions for all users, click OK.
Technique 2 – Auto Accept Agent
I could write a whole series of posts on seting up, configuring and troubleshooting AAA but instead I will send you to this TechNet article on how to setup and configure AAA.
Basically AAA automates the above process, this is particularly useful if you have a large number of resource mailboxes and the above technique is going to take a long time to get through.
My personal preference is to use Technique 1 where ever possible as I have had the most success with it and minimal additional configuration after the initial setup.
The Exchange 2007/2010 Way
As usual I will go through both the GUI and Powershell way to perform these tasks – use which ever option you are more comfortable with.
The GUI Way
- Log onto you Exchange 2007/2010 Server and open the EMC
- Navigate to Recipients > Mailboxes
- In the Action pane on the right click New Mailbox > Select Room Mailbox
- Select new or Existing user. Note: If you wish to use and existing user account it MUST be disabled before it can become a resource mailbox
- Fill in the blanks for a new user
- Select a database and Alias
- Review the details then click next
- To configure auto accept on this resource you MUST use Powershell. Open EMS and type the following:
Set-MailboxCalendarSettings -Identity "Board Room Adelaide Office" -AutomateProcessing:AutoAccept - To set this on all room mailboxes we can use some powershell smarts to do it all in one easy process
Get-mailbox -RecipientTypeDetails RoomMailbox | Set-MailboxCalendarSettings -Identity "Board Room Adelaide Office" -AutomateProcessing:AutoAccept
Powershell Method
Type the following into the EMS
set-mailboxcalendarsettings (New-Mailbox -Name 'Board Room Adelaide Office' -Alias 'SABoardRoom' -OrganizationalUnit 'Exchangelabs.local/Exchange Users' -UserPrincipalName 'SABoardRoom@Exchangelabs.local' -SamAccountName 'SABoardRoom' -FirstName 'Board' -Initials '' -LastName 'Room ' -Database 'EXCHANGE2007\First Storage Group\Mailbox Database' -Room) -automateprocessing:AutoAccept
Additional resource settings
These are a few extra command you can add to the Powershell commands and what they do (taken from TechNet here)
AddAdditionalResponse
The AddAdditionalResponse parameter specifies whether additional information would be sent from the resource mailbox when responding to meeting requests.
This parameter is ignored unless the AutomateProcessing parameter is set to AutoAccept.
AdditionalResponse
Use the AdditionalResponse parameter to specify the additional information to be included in responses to meeting requests.
AddNewRequestsTentatively
Set the AddNewRequestsTentatively parameter to $true to have the Calendar Attendant put new calendar items tentatively on the calendar. If the AddNewRequestsTentatively parameter is set to $false, only existing calendar items are updated by the Calendar Attendant.
AddOrganizerToSubject
Use the AddOrganizerToSubject parameter to specify whether the meeting organizer's name will be used as the subject of the meeting request.
This parameter is ignored unless the AutomateProcessing parameter is set to AutoAccept.
AllBookInPolicy
Use the AllBookInPolicy parameter to specify whether to automatically approve in-policy requests from all users.
AllowConflicts
Use the AllowConflicts parameter to specify whether to allow conflicting meeting requests.
AllowRecurringMeetings
Use the AllowRecurringMeetings parameter to specify whether to allow recurring meetings.
AllRequestInPolicy
Use the AllRequestInPolicy parameter to specify whether to allow all users to submit in-policy requests.
These requests will be subject to approval by a resource mailbox delegate unless the AllBookInPolicy parameter is set to $true.
AllRequestOutOfPolicy
Use the AllRequestOutOfPolicy parameter to specify whether to allow all users to submit out-of-policy requests.
Out-of-policy requests are subject to approval by a resource mailbox delegate.
AutomateProcessing
Use the AutomateProcessing parameter to enable or disable calendar processing on the mailbox.
If this parameter is set to None, both resource booking and the Calendar Attendant will be disabled on the mailbox. If set to AutoUpdate, the Calendar Attendant will process meeting requests and responses. If this parameter is set to AutoAccept, resource booking will be enabled on the mailbox.
BookingWindowInDays
Use the BookingWindowInDays parameter to specify the number of days meetings are allowed to be booked in advance.
BookInPolicy
Use the BookInPolicy parameter to specify a list of users who are allowed to submit in-policy meeting requests to the resource mailbox. Any in-policy meeting requests from these users will automatically be approved.
ConflictPercentageAllowed
Use the ConflictPercentageAllowed parameter to set a conflict percentage threshold for recurring meetings. If the percentage of instances of a recurring meeting that conflict with other meetings exceeds this number, the recurring meeting request will be declined.
DefaultReminderTime
Use the DefaultReminderTime parameter to specify the default reminder time for the meeting requests.
DeleteAttachments
Set the DeleteAttachments parameter to $true to remove attachments from all incoming messages.
This parameter is ignored unless the AutomateProcessing parameter is set to AutoAccept.
DeleteComments
Use the DeleteComments parameter to remove any text in the message body of incoming meeting requests.
This parameter is ignored unless the AutomateProcessing parameter is set to AutoAccept.
DeleteNonCalendarItems
Set the DeleteNonCalendarItems parameter to $true to remove all non-calendar items received by the mailbox.
DeleteSubject
Use the DeleteSubject parameter to remove the subject of incoming meeting requests.
This parameter is ignored unless the AutomateProcessing parameter is set to AutoAccept.
DisableReminders
Use the DisableReminders parameter to specify if you want to disable reminders for meetings in the mailbox.
EnableResponseDetails
Set the EnableResponseDetails parameter to $true to include the reasons for accepting or declining a meeting in the response e-mail message.
EnforceSchedulingHorizon
Use the EnforceSchedulingHorizon parameter to specify whether recurring meetings that have an end date beyond the booking window will be rejected.
ForwardRequestsToDelegates
Use the ForwardRequestsToDelegates parameter to specify whether to forward incoming meeting requests to the delegates defined for the mailbox.
IgnoreDefaultScope
The IgnoreDefaultScope parameter instructs the command to ignore the default recipient scope setting for the Exchange Management Shell and use the entire forest as the scope. This allows the command to access Active Directory objects that are not currently in the default scope. Using the IgnoreDefaultScope parameter introduces the following restrictions:
- You cannot use the DomainController parameter. The command will use an appropriate global catalog server automatically.
- You can only use the DN for the Identity parameter. Other forms of identification, such as alias or GUID, are not accepted.
Instance
The Instance parameter enables you to pass an entire object to the command to be processed. It is mainly used in scripts where an entire object must be passed to the command.
MaximumConflictInstances
Use the MaximumConflictInstances parameter to set the maximum number of conflicts allowed for recurring meetings. If the number of instances for a recurring meeting that are in conflict exceeds this number, the recurring meeting request will be declined.
MaximumDurationInMinutes
Use the MaximumDurationInMinutes parameter to specify the maximum duration allowed for incoming meeting requests.
OrganizerInfo
Set the OrganizerInfo parameter to $true to have resource mailboxes send organizer information when a meeting request is declined because of conflicts.
ProcessExternalMeetingMessages
Use the ProcessExternalMeetingMessages parameter to specify whether to process meeting requests originating outside the Exchange organization.
RemoveForwardedMeetingNotifications
If the RemoveForwardedMeetingNotifications parameter is set to $true, meeting forwarding notifications are moved to the Deleted Items folder after they are processed by the Calendar Attendant.
RemoveOldMeetingMessages
If the RemoveOldMeetingMessages parameter is set to $true, the Calendar Attendant removes old and redundant updates and responses.
RemovePrivateProperty
Set the RemovePrivateProperty parameter to $true to clear the private flag for incoming meeting requests.
RequestInPolicy
Use the RequestInPolicy parameter to specify a list of users who are allowed to submit in-policy meeting requests to the resource mailbox. All in-policy meeting requests from these users will be subject to approval by a resource mailbox delegate.
RequestOutOfPolicy
Use the RequestOutOfPolicy parameter to specify a list of users who are allowed to submit out-of-policy requests.
Out-of-policy requests are subject to approval by a resource mailbox delegate.
ResourceDelegates
Use the ResourceDelegates parameter to specify a list of users who are resource mailbox delegates. Resource mailbox delegates can approve or reject requests sent to this resource mailbox.
ScheduleOnlyDuringWorkHours
Use the ScheduleOnlyDuringWorkHours parameter to specify whether to allow meetings to be scheduled outside work hours.
TentativePendingApproval
Set the TentativePendingApproval parameter to $true to mark pending requests as tentative on the calendar. If set to $false, pending requests are marked as free.
That’s it guys. Have fun!