Showing posts with label Product. Show all posts
Showing posts with label Product. Show all posts

Wednesday, April 15, 2009

Import Price Lists in Dynamics CRM


CRM 3.0 provided limited support for importing data from external files. We were only allowed to import data of few entities like Account, Contact, Lead etc.

This feature has been greatly enhanced in version 4.0. The import tool now allows to import data into most of the entities. It also allows for Mapping of attribute values especially for Picklist type of attributes.

One of the shortcomings though is that it doesn’t update existing records. It will always create new records from the import file. The work around for this would be to develop your own custom application using CRM SDK.

We found that companies receive Price Lists from their vendors on a regular basis and they were required to import and update the prices in CRM for the Products. Since the Import tool would not work in this scenario we had to develop an import tool.

Using SDK we create/update Price List Items (the entity that stores the prices). Price Lists Items are created as a unique combination of Product/Unit and Price List. A change in either of these 3 attributes will result in a new Price List Item record.

Once we were able to create/update Price List Item, we extended it further to take care of scenarios where the Product itself does not exist in CRM. In this case to import the price we were required to first create the Product in CRM and then create a Price List Item for that product. Note that Product entity has few of its attributes mandatory so you need to take care of this in the External file so that the product can be created successfully.

With a successful implementation of this, we went a step further to generalize this tool so that the tool could be used to import and set the values for any of the attributes of Product or Price List Item. This was not too difficult. The only requirement was that the column name in the external file should match the attribute's schema name in the Product or Price List Item entity. With this requirement satisfied you can now set the values for custom attributes on your product entity.

Any SDK developer with good knowledge of Dynamics CRM can take the above route and validation to develop an Import tool for repetitively importing product price list in CRM. For those who do not want to reinvent the wheel, you can contact us or any other third party developers who must have developed this product already. More information at

http://www.inogic.com/addons_price_list.htm

Wednesday, February 11, 2009

Product/Inventory Kits in Dynamics CRM and its utilization

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.