Featured image for Red Hat JBoss Enterprise Application Platform.

Before migrating your application from Red Hat JBoss Enterprise Application Platform (JBoss EAP) 7.1 to the latest version, 7.4, you'll first need to consider how to migrate from one server to the other. One aspect that is often overlooked: migrating the server configurations and all the features installed in the current server to the new one.

The JBoss Server Migration Tool helps migrate server configuration files (standalone.xml and domain.xml) to the new installation. This saves precious time manually testing and migrating the server migrations.

JBoss EAP versions align with the following subsystem versions:

  • JBoss EAP 7.4: Enterprise Java Beans (EJB) 3.9 (connectors) and modcluster 5.0 (proxy)
  • JBoss EAP 7.3: EJB 3.6 (connector-ref) and modcluster 5.0 (proxy)
  • EJB 7.1: EJB 3.5 (connector-ref) and modcluster 3.0 (mod-cluster-config)

When to use the JBoss Server Migration Tool

To migrate the server, use the embedded Server Migration Tool in JBoss EAP 7.4. The server migration toolkit is already embedded inside JBoss EAP and it lets you migrate each subsystem and migrate from one version to another (source to target). By embedded, I mean the server migration toolkit is simply a script (jboss-server-migration.sh/jboss-server-migration.bat) that you can use to migrate JBoss EAP configurations and it is found under JBOSS_HOME/bin (aka EAP_HOME).

To solve the application migration problem, use Red Hat's migration toolkit for runtimes. The migration toolkit for applications is intended for Red Hat OpenShift Container Platform migrations (cloud-ready applications), not for JBoss EAP server application migrations.

Migration output

If you experience any problems running the script, you can refer to the $JBOSS_HOME/migration directory that contains the configuration, logs, and reports.

$ cd /home/jboss-eap-7.4/migration
$ ls
configuration logs README.md reports 

Each file's purpose is described below:

  • Logs: The logs show the migration output, which is the same as you will see on the screen.
  • Configuration: The configuration is the template used on the report. environment.properties is used for non-interactive mode. logging.properties contains the actual logging properties for the tool.
  • Reports: The report is generated in HTML/XML, so you can open it in any browser. The report has a simple template with the summary, the environment details, and the successfully executed tasks.
  • Results: After the migration, you can find the results in the configuration files.

An interactive migration example

The following example shows how to migrate from JBoss EAP 7.3 to JBoss EAP 7.4. You can also use these steps to migrate from JBoss EAP 7.2 to JBoss EAP 7.4.

Why is this migration necessary? The EJB subsystem changed specific features (EJB 3.5 to EJB 3.9), and the MicroProfile subsystem was removed. This breaks the forward compatibility, meaning you cannot start JBoss EAP 7.4 with JBoss EAP 7.3 configurations because it will only work if MicroProfile is removed.

Migration steps

In this example migration, JBoss EAP 7.4 is the target and JBoss EAP 7.3 is the source. The example uses the interactive mode. If you are not using the interactive mode, the environment.properties file will come in handy.

Follow these steps:

  1. Download the new version, JBoss EAP 7.4.
  2. Unzip it and set JBOSS_HOME to JBoss EAP 7.4; this will be your target server.
  3. Go to the source directory (i.e., JBoss EAP 7.3) and set export SOURCE_7_3 for that directory; this will be your source server.
  4. Go to the JBoss EAP 7.4 directory (cd $JBOSS_HOME/bin) and execute the following script: $./jboss-server-migration.sh --source /SOURCE_7_3
  5. This will prompt the standalone migration. Select yes and hit enter.
  6. Later on, select yes to migrate all configuration files. You might already have a deployment on the old JBoss EAP 7.0, so select no here to migrate the deployed application. This will not actually migrate the application, but deploy it in the target. Select no for the mode-domain migration.
    
    [user@user jboss-eap-7.4]$ ./bin/jboss-server-migration.sh --source /home/jboss-eap-7.3
    =JBoss Server Migration Tool= Retrieving servers...
    15:04:02,128 INFO [logger] SOURCE server name: JBoss EAP, version: 7.3.0.GA. 
    15:04:02,136 INFO [logger] TARGET server name: JBoss EAP, version: 7.4.0.GA. 
    # Server migration starting... # 
    15:04:02,171 INFO [ServerMigrationTask#1:1] --- Migrating modules requested by environment... #
    15:04:02,171 INFO [ServerMigrationTask#1:1] No modules to migrate. # Migrate the source's standalone server? yes/no? yes # 
    15:04:05,001 INFO [ServerMigrationTask#1:2] 
    --- Migrating standalone server... 
    # # Migrate all configurations? yes/no? no
    Migrate configuration standalone-cameleon.xml ? yes/no? no 
    ... Migrate configuration standalone_example.xml ? <----------------------- your yes/no? yes 
    # ... Migration Result: SUCCESS <---- success ... 
  7. Wait for the migration to complete.
  8. Review the migration output/log. The result file can be found in $JBOSS_HOME/standalone/configuration/standalone_example.xml.beforeMigration | standalone_example.xml.
  9. After finishing the process, go to the new JBoss EAP directory and start the instance.

Domain mode migration

The following refers to the domain mode migration:

[user@user jboss-eap-7.4]$ cp /home/jboss-eap-7.3/domain/configuration/domain.xml /home/jboss-eap-7.3/domain/configuration/domain_cu.xml
[user@user jboss-eap-7.4]$ clear [user@user jboss-eap-7.4]$ ./bin/jboss-server-migration.sh --source /home/jboss-eap-7.3
---------------------------------------------------------- ---- JBoss Server Migration Tool ----------------------- ---------------------------------------------------------- Retrieving servers...
22:27:38,426 INFO [logger] SOURCE server name: JBoss EAP, version: 7.3.0.GA.
22:27:38,434 INFO [logger] TARGET server name: JBoss EAP, version: 7.4.0.GA. ----------------------------------------------------------
---------------------------------------------------------- Server migration starting...
22:27:38,473 INFO [ServerMigrationTask#1:1] --- Migrating modules requested by environment...
22:27:38,473 INFO [ServerMigrationTask#1:1] No modules to migrate.
Migrate the source's standalone server? yes/no? no
Migrate the source's managed domain? yes/no? yes
22:27:40,904 INFO [ServerMigrationTask#1:3] --- Migrating managed domain...
22:27:40,933 INFO [ServerMigrationTask#1:3:3] Source's domain configurations found: [domain.xml, domain_cu.xml] Migrate all configurations? yes/no? no
Migrate configuration domain.xml ? yes/no? no Migrate configuration domain_cu.xml ? yes/no? yes
22:27:44,967 INFO [ServerMigrationTask#1:3:3:1] Migrating domain configuration domain_cu.xml...
22:27:45,300 INFO [ServerMigrationTask#1:3:3:1:1] Unsupported extensions removed: [org.wildfly.extension.microprofile.opentracing-smallrye, org.wildfly.extension.microprofile.config-smallrye]
22:27:45,555 INFO [ServerMigrationTask#1:3:3:1:2] Unsupported subsystems removed: [urn:wildfly:microprofile-opentracing-smallrye:1.0, urn:wildfly:microprofile-config-smallrye:1.0] 22:27:46,201 INFO [security] ELY00001: WildFly Elytron version 1.15.3.Final-redhat-00001
22:27:48,362 INFO [ServerMigrationTask#1:3:3:1:5] Host-excludes configuration added.
22:27:48,493 INFO [ServerMigrationTask#1:3:4] Source's host configurations found: [host-master.xml, host-slave.xml, host.xml] Migrate all configurations? yes/no? no
Migrate configuration host-master.xml ? yes/no? no
Migrate configuration host-slave.xml ? yes/no? no Migrate configuration host.xml ? yes/no? no Server migration done. 22:27:52,744 INFO [logger] --------------------------------------------------------- Task Summary --------------------------------------------------------- server ......................................... SUCCESS domain ........................................ SUCCESS domain-configurations ........................ SUCCESS domain-configuration(source=domain_cu.xml) .. SUCCESS --------------------------------------------------------- Migration Result: SUCCESS --------------------------------------------------------- 

A non-interactive migration example

For non-interactive migration, enter --interactive=false, setting the properties correctly on the file as follows:

[user@user jboss-eap-7.4]$ ./bin/jboss-server-migration.sh --source /home/jboss-eap-7.3 --interactive=false
---------------------------------------------------------- ---- JBoss Server Migration Tool ----------------------- ---------------------------------------------------------- Retrieving servers...
22:30:27,884 INFO [logger] SOURCE server name: JBoss EAP, version: 7.3.0.GA.
22:30:27,891 INFO [logger] TARGET server name: JBoss EAP, version: 7.4.0.GA. ---------------------------------------------------------- ---------------------------------------------------------- Server migration starting...
22:30:27,926 INFO [ServerMigrationTask#1:1] --- Migrating modules requested by environment...
22:30:27,926 INFO [ServerMigrationTask#1:1] No modules to migrate. 
22:30:27,927 INFO [ServerMigrationTask#1:2] --- Migrating standalone server...
22:30:27,953 INFO [ServerMigrationTask#1:2:2] Source's standalone content migrated. 
22:30:27,963 INFO [ServerMigrationTask#1:2:3] Source's standalone configurations found: [standalone-cameleon.xml, standalone-full-ha.xml, standalone-full.xml, standalone-ha-cu.xml, standalone-ha.xml, standalone-load-balancer.xml, standalone.xml, standalone_cu.xml] 
22:30:27,965 INFO [ServerMigrationTask#1:2:3:1] Migrating standalone configuration standalone-cameleon.xml... 
22:30:29,004 INFO [security] ELY00001: WildFly Elytron version 1.15.3.Final-redhat-00001 22:30:29,740 INFO [ServerMigrationTask#1:2:3:1:5] Subsystem health added. 
22:30:29,775 INFO [ServerMigrationTask#1:2:3:1:6] Subsystem metrics added. 
22:30:29,787 INFO [ServerMigrationTask#1:2:3:1:7] Security realms migrated. 
22:30:29,796 INFO [ServerMigrationTask#1:2:3:1:8:2] Non-persistent deployments found in /home/jboss-eap-7.3/standalone/deployments: [security-test.war, jsp_cdi_servlet.war, EjbSecure.jar, jaxrs-client-sources.jar, testservlet.war, EjbPrint.jar, HelloServlet.war, jaxrs-client.war] 
22:30:29,833 INFO [ServerMigrationTask#1:2:3:2] Migrating standalone configuration standalone-full-ha.xml... 
22:30:29,919 INFO [ServerMigrationTask#1:2:3:2:1] Unsupported extensions removed: [org.wildfly.extension.microprofile.health-smallrye, org.wildfly.extension.microprofile.metrics-smallrye, org.wildfly.extension.microprofile.opentracing-smallrye, org.wildfly.extension.microprofile.config-smallrye] 
22:30:29,996 INFO [ServerMigrationTask#1:2:3:2:2] Unsupported subsystems removed: [urn:wildfly:microprofile-opentracing-smallrye:1.0, urn:wildfly:microprofile-health-smallrye:2.0, urn:wildfly:microprofile-metrics-smallrye:2.0, urn:wildfly:microprofile-config-smallrye:1.0] 22:30:30,515 INFO [ServerMigrationTask#1:2:3:2:5] Subsystem health added. 22:30:30,549 INFO [ServerMigrationTask#1:2:3:2:6] Subsystem metrics added. 22:30:30,558 INFO [ServerMigrationTask#1:2:3:2:7] Security realms migrated. 22:30:30,597 INFO [ServerMigrationTask#1:2:3:3] Migrating standalone configuration standalone-full.xml... 
22:30:30,673 INFO [ServerMigrationTask#1:2:3:3:1] Unsupported extensions removed: [org.wildfly.extension.microprofile.health-smallrye, org.wildfly.extension.microprofile.metrics-smallrye, org.wildfly.extension.microprofile.opentracing-smallrye, org.wildfly.extension.microprofile.config-smallrye] 
22:30:30,751 INFO [ServerMigrationTask#1:2:3:3:2] Unsupported subsystems removed: [urn:wildfly:microprofile-opentracing-smallrye:1.0, urn:wildfly:microprofile-health-smallrye:2.0, urn:wildfly:microprofile-metrics-smallrye:2.0, urn:wildfly:microprofile-config-smallrye:1.0] 
22:30:30,923 INFO [ServerMigrationTask#1:2:3:3:5] Subsystem health added.
22:30:30,960 INFO [ServerMigrationTask#1:2:3:3:6] Subsystem metrics added.
22:30:30,970 INFO [ServerMigrationTask#1:2:3:3:7] Security realms migrated. 
22:30:31,002 INFO [ServerMigrationTask#1:2:3:4] Migrating standalone configuration standalone-ha-cu.xml... 
22:30:31,088 INFO [ServerMigrationTask#1:2:3:4:1] Unsupported extensions removed: [org.wildfly.extension.microprofile.health-smallrye, org.wildfly.extension.microprofile.metrics-smallrye, org.wildfly.extension.microprofile.opentracing-smallrye, org.wildfly.extension.microprofile.config-smallrye] 22:30:31,169 INFO [ServerMigrationTask#1:2:3:4:2] Unsupported subsystems removed: [urn:wildfly:microprofile-opentracing-smallrye:1.0, urn:wildfly:microprofile-health-smallrye:2.0, urn:wildfly:microprofile-metrics-smallrye:2.0, urn:wildfly:microprofile-config-smallrye:1.0] 22:30:31,192 ERROR [logger] Migration failed: org.jboss.migration.core.ServerMigrationFailureException: java.lang.IllegalStateException: Migration of module com.oracle:main required, but module not found in source server. at org.jboss.migration.wfly10.config.task.module.ConfigurationModulesMigrationTaskFactory$Task.migrateModules(ConfigurationModulesMigrationTaskFactory.java:90) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.jboss.ModulesMigrationTask.run(ModulesMigrationTask.java:67) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.env.SkippableByEnvServerMigrationTask.run(SkippableByEnvServerMigrationTask.java:47) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskExecutionImpl.run(TaskExecutionImpl.java:169) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskExecutionImpl.execute(TaskExecutionImpl.java:159) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskContextImpl.execute(TaskContextImpl.java:68) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskContextImpl.execute(TaskContextImpl.java:32) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.wfly10.config.task.ServerConfigurationMigration$1.run(ServerConfigurationMigration.java:88) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskExecutionImpl.run(TaskExecutionImpl.java:169) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskExecutionImpl.execute(TaskExecutionImpl.java:159) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskContextImpl.execute(TaskContextImpl.java:68) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskContextImpl.execute(TaskContextImpl.java:32) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.wfly10.config.task.ServerConfigurationsMigration$Task.migrateConfig(ServerConfigurationsMigration.java:151) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.wfly10.config.task.ServerConfigurationsMigration$Task.migrateAllConfigs(ServerConfigurationsMigration.java:120) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.wfly10.config.task.ServerConfigurationsMigration$Task.run(ServerConfigurationsMigration.java:113) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskExecutionImpl.run(TaskExecutionImpl.java:169) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskExecutionImpl.execute(TaskExecutionImpl.java:159) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskContextImpl.execute(TaskContextImpl.java:68) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskContextImpl.execute(TaskContextImpl.java:32) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.wfly10.config.task.StandaloneServerMigration$1.run(StandaloneServerMigration.java:61) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.console.UserConfirmationServerMigrationTask.runTask(UserConfirmationServerMigrationTask.java:58) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.console.UserConfirmationServerMigrationTask.run(UserConfirmationServerMigrationTask.java:63) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.env.SkippableByEnvServerMigrationTask.run(SkippableByEnvServerMigrationTask.java:47) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskExecutionImpl.run(TaskExecutionImpl.java:169) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskExecutionImpl.execute(TaskExecutionImpl.java:159) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskContextImpl.execute(TaskContextImpl.java:68) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskContextImpl.execute(TaskContextImpl.java:32) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.wfly10.config.task.ServerMigration.run(ServerMigration.java:45) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.wfly10.WildFlyServer10.migrate(WildFlyServer10.java:40) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.ServerMigration$1.run(ServerMigration.java:153) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.task.TaskExecutionImpl.run(TaskExecutionImpl.java:169) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.ServerMigration.run(ServerMigration.java:160) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at
org.jboss.migration.cli.CommandLineServerMigration.main(CommandLineServerMigration.java:131) [jboss-server-migration-cli-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at
org.jboss.modules.Module.run(Module.java:353) [jboss-modules.jar:1.11.0.Final-redhat-00001] at org.jboss.modules.Module.run(Module.java:321) [jboss-modules.jar:1.11.0.Final-redhat-00001] at org.jboss.modules.Main.main(Main.java:617) [jboss-modules.jar:1.11.0.Final-redhat-00001] Caused by: java.lang.IllegalStateException: Migration of module com.oracle:main required, but module not found in source server. at org.jboss.migration.core.jboss.ModulesMigrationTask$ModuleMigrator.migrateModule(ModulesMigrationTask.java:128) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.core.jboss.ModulesMigrationTask$ModuleMigrator.migrateModule(ModulesMigrationTask.java:118) [jboss-server-migration-core-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.wfly10.config.task.module.DatasourcesJdbcDriversModulesFinder.processElement(DatasourcesJdbcDriversModulesFinder.java:44) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.wfly10.config.task.module.ConfigurationModulesMigrationTaskFactory$Task.processElement(ConfigurationModulesMigrationTaskFactory.java:101) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] at org.jboss.migration.wfly10.config.task.module.ConfigurationModulesMigrationTaskFactory$Task.migrateModules(ConfigurationModulesMigrationTaskFactory.java:86) [jboss-server-migration-wildfly10.0-1.10.0.Final-redhat-00007.jar:1.10.0.Final-redhat-00007] ... 35 more 
22:30:31,196 INFO [logger] ---------------------------------------------------------------------------------------------------------- Task Summary ---------------------------------------------------------------------------------------------------------- server .......................................................................................... FAIL standalone ..................................................................................... FAIL contents.standalone.migrate-content-dir ....................................................... SUCCESS contents.standalone.migrate-content(path=fd/99b2631295d816547650c92b61498cf687bae4/content) .. SUCCESS contents.standalone.migrate-content(path=e4/fc7714c5b1a309a87dbb074a3d7b88fd339d18/content) .. SUCCESS contents.standalone.migrate-content(path=30/9de064883cdf625c997beb8323b5b80dc154bf/content) .. SUCCESS contents.standalone.migrate-content(path=f6/633900183b2cd81cf7d5f7a4d7bbdde96734b9/content) .. SUCCESS contents.standalone.migrate-content(path=5e/bd422eabb65d1f6a56a563294e80d6cf45b1a1/content) .. SUCCESS contents.standalone.migrate-content(path=9b/336f2be3de943dea660245aea239b4791cc48c/content) .. SUCCESS contents.standalone.migrate-content(path=0a/ed60bd9874dee796c3652f117167a51959d0d7/content) .. SUCCESS standalone-configurations ..................................................................... FAIL standalone-configuration(source=standalone-cameleon.xml) ..................................... SUCCESS standalone-configuration(source=standalone-full-ha.xml) ...................................... SUCCESS standalone-configuration(source=standalone-full.xml) ......................................... SUCCESS standalone-configuration(source=standalone-ha-cu.xml) ........................................ FAIL ---------------------------------------------------------------------------------------------------------- Migration Result: FAIL ----------------------------------------------------------------------------------------------------------

Tips for migrating files

Tip #1: Don't try to migrate a broken file, a file with unparsable content, or files cut in the middle; the parsing process needs to work for the migration to be successful. After the migration, the migration tool will spawn an embedded server and run it to test. Depending on the error, it might generate a partially migrated file, which will not work. The file will have the configuration resulting from the migration.

Do not leave the migrated file with the standard names, such as standalone.xml or domain.xml; doing so will overwrite the original files. In this case, use a different name for the migration.

Tip #2: After the migration, do a thorough review and test with the resulting configuration to verify it has a similar (expected) behavior.

Migrate the data source

You will need to migrate the data source, depending on the installation. Bear in mind that Red Hat recommends installing a JDBC driver as a core module instead of directly deploying a driver jar file through the management console. Follow the instructions in the article What is the recommended way to install a JDBC driver in EAP 6/7?

Migrating custom scripts

Custom scripts will not be migrated; they are basically ignored by the Server Migration Tool, which can only be addressed after the migration. You will need to migrate the custom scripts manually (copy them) and then do the respective due diligence to ensure they still work.

Migrating JBoss EAP XP to JBoss EAP

It is not possible to directly migrate from JBoss EAP XP to JBoss EAP because they are different products; if you were to migrate anything to JBoss XP, it would have to be from an XP installation. So, we will follow the steps for XP installation and then migrate from XP to another XP.

However, you will encounter the following issue:

22:04:05,439 ERROR [logger] Migration failed:
org.jboss.migration.core.ServerMigrationFailureException: java.lang.IllegalArgumentException: WFCMTOOL000004: Server name = JBoss EAP XP, version = 7.4.1.GA does not support migration from server name = JBoss EAP, version = 7.3.0.GA. at org.jboss.migration.core.task.TaskExecutionImpl.run(TaskExecutionImpl.java:174) [jboss-s ...
Caused by: java.lang.IllegalArgumentException: WFCMTOOL000004: Server name = JBoss EAP XP, version = 7.4.1.GA does not support migration from server name = JBoss EAP, version = 7.3.0.GA. 

Troubleshooting the Server Migration Tool

Basically, the migration logs will be transparent, which is very helpful for diagnosing specific issues. One of the most common problems is migrating a version that is not supported, such as migrating JBoss EAP 7.0 to JBoss EAP 7.3 (only JBoss EAP 7.2). If in doubt, you can set the logger.level (found in logging.properties).

Finally, JBoss EAP 7.4 lets you migrate straight from JBoss EAP 7.1 and JBoss EAP 7.2. This avoids chain scenarios needing subsequent migrations (e.g., JBoss EAP 7.1 to JBoss EAP 7.2 to JBoss EAP 7.3 to JBoss EAP 7.4), which we encountered before this tech preview came along.

FAQ

Q. Is it possible to keep two JBoss EAP installations at the same time, the new and the old?

A. Yes, as long as the installation was done using ZIP. RPM installations do not allow multiple JBoss EAP installations. For running two EAP servers simultaneously verify if they won't have port conflicts.

Q. Can I run the migration from JBoss EAP 7.2 to JBoss EAP 7.4?

A. Yes, this is available as a feature in JBoss EAP 7.4.2+.

Q. Does the migration tool help migrate deployments?

A. No, the JBoss Server Migration Tool does not migrate the deployment code; it migrates the deployment in that it copies the deployment from source to target. To migrate the deployment code itself, you must use the migration toolkit for runtimes (or the migration toolkit for applications, for OpenShift Container Platform migrations). 

Additional resources

To learn more, refer to the JBoss Server Migration Tool migration guide in PDF or HTML formats. Red Hat Support team created the article Using JBoss Server Migration Tool to upgrade from JBoss EAP 7.x to 7.current with several issues and an simple example as I above explain. 

Regarding JBoss EAP 7.3 breaking JBoss EAP 7.4, refer to the solution described in Using EAP 7.3 configuration in EAP 7.4 breaks the backward compatibility.

For any other specific inquiries, please open a case with Red Hat support. Our global team of experts can help you with any issues.