Exchange 2013 Room Lists

Imagine an international law firm or manufacturer that has locations around the world. Now assume those locations have multiple conference rooms or even multiple buildings with multiple conferences rooms per those buildings. Locating the appropriate room might have taken a carefully constructed namespace that satisfied both IT staff and end-user alike. With Exchange 2013 has a hidden little gem called ‘room list’. The feature essentially groups rooms together to provide an easier way to find a free room in a location. The location can be a building, wing, city, country or whatever logical division you would like to make it.

For my example, I will try to illustrate the flexibility of the feature for a large corporation. Keep in mind that the same principles will apply to smaller companies with less offices.


Scenario
Our fictitious company has offices throughout the world. Spread out in 3-4 cities per country and in 10 countries as of now.

Countries

  • United States
  • Canada
  • Japan
  • France
  • Italy
  • China
  • Poland
  • Mexico
  • Sweden
  • Great Britain


North American

RoomList-NA
EMEA

EMEA
ASIAPAC

ASIAPAC2

The company has locations in major cities of each of these countries. From Chicago, to Paris, to Beijing, to Rome and Tokyo the company has around 30 offices. In each of these offices there are 10 Conference Rooms. Each of the rooms is assigned a capacity that (for this lab) has been randomized (1 – 20 participants).

Creating Room Lists
How do we go about creating the lists that we need for the end users to actually use for meetings. First, we need our Conference Rooms. In the case of my lab I simply created 10 rooms per OU using a CSV list of the cities (located under the /Rooms/ OU in Active Directory.

# Create individual rooms - import CSV of cities
$cities = import-csv "c:\temp\Cities.csv"
$counter = 1
Foreach ($line in $cities) {
	# Get RDN of OU
	$id = $line.cities
	$ou = Get-OrganizationalUnit $id
	$test = $(($ou.distinguishedname).split(","))[0]
	$roomlocation = $test.substring(3)
	While ($counter -lt 11) {
		$name = $roomlocation+$counter
		$random =  get-random -minimum 0 -maximum 20
		New-mailbox -Name $name -OrganizationalUnit $id -room -ResourceCapacity $random
		$counter++
	} # end of the loop, reset the counter upon exiting
	$counter = 1
}

Once I had all the rooms created, now I needed to go through each OU and make a Distribution Group with the -Roomlist parameter to create the room lists. Each room list is based on OUs, including the larger OUs like EMEA, North America, and ASIAPAC.

# Create the actual room lists using OUs as a guide
$countries = import-csv "c:\temp\locations.csv"
Foreach ($line in $countries) {
	# Get RDN of OU
    $id = $line.OrgUnit
    $ou = Get-OrganizationalUnit $id
	$test = $(($ou.distinguishedname).split(","))[0]
	$location = $test.substring(3)+" Room List"
    $location
	New-DistributionGroup -Name $location -OrganizationalUnit "Rooms" -RoomList
	$toadd = get-mailbox -organizationalunit $id
    foreach ($line in $toadd) {
        Add-DistributionGroupMember -Identity $location -Member $line
    }
}

An example of how the grouping looks physically:

RoomList-Grouping

Each region rolls up the same way City –> Country –> Region.

The key command in the last script is

New-DistributionGroup -Name $location -OrganizationalUnit “Rooms” -RoomList.

This command actually creates the group. Once the group is created I also add all the rooms under that OU and the SubOUs to the group (lines 12-14 above). These rooms will make up the rooms that an end-user sees in Outlook and OWA.

Using the Room Lists
In OWA, when you create a new meeting, there is an option to add a Room resource to the meeting request:

RoomList-01

If the defaults are not what you are looking for (circled in Red), you can choose a new rooms list (circled in blue):

RoomList-02a

The new list will then appear:

RoomList-03a

Click on the list you need to search and a list of free rooms appear:

RoomList-04

The same Room Selection can take place in the Scheduling assistant as well:

RoomSearching

Scheduling Assistant

For a smaller company, you might group by building floor, type, or building. The concepts are still the same and in the end still provide the end-user with a better experience looking for a free resource in a particular location. You can just throw all your rooms into one list if the number of rooms is manageable.

Afterthoughts

The purpose of Dynamic Distribution Groups is to make the grouping of objects (in this case people) together easier and ‘dynamic’. What I find strange is that I can create a list of rooms via the distribution group command as discussed above, but I cannot make a dynamic list of rooms as well.

Another problem would be groupings across various regions. This would require specialized groupings [IT conference rooms in each region grouped into a group called “World Wide IT Conference Rooms”

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s