Migration Toolkit for Applications 7.3

Installing the Migration Toolkit for Applications

Installing the Migration Toolkit for Applications user interface and command-line interface

Red Hat Customer Content Services

Abstract

By using the Migration Toolkit for Applications (MTA), you can accelerate large-scale application modernization efforts across hybrid cloud environments on Red Hat OpenShift. For example, you can inventory, assess, analyze, and manage applications for faster migration to OpenShift through the user interface at both the portfolio and application levels.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. We are beginning with these four terms: master, slave, blacklist, and whitelist. Because of the enormity of this endeavor, these changes will be implemented gradually over several upcoming releases. For more details, see our CTO Chris Wright’s message.

Chapter 1. Introduction to the Migration Toolkit for Applications

Migration Toolkit for Applications (MTA) is a set of tools that you can use to accelerate large-scale application modernization efforts across hybrid cloud environments on Red Hat OpenShift. MTA looks for common resources and known trouble spots when migrating applications. It provides a high-level view of the technologies used by the application. MTA also generates a detailed report that evaluates a migration or modernization path. By using this report, you can estimate the effort required for large-scale projects and reduce the work involved.

By using the MTA, you can perform the following tasks:

  • Use the MTA extensive default questionnaire to assess your applications, or create your own custom questionnaire to estimate the difficulty, time, and other resources needed to prepare an application for containerization. You can use the results of an assessment for discussions between stakeholders to determine which applications are suitable for containerization.
  • Analyze applications by applying one or more sets of rules to each application. You can use these rules to determine which specific lines of the application must be modified before the application can be modernized.
  • Examine application artifacts, including project source directories and application archives, and produce an HTML report that highlights areas that require changes.

1.1. MTA features

Migration Toolkit for Applications (MTA) provides the following features to simplify upgrades with more migration paths:

  • Application inventory and assessment modules to assist organizations in managing, classifying, and tagging their applications while assessing application suitability for deployment in containers, including flagging potential risks for migration strategies.
  • Full integration with source code and binary repositories to automate the retrieval of applications for analysis along with proxy integration, including HTTP and HTTPS proxy configuration managed in the user interface.
  • Improved analysis capabilities with new analysis modes, including source and dependency modes that parse repositories to gather dependencies and add these dependencies to the overall scope of the analysis. You can also use a simplified user experience to configure the analysis scope, including open source libraries.
  • Enhanced Role-Based Access Control (RBAC) powered by Red Hat build of Keycloak to define new differentiated personas (administrator, architect, and migrator) with different permissions to suit the needs of each user, including credentials management for multiple credential types.
  • Administration perspective to provide tool-wide configuration management for administrators.
  • Support for Red Hat OpenShift on AWS (ROSA) introduced in MTA version 7.0.0.
  • Support for Azure Red Hat OpenShift (ARO) introduced in version MTA 7.0.0.
  • Support for analyzing different languages introduced in MTA version 7.1.0.

1.2. MTA rules

The Migration Toolkit for Applications (MTA) contains rule-based migration tools (analyzers) that you can use to analyze the application user interfaces (APIs), technologies, and architectures used by the applications you plan to migrate. MTA analyzer rules use the following rule pattern:

when(condition)
 message(message)
 tag(tags)

You can use the MTA rules internally to perform the following tasks:

  • Extract files from archives.
  • Decompile files.
  • Scan and classify file types.
  • Analyze XML and other file content.
  • Analyze the application code.
  • Build the reports.

MTA builds a data model based on the rule execution results and stores component data and relationships in a graph database. This database can then be queried and updated as required by the migration rules and for reporting purposes.

Note

You can create your own custom analyzer rules. You can use custom rules to identify the use of custom libraries or other components that might not be covered by the provided standard migration rules.

For instructions on how to write custom rules, see Rules Development Guide.

1.3. MTA tools

You can use the following Migration Toolkit for Applications (MTA) tools for assistance in the various stages of your migration and modernization efforts:

  • User interface (UI)

    By using the user interface for the Migration Toolkit for Applications, you can perform the following tasks:

    • Assess the risks involved in containerizing an application for hybrid cloud environments on Red Hat OpenShift.
    • Analyze the changes that must be made in the code of an application to containerize the application.

    For more information about using the MTA user interface, see User Interface Guide.

  • Command-line interface (CLI)

    The CLI is a command-line tool in the Migration Toolkit for Applications that you can use to assess and prioritize migration and modernization efforts for applications. It provides numerous reports that highlight the analysis without using the other tools. The CLI includes a wide array of customization options. By using the CLI, you can tune MTA analysis options or integrate with external automation tools.

    For more information about using the CLI, see CLI Guide.

  • Migration Toolkit for Applications Operator

    By using the Migration Toolkit for Applications Operator, you can install the user interface on OpenShift Container Platform.

    For more information about the prerequisites for the MTA Operator installation, see OpenShift Operator Life Cycles.

  • IDE add-ons

    You can migrate and modernize applications by using the Migration Toolkit for Applications add-ons for the following applications:

    • Eclipse
    • Visual Studio Code, Visual Studio Codespaces, and Eclipse Che
    • IntelliJ IDEA, both the Community and Ultimate versions

      You can use these add-on to perform the following tasks:

    • Analyze your projects by using customizable sets of rules.
    • Mark issues in the source code.
    • Fix the issues by using the provided guidance.
    • Use the automatic code replacement, if possible.

    For more information about using add-ons, see the following documentation:

Chapter 2. Supported Migration Toolkit for Applications migration paths

You can run the Migration Toolkit for Applications (MTA) analysis to assess your applications' suitability for migration to multiple target platforms. MTA supports the following migration paths:

Table 2.1. Supported Java migration paths

Source platform ⇒Migration to JBoss EAP 7 & 8OpenShift (cloud readiness)OpenJDK 11, 17, and 21Jakarta EE 9Camel 3 & 4Spring Boot in Red Hat RuntimesQuarkusOpen Liberty

Oracle WebLogic Server

-

-

-

-

-

IBM WebSphere Application Server

-

-

-

-

JBoss EAP 4

[a]

-

-

-

-

-

JBoss EAP 5

-

-

-

-

-

JBoss EAP 6

-

-

-

-

-

JBoss EAP 7

-

-

-

-

Thorntail

[b]

-

-

-

-

-

-

-

Oracle JDK

-

-

-

-

-

-

Camel 2

-

-

-

-

-

Spring Boot

-

-

-

Any Java application

-

-

-

-

-

-

Any Java EE application

-

-

-

-

-

-

-

[a] Although MTA does not currently provide rules for this migration path, Red Hat Consulting can assist with migration from any source platform to JBoss EAP 7.
[b] Requires JBoss Enterprise Application Platform expansion pack 2 (EAP XP 2)

..NET migration paths

Source platform ⇒OpenShift (cloud readiness)Migration to .NET 8.0

.NET Framework 4.5+ (Windows only)

Important

Analyzing applications written in the .NET language is a Developer Preview feature only. Developer Preview features are not supported by Red Hat in any way and are not functionally complete or production-ready. Do not use Developer Preview features for production or business-critical workloads. Developer Preview features provide early access to upcoming product features in advance of their possible inclusion in a Red Hat product offering, enabling customers to test functionality and provide feedback during the development process. These features might not have any documentation, are subject to change or removal at any time, and testing is limited. Red Hat might provide ways to submit feedback on Developer Preview features without an associated SLA.

Chapter 3. Installing the Migration Toolkit for Applications user interface

You can install the Migration Toolkit for Applications (MTA) user interface (UI) on all Red Hat OpenShift cloud services and Red Hat OpenShift self-managed editions.

To create MTA instances, you must first install the MTA Operator. The MTA Operator is a structural layer that manages resources deployed on OpenShift, such as database, front end, and back end, to automatically create an MTA instance.

3.1. Persistent volume requirements

To successfully deploy, the MTA Operator requires two ReadWriteOnce (RWO) persistent volumes (PVs) used by different components. If the rwx_supported configuration option is set to true, the MTA Operator requires additional two ReadWriteMany (RWX) PVs that are used by Maven and the hub file storage.

Table 3.1. Required persistent volumes

NameDefault sizeAccess modeDescription

hub database

10GB

RWO

A hub database that includes information about applications, stakeholders, business services, and other MTA-related information.

hub bucket

100GB

RWX

A hub file storage that is required if the rwx_supported configuration option is set to true.

keycloak postgresql

1GB

RWO

The Keycloak back end database.

cache

100GB

RWX

Maven m2 cache that is required if the rwx_supported configuration option is set to true.

3.2. Red Hat Build of Keycloak

Starting from version 7.3.0, MTA uses the Red Hat Build of Keycloak (RHBK) instance for user authentication and authorization. An RHBK instance is installed during the installation of the MTA user interface. The MTA Operator manages the RHBK instance and configures a dedicated realm with necessary roles and permissions.

You can use the MTA-managed RHBK instance to perform advanced RHBK configurations, such as adding a provider for User Federation or integrating identity providers.

3.2.1. Accessing the RHBK Admin Console

To perform advanced configurations to an RHBK instance, you must be logged in to the RHBK Admin Console

Procedure

  1. Retrieve your admin credentials:

    $ oc get secret mta-keycloak-rhbk -n openshift-mta -o json| jq -r '.data.password | @base64d'

    The admin credentials for RHBK are stored in the mta-keycloak-rhbk secret file in the namespace where you installed MTA.

  2. Enter the following URL in your browser:

    https://<web_console_address>/auth/admin
  3. Access the RHBK Admin Console by entering your credentials.

3.2.2. Roles, personas, users, and permissions

The Migration Toolkit for Applications (MTA) uses three roles, each corresponds to a persona. The roles are already defined in your RHBK instance. You do not need to create them. If you are an MTA administrator, you can create users in your RHBK and assign each user one or more roles, one role per persona. Although a user can have more than one role, each role corresponds to a specific persona:

  • The tackle-admin role corresponds to the Administrator persona. The administrator has all the permissions that architects and migrators have, along with the ability to create some application-wide configuration parameters that other users can consume, but cannot change or view, for example, Git credentials or Maven settings.xml files.
  • The tackle-architect role corresponds to the Architect persona. An architect is a technical lead for the migration project who can run assessments and can create and modify applications and information related to them. The architect cannot modify or delete sensitive information, but can consume it. For example, the architect can associate an existing credential to the repository of a specific application.
  • The tackle-migrator role corresponds to the Migrator persona. A migrator is a user who can analyze applications, but not create, modify, or delete them.

MTA has two views, Administration and Migration. Only administrators can access the Administration view. Architects and migrators have no access to Administration view, they cannot even see it. Administrators can perform all actions supported by Migration view. Architects and migrators can see all elements of Migration view, but their ability to perform actions in Migration view depends on the permissions granted to their role.

3.3. Installing the MTA Operator

To create Migration Toolkit for Applications (MTA) instances, you must first install the MTA Operator. The MTA Operator is a structural layer that manages resources deployed on OpenShift, such as database, front end, and back end, to automatically create an MTA instance.

Prerequisites

  • 4 vCPUs, 8 GB RAM, and 40 GB persistent storage.
  • Any cloud services or self-hosted edition of Red Hat OpenShift on versions 4.13-4.15.
  • 2 RWO persistent volumes (PVs) used by different components. For more information, see xref:[Persistent volume requirements].
  • You are logged in as a user with cluster-admin permissions.

Procedure

  1. In the Red Hat OpenShift web console, click Operators and then click OperatorHub.
  2. Type MTA in the Filter by keyword field to search for the MTA Operator.
  3. Click the Migration Toolkit for Applications Operator and then click Install.
  4. On the Install Operator page, click Install.
  5. Optional: Review and edit the custom resource (CR) settings.

    A window for creating CR settings pops up automatically after the installation of MTA Operator is complete. The default settings are acceptable. However, make sure to check the system requirements for storage, memory, and cores.

    Alternatively, to work directly with the YAML file, click the YAML view and review the CR settings that are listed in the spec section of the YAML file. For more details about commonly used CR settings, see Custom resource settings.

    The spec section of the YAML file can have the following configuration:

    kind: Tackle
    apiVersion: tackle.konveyor.io/v1alpha1
    metadata:
      name: mta
      namespace: openshift-mta
    spec:
      hub_bucket_volume_size: "2.5Gi"
      maven_data_volume_size: "2.5Gi"
      rwx_supported: "false"
  6. Verify that the MTA pods are running by clicking Workloads and then Pods in the Administration view.

Verification

  • Verify that the MTA Operator appears in the openshift-mta project with the status Succeeded by clicking Operators and then Installed Operators.

Additional resources

3.4. Creating a MTA instance

You can use the Migration Toolkit for Applications (MTA) user interface (UI) to assess and analyze your applications to get insights about the adoption process, at both the portfolio and application levels as you inventory, assess, analyze, and manage applications for faster migration to Red Hat OpenShift.

Prerequisites

  • You installed the MTA Operator on your system. For more information, see Installing the Migration Toolkit for Applications Operator.
  • 4 vCPUs, 8 GB RAM, and 40 GB persistent storage.
  • Any cloud services or self-hosted edition of Red Hat OpenShift on versions 4.13-4.15.
  • You are logged in as a user with cluster-admin permissions.

Procedure

  1. Click MTA Operator.
  2. Under Provided APIs, search for Tackle and click Create Instance.
  3. Access the user interface from your browser by using the route exposed by the mta-ui application within OpenShift.
  4. Log in to the user interface instance by using the default credentials:

    • User name: admin
    • Password: Passw0rd!
  5. When prompted, create a new password.

Additional resources

3.5. Custom resource settings

The following are the most commonly used custom resource (CR) settings that you can find in the spec section of the YAML file.

Table 3.2. Common custom resource settings

CR nameDefault sizeDescription

cache_data_volume_size

100GB

A size requested for the cache volume. This CR is ignored when the rwx_supported option is set to false.

cache_storage_class

Default storage class

A storage class used for the cache volume. This CR is ignored when the rwx_supported option is set to false.

feature_auth_required

True

A flag to indicate whether keycloak authorization is required. When set to false, the flag mounts to “noauth“, which means only a single user can use the web console. The single user is the default admin user.

feature_isolate_namespace

True

A flag to indicate whether namespace isolation by using network policies is enabled.

hub_database_volume_size

10GB

A size requested for the Hub database volume.

hub_bucket_volume_size

100GB

A size requested for the Hub bucket volume.

hub_bucket_storage_class

Default storage class

A storage class used for the bucket volume.

keycloak_database_data_volume_size

1GB

A size requested for the Keycloak database volume.

pathfinder_database_data_volume_size

1GB

A size requested for the Pathfinder database volume.

rwx_supported

True

A flag to indicate whether the cluster storage supports RWX mode.

rwo_storage_class

NA

A storage class requested for the Tackle RW0 volumes.

rhsso_external_access

False

A flag to indicate whether a dedicated route is created to access the MTA managed RHSSO instance.

analyzer_container_limits_cpu

1

A maximum number of CPUs the pod is allowed to use.

analyzer_container_limits_memory

4GB

Maximum amount of memory the pod is allowed to use. You can increase this limit if the pod displays OOMKilled errors.

`analyzer_container_requests_cpu `

1

A minimum number of CPUs the pod needs to run.

`analyzer_container_requests_memory `

4GB

Minimum amount of memory the pod needs to run.

Chapter 4. Installing the Migration Toolkit for Applications command-line interface

You can install the Migration Toolkit for Applications (MTA) command-line interface (CLI) on Linux, Windows, or macOS operating systems.

Note

You can also install the CLI for use with Docker on Windows. Note, however, that this is a Developer Preview feature only.

4.1. Installing the CLI by using a .zip file

You can install the Migration Toolkit for Applications (MTA) command-line interface (CLI) by using the downloadable .zip file available on the official MTA download page.

Prerequisites

  • Red Hat Container Registry Authentication for registry.redhat.io. Red Hat distributes container images from registry.redhat.io, which requires authentication. For more details, see Red Hat Container Registry Authentication.

    Note

    This prerequisite is not applicable for the containerless mode. For more information, see Analyzing applications in containerless mode.

  • You installed Java Development Kit (JDK) version 17 or later.
  • You set the JAVA_HOME environmental variable.
  • You installed Maven version 3.9.9 or later with its binary added to the $PATH variable.

Procedure

  1. Navigate to the MTA download page and download one of the following operating system-specific CLI files or the src file:

    • mta-7.3.1-cli-linux-amd64.zip
    • mta-7.3.1-cli-linux-arm64.zip
    • mta-7.3.1-cli-darwin-amd64.zip
    • mta-7.3.1-cli-darwin-arm64.zip
    • mta-7.3.1-cli-windows-amd64.zip
    • mta-7.3.1-cli-windows-arm64.zip
    • mta-7.3.1-cli-src.zip
  2. Extract the .zip file. .zip extracts the mta-cli binary, along with other required directories and files.
  3. Move the mta-cli binary to your $PATH variable.

    Note

    You can place the mta-cli binary in any folder that is included in the $PATH variable. Alternatively, you can add a folder that contains mta-cli to $PATH. This way, you do not need to specify a full path when using the CLI.

4.2. Installing the CLI on a disconnected environment

When your system is in a disconnected environment, you can install the Migration Toolkit for Applications (MTA) command-line interface (CLI) by performing the following actions:

  1. Download the required images by using an external computer.
  2. Copying the downloaded images to the system you want to install MTA CLI on.
Important

The following procedure applies only to container mode.

Note

The analysis output in the disconnected environment usually results in fewer incidents because a dependency analysis does not run accurately without access to Maven.

Prerequisites

  • You downloaded the required MTA CLI binary from the Migration Toolkit for Applications Red Hat Developer page.
  • You installed the Podman tool on your system.
  • For the analysis of Java applications, you enabled container runtime usage by setting the --run-local flag to false:

    --run-local=false

    The analysis of non-Java applications runs in container mode by default.

Procedure

  1. On a connected device, perform the following steps:

    1. Authenticate to registry.redhat.io:

      $ podman login registry.redhat.io
    2. Run the mta-cli binary file. The binary file pulls the required provider images. For example:

      $ mta-cli analyze
      Important

      This command only pulls the required images. For example, if you run a command that requires Java images, a .NET image will not be pulled.

    3. Display the image list:

      $ podman images
      REPOSITORY                                                        TAG         IMAGE ID      CREATED       SIZE
      registry.redhat.io/mta/mta-generic-external-provider-rhel9        7.3.1       8b8d7fa14570  13 days ago   692 MB
      registry.redhat.io/mta/mta-cli-rhel9                              7.3.1       45422a12d936  13 days ago   1.6 GB
      registry.redhat.io/mta/mta-java-external-provider-rhel9           7.3.1       4d6d0912a38b  13 days ago   715 MB
      registry.redhat.io/mta/mta-dotnet-external-provider-rhel9         7.3.1       66ec9fc51408  13 days ago   1.27 GB
    4. Save the images:

      $ podman save <image_ID> -o <image_name>.image
    5. Copy the images onto a USB drive or directly to the file system of the disconnected device.
  2. On the disconnected device, enter:

    $ podman load --input <image_name>.image

4.3. Installing the CLI for use with Docker on Windows

To migrate applications built with .NET framework version 4.5 or later, on Microsoft Windows to cross-platform .NET 8.0, you must install the CLI for use with Docker on Windows. To do so, you must configure Docker to use Windows containers first.

Prerequisites

  • A host with Windows 11+ 64-bit version 21H2 or higher.
  • You downloaded the Docker Desktop for Windows installation program. For more details, see Install Docker Desktop on Windows.

Procedure

  1. Open a PowerShell with Administrator privileges.
  2. Ensure Hyper-V is installed and enabled:

    PS C:\Users\<user_name>> Enable-WindowsOptionalFeature -Online ` -FeatureName Microsoft-Hyper-V-All
    PS C:\Users\<user_name>> Enable-WindowsOptionalFeature -Online ` -FeatureName Containers
    Note

    You might need to reboot Windows for the change to take effect.

  3. Install Docker Desktop on Windows.

    1. Run the installer by double-clicking the Docker_Desktop_Installer.exe file.

      By default, Docker Desktop is installed to the C:\Program Files\Docker\Docker path.

    2. Ensure that Docker will run Windows containers as the backend instead of Linux containers:

      1. In the Windows task bar, right-click on the Docker icon.
      2. Click Switch to Windows containers.
  4. In PowerShell, create a folder for MTA:

    PS C:\Users\<user_name>> mkdir C:\Users\<user_name>\MTA
  5. Extract the mta-7.3.1-cli-windows.zip file to the MTA folder:

    PS C:\Users\<user_name>> cd C:\Users\<user_name>\Downloads
    PS C:\Users\<user_name>> Expand-Archive ` -Path "{ProductShortNameLower}-{ProductVersion}-cli-windows.zip" ` -DestinationPath "C:\Users\<user_name>\MTA"
  6. Ensure that Docker is running Windows containers the OS/Arch is set to windows/amd64:

    PS C:\Users\<user_name>> docker version
    Client:
     Version:           27.0.3
     API version:       1.46
     Go version:        go1.21.11
     Git commit:        7d4bcd8
     Built:             Sat Jun 29 00:03:32 2024
     OS/Arch:           windows/amd64
     Context:           desktop-windows
    Server: Docker Desktop 4.32.0 (157355)
     Engine:
      Version:          27.0.3
      API version:      1.46 (minimum version 1.24)
      Go version:       go1.21.11
      Git commit:       662f78c
      Built:            Sat Jun 29 00:02:13 2024
      OS/Arch:          windows/amd64
      Experimental:     false
  7. Set the CONTAINER_TOOL environment variable to use Docker:

    PS C:\Users\<user_name>> $env:CONTAINER_TOOL="C:\Windows\system32\docker.exe"
  8. Set the DOTNET_PROVIDER_IMG environment variable to use the upstream dotnet-external-provider:

    PS C:\Users\<user_name>> $env:DOTNET_PROVIDER_IMG="quay.io/konveyor/dotnet-external-provider:v0.5.0"
  9. Set the RUNNER_IMG environment variable to use the upstream image:

    PS C:\Users\<user_name>> $env:RUNNER_IMG="quay.io/konveyor/kantra:v0.5.0"

Appendix A. Contributing to the MTA project

To help the Migration Toolkit for Applications cover most application constructs and server configurations, including yours, you can help with any of the following items:

  • Send an email to jboss-migration-feedback@redhat.com and let us know what MTA migration rules must cover.
  • Provide example applications to test migration rules.
  • Identify application components and problem areas that might be difficult to migrate:

    • Write a short description of the problem migration areas.
    • Write a brief overview describing how to solve the problem in migration areas.
  • Try Migration Toolkit for Applications on your application. Make sure to report any issues you meet.
  • Try Migration Toolkit for Applications on your application. Make sure to report any issues you meet.MTA uses Jira as its issue tracking system. If you encounter an issue executing MTA, submit a Jira issue.
  • Contribute to the Migration Toolkit for Applications rules repository:

    • Write a Migration Toolkit for Applications rule to identify or automate a migration process.
    • Create a test for the new rule.

      For more information, see Rule Development Guide.

  • Contribute to the project source code:

    • Create a core rule.
    • Improve MTA performance or efficiency.

Additional resources

Legal Notice

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.