[id='data_migration']
:context: upgrade
= Migrating Data Between {brandname} Versions
Upgrading to the latest {brandname} version typically involves creating new
clusters with the target version running in parallel to the version from which
you are migrating. You can then create a shared persistent cache store between
the two clusters and switch client connections to the target.

However, functional differences between major {brandname} versions mean that
backwards compatibility between cache stores is not possible.

For example, {brandname}
ifndef::productized[]
10.0
endif::productized[]
ifdef::productized[]
8.0
endif::productized[]
changes the default marshaller to Protostream. In previous {brandname}
versions, cache stores use a binary format that is not compatible with the
changes to marshalling. This means that {brandname}
ifndef::productized[]
10.1
endif::productized[]
ifdef::productized[]
8.0
endif::productized[]
cannot read from cache stores with previous {brandname} versions.

In other cases {brandname} versions deprecate or remove cache store
implementations, such as JDBC Mixed and Binary stores.

To overcome incompatibilities with cache stores, {brandname} provides a utility
to migrate data from one cache store to another.

include::{topics}/con_store_migrator.adoc[leveloffset=+1]
include::{topics}/proc_getting_store_migrator.adoc[leveloffset=+1]
include::{topics}/proc_configuring_store_migrator.adoc[leveloffset=+1]
include::{topics}/ref_store_migrator_properties.adoc[leveloffset=+2]
include::{topics}/proc_migrating_cache_stores.adoc[leveloffset=+1]

// Restore the parent context.
ifdef::parent-context[:context: {parent-context}]
ifndef::parent-context[:!context:]
