Every time I have to work with product properties, I have to explore those entities from the beginning and i loose some time to remember how product properties works and how CRM stores and link them in the database. I will be glad if someone find useful some facts that are written below.

DynamicPropertyBase

  • Holds created properties with data type definition, min and max values etc.
  • Deleted properties stays in table forever but their association is deactivated in table DynamicPropertyAssociationBase
  • Properties has status 0 until family is published after adding property
  • RootDynamicPropertyID - Shows the root property that this property is derived from (I never find this information useful)
  • BaseDynamicPropertyId - Shows the property in the product family that this property is being inherited from. It is usual same as DynamicPropertyId
  • RegardingObjectID - holds ProductID of Product Family that owns this property


DynamicPropertyAssociationBase

  • Holds information about properties for every product
  • Record is created after publishing product from family. Publish Hierarchy option on Product Family can be used
  • After deletion of property from CRM interface, corresponding record in this table gets value 1 in AssociationStatus field. It is interesting that property that is in use, has value 0 in this field.


DynamicPropertyInstanceBase

  • Table that is used as mapping table between DynamicPropertyBase and regarding object (QuoteDetail, SalesOrderDetail) on DynamicPropertyID and RegardingObjectID fields
  • There is no connection with table DynamicPropertyAssociationBase


DynamicPropertyOptionSetItemBase

  • For every option in every option set based property, there is one record in this table.
  • It is linked with DynamicPropertyBase using DynamicPropertyID field