Introduction
Recently, an enterprise client asked us to create a solution for reserving company
conference rooms. The client is a technically savvy company with numerous offices
throughout the country and 5-6 conference rooms at each location. The challenge
was for employees who were constantly traveling from one office to another to be
able to find a free conference room “on the fly”, that had the equipment and space
they needed. This article will show you exactly how EastBanc Technologies successfully
integrated existing Microsoft solutions to create a time saving solution for reserving
conference rooms with confidence and ease from any device or computer.
Background
The customer has an internal portal based on Microsoft SharePoint 2010 with 1500
daily users. The company also utilizes Microsoft Exchange. Microsoft Exchange already
has features that allow booking different resources in the company through its Room
Mailbox. Every conference room has its own email address that an employee can use
for booking it, and others can see on the calendar what date and time the room is
reserved for. Outlook 2010 also has a feature called Room Finder. You can read about
Exchange Mailbox features in detail here:
http://technet.microsoft.com/en-us/library/bb124952(v=exchg.141).aspx
Click here to learn more about Room Finder:
http://support.microsoft.com/kb/2673231
At first glance, everything seems easy to set up. However, there are some limitations.
First, all users must have Outlook. Also, the description of the room is very minimal
and doesn’t allow you to specify what the room is equipped with (projector, white
board, conference call equipment, etc.).
Due to these limitations, the customer was looking for ways to create a system
where every employee can see at a glance what rooms are available and what equipment
is included without any extra steps.
SharePoint
The first step in creating this solution was to create 3 lists:
Departments, Conference Rooms, and Conference Room Reservations.
The Departments list consists of different branches in different cities.
Conference Rooms List contains rooms with their characteristics like:
- Name
- Branch
- Capacity
- Room equipment: projectors, white board, etc.
- Email address used for MS Exchange integration.
And finally the list of Conference Room Reservations:
- Room #
- Meeting date
- Meeting start time
- Meeting end time
- Name of a person who booked the room.
So now we have the lists. However, someone has to fill them in, so we grouped
the users by their roles:
- Employees can search for rooms (using different parameters), plan and book
their meeting rooms.
- Reservation Manager can reschedule or cancel existing meetings in his/her
branch.
- Administrator creates and edits meeting rooms and the room directory with
features like number of seats, projector, whiteboard, etc. In addition, Administrator
is able to switch between brunches and to act as Reservation Manager.
UI
Our customer already had a user interface design applied to the portal, so our
designers had little work to do:
1. User’s Home Page:
Screenshot 1: User Interface.
2. A separate link takes you to the list of rooms that contains the basic information.
Details about the room are displayed by clicking on the room name.
Screenshot 2: Conference Rooms Equipment at a Glance.
3. The two-week calendar is available under the link "Search for Meeting Rooms”
Each cell displays the date, who booked a room, and for what time.
Screenshot 3: Calendar
4. You can click a “plus” sign to book a conference room:
Screenshot 4: Conference Room Reservation
Implementation
To make this happen, we had to write a WCF-service, which returns json and also
works with SharePoint. This problem is solved with the appropriate web.config and
with the presence of SVC in the folder ISAPI. There are many publications about
how to properly configure web.config for sending json, for example like this:http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide
Then we developed some ASPX-pages, added them to the module, and implemented
all the logic of a WCF-service through JavaScript using Knockout framework.
The main challenge occurred in Exchange. Virtually, all of the required functionality
is implemented through EWS Managed API (hyperlink to
http://msdn.microsoft.com/en-us/library/dd633709(v=exchg.80).aspx)
However, when the new room was created in the Conference Rooms List, we needed
mailboxes to be created automatically.
We found out that the mailbox can be created only through powershell, and it
is not a problem to invoke the command from C# code.
It is possible to add an event receiver to the Conference Rooms List and invoke
the powershell command on a remote server using Runspace and WSManConnectionInfo.
However, this approach is not secure, therefore we decided to write one more WCF-service
and deploy it to the Exchange server. This service has only one method:
As it was mentioned above, the whole work logic is implemented through WCF-service,
so it made sense to complement our service with methods for booking rooms from Exchange.
We invoked the service method to create our room reservation in Exchange. All the
necessary information was placed in Microsoft.Exchange.Data.Appointment, and then
the meeting was created in the Exchange calendar through API.
We decided to solve the problem of reverse synchronization (when an employee booked
a room in his calendar via Outlook) via a timer job. This job collected all the
information from Exchange and created the missing reservations and deleted canceled
meetings.
Result
EastBanc Technologies successfully created an architecture that provides a scalable
and flexible solution built on Microsoft technology stack using all the advantages
of an integrated solution. The system is customizable and is accompanied by standard
platform tools.
As a result, today
- The company management has a unified collaboration tool that increases the
employees efficiency extending overall Intranet-portal capabilities and simplifying
and optimizing administrative and organizational processes of the Customer.
- Company’s employees can plan their work and key meetings faster, easier
and more efficient than ever before.
- IT staff has a flexible and scalable solution accompanied by a unified standard
and uses "out of the box" functionality to it’s fullest. Therefore, the transition
to the new version of SharePoint and Exchange will be smooth and flawless.