Using Exchange 2007 for Resource Booking

16 July 2008
by Nathan Winters

The process of booking various resources to go with a meeting room just got a whole lot easier with Exchange 2007. Nathan Winters explains Exchange’s resource-scheduling functionality and offers practical advice on how you might go about configuring Exchange to allow users who are scheduling meetings to specify that such things as video conferencing, projection equipment, and refreshments are required for the meeting.

Introduction

Although previous versions of Exchange were regularly used to host mailboxes that represented resources, Exchange 2007 was the first version in which these mailboxes were actually different from normal mailboxes. This means that there is now no need to rely on add-in software such as the ‘Auto Accept Agent’. It also means that the design process has been rather more thought through, thereby ensuring a useful solution both at the server and client end.

In Exchange 2007, it is possible to create resource mailboxes that can represent either Rooms or Equipment. These exist as disabled accounts in Active Directory and can be managed in various ways. Exchange 2007 also contains the type of ‘Auto Accept Agent’ functionality that was missing from Exchange 2003. Having a mailbox type of "Resource" is useful because it makes administration separate. It allows these mailboxes to have special functionality but yet to be secure as disabled users. It is also helpful to be able to distinguish between rooms and equipment as it is easier for users, and gives more flexibility when adding custom resource properties, as we shall see later.

With the ‘Availability Service’ it is now possible to get real-time information about resource availability without the need to wait for public folder replication to occur (so long as Outlook 2007 is being used). To make best use of this solution you must ensure that Outlook 2007 is being used by those who will be interacting with the resources and managing their use. This is important because much of the user interface, such as the Scheduling Assistant, is held in Outlook 2007. I would however be careful in rolling out Outlook 2007 to the entire user base before thorough testing is carried out. Unless you are careful, you will have dissatisfied users; this is because Outlook 2007 does not always perform as expected, especially with third party add-ons.

Environment

My test environment consists of servers in two sites. Each site has a Mailbox server and a combined Hub-Transport and Client-Access server. Outlook 2007 and OWA 2007 are used as clients. Various users have been set-up in each site such as users, admin users (secretaries), resources (projectors), and rooms. I have configured such a test environment because it is useful to be able to show different sites with a different naming convention. Equally I was interested to see how time zones are handled and discovered that, in my view, this could be done better. For example, as I’ll mention later, Outlook is not as flexible as I would like in helping people to arrange meetings in different time zones that require a room in each zone. You could easily test the vast majority of this functionality on a single Exchange server with a single Outlook client.

Creating or Migrating resource mailboxes

The resource mailboxes can be created from the GUI or from the command line as shown below:

New-Mailbox -database "Siteamb1\SG1\DB1" -Name SiteA-Room1 -
OrganizationalUnit
"SiteA Rooms" -DisplayName "SiteA-Room1" -
UserPrincipalName SiteA-Room1@gaots.co.uk -Room

Note - If you are migrating the resource mailboxes from an Exchange 2003 system, then use one of the following commands to convert the migrated mailbox to a resource, either ‘room’ or ‘equipment’ as you wish.

Set-Mailbox -Identity Name -Type Room

Set-Mailbox -Identity Name -Type Equipment

Before moving on, the resource mailboxes must be set-up to ‘auto accept’ meeting requests; otherwise they will always remain as ‘tentative’ until an operator intervenes. This is done as follows:

Get-Mailbox | where {$_.ResourceType -eq "Equipment"} | Set-MailboxCalendarSettings -AutomateProcessing:AutoAccept

 

Get-Mailbox | where {$_.ResourceType -eq "Room"} | Set-
MailboxCalendarSettings -AutomateProcessing:AutoAccept

Once suitably configured as above, each resource mailbox will send an auto-accept message to meeting organizers (Figure 1). The message text can be customized to suit requirements.

Figure 1 – Showing auto acceptance. This message can be customized.

Feature Investigation 

I have now discussed how to create resource mailboxes and how to configure their basic option of responding by accepting requests. As you saw, the initial setup is really fairly simple; it is just important to remember that, when migrating from 2003, you must convert the mailbox to the new resource type. Now, let’s move on and look at some of the key resource-centric features that Exchange 2007 offers.

Security and Booking Policies 

Both security configuration and booking policies allow the administrator to grant control of resource mailboxes to certain users: Those users (using Outlook Web Access) can then define how they are used. For example, it is possible to specify the maximum meeting duration, to define and allow meetings to be scheduled only during working hours and to define how to handle conflicts.

The first step is to setup the resource-admin users as ‘delegates’ of the specific resources in each site. The command below will get mailboxes with the type Equipment or Room and with “sitea” in the name. It will then give Delegate access to the account “siteaadmin”. I have repeated the steps for siteb:

Get-Mailbox -RecipientTypeDetails EquipmentMailbox, RoomMailbox | Where {$_.Name

-match "^sitea"} | Set-MailboxCalendarSettings -ResourceDelegates siteaadmin 
 

Get-Mailbox -RecipientTypeDetails EquipmentMailbox, RoomMailbox | Where {$_.Name -match "^siteb"} | Set-MailboxCalendarSettings -ResourceDelegates sitebadmin

The ‘delegate user’ for each resource mailbox may be sent a copy of the meeting requests which go to that resource depending on policy, and they are then able to accept or reject these requests.

Next set-up the admin accounts in sitea and siteb to have full access to their respective resources. The command below is for siteb:

Get-Mailbox -RecipientTypeDetails EquipmentMailbox, RoomMailbox | Where {$_.Name -match "^siteb"} | Add-MailboxPermission -AccessRights FullAccess -User sitebadmin

With Full Admin permissions on the resource mailbox, the admin user can then open the mailbox as an additional mailbox in Outlook and have full control of all functions. Most important of these is the OWA Options/Resource Settings section of a resource mailbox: This is used to configure some of the Resource options such as; "Resource Scheduling Options", "Resource Scheduling Permissions", "Resource Privacy Options", and "Response Message". Every option that is available via the shell is also available in OWA as shown in Figure 2.

To access the relevant mailbox in OWA you will need to access a specific URL:

http://servername/owa/ResourceMailbox@domain.com

… and then log in with the account which has Full Access rights. Click on the Options button in the top right hand corner and then, in the left hand pane, click on the Resource Settings section.

Figure 2 – The Resource Settings page in OWA options

Once you have reached the Resource Settings section of the mailbox options in OWA, you can see the policies that are available. There are three policies, BookInPolicy, RequestInPolicy, and RequestOutOfPolicy.

  • BookInPolicy is a list of users who can schedule the resource automatically. By default it is set to Everyone.
  • RequestInPolicy is a list of users who can request to schedule to resource and have to have it authorized by the resource administrator.
  • RequestOutOfPolicy is a list of users who can submit a request for a resource even if it is already booked. (This might for example be used for the CEO!)

This page enables you to allow conflicts, set maximum meeting length, allow recurring meetings, customize the text of notification mails and a host of other settings.

A policy example

So what if you want to set a policy that makes it mandatory for a delegate to authorise the request when anyone books catering?

This can be done by first setting up the delegate for the catering resource mailbox as above. Then log into OWA (also as above) and set the “These users can schedule automatically if the resource is available:” policy to “Select Users and Groups”. On the “These users can submit a request for manual approval if the resource is available:” policy to “Everyone”. Save the settings.

At this point, when anyone tries to submit a request, the delegate user will get a mail like the one in Figure 3.


Figure 3 –
The Request info forwarded to delegates

The delegate user can then accept the request (and go ahead and book the catering with the caterer!).

Meanwhile the requesting user will get a mail as in Figure 4, showing the pending request. The meeting is held as tentative to prevent the resource being booked by someone else.

Figure 4 – The Tentative mail received by the user whilst waiting approval

Once the delegate user approves the request, the meeting will be booked and acceptances sent out.

More info about the policies and the shell commands available can be found here:

http://technet.microsoft.com/en-us/library/aa996340.aspx

http://technet.microsoft.com/en-us/library/bb124987(EXCHG.80).aspx

Viewing Meeting rooms

So what does this look like from the client perspective? In Outlook 2007 it is possible to see all rooms, and their availability, in one window by using the Scheduling Assistant in Outlook 2007 as shown in Figure 5.


Figure 5 –
The Scheduling Assistant

All rooms can be added from the “Add Rooms” button. In the main window you will see which rooms are available: this is supplemented by the “Suggested Times” area on the right hand side.

Although it isn’t obvious, it is possible to set the meeting time zone when creating a meeting using the Time Zones button highlighted in Figure 5. However, it is not possible to view and additional time zone in the scheduling assistant as you can in the main Outlook calendar.

Scheduling resources

The Scheduling tab is where most bookings will take place. The basic scheduling of resources is simple. First open a meeting request and enter a subject and if necessary, the attendees. Next move to the Scheduling tab. Use the new ‘Add Rooms’ button to open the window shown in Figure 6. This shows the ‘All Rooms’ address list which gives a view of the capabilities of each room. As you can see, ‘SiteB-Room2’ is listed with a capacity of 2 which is a default property that can be customized on each room, using the Exchange Management Console as shown in Figure 7.

Figure 6 – The All Rooms address list

Figure 7 – Setting the capacity of the Room

If you are searching for an available room, then select those with the correct properties (such as capacity), and add them.

When back on the Scheduling tab, you can then use the ‘attendees’ tab to add other attendees or resources such as projectors. Figure 8 below shows the booking facilities.

Figure 8 – Scheduling tab showing users, resources, and rooms

Custom Resource Properties

As I mentioned earlier it is possible to add custom properties to resource mailboxes. If, for example, you have a catering menu and you want to use a resource mailbox to identify the menu code, then firstly create the custom resource types as follows.

First read the current resource configuration and store it in a temporary variable called $ResourceConfiguration by running the following command:

$ResourceConfiguration = Get-ResourceConfig

Next create your custom properties, in this case sandwich types - Fish, Vegetarian, Meat:

$ResourceConfiguration.ResourcePropertySchema+=("Equipment/Fish")

$ResourceConfiguration.ResourcePropertySchema+=("Equipment/Vegetarian")

$ResourceConfiguration.ResourcePropertySchema+=("Equipment/Meat")

Finally update the resource configuration of your organization by using the modified resource property schema, using the following command:

Set-ResourceConfig -Instance $ResourceConfiguration

Once you have created the custom resource properties, you will then add them to the relevant resource mailbox: this can be done in Exchange Management Console. The example shown in Figure 9 shows two catering menus:

Figure 9 – Showing the method of adding custom resources

Having done that, one way to view these extended attributes is by using the PowerShell command below:

Get-Mailbox -RecipientTypeDetails RoomMailbox |fl Name,ResourceCustom

However, with a little more investigation, I have found another more user-friendly way!

As it would appear that only the ‘All Rooms’ address list has the right GUI part to show the “Description” field, I have edited the filter to include the EquipmentMailbox type as well.

Figure 10 – The combined Rooms and Equipment resources showing custom properties

I used this command to edit the filter.

Set-AddressList -Identity "All Rooms" -RecipientFilter {(Alias -ne $null -and (RecipientDisplayType -eq 'ConferenceRoomMailbox' -or RecipientDisplayType -eq
'SyncedConferenceRoomMailbox' -or RecipientDisplayType -eq 'EquipmentMailbox'))}

The results of the filter change are shown in Figure 10.

Summary

This article describes the Exchange Resource Scheduling functionality. I realize I haven’t covered every single feature, but I have aimed at doing enough to give you the skills needed to continue developing your resource booking solution using Exchange 2007.

In general, with a little investigation and some color-coding in Outlook, you can create a decent resource booking system. Of course it is not as polished as some of the 3rd party systems, but then a lot of them are not that great!

Some improvements are necessary in the user-interface. For example, when you are adding custom resource properties you can't actually see them in Outlook unless you are modifying the Rooms address list. It should be possible to use the Exchange Web Services to create a custom front end for working with the ‘resource mailboxes’ that you create. Let’s hope someone does it soon.


© Simple-Talk.com