Product properties are useful for collecting variable information on a generic product. Eg a t-shirt product may have different colours of; blue, red and green as well as different sizes of; small, medium and large. A second example is a subscription service may have a subscription period of 1, 6 or 12 months. To collect this information we use product properties in CRM.
1. Product Property Entity Name
The product property entity has a display name of Property, plural name of properties and a schema name of dynamic property (dynamic property).
2. Product Property records can not be searched in Advanced Find!
Frustratingly, the product property entity does not appear in the advanced find. However, a Fetch XML query can retrieve product property records as per below. The fetch query can be queried using the fetch builder or fetch tester tool in the XrmToolBox.
3. Entities Related to Product Properties
Below is a list of entities that are used to manage product properties in Dynamics CRM.
Property (dynamicproperty); Information about a product property.
Property Association (dynamicpropertyassociation); Association of a property definition with another entity in the system.
Property Instance (dynamicpropertyinstance); Instance of a property with its value.
Property Option Set Item (dynamicpropertyoptionsetitem); Item with a name and value in a property option set type.
4. How Product Property Instances (dynamicpropertyinstance) Work
When setting a product property on quotes, opportunities or invoices a Product Property Instance (dynamicpropertyinstance) record is created. (Well it actually appears two records are created).
The screenshot below shows how to set the color property to green on a shirt product, on a quote. The second screenshot shows the resulting Dynamic Property Instance records that are created. Notice the Product Property Instance (dynamicpropertyinstance) uses versioning instead of actual creates.
5. No advanced find! No data export! No data import!
The Product Property (dynamicproperty) entities are not displayed in the advanced find. This applies to the Property Association (dynamicpropertyassociation), Property Instance (dynamicpropertyinstance) and Property Option Set Item (dynamicpropertyoptionsetitem) entities.
None of the product entities can be exported. Well, Product Property can be exported via the properties sub gird under the product properties tab on the product form BUT this is only exporting the properties for a single product.
A data import template for Product Property (dynamicproperty), Property Association (dynamicpropertyassociation) or Property Option Set Item (dynamicpropertyoptionsetitem) can be downloaded from Data Management->Templates for Data Import.
Property Instance (dynamicpropertyinstance) can not be imported! To import Property Instances the SDK (soap end point) or API (webAPI end point) is required. More information about pragmatically setting Property Instances programmatically can be found at the below Microsoft websites.
DynamicPropertyInstance Methods and Messages https://msdn.microsoft.com/en-us/library/dn817890.aspx
UpdateProductPropertiesRequest Class https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/dn818115%28v%3dcrm.8%29
Create and manage product families, products, bundles, and product properties https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/dn817859(v=crm.8)
6. Data Migration
When migrating products and product properties between environments (dev, test, prod) I would use the configuration migration tool rather than data exports and imports.Exporting and Importing while possible will be cumbersome due to all the lookup fields.