Calendars are a ubiquitous aspect of workplace communication. As every IT pro would know, they can be hard to setup and manage in a sane and user-friendly manner. It can be especially hard to use calendars efficiently to manage meeting room availability. Meeting rooms that can make their status known to people who enter the room can be very handy. Since most meeting rooms come with a TV screen, it makes sense to display this information on the screen.
But first, lets see what each of these things mean and how they are different from each other. Exchange Server is Microsoft’s calendar, mail server and directory server(a fancy term for a contact manager). They offer this product as an enterprise solution for companies of all sizes. The server can be configured and setup in-house on the company’s premises with the option to sync data periodically to servers in the cloud. This sync functionality comes in handy when a company has multiple geographic locations and needs up to date inter location communication systems.
There have been multiple versions of Exchange Server over the years (Exchange Server 2003, 2007, 2010, 2013). Since Microsoft loves to maintain backwards compatibility in all their products, this creates interesting problems for people that want to use the APIs offered by Exchange Server to create software services for the companies that use them. At Ubiq, we integrate with the calendar in Exchange Server to display the meeting information pertinent to a meeting room. All Exchange Server versions support a Resource type, which can used to represent meeting rooms, printers and other non-person entities. Resources may optionally also be configured with a Mailbox. For instance, a meeting room resource is not configured with a mailbox by default in some versions of Exchange Server. Resource mailboxes may also be configured to auto accept calendar invitations. Usually, when you add a meeting room email to the Location field when creating an event, the invite gets sent to the mailbox for the meeting room resource which auto-accepts the invite.
Since our customers use a multitude of Exchange Server versions, we’ve had to add support for the various authentication methods used by them. Each of the methods presented different problems. NTLM Authentication is used exclusively for on-premise Exchange servers. They are integrated with the organization’s Active Directory and require the Resources to have mailboxes associated with, inspecific, they need to have authentication credentials, i.e. email ID and password. Unfortunately, the default behaviour of resources such as meeting rooms in Exchange server is that, they do not explicitly have an actual mailbox associated to them. This was tricky to deal with as it would require the organization’s Exchange Admin to create mailboxes to the meeting rooms. In the case where the Exchange Admin cannot approve this request, we had to come up with a different solution to this problem. For the organizations that use Office 365, NTLM is not an option, for this case, we had to work with Office 365’s Oauth REST API. That was straight forward to work with as Microsoft has done an excellent job in following the standard (for once, lol). However, there were a few settings that had to changed to allow REST API calls to get the right information for the resource calendars.