SALESFORCE.COM'S Web-based CRM solution hit the sweet spot for a lot of customers who needed to manage sales opportunities now for relatively little cost and implementation hassle and who needed it running sooner rather than later.
The question then became how to move up the food chain. The new Enterprise Edition boasts three major improvements: more flexible customization, a richer security model, and offline capability.
These features all flow from an architecture that has been in place for some time, and which nicely positions the product to move into a world of interoperable Web services. The product's engine is Oracle 8.1.7, and its business logic is written in PL/SQL. This engine implements a security model which, in the Enterprise Edition, is extended to include role-based permissions and detailed audit logging.
Wrapped around the engine is a layer of Java, which exports two kinds of interfaces. One is the HTML application that browsers will still consume directly. The other is an XML-RPC (Remote Procedure Call) API Salesforce.com built last March to support the synchronization client that relays contact information back and forth between Salesforce.com and customers' Outlook inboxes and PDAs.
The XML-RPC API is also intended as glue for connecting a Salesforce.com CRM implementation to other systems, such as a customer's HR system. And, in the Enterprise Edition, the API defines the XML data model that supports the offline feature.
Ubiquitous Internet access always seems to be right around the corner, yet mobile workers keep finding themselves disconnected. Enabling these folks to access and update CRM information while offline presents an interesting challenge for an ASP with a purely browser-based application.
The solution? Take maximum advantage of the XML and XSL (Extensible Stylesheet Language) capabilities built into Internet Explorer 5 and later. When a user syncs to go offline, new or changed CRM data is serialized as XML and streams down as a set of files stored on the local disk. At the same time, a corresponding set of XSLT (XSL Transformation) stylesheets is generated dynamically and streamed to the client. Browser-based scripts process these files through stylesheets to create an offline UI that is essentially the same as the online version.
Although created differently, the two interfaces share the same security and customization features because these are encapsulated in the engine.
Local data is, of course, a valuable resource even when you are connected. The Enterprise Edition uses it as a cache, which can therefore optimize performance on slow links.
Because IE's security sandbox limits the size of objects kept in its UserData store to 1MB, according to Dave Moellenhoff, CTO of Salesforce.com, it was necessary to create an ActiveX wrapper for the Microsoft XML components. This tactic compromises the zero-install nature of the solution, but only slightly -- far less than would be true were an embedded database required.
Although users sometimes have to work offline, they don't like to. "If it takes a long time to sync," Moellenhoff notes, "people will send their laptops back to the admin and ask to have it done for them."