Zenith Direct Sales System

This case study outlines the direct selling web site that we built for Zenith, one of the UK's largest plumbing supplies retailer. The site was built using our own e-commerce framework, running on Linux and supported by a mySQL database.

Zenith currently have some 150 or so outlets in the UK where professional plumbers and related trades buy their supplies. The branches are popular with their users because they are seen as well-stocked and staffed by knowledgeable and resourceful people with experience of the industry. Whilst these are appealing attributes, it's also acknowledged that branch opening hours can't be geared to every customer's needs, especially those at the smaller end of the industry. As an adjunct to the drop-in activity within in its branches, Zenith decided to put the sales operation on-line; allowing 24-hour ordering of parts with collection from nominated branches.

The initial pilot scheme was intentionally limited to what's called "branch stock": lines that are always expected to be in stock at any branch. The software wasn't intrinsically limited to that, but rather than trying to do on-line checking of stock levels, the pilot was intended to run on the assumption of adequate stock. Stock-level checking could be added later by building tighter links with the business systems at Head Office.

There were a number of project meetings where the overall requirement got a working-over. The key design goals were established: customers would need an existing trade account and number with Zenith; armed with a password, they would be able to log-in to the site and browse or search the policy stock items, filling a shopping trolley as they went. That in itself was not complicated, but the decision that customers should be able to see their own discounted price, rather than the standard list price for items, did prove a particularly difficult nut to crack.

The discount calculations are complex and when we heard how they are worked out, we had some immediate concerns. If the algorithms for doing discounts were duplicated in our software, there would always be the risk that changes on the Head Office systems would get out of step with the web site and this would cause confusion.

The two systems might also fall out-of-step if the policy stock lines got changed, or prices changed whilst the web site didn't. The solution to each of these issues was to develop clear lines of responsibility and then reflect them in the architecture of the solution.

The Architecture

The solution is based on our own e-commerce framework, written in C++. This package provides the tools for session tracking, customer tracking and shopping trolley support. Taking the basic framework, we can add business logic for specific requirements, as was the case of this project. The framework is designed to work with page-layout templates so that page styling is separated from detailed contents, thereby allowing styles to be altered substantially without changing the software.

More details of the framework are written up in the Training Pages study.

There are the usual facilities you would expect from a catalogue site. Browsing or searching for items will produce pages that list the relevant items for purchase. Users can add items to their trolley, review its contents if necessary, then go on to make a purchase. The system knows where their "home branch" is and when they place an order it asks them where they want to collect the order from, i.e. if they want to pick items up from another branch they have that option.

When an order is placed, a confirmation number is generated. Users can call the branch before they go to collect the goods and check that it's ready for collection; the confirmation number uniquely identifies the particular order. The order is then emailed to the branch where it is automatically printed. If the order arrives out-of-hours, counter staff will pick it up first thing in the morning and prepare it for collection when the branch opens for business. Otherwise the order will be processed as part of the normal day-to-day branch activities.

All orders are copied to an email address at Head Office and also stored in the mySQL database. Part of the site is hidden from ordinary users. It allows Head Office staff to review orders placed recently and to generate management reports. Separate user names and passwords are used for this part of the site.

User account details, passwords, prices and information about the stock items are separated from the e-commerce front end. This information is stored in the back-end part of the site and is queried through a simple interface that was defined at the start of the project (although it got modified as necessary whilst the development progressed).

The back-end was written by Zenith's IT staff, using tools which they use on a day to day basis for their other projects. A Linux version proved to work well, though with some rather messy coding to get the data in and out — the package thinks it is talking directly to a user via a telnet session and we had to trick it into using intermediate files to read and write data. Despite this inelegant interface it works well in practice.

The back end consists of an executable program and some large data files that it uses to retrieve product and price information. The data is generated from the mainframes at Head Office and uploaded to the web server by ftp whenever necessary.

The web server itself is running Red Hat 6.0 and is located in the demilitarised zone (DMZ) of the corporate firewall. As usual with Linux systems, it was simply a case of `install and forget' — once set up and running, it takes next to no administrative resources. A few automatic monitoring scripts have been added to it, so that it emails the operations team if any unexpected events occur. Routine checks are also made on it from time to time to monitor normal operations.

The project was run on a rapid-prototyping basis. Rather than try to define all of the aspects in advance, the project team ensured that there was a good agreement on the overall objectives and the development was punctuated by numerous opportunities for review and feedback between ourselves and the project manager at Zenith.

The system went live in November 1999 and was delivered slightly in advance of schedule. It was also under the budgeted price by a small amount. Vince Aleman who managed the project on the Zenith side, along with Dave Hiam, said he wished all his projects were as trouble-free as this one.

Upgrades to the project are now under consideration.