Product/Inventory Kits in Dynamics CRM and its utilization

By | February 12, 2009
Dynamics CRM provides for setting up of “Kits”. Kits are basically a group of items that are sold together always. Just like you can associate substitute items with a product, it is possible to associate all products that make up the Kit. The “Kit Products” option is only available for “Kit” type of items.

While this is not directly made available as a type of product like “Sales
Inventory”, “Services” etc, it can be found as an option under More Actions
–> Convert to Kit


Once a product is converted to Kit it is possible to convert it back to “Product”. A similar option as above called “Convert to Product” is available for Kit Products.

The Kit product is available just as any other product for selection in Opportunities/Quotes/Orders/Products.

One feature though missing and would truly help was if there was a way to determine the price of the Kit based on the price of its components. And if it were possible to explode the kit and have the individual components listed on the Quote (if someone needed to list out the components being supplied in the kit).

To overcome the above shortcoming of updating the price of the Kit based on the price of its components we proposed the following solution to one of our clients.
1. Write a Post-Update plugin on the Price List Item entity.
2. The plugin would read the Product, Unit and Price List from the Price list item.
3. With the Product and Price List in hand, search if this Product is a part of kit and if so, re-calculate the price of the Parent Kit product.
The following messages of the SDK would be helpful when dealing with Kits
* ConvertKitToProductRequest
* ConvertProductToKitRequest
* AddProductToKitRequest
* RemoveProductFromKitRequest
FilteredProductAssociation is the view that stores the list of Products that belong to a kit. There is no entity available called ProductAssociation that you can make an object of directly. But using link entity in query expression and linking it to ProductAssociation would work.