Sitecore Content Migration vs. Content Synchronization
It’s important to differentiate between content migration and content synchronization.
Roughly defined, content migration is the migration of content from another environment that may have differing content types, metadata, schema, site structure, and unstructured data. Examples of content migration cases are as follows:
- Migrating from a set of connected Sitecore 8.2 environments to a set of connected Sitecore 10.2 environments. A set of environments is defined as lower and upper environments in connection with each other such as Dev, QA, UAT, Staging, and Production
- Migrating from a set of connected Sitecore 9.3 environments to a set of connected Sitecore 9.3 environments with a differing architecture
Conversely, content synchronization is the process of synchronizing content between a set of connected environments that have closely equal to equal content types, metadata, schema, site structure, and structured data. Examples of content synchronization cases are as follows:
- Ensuring the content in a set of connected Sitecore 10.2 environments is synchronized across lower and upper environments
- Within the same set of connected environments, updating a lower environment with content from the production environment for the sake of development or testing
Contents
Migration and Synchronization Implications
The slight deviation in “closely equal” vs. “equal” in content synchronization is because that during development activities in the new destination environment you could have a new content type or metadata field created as part of a new page or component, and then synchronized for content editors to leverage. That is a far different use case then a content migration from a previous Sitecore version/environment with differing content types, schema, and site structure requiring detailed analysis and transformation.
Once content has been migrated, potential new content types created, and transformed to match the destination environment’s schema, it can then be synchronized across the destination environments. A common approach is to export items from the source Production environment and transform the data before finally importing the transformed items into the destination Development environment.
The now transformed and up to date content in the destination environment is then ready to be synchronized across the connected environment levels of QA, UAT, Staging, Production, etc. This approach saves time and risk versus performing a fresh content migration and data transformation per the QA, UAT, Staging, and Production environments. With this stated, the tools and approaches leveraged for content migration vary in their functionality versus tools for content synchronization.
Tools to Consider
Content Migration
Content Migration Tools that allow the export and import of items to CSV files for manipulation include and are not limited to:
Sitecore PowerShell Extensions (Requires Scripting): Introduction – Sitecore PowerShell Extensions
Sitecore Data Importer (Bundled with SPE): markstiles/SitecoreDataImporter: Used to import Database data and Sitecore content into Sitecore (github.com)
Sitecore Content Export Tool: estockwell-alpert/ContentExportTool: Content Export Tool for Sitecore (github.com)
Content Synchronization
Content Synchronization Tools that allow syncing of content between environments include and are not limited to:
Sitecore Sidekick Content Migrator: Sitecore Sidekick – Content Migrator | Bending Sitecore (jeffdarchuk.com)
Sitecore PowerShell Extensions (Requires Scripting): Introduction – Sitecore PowerShell Extensions
You will notice the emphasis on synchronizing content instead of copying databases between environments. More details on why this is important can be found at: Don’t Copy Sitecore Databases Across Environments, Sync Instead