Putting SOA to Work

By Adam Swift  |  Posted 2009-03-06

In the industrial and construction supplies industry, where price point is king, margins are razor thin and competition is fierce, it’s easy for customers to switch suppliers.

To retain and attract new customers, we needed a way to make Fastenal Corporation stand out and really deliver on our company motto “Growth Through Customer Service.” When looking for ways to improve customer satisfaction, our order management system quickly emerged as the biggest area of opportunity.

Fastenal is one of the largest industrial- and construction-supply distributors in the United States. We operate 12 distribution centers, a fleet of 275 company-owned semi trucks and over 2,100 stores worldwide.

One of our key differentiators is that in addition to selling through our website, we are a brick-and-mortar shop. We are not catalog-based, like many of our competitors, so we gain valuable face-to-face contact with customers. This helps maintain customer relationships, but customers can easily go elsewhere should we lose their order or they find a better price.

Our order fulfillment model was top-down driven: any e-commerce orders placed through our website, EDI, field sales’ mobile devices, or our homegrown vendor management system  were funneled first through corporate headquarters and then distributed manually to the individual stores.

We cobbled together a custom file transfer system where we would drop the file to the store, in a “fire and forget” manner. The store would fulfill the order. Occasionally, something would get lost. There was no real explanation for the lost order, because our file transfer system did not log the transfers, so we had no way to look back to see where and why the failure occurred.

Timeliness was another issue. The system was scheduled to drop orders to the stores every hour, so if an order was filed just before the last drop occurred, you would have to wait another hour until the next batch of orders dropped. Any documentation, such as purchase acknowledgements, could also be delayed. Using this approach for order management, we did not feel like we were delivering on our motto.

Wanting to find a way to improve operational efficiency, we made a decision to use this application as an opportunity to implement a services-oriented architecture (SOA) with the goal of dropping orders to the stores in real-time. This would enforce transparency and ensure all of our corporate orders were funneled through the new system, regardless of the source.

We consolidated all order requests into a single system using ActiveVOS from Active Endpoints, which allowed us to orchestrate all the processes behind the consolidation. We used Oracle Web Services Manager for putting our web services together, and managed these under one central portal.

Once the order management project was complete, we actually kept the old file-transfer system in place for the first few months because people were not confident that the implementation of ActiveVOS, Microsoft Messaging Queue and an SOA were reliable.

Running both systems in parallel was a good way to prove the returns that we were getting by using the event-based architecture instead of the batch-based. We saw improvements, on average, of 32 minutes in response time for getting orders to our stores and back compared to the old system.

We used to lose .003% of our orders. That is not a really big number, considering we do hundreds of thousands of orders monthly, but a lost order, no matter the size, can lead to a lost customer. Now that we have been using an SOA-based BPM system to help reconcile orders, making sure they were acknowledged by the store and fulfilled, we have not lost a single order.

We can proactively head off these types of activities before they become an issue for the customer and our store. Should any problem occur in the process, we know how to fix it in a fast, easy way. That’s how SOA works.

From start to finish, it took just two of us a few months to complete the order management process and put it into production.  Once everything is under the umbrella of a business process, and assuming we develop the web services along with their own logging and error handling, and design it correctly from the start, it is much better than the disjointed systems that we have traditionally used.

Instead of a situation where we take one team’s system and another team’s system, try to stitch them together somehow and wind up with something that is less than ideal, we can now create a business process and make it available via SOA, so anyone call it and get the data they specifically want. This is far more efficient and cost-effective then having to do some custom development every time a new project comes along.

In weeks instead of months, we can quickly implement a new project now that we have web services already in place. It is as simple as going into ActiveVOS and just changing how the services are invoked. The development is already done.

We are a lot more agile as a team because with an SOA, we can build the components ahead of time and we can plug them or unplug them as we wish, instead of deploying some new version of some program that lives somewhere and gets executed by some process.

It turns out that often there are not that many different web services to write. All we need to do for a new business process is just put the orchestration project together in ActiveVOS and plug it in to the web services we have already developed. This greatly increases our up time for complicated projects. This was our first SOA project and ROI, in terms of customer satisfaction, was realized within two months.

Transparency is critical so we want to move towards customer self-service. Our goal is to have an interface on www.fastenal.com that calls into one of our web services and which notifies the customer of current status of the order, the order history and any changes that have been made to the order.

Customers will have their own interface to check status and a phone number for customer service should they need to make any changes. In the future we hope to be able to provide customers with the ability to change the order themselves.

One of our challenges looking ahead, as is the case with any new technology, is that we have to continue to convince people internally that SOA is the way to go. We are at a point with our implementation of an SOA where we are seeing actual ROI in terms of improved customer satisfaction, reuse, uptime and operational efficiency.

We continue to do quite a few proofs-of-concept to demonstrate ROI. These are starting to convert more internal teams and projects to the idea of an SOA. Fastenal is well on our way to becoming an SOA shop, especially as we continue to grow.

Adam Swift is an integration developer for Fastenal.