Data provider integration
In these articles, you will find information regarding the Data provider integration.
What is it?
It is a deep level integration, basically making the catalog part of the Ucommerce data available in Sitecore Master database as Items.
Notice: There are two levels of Sitecore "databases". * The logical level where you have "Web", "Master" and "Core". * The physical level where you have MSSQL server databases called typically "Sitecore.Web", "Sitecore.Master" and "Sitecore.Core".
Ucommerce items are available on the logical level. Not on the physical level.
In Sitecore's content tree, there are three nodes, that serves as roots for Ucommerce data:
- /sitecore/templates/User Defined/Ucommerce definitions
All the data under these three nodes, are dynamically/runtime converted from Ucommerce data to Sitecore Items.
All the data is 100% stored in the Ucommerce database. No data is stored in the physical Sitecore databases.
When Sitecore loads data from it's physical "Sitecore.Master" database, the Ucommerce data is merged into the data returned to the Sitecore system.
So the rest of the Sitecore system, cannot tell the difference of Items from Sitecore's physical databases and data from the Ucommerce database. All Items gets returned as equals in the "Master" logical database.
The pros of this approach, is that all the Ucommerce data returned as Items, will work just as any other Sitecore item. The system simply cannot tell the difference. This means, that Ucommerce Items can take the place of regular Sitecore Items, as the rest of the System works as it normally does. This is very neat!
It also means that there is no synchronization happening between the Ucommerce system, and Sitecore. All the data you put into Ucommerce, will automatically appear in Sitecore's content tree. And that allows us to leverage the very powerful features that Sitecore provides also for Ucommerce data.
It looks like a duck, it walks like a duck, it talks like a duck.... but it needs batteries.
While on the surface, the Ucommerce Items performs completely as Sitecore Items, there are fundamental differences.
The main one, and the thing that surprises many Sitecore users, is that the items in Sitecore's content editor is only a proxy representation of the actual Ucommerce data.
That means that making a copy of the Item, and restoring that copy in another system, like generating an item package or using TDS, does NOT copy any Ucommerce data. You cannot copy Ucommerce data, by copying the Items in the logical Master database!
What happens, if I copy Ucommerce data as Items anyway?
What you get imported in the other system will be shallow Sitecore level Items, with no relation to Ucommerce what so ever.
How do I clean up, if I accidentally converted Ucommerce items to Sitecore items?
If you have made shallow copies, you can get rid of them by following these steps. * Disable the Ucommerce data provider, by disabling the config include file "Sitecore.Ucommerce.Databases.config", and restart the site. * Find the three roots mentioned above, in the Content Editor, and delete them. * Optionally, run database clean up from Sitecore's control panel, to delete all orphaned items from the physical databases. * Re-enable the Ucommerce data provider, by enabling the file "Sitecore.Ucommerce.Databases.config" again.
So how do I move the Ucommerce data from one environment to another?
All the Ucommerce data is located in the Ucommerce database. You need to move the data in the database, using for example a tool like "SQL Data Compare" from Redgate.