EMSS Case Study
The implementation of Creme at EMSS
Challenges
- Capture client interaction non-intrusively
- Ensure validity of customer data
- Allow limited reseller access to customer data
- Promote seamless availability of customer data throughout the organisation, both on- and offline, on the web and on the desktop, across operating systems
- Allow distributed usage of the system in the presence of bandwidth constraints
- Automatically manage access of contacts to member's areas on the public website, based on their client relationship
- Integration with existing contact manager and address book software
Approach
- Zope as application server hub
- Use of applicable technologies for integration and exchange: IMAP, LDAP, XML
- Open-ended approach to client design: currently accommodating browsers, mail clients, office suites, GET/POST of XML over HTTP.
Customer Relationship Management at EMSS using Creme
EM Software & Systems is a medium-size software company who produce electromagnetic modelling software to high-tech engineering and manufacturing firms. They need to track the contact details and installed software of their customers, and also of their resellers' customers. The per-seat licensing of the big CRM packages, such as Frontrange Goldmine and mySAP CRM, proved prohibitive to a company of their size. They also knew that they would require extensive customisation, and that their CRM strategy would need to evolve rapidly.
Upfront Systems implemented Creme at EMSS, using Zope as application server. EMSS administrative staff use the Creme web frontend to configure and manage EMSS's products, contacts, customers and resellers. In the case of EMSS, products consist of releases that contain a certain configuration of components and modules. Resellers have customers, who have licenses for specific products, on specific hosts, for certain periods. Resellers and customers have contact persons, who may have certain roles: the contact persons of a reseller may have the right to administer their customers using Creme; while the contacts of a customer may have the right to view or to edit their information on the EMSS public website.
Creme enables EMSS to implement complex business rules regarding workflow, licensing, product configuration and data access. It also allows safe delegation of tasks: resellers may manage their customers, and end users may manage their own personal data and preferences.
Distributed and disconnected operation
Data distribution
EMSS have offices on four continents. Creme uses a variant of ZEO (Zope Enterprise Objects) to replicate the data to each office. Upfront Systems has customized ZEO for usage in a web-application scenario, where it is important for all data to be current on all clients (the server pushes updates as soon as they happen); in contrast to a website scenario, where data is refreshed only when requested by site visitors (the client pulls updates when needed). In this way, the application user is much less likely to encounter stale data, which entails waiting for updates across a slow intercontinental link.
Data in a network of Creme servers is replicated in multi-master fashion: updates on any server is propagated to all others. However, in order to enforce integrity of business data, disconnected clients become read-only: they can still be browsed, but cannot edit until they can see their master again.
In addition, the ancilliary stores used by Creme (IMAP and LDAP) also have modes for distributed operation and replication, that may be deployed where relevant.
Disconnected operation
EMSS regularly attend trade shows and conferences, where they need access to their contact data, and need to capture contact information to follow up later. Creme solves this requirement in the following ways:
- users can synchronize the address books of their mail client or their PDA with the LDAP directory and IMAP account maintained by Creme before going offline;
- users can run Creme on their laptop, operating in read-only mode;
- users can use capture contact information informally, or using their software of choice, and import it to Creme afterwards.
Integration between systems
In order to maximise the return on investment in Creme, we have opted to concentrate on integration technologies. For example, email communication with customers is surfaced in Creme, but it is stored in IMAP. This has the advantage that IMAP tools -- such as web- and desktop clients, filtering, replication and searching software -- may be used to access and process the mail. Creme is only one client among others accessing the IMAP store.
Similarly, contact information is published to an LDAP directory. The first use for this is as source for addresses in Mozilla Mail and Outlook. Office suites that use LDAP as data source, such as OpenOffice and Microsoft Office, can do mailmerges based on data in the directory.
Keeping it current: the public website
Another use has been to manage access to the EMSS public website. Website visitors authenticate with the LDAP directory, which contains their entitlement information. (If the website server is not local to a Creme installation, this directory will be a replicated slave.) This has the advantage that a site user may choose and change their own username and password, without involving Creme.
The public website demonstrates another integration path: once a user has authenticated with the website, they may view their personal data, as well as that of their company and their current licenses. This information is retrieved from Creme as XML by way of an HTTP GET from the website. If the user submits data, the website does an HTTP PUT of the changed XML, and it is imported by Creme. Depending on load and business needs, the public website may cache data retrieved from Creme as aggressively as necessary.
Keeping it current: the world out there
Creme provides a very simple, flexible, generic XML serialisation of its data. In order to import any third-party data into Creme, all that is needed is a transformation layer to generate XML of the correct format. In the same way, Creme data may be consumed by third-party applications by way of HTTP GETs that return XML.






