// Metadata created by nebel

[id="registry-migration_{context}"]
= Migration from {registry} 2.x to 3.x

[role="_abstract"]
{registry} 3.x includes new features with breaking changes from the previous {registry} 2.x release. This section describes the major changes between {registry} 2.x and version 3.x, along with the best approach to migrating.

Because of the breaking changes in 3.x, there is no automatic upgrade and a migration process is required. This involves exporting the data in your existing registry to a new registry. You must also review your existing registry client applications and update their configurations to meet the new requirements.

When migrating to version 3.x, you must take the following major changes into account:

== Data storage changes
All of the storage options from 2.x continue to be supported in 3.x, but any data currently in either the Kafka topic
or in the database is no longer compatible with 3.x.  This means that, in order to migrate from 2.x to 3.x, you will
need to use the Export feature of {registry} to create a .ZIP file containing all of your 2.x data.

ifdef::apicurio-registry[]
The in-memory storage option is also still available, but is not suitable for production workloads.
endif::[]

For details on how to deploy {registry} 3.x with your chosen storage option,
ifdef::apicurio-registry[]
see {installing-the-registry-storage-openshift}. 
endif::[]
ifdef::rh-service-registry[]
see link:{LinkServiceRegistryInstall}[{NameServiceRegistryInstall}]. 
endif::[]

== New v3 REST API
{registry} 3.x includes a new REST API with support for empty artifacts, artifact branches, group level rules, new search capabilities, and much more. {registry} still supports version 2.x of the core REST API as well as various compatibility APIs, for example, the Confluent schema registry API v7.  However, version 2 of the Core REST API is now deprecated.

== All new SDKs replace the Java client
* The {registry} Java client classes are no longer available in version 3.x and have been replaced by a new SDK generated using Kiota.

* In addition to Java, SDKs are now provided for Typescript, Python, and Golang.

* The Kafka client serializer and deserializer (SerDes) classes are available in version 3.x....

== Deployment configuration has changed
{registry} 3.x has changed a number of configuration options and added some new ones.  Options you may be using when deploying
2.x are likely still available, but may have been renamed.

[role="_additional-resources"]
.Additional resources
* For more details on the v3 REST API, see the link:{attachmentsdir}/registry-rest-api.htm[Registry REST API documentation].
