For more than three years, Microsoft employees have had a custom application to bring data from customer relationship management (CRM) apps into the familiar UI of Outlook. Recently the company made this project, dubbed Project Elixir, available to the public at the Microsoft Download Center.
The Elixir add-in uses Web services to pull information from back-end databases, such as customer relationship management and sales force automation. The data is then aggregated into Office via the Outlook 2003 interface. The front end within Outlook is referred to as Customer Explorer. The design uses the ThisApplication class in Visual Studio 2005 Tools for Office (VSTO), with SQL Server 2005 Express Edition serving as the local data cache.
Developers cannot just copy, paste and deploy Elixir. In posting the sample code, along with white papers that explain functionality such as incorporating the add-in into Outlook's menus and toolbars, Microsoft aims to provide a conceptual framework, said Tim O'Brien, group manager, platform strategy group.
"We want to give customers an inside view of our implementation so they could have a framework so they could go and do the same thing," O'Brien said. "If we can shorten the learning curve for our customers and for internal developers, that's success."
One data set, many sources
Elixir addresses a common problem for end users in general and those using CRM or sales force automation in particular -- a customer's contact information might be simultaneously stored in an enterprise CRM application, a billing system and Microsoft Outlook. In a lot of cases, O'Brien noted, this duplicate information appears as businesses merge and consolidate. To minimize business disruption, integrators deploy a system first and ask integration questions later, if at all. "There are a lot of back-end systems that don't talk to each other," O'Brien said. And the more Microsoft's sales force dealt with this, the more the company's customers talked about the same problem.
In its simplest form, Elixir uses a set of managed utility classes that guide the interaction between the managed add-in code and the COM-based Outlook object model. Each CRM account gets its own Outlook folder with its own set of activities, contacts and opportunities. A local synchronization engine carries data between Outlook and the local SQL Server Express cache, while the CRM synchronization agent synchronizes data between the local cache and the back-office CRM system.
Microsoft developed Elixir to communicate with the Siebel CRM apps its sales force uses. The project started under the code name Alchemy in 2003, when it was focused on data management, and later took on the Customer Explorer UI to get that data to the sales force.
Half the company's sales force uses Elixir now, O'Brien said, while the other half will be introduced to the technology later this year.
A separate Microsoft project, Mendocino, focuses on SAP technology. Combined, the efforts reflect a broad shift in business applications to a familiar UI. "The average information worker uses five applications to do his or her job, but they begin and end the day in Outlook," O'Brien said.
Resources accompany Elixir code
Along with publishing the Elixir code, Microsoft has published three white papers to help developers best deploy the add-in.
The first, Extending Enterprise Applications with Microsoft Outlook: Architectural Design Guide, explains the general challenges of integrating CRM data with a familiar UI and describes the functionality, such as data aggregation and synchronization, that is necessary to effectively integrate CRM. It is based on Microsoft's own experiences in turning Alchemy into Elixir.
The second white paper, Synchronizing a Local Data Store with Microsoft Outlook, covers the possible local data storage options (including SQL Server Express), data synchronization requirements and other controls that can be implemented with Elixir.
The final paper, Outlook Customization for Integrating with Enterprise Applications, identifies the manager utility classes and UI elements needed to make Elixir work and describes how to use VSTO to build them.
In addition, a Project Elixir Case Study is available from MSDN.