[id='offline_data_migration']
:context: upgrade
= Migrating Data Between Cache Stores
{brandname} provides a Java utility for migrating persisted data between cache
stores.

In the case of upgrading {brandname}, functional differences between major
versions do not allow backwards compatibility between cache stores. You can use
`StoreMigrator` to convert your data so that it is compatible with the target
version.

For example, upgrading to {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. You can use
`StoreMigrator` in these cases to convert to different cache store
implementations.

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:]
