Challenge
Microsoft Retail is the group within Microsoft that is charged with marketing the company's retail products through its channel partners. A big part of selling software through retail channels is having knowledgeable sales representatives that are enthusiastic about promotion your products. Microsoft decided that it wanted to create an online training program for its partner's sales representatives to make them aware of Microsoft products advantages.
They determined that they wanted a program that would present the users with sales information and then have an automated quiz to determine if the user understood the information. As an incentive to get the users to read the material and take the tests, they would be awarded points for passing, and be able to redeem those points for Microsoft products.
Pacific Northwest Software was hired to flesh out this idea and implement it. The solution would have to satisfy many goals:
- Scalability and robustness. The site would have to handle 100,000 or more user sessions in a single day.
- Integrate with Microsoft's shipping system.
- Prevent fraudulent use.
- Support Microsoft agile marketing efforts by allowing new marketing programs to be integrated quickly.
- Allow the site to be theme-able to support both Xbox and PC retail products.
- Provide a customer support system.
- Integrate with Microsoft Retail's live presentations.
- Track results of the users.
Solution
PNWSoft worked closely with Microsoft's business people to create the sites. In this project, as well as all others, we realize that the development lead understanding the business goals of the project is crucial for its efficient development and ultimate utility. The following is an architecture diagram of the program:
The parts in green are application code, blue is database code, and orange third party services.
Scalability
The system was designed to run on Microsoft's web clusters (of which there were three banks of 50-100 or more servers located at various points around the world). We pushed most of the computationally intensive code into the application code running on the web servers, just using the database as a data store, allowing the performance to be decoupled from the database speed (which has finite performance) and thus scaling with the number of web servers (which has arbitrary levels of performance).
Common Business Logic
The external sites were very different in appearance, but they ran on a common layer of code. This code had a plugable theme system that allowed various appearances to be used with a simple set of includes. It also handled a common set of authentication and authorization routines using Microsoft's Passport system. The user's profile was common among all of the programs, so they didn't need to update their address in more than one place at a time. Each site had a set of required information, but this set could vary from program to program, and we would only require the information needed by the programs that the user wanted to access. For example, if they didn't access the Xbox training, then we wouldn't require them to agree to the Xbox terms of use, or collect Xbox specific information.
PC Online Training
This was the first site that we developed. It originally had HTML based training materials and multiple choice quizzes. We later adapted it to support flash based training modules that had integrated quizzes. By taking the training and passing the quizzes, the users were awarded points. When they accumulated enough points, they were able to redeem those points for prizes which were typically Microsoft software. We developed a shopping cart system where we could emphasis various prizes. The users were billed for shipping, so we integrated with Authorize.NET for credit card or e-check transactions.
Xbox Online Training
Xbox online training was designed to support both French and English to allow the site to be used across Canada as well as the United States. We extended the themable UI engine to support multiple locales. The Xbox site also used XML based training modules which provided additional flexibility in formatting. The Xbox program also had short-run prizes that might sell out in a matter of minutes, so we created real-time product availability counters in the system using AJAX.
Personal Use Program
In this program, sales representatives could request Microsoft products. The selection of products that were available was related to the marketing priorities of Microsoft at the time. Users were only allowed to order one copy of any specific Microsoft product. Shipping and Handling were billed against the user.
CMS for Training Courses
We developed an extensible training system for the course modules. It supported multiple types of training, including HTML, XML, and Flash based courses. The questions could be integrated, and use AJAX like calls to the web server to record results, or they could be presented at the end of the training material. Each course was assigned a site to appear on, a number of points that would be granted when passed, a title, an image, and start and stop dates. We also programmed special sets of courses that had to all be completed to award points, and had some courses that awarded special prizes when passed. Courses could also be temporarily removed from the site if required.
The rewards could also be accessed through this system, and old ones removed or new ones created. Inventory amounts could be changed if new shipments to the fulfillment company was made.
Customer Support Site
We developed an administrative database that allowed a support team to handle issues of the users. The users complete history was available all the programs that they participated in, the courses that they passed, the events that they went to, the emails that they received, their profile, the orders that they placed, and the support calls they made.
The customer support representatives could search on a variety of information to locate the customers record (since many of them didn't remember the information that they used to register), and were also able to enter in comments about the users that could be read by the other customer support representatives.
Reporting
An integrated reporting system was created as well. In this way, administrators of the site are able to view the activity on the site, the average scores of users on the quizzes (even down to the question and answer level), etc. Many of the reports supported parameters, so that the administrators could drill down into the data.
Shipping
Each night, a batch of orders would be generated for each site and recorded into the system. Then the orders would be formatted into a data file and pushed using FTP to a third-party fulfillment company. We would also retrieve data files that indicated the outcome of the orders (tracking numbers, invalid addresses, etc.).
In addition, we would retrieve the inventory levels from the fulfillment company, and balance it against our records. This provided up to date inventory levels, and the products would be removed from the website when they were all sold out.
Fraud Prevention
As the program grew more successful the initial fraud prevention processes became insufficient and new ones were added. In order to prevent users from posting the answers to the quizzes online, the answers were scrambled for each user so that they appeared in a random order. But each time a specific user took the quiz, the answers would always appear in the same order in order to avoid confusing the user. Because we collected shipping and handling fees, we had access to the addresses that were verified by the credit card system. We would automatically flag accounts that had credit card transactions that appeared to match the address on another user's credit card transaction. Also, in order to prevent users from returning the software to stores, we had the shipping vendor remove the outer packaging thus preventing that software from ever being returned.
Results
The Microsoft sites (PC Online Training, Xbox Online Training, and the Personal Use Program) were very successful. Over 1 million products were shipped, many millions of trainings were taken, and a vast number of retail sales clerks were made knowledgeable about Microsoft's product offerings. Thus Microsoft's main purpose for the sites was fulfilled.
In addition, we designed the system to be flexible, and this allowed Microsoft on many occasions to quickly implement a new marketing drive. For instance, when security issues about Microsoft's products were causing some marketplace confusion, we quickly published a campaign to secure people's PC's. When Microsoft's wireless products were not well received in the marketplace, we were able increase the number of trainings taken. During one holiday season, when traffic on the site wasn't at the desired levels, we were able to quickly publish new contests to drive up the site usage to record levels.
Sincerely,

Mike Hayner
Chief Technical Officer
Pacific Northwest Software
+1 206 234-1709
+44 020 7193 4011
mike [dot] hayner [at] pnwsoft.com