Tuesday, November 20, 2007

Migrating RSOE (Resource Scheduler for Exchange) data into Exchange 2007

A few months ago we got asked if we could extract data out of Resource Scheduler for Exchange (RSOE) from PeopleCube and insert it into Exchange 2007.


Well, because of a request from the West Coast we went ahead and did it. They mainly use RSOE for straight-forward room reservations and are looking to simply transition to the resource reservation features in Exchange 2007. So all we're interested in is moving the reservations in as few steps as possible into Exchange. We make no effort to recreate most of the other features of RSOE (prep time, cleanup times, etc.), all we're doing is transitioning the resource management over.

Here's how it works.


There are two ways to reserve a resource in RSOE:
  • Via a from in Outlook
  • Directly from a web browser

So we deal with each of these cases differently.

From Outlook

This is the easy case. Resource Scheduler puts a MAPI flag and an RSOE identification number in the meeting.

Technical background: Those of you who know how to use OutlookSpy (an invaluable tool for the Exchange developer) can look for RSOCEntryID.

We read this from the RSOE SQL database into an Access database and (since we know the meeting organizer and can uniquely identify the meeting via the MAPI tag), we add the E2K7 resource to the meeting and update it.

The code relies on Outlook 2007/Exchange 2007 to automatically apply meeting updates if an end user has already accepted that meeting. e.g. a time or location change to the meeting is received, the meeting will be automatically updated and the old invitation marked out of date so users will not accidentally accept it. See the TechNet article:
http://www.microsoft.com/technet/technetmag/issues/2006/12/outlook/default.aspx

DONE.

From the Web

This is a more interesting case and we took the most general way of solving it.

Since there is no unambiguous link between the meeting reservation in RSOE and any existing data in Outlook (and a quick look at real world data will convince you that just being at the same time and date is not enough), we just create one meeting owned by the resource owner, with the resource in E2K7.

E2K7 books it and then the meeting organizer can add users or modify as they see fit.

PROCESS ASSUMPTIONS

  1. Resource accounts MUST:
    a) exist and be mail-enabled in Exchange 2007, Active Directory
    b) be configured to process meeting requests
    c) Client must provide a map between RSOE resource name and Exchange Resource alias/email address

  2. Testing and Use:
    a) Service Account defined with Impersonate and Send-As permissions
    b) Test in a lab prior to running in production!!
    c) Sumatra code runs on a 32-bit machine (NOT on a 64-bit Exchange server)
    d) Code uses Exchange Web Services through an Exchange 2007 CAS

  3. End Users use Outlook 2007

  4. Meeting updates:
    a) accepted as part of Exchange 2007 features,
    b) might remain in all end user’ inbox post-update and will not be removed by our code (up to the end user).

  5. The Sumatra process:
    a) does not check for resource double-booking or conflicts
    b) works on CURRENT meetings only – it will skip expired/completed meetings as determined by RSOE’s meeting end date

No comments: