How do we move current xDB data (contacts, traffic etc) to the Sitecore CDP. I know there is no straightforward tool but are there APIs I can use to accomplish it and keep all or most of the data from xDB?


1 Answer 1


I recently created a guide here: https://community.sitecore.com/community?id=community_blog&sys_id=f1cc98af1b541590e55241dde54bcb0d that talks a little bit about the options that are available when migrating from XP to an XM+CDP/Personalize scenarios. It focuses on the products that would make sense depending on your scenario, which seems irrelevant to this discussion, but does have impact, since if you are moving to Personalize only, than the Batch API's mentioned here are not available for this product and honestly you'll need to look into if there is really data that's needed for your scenario.

If however you are moving to Sitecore CDP (or a Smart Hub CDP solution with both Sitecore CDP and Sitecore Personalize) there are a couple of options available to migrate data. However none of these options are perfect, because each of these have limitations:

  • Using the Batch APIs
    • Limited Data: Currently Batch APIs only support importing Guests and their data. Sessions or Interactions are not supported in Batch API's, however there could be options to roll some of this data into a guest data extension if you proceed with this option. Also it's important to call out that the procedure of moving this data is an extensive process. It may be wise to consider what data makes the most sense to move into the product. Example, instead of all anonymous and known users that have ever visited your web properties, maybe instead zero-in on Known contacts only.
    • Documentation about the Batch APIs: https://doc.sitecore.com/cdp/en/developers/sitecore-customer-data-platform--data-model-2-1/using-the-sitecore-cdp-batch-api.html
  • Import Using Stream APIs
    • Probably the least useful option in this set, just because stream APIs can only ingest real time data, so even though you can import interactions/sessions for Stream data, it'll all appear as if it came in, when you run the requests.
  • Pull in data directly into your Decision Model via a Connection
    • I proposed in the article that you could use xConnect here, but as I'm writing this, I'm realizing that you could export this data into a Data Lake or Data Warehouse and built a mechanism to query the data from the Decision Model. All of this being theoretical of course :-). When using connections in a Decision Model, it's vital that this data runs in less than 250 ms, so if this option is used, you'll want to make sure that whatever you are pulling in, keeps this in mind. Also if you go with a direct xConnect option here, you may also run into licensing challenges with the need to run xConnect and therefore XP simultaneously with Sitecore CDP.

In a lot of use cases, it may actually make more sense to utilize the power of CDP/Personalize and purchase the product before you start to transition from Sitecore XP, and start tracking events and other actions simultaneously as you begin your migration to a Composable model. So that, once you begin to turn off XP (xDb) and migrate to XM, you have your Experiences/Experiments created within the product and all of the data available within the product to begin taking action on the data collected in your CDP product.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.