[id='migrating-data-between-stores']
:context: store-migrator
= Migrating data between cache stores
{brandname} provides a Java utility for migrating persistent 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}
ifdef::community[]
10.0
endif::community[]
ifdef::downstream[]
8.0
endif::downstream[]
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}
ifdef::community[]
10.1
endif::community[]
ifdef::downstream[]
8.0
endif::downstream[]
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:]
