diff --git a/docbook/reference/en/en-US/modules/MigrationFromOlderVersions.xml b/docbook/reference/en/en-US/modules/MigrationFromOlderVersions.xml
index af5d66c..09109b3 100755
--- a/docbook/reference/en/en-US/modules/MigrationFromOlderVersions.xml
+++ b/docbook/reference/en/en-US/modules/MigrationFromOlderVersions.xml
@@ -1,134 +1,215 @@
<chapter id="Migration_from_older_versions">
<title>Migration from older versions</title>
- <sect1>
- <title>Migrating from 1.0.x.Final to 1.1.Beta1</title>
- <itemizedlist>
- <listitem>UserSessionModel JPA and Mongo storage schema has changed as these interfaces have been refactored</listitem>
- <listitem>
- Upgrade your adapters, old adapters are not compatible with Keycloak 1.1. We interpreted JSON Web Token and OIDC ID Token specification incorrectly. 'aud'
- claim must be the client id, we were storing the realm name in there and validating it.
- </listitem>
- </itemizedlist>
- </sect1>
- <sect1>
- <title>Migrating from 1.0 RC-1 to RC-2</title>
- <itemizedlist>
- <listitem>A lot of info level logging has been changed to debug. Also, a realm no longer has the jboss-logging audit listener by default.
- If you want log output when users login, logout, change passwords, etc. enable the jboss-logging audit listener through the admin console.</listitem>
- </itemizedlist>
- </sect1>
- <sect1>
- <title>Migrating from 1.0 Beta 4 to RC-1</title>
- <itemizedlist>
- <listitem>
- logout REST API has been refactored. The GET request on the logout URI does not take a session_state
- parameter anymore. You must be logged in in order to log out the session.
- You can also POST to the logout REST URI. This action requires a valid refresh token to perform the logout.
- The signature is the same as refresh token minus the grant type form parameter. See documentation for details.
- </listitem>
- </itemizedlist>
- </sect1>
- <sect1>
- <title>Migrating from 1.0 Beta 1 to Beta 4</title>
- <itemizedlist>
- <listitem>
- LDAP/AD configuration is changed. It is no longer under the "Settings" page. It is now under
- Users->Federation. Add Provider will show you an "ldap" option.
- </listitem>
- <listitem>
- Authentication SPI has been removed and rewritten. The new SPI is UserFederationProvider and is
- more flexible.
- </listitem>
- <listitem>
- <literal>ssl-not-required</literal> property in adapter config has been removed. Replaced with
- <literal>ssl-required</literal>, valid values are <literal>all</literal> (require SSL for all requests), <literal>external</literal>
- (require SSL only for external request) and <literal>none</literal> (SSL not required).
- </listitem>
- <listitem>
- DB Schema has changed again.
- </listitem>
- <listitem>
- Created applications now have a full scope by default. This means that you don't have to configure
- the scope of an application if you don't want to.
- </listitem>
- <listitem>
- Format of JSON file for importing realm data was changed. Now role mappings is available under the JSON record of particular
- user.
- </listitem>
- </itemizedlist>
- </sect1>
- <sect1>
- <title>Migrating from 1.0 Alpha 4 to Beta 1</title>
- <itemizedlist>
- <listitem>
- DB Schema has changed. We have added export of the database to Beta 1, but not the ability to import
- the database from older versions. This will be supported in future releases.
- </listitem>
- <listitem>
- For all clients except bearer-only applications, you must specify at least one redirect uri. Keycloak
- will not allow you to log in unless you have specified a valid redirect uri for that application.
- </listitem>
- <listitem>
- Resource Owner Password Credentials flow is now disabled by default. It can be enabled by setting the toggle
- for <literal>Direct Grant API</literal> <literal>ON</literal> under realm config in the admin console.
- </listitem>
- <listitem>
- Configuration is now done through <literal>standalone/configuration/keycloak-server.json</literal>. This
- should mainly affect those that use MongoDB.
- </listitem>
- <listitem>
- JavaScript adapter has been refactored. See the <link linkend='javascript-adapter'>JavaScript adapter</link> section for more details.
- </listitem>
- <listitem>
- The "Central Login Lifespan" setting no longer exists. Please see the <link linkend='session-timeouts'>Session Timeout</link> section
- for me details.
- </listitem>
- </itemizedlist>
- </sect1>
- <sect1>
- <title>Migrating from 1.0 Alpha 2 to Alpha 3</title>
- <itemizedlist>
- <listitem>
- SkeletonKeyToken, SkeletonKeyScope, SkeletonKeyPrincipal, and SkeletonKeySession have been renamed to:
- AccessToken, AccessScope, KeycloakPrincipal, and KeycloakAuthenticatedSession respectively.
- </listitem>
- <listitem>
- ServleOAuthClient.getBearerToken() method signature has changed. It now returns an AccessTokenResponse
- so that you can obtain a refresh token too.
- </listitem>
- <listitem>
- Adapters now check the access token expiration with every request. If the token is expired, they will
- attempt to invoke a refresh on the auth server using a saved refresh token.
- </listitem>
- <listitem>
- Subject in AccessToken has been changed to the User ID.
- </listitem>
- </itemizedlist>
- </sect1>
- <sect1>
- <title>Migrating from 1.0 Alpha 1 to Alpha 2</title>
- <itemizedlist>
- <listitem>
- DB Schema has changed. We don't have any data migration utilities yet as of Alpha 2.
- </listitem>
- <listitem>
- JBoss and Wildfly adapters are now installed via a JBoss/Wildfly subsystem. Please review the adapter
- installation documentation. Edits to standalone.xml are now required.
- </listitem>
- <listitem>
- There is a new credential type "secret". Unlike other credential types, it is stored in plain text in
- the database and can be viewed in the admin console.
- </listitem>
- <listitem>
- There is no longer required Application or OAuth Client credentials. These client types are now
- hard coded to use the "secret" credential type.
- </listitem>
- <listitem>
- Because of the "secret" credential change to Application and OAuth Client, you'll have to update
- your keycloak.json configuration files and regenarate a secret within the Application or OAuth Client
- credentials tab in the administration console.
- </listitem>
- </itemizedlist>
- </sect1>
+ <para>
+ 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.
+ </para>
+
+ <section>
+ <title>Migrate database</title>
+ <para>
+ Keycloak provides automatic migration of the database. It's highly recommended that you backup your
+ database prior to upgrading Keycloak.
+ </para>
+ <para>
+ To enable automatic upgrading of the database if you're using a relational database make sure
+ <literal>databaseSchema</literal> is set to <literal>update</literal> for <literal>connectionsJpa</literal>:
+<programlisting>
+"connectionsJpa": {
+ "default": {
+ ...
+ "databaseSchema": "update"
+ }
+}
+</programlisting>
+ </para>
+ <para>
+ For MongoDB do the same, but for <literal>connectionsMongo</literal>:
+<programlisting>
+"connectionsMongo": {
+ "default": {
+ ...
+ "databaseSchema": "update"
+ }
+}
+</programlisting>
+ </para>
+ <para>
+ When you start the server with this setting your database will automatically be migrated if the database
+ schema has changed in the new version.
+ </para>
+ </section>
+
+ <section>
+ <title>Migrate keycloak-server.json</title>
+ <para>
+ You should copy <literal>standalone/configuration/keycloak-server.json</literal> from the old version to
+ make sure any configuration changes you've done are added to the new installation. The version specific
+ section below will list any changes done to this file that you have to do when upgrading from one version
+ to another.
+ </para>
+ </section>
+
+ <section>
+ <title>Migrate providers</title>
+ <para>
+ If you have implemented any SPI providers you need to copy them to the new server. The version
+ specific section below will mention if any of the SPI's have changed. If they have you may have to update
+ your code accordingly.
+ </para>
+ </section>
+
+ <section>
+ <title>Migrate themes</title>
+ <para>
+ If you have created a custom theme you need to copy them to the new server. The version specific section below
+ will mention if changes have been made to themes. If there is you may have to update your themes accordingly.
+ </para>
+ </section>
+
+ <section>
+ <title>Migrate application</title>
+ <para>
+ If you deploy applications directly to the Keycloak server you should copy them to the new server. For any
+ applications including those not deployed directly to the Keycloak server you should upgrade the adapter.
+ The version specific section below will mention if any changes are required to applications.
+ </para>
+ </section>
+
+ <section>
+ <title>Version specific migration</title>
+ <section>
+ <title>Migrating from 1.0.x.Final to 1.1.Beta1</title>
+ <itemizedlist>
+ <listitem>RealmModel JPA and Mongo storage schema has changed</listitem>
+ <listitem>UserSessionModel JPA and Mongo storage schema has changed as these interfaces have been refactored</listitem>
+ <listitem>
+ Upgrade your adapters, old adapters are not compatible with Keycloak 1.1. We interpreted JSON Web Token and OIDC ID Token specification incorrectly. 'aud'
+ claim must be the client id, we were storing the realm name in there and validating it.
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>Migrating from 1.0 RC-1 to RC-2</title>
+ <itemizedlist>
+ <listitem>A lot of info level logging has been changed to debug. Also, a realm no longer has the jboss-logging audit listener by default.
+ If you want log output when users login, logout, change passwords, etc. enable the jboss-logging audit listener through the admin console.</listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>Migrating from 1.0 Beta 4 to RC-1</title>
+ <itemizedlist>
+ <listitem>
+ logout REST API has been refactored. The GET request on the logout URI does not take a session_state
+ parameter anymore. You must be logged in in order to log out the session.
+ You can also POST to the logout REST URI. This action requires a valid refresh token to perform the logout.
+ The signature is the same as refresh token minus the grant type form parameter. See documentation for details.
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>Migrating from 1.0 Beta 1 to Beta 4</title>
+ <itemizedlist>
+ <listitem>
+ LDAP/AD configuration is changed. It is no longer under the "Settings" page. It is now under
+ Users->Federation. Add Provider will show you an "ldap" option.
+ </listitem>
+ <listitem>
+ Authentication SPI has been removed and rewritten. The new SPI is UserFederationProvider and is
+ more flexible.
+ </listitem>
+ <listitem>
+ <literal>ssl-not-required</literal> property in adapter config has been removed. Replaced with
+ <literal>ssl-required</literal>, valid values are <literal>all</literal> (require SSL for all requests), <literal>external</literal>
+ (require SSL only for external request) and <literal>none</literal> (SSL not required).
+ </listitem>
+ <listitem>
+ DB Schema has changed again.
+ </listitem>
+ <listitem>
+ Created applications now have a full scope by default. This means that you don't have to configure
+ the scope of an application if you don't want to.
+ </listitem>
+ <listitem>
+ Format of JSON file for importing realm data was changed. Now role mappings is available under the JSON record of particular
+ user.
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>Migrating from 1.0 Alpha 4 to Beta 1</title>
+ <itemizedlist>
+ <listitem>
+ DB Schema has changed. We have added export of the database to Beta 1, but not the ability to import
+ the database from older versions. This will be supported in future releases.
+ </listitem>
+ <listitem>
+ For all clients except bearer-only applications, you must specify at least one redirect uri. Keycloak
+ will not allow you to log in unless you have specified a valid redirect uri for that application.
+ </listitem>
+ <listitem>
+ Resource Owner Password Credentials flow is now disabled by default. It can be enabled by setting the toggle
+ for <literal>Direct Grant API</literal> <literal>ON</literal> under realm config in the admin console.
+ </listitem>
+ <listitem>
+ Configuration is now done through <literal>standalone/configuration/keycloak-server.json</literal>. This
+ should mainly affect those that use MongoDB.
+ </listitem>
+ <listitem>
+ JavaScript adapter has been refactored. See the <link linkend='javascript-adapter'>JavaScript adapter</link> section for more details.
+ </listitem>
+ <listitem>
+ The "Central Login Lifespan" setting no longer exists. Please see the <link linkend='session-timeouts'>Session Timeout</link> section
+ for me details.
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>Migrating from 1.0 Alpha 2 to Alpha 3</title>
+ <itemizedlist>
+ <listitem>
+ SkeletonKeyToken, SkeletonKeyScope, SkeletonKeyPrincipal, and SkeletonKeySession have been renamed to:
+ AccessToken, AccessScope, KeycloakPrincipal, and KeycloakAuthenticatedSession respectively.
+ </listitem>
+ <listitem>
+ ServleOAuthClient.getBearerToken() method signature has changed. It now returns an AccessTokenResponse
+ so that you can obtain a refresh token too.
+ </listitem>
+ <listitem>
+ Adapters now check the access token expiration with every request. If the token is expired, they will
+ attempt to invoke a refresh on the auth server using a saved refresh token.
+ </listitem>
+ <listitem>
+ Subject in AccessToken has been changed to the User ID.
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>Migrating from 1.0 Alpha 1 to Alpha 2</title>
+ <itemizedlist>
+ <listitem>
+ DB Schema has changed. We don't have any data migration utilities yet as of Alpha 2.
+ </listitem>
+ <listitem>
+ JBoss and Wildfly adapters are now installed via a JBoss/Wildfly subsystem. Please review the adapter
+ installation documentation. Edits to standalone.xml are now required.
+ </listitem>
+ <listitem>
+ There is a new credential type "secret". Unlike other credential types, it is stored in plain text in
+ the database and can be viewed in the admin console.
+
+ </listitem>
+ <listitem>
+ There is no longer required Application or OAuth Client credentials. These client types are now
+ hard coded to use the "secret" credential type.
+ </listitem>
+ <listitem>
+ Because of the "secret" credential change to Application and OAuth Client, you'll have to update
+ your keycloak.json configuration files and regenarate a secret within the Application or OAuth Client
+ credentials tab in the administration console.
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
</chapter>
\ No newline at end of file