Tuesday, December 7, 2010

Commerce Server Inventory System Part 1

Inventory management is a vital part of any retail business, whether it’s a traditional brick-and-mortar shop or an online Web site. Inventory management provides you with critical information about the condition of your products, such as whether you are low on stock and your inventory needs to be replenished. Inventory management also provides your customers with accurate information, letting them know when items are out-of-stock, back-ordered, or pre-orderable. Failure to provide your customers with this information puts you at risk of losing future business. Inventory management also gives you insight into which products are selling well and which products are not. This information allows you to make better business decisions on how to market your products, and whether or not to even carry them.

Previous versions of Commerce Server to 2007 did not have an out-of-the-box inventory system. Instead, developers were either required to customize and extend the catalog schema, as well as write custom processes to track inventory levels, or develop their own processes for integrating into a line-of-business (LOB) inventory system.

Commerce Server has made significant advances with regards to inventory management, and has an out-of-the-box Inventory System capable of providing the following functionality:

* Real-time inventory management for product catalogs

* Full integration into the Catalog System and Orders System

* Integration into LOB systems through the Commerce Server BizTalk adapters

Keeping track of inventory is vitally important for any successful retail enterprise. Inventory systems let you know when it is time to stock up on items that are running low and can also prevent you from over selling products and then having to inform customers that their items are either unavailable or must be backordered. Inventory systems can provide insight into which products are selling well and which products are selling poorly. With this information you can make intelligent decisions on how to maximize your sales and make your Web site more effective.

In previous versions of Commerce Server it was a challenge to incorporate real-time inventory management into your Web site. Keeping the inventory levels synchronized to the product catalog required a great deal of effort and custom software development. Many custom solutions require the product catalog schema to be extended so that it can accommodate inventory information and modifications to the basket pipeline to check the inventory levels of the product added to the basket. This in and of itself is a challenge; more complex tasks, such as configuring items as back-orderable or pre-orderable, are levels of magnitude more complex to develop.

Fortunately, the Inventory System available in Commerce Server is specifically designed to integrate with the Catalog System, and provides an excellent solution for all the stake holders of your Web site, including customers, business users, Web site administrators, and software developers. Customers benefit from a much richer integration into the product catalog, allowing them to know if items are in stock, pre-orderable, or back-orderable. Customers can also filter products by those in stock, allowing them to ignore items that are currently unavailable (assuming you have developed this capability through the Inventory APIs). Business users benefit by having a far more robust and reliable method of coupling the inventory and product catalogs, as well as gaining insight into inventory levels and trends. Web site administrators benefit by easy import and export functionality, as well as synchronization to external LOB applications. Software developers benefit from all of the above, as well as a rich API layer that has methods for searching, browsing, and viewing the details of the inventory catalog, as well as sophisticated search options.

It is important to fully understand the role that the Inventory System plays within Commerce Server, and how it works together with product catalog to allow you to manage your inventory.

The Relationship between the Inventory and Catalog Systems

Before diving into the features of the Inventory System, you should take the time to understand the relationship between the Inventory and Catalog Systems. The Inventory System consists of inventory catalogs, much as the Catalog System consists of product catalogs. These inventory catalogs contain information about products and product variants that are stored in the product catalogs. As such, inventory catalogs can store inventory information for one or more product catalogs. Moreover, these product catalogs can be both base and virtual catalogs. Consider the following examples in Figure 4-1.



Figure 4-1

Scenario A describes a straightforward relationship between an inventory catalog and a product catalog. In this scenario, an inventory catalog has been defined and one product catalog added to it. When a product catalog is added to an inventory catalog it is considered to be mapped to the inventory catalog. Scenario B is similar to Scenario A, except that two product catalogs are mapped to the inventory catalog. Consequently, the inventory catalog contains inventory information for product and product variants stored in both catalogs.

As previously mentioned, virtual catalogs can also be mapped to inventory catalogs. Consider scenario C, in which the virtual catalog is the aggregation of two base catalogs. In this scenario, the virtual catalog is mapped to the inventory catalog. Consequently, the two base catalogs do not contain any inventory information. Instead, the inventory information is specific to the virtual catalog. Mapping virtual catalogs to an inventory catalog is a very powerful way to manage the inventory for aggregated base catalogs with specific pricing rules. For example, you could create a virtual catalog that gave preferred customers 15% off of various products and map it to an inventory catalog that limits the total quantity of these discounted products to 50.

The final scenario shows a more advanced set of relationships. In scenario D there are two base catalogs and one virtual catalog. The virtual catalog aggregates the products and product variants in both of the base catalogs and may apply special pricing. The virtual catalog and one of the base catalogs are mapped to the inventory catalog, while the second base catalog is not mapped to the inventory catalog. As a result, the mapped base catalog has the ability to track its own inventory, while the non-mapped base catalog cannot. The virtual catalog is able to track its own inventory on the products and product variants aggregated from both of the base catalogs. These four scenarios demonstrate the flexibility of the Inventory System, and how it can be used for a number of different and unique situations.

Based on my book on Commerce Server. Part 2 is here.