diff --git a/topics/MigrationFromOlderVersions.adoc b/topics/MigrationFromOlderVersions.adoc
index 4efb779e7e..e7f2f1cee6 100755
--- a/topics/MigrationFromOlderVersions.adoc
+++ b/topics/MigrationFromOlderVersions.adoc
@@ -1,41 +1,70 @@
== Migration from older versions
-To upgrade to a new version of Keycloak first download and install the new version of Keycloak.
-You then have to migrate the database, keycloak-server.json, providers, themes and applications from the old version.
+To upgrade to a new version of Keycloak first download and install the new version of Keycloak. Once the new version
+is installed migrate the database, keycloak-server.json, providers, themes and applications to the new applications.
+
+This chapter contains some general migration details which are applicable to all versions. There are instructions for
+migration that is only applicable to a specific release. If you are upgrading from a very old version you need to go
+through all intermediate version specific migration.
+
+It's highly recommended that you backup your database prior to upgrading Keycloak.
+
+Migration from a candidate release (CR) to a Final release is not supported. We do however recommend that you test
+migration for a CR so we can resolve any potential issues before the Final is released.
=== Migrate database
-Keycloak provides automatic migration of the database.
-It's highly recommended that you backup your database prior to upgrading Keycloak. Migrating from a release candidate to
-a final release is not supported. For reason for release candidates we recommend that you create a copy of your production
-database to test release candidates.
+Keycloak can automatically migration the database schema, or you can choose to do it manually.
-To enable automatic upgrading of the database if you're using a relational database make sure `databaseSchema` is set to `update` for `connectionsJpa`:
+==== Relational database
+
+To enable automatic upgrading of the database schema set the `migrationStrategy` property to `update` for
+the default `connectionsJpa` provider:
[source]
----
-"connectionsJpa": {
- "default": {
- ...
- "databaseSchema": "update"
- }
-}
+
+
+
+ ...
+
+
+
+
----
-For MongoDB do the same, but for `connectionsMongo`:
+When you start the server with this setting your database will automatically be migrated if the database schema has
+changed in the new version.
+
+To manually migrate the database set the `migrationStrategy` to `manual`. When you start the server with this
+configuration it will check if the database needs migration. If changes are needed the required changes are written
+to an SQL file that you can review and manually run against the database.
+
+There's also the option to disable migration by setting the `migrationStrategy` to `validate`. With this configuration
+the database will be checked at startup and if it is not migrated the server will exit.
+
+====
+
+Mongo doesn't have a schema, but there may still be things like collections and indexes that are added to new releases.
+To enable automatic creation of these set the `migrationStrategy` property to `update` for the default `connectionsMongo`
+provider:
[source]
----
+
+
+
+ ...
+
+
+
+
+----
-"connectionsMongo": {
- "default": {
- ...
- "databaseSchema": "update"
- }
-}
-----
+The Mongo provider does not have the option to manually apply the required changes.
-When you start the server with this setting your database will automatically be migrated if the database schema has changed in the new version.
+There's also the option to disable migration by setting the `migrationStrategy` to `validate`. With this configuration
+the database will be checked at startup and if it is not migrated the server will exit.
=== Migrate keycloak-server.json
@@ -62,6 +91,15 @@ The version specific section below will mention if any changes are required to a
=== Version specific migration
+==== Migrating to 2.2.0
+
+====== `databaseSchema` property deprecated
+
+The `databaseSchema` property for both JPA and Mongo is now deprecated and has been replaced by `initializeEmpty`
+and `migrationStrategy`. `initializeEmpty` can bet set to `true` or `false` and controls if an empty database should
+be initialized. `migrationStrategy` can be set to `update`, `validate` and `manual`. `manual` is only supported for
+relational databases and will write an SQL file with the required changes to the database schema.
+
==== Migrating to 2.0.0
====== Upgrading from 1.0.0.Final no longer supported