Maximo Application Suite CLI Ansible CLI
Edit on GitHub
Image Mirroring Image Validation Install Update Upgrade Uninstall MRE&F External DB Setup EAM Migration Mirror Db2 Images Minimal RBAC update upgrade uninstall must-gather configure-airgap mirror-redhat-images setup-registry teardown-registry provision-fyre provision-roks provision-rosa configtool-oidc Overview Jun 24 2025 May 01 2025 Apr 03 2025 Mar 06 2025 Dependencies Topology Cluster Extensions

Migration from EAM 7 to MAS 9¤

This example demonstrates how to migrate from EAM 7 to Maximo Manage v9 running on Red Hat OpenShift on IBM Cloud (ROKS).

Prerequisites¤

1. An IBMCloud API Key¤

For the purpose of this demo we are going to provision an OpenShift Cluster in IBMCloud using the Red Hat OpenShift on IBMCloud service (aka "ROKS"), however the demo can easily be repeated targeting any OpenShift cluster:

2. A MAS License File¤

Access IBM License Key Center, on the Get Keys menu select IBM AppPoint Suites. Select IBM MAXIMO APPLICATION SUITE AppPOINT LIC and on the next page fill in the information as below:

Field Content
Number of Keys How many AppPoints to assign to the license file
Host ID Type Set to Ethernet Address
Host ID Enter any 12 digit hexadecimal string
Hostname Set to the hostname of your OCP instance, but this can be any value really
Port Set to 27000

Create a new folder mas9demo in your home directory and save this file there as ~/mas9demo/entitlement.lic

3. An IBM Entitlement Key¤

Access IBM Container Software Library using your IBMId to obtain your entitlement key.

4. A Database Backup (Optional)¤

If you want to migrate without shutting down your EAM 7 instance you should take a backup of the database and use it to populate a new database instance, this is necessary because Maximo Manage and EAM can not both be using the same database at the same time.

Step 1 - Provision OpenShift¤

We are going to provision the cluster using Red Hat OpenShift on IBM Cloud via the MAS CLI container image. Ensure that you set the IBMCLOUD_APIKEY environment variable to the key you obtained from the IBM Container Software Library.

export IBMCLOUD_APIKEY=x

docker run -e IBMCLOUD_APIKEY -ti --rm -v ~:/mnt/home --pull always quay.io/ibmmas/cli:13.27.0 \
  mas provision-roks -r mas-development -c mas9demo -v 4.14_openshift \
  --worker-count 3 --worker-flavor b3c.8x32 --worker-zone lon02 \
  --no-confirm

This will provision an OpenShift cluster with three 8x32 worker nodes. It will take approximately 1 hour to provision the cluster.

Note

At time of writing the cost of this three node OpenShift cluster on IBMCloud is $1.61 per hour (which works out as just under $1'200 per month). Billing is hourly and to complete this example we will only need the cluster for a few hours; the entire demo can be complete on IBMCloud for as little as $10.

Step 2 - Configure Database Connection¤

If you are connecting Maximo Manage to the same database used by EAM we must first shut down the EAM application servers, because when the migration starts it will upgrade the database to a version that EAM can not support. Log into the WebSphere administrative console and stop the servers.

Shutdown EAM in the WebSphere Application Server administrative console

IBM Maximo Application Suite (MAS) configuration is held in Kubernetes resources on the OpenShift cluster, when we install MAS we will tell the installer to apply this configuration as part of the installation.

---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: "jdbc-demo-credentials"
  namespace: "mas-dev-core"
stringData:
  username: "{DB_USERNAME}"
  password: "{DB_PASSWORD}"
---
apiVersion: config.mas.ibm.com/v1
kind: JdbcCfg
metadata:
  name: "dev-jdbc-wsapp-demo-manage"
  namespace: "mas-dev-core"
  labels:
    "mas.ibm.com/configScope": "workspace-application"
    "mas.ibm.com/instanceId": "dev"
    "mas.ibm.com/workspaceId": "demo"
    "mas.ibm.com/applicationId": "manage"
spec:
  displayName: "JDBC (IBM Db2)"
  config:
    url: "{JDBC_URL}"
    sslEnabled: false
    credentials:
      secretName: "jdbc-demo-credentials"

Replace {JDBC_URL}, {DB_USERNAME}, and {DB_PASSWORD} with the actual values for your database, for example:

Save this file into the same directory where we saved the MAS entitlement file, as ~/mas9demo/mas9demo-jdbc.yaml

Validate that the JDBC URL and username/password are correct by running the command SELECT VARNAME, VARVALUE FROM MAXIMO.MAXVARS WHERE VARNAME='MAXUPG';, which will confirm the database is currently running at version 7. We would normally use DBeaver for this purpose.

Using DBeaver to view the MAXUPG value in the Maximo database

Step 3 - Configure SMTP¤

When existing users are migrated into MAS a new password will be generated for each, to recieve this password we must configure SMTP for MAS. If you don't have your own SMTP server, and do have a Gmail account then can configure MAS as below:

---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: "smtp-demo-credentials"
  namespace: "mas-dev-core"
stringData:
  username: "{GOOGLE_EMAIL}"
  password: "{GOOGLE_PASSWORD}"
---
apiVersion: config.mas.ibm.com/v1
kind: SmtpCfg
metadata:
  name: "dev-smtp-system"
  namespace: "mas-dev-core"
  labels:
    "mas.ibm.com/configScope": "system"
    "mas.ibm.com/instanceId": "dev"
spec:
  displayName: "SMTP (Google)"
  config:
    hostname: smtp.gmail.com
    port: 465
    security: SSL
    authentication: true
    defaultSenderEmail: "{GOOGLE_EMAIL}"
    defaultSenderName: "IBM Maximo Application Suite (Do Not Respond)"
    defaultRecipientEmail: "{GOOGLE_EMAIL}"
    defaultShouldEmailPasswords: true
    credentials:
      secretName: "smtp-demo-credentials"

Save this file into the same directory as ~/mas9demo/mas9demo-smtp.yaml; make sure to replace the {GOOGLE_EMAIL} and {GOOGLE_PASSWORD} placeholders with real values. You can not (and should not) use your normal Google Account password here, you must instead generate and use an App Password.

Note

If you skip this step, MAS will be unable to send e-mail so there is no way to automatically notify users of their new account and it's password; in this scenario an administrator must manually set a new password for each user migrated from EAM to MAS.

Step 4 - Install MAS¤

Ensure the following environment variables are all set:

We will install MAS in non-production mode, with an instance ID of dev and a workspace ID of demo using the latest (at time of writing) catalog update.

Note

When we launch the CLI container we are mounting your home directory into the container image, this is how the installer will access the entitlement.lic and mas9demo-jdbc.yaml files that you created earlier.

export IBMCLOUD_APIKEY=x
export SUPERUSER_PASSWORD=x
export IBM_ENTITLEMENT_KEY=x

docker run -e IBMCLOUD_APIKEY -ti --rm -v ~:/mnt/home --pull always quay.io/ibmmas/cli:13.27.0 bash -c "
  CLUSTER_TYPE=roks CLUSTER_NAME=mas9demo ROLE_NAME=ocp_login ansible-playbook ibm.mas_devops.run_role &&
  mas install \
  --non-prod \
  --mas-instance-id dev \
  --mas-workspace-id demo \
  --mas-workspace-name 'EAM Migration Demo' \
  --mas-catalog-version v9-250624-amd64 \
  --mas-channel 9.1.x \
  --manage-channel 9.1.x \
  --manage-jdbc workspace-application \
  --manage-components base=latest \
  --additional-configs /mnt/home/mas9demo \
  --license-file /mnt/home/mas9demo/entitlement.lic \
  --uds-email parkerda@uk.ibm.com \
  --uds-firstname David \
  --uds-lastname Parker \
  --storage-class-rwo ibmc-block-gold \
  --storage-class-rwx ibmc-file-gold-gid \
  --storage-pipeline ibmc-file-gold-gid \
  --storage-accessmode ReadWriteMany \
  --superuser-username superuser \
  --superuser-password '$SUPERUSER_PASSWORD' \
  --ibm-entitlement-key '$IBM_ENTITLEMENT_KEY' \
  --accept-license \
  --no-confirm
"

The install itself is performed inside the cluster, the CLI merely prepares the installation pipeline, you will be presented with a URL to view the install pipeline in the OpenShift Console.

Tip

You can either monitor the install in the OpenShift Console or go get lunch, the install will take approximately 2-3 hours depending on network conditions.

Tekon Pipeline for Maximo Application Suite installation

Once the installation has completed you will be able to log into Maximo Application Suite & Maximo Manage using any user from the original EAM. For convenience the installer adds a link to the Maximo Application Suite Administrator Dashboard to the OpenShift Console's Application Menu, and we can log into MAS using the superuser username and password supplied during install:

Application Menu extension in the OpenShift Console for Maximo Application Suite

Alternate Install¤

To perform the same installation without data migration, ignore step 2 (don't create ~/mas9demo/mas9demo-jdbc.yaml) and instead run the install with one additional parameter --db2-manage:

export IBMCLOUD_APIKEY=x
export SUPERUSER_PASSWORD=x
export IBM_ENTITLEMENT_KEY=x

docker run -e IBMCLOUD_APIKEY -ti --rm -v ~:/mnt/home --pull always quay.io/ibmmas/cli:13.27.0 bash -c "
  CLUSTER_TYPE=roks CLUSTER_NAME=mas9demo ROLE_NAME=ocp_login ansible-playbook ibm.mas_devops.run_role &&
  mas install \
  --non-prod \
  --mas-instance-id dev \
  --mas-workspace-id demo \
  --mas-workspace-name 'EAM Migration Demo' \
  --mas-catalog-version v9-250624-amd64 \
  --mas-channel 9.1.x \
  --manage-channel 9.1.x \
  --manage-jdbc workspace-application \
  --db2-manage \
  --manage-components base=latest \
  --additional-configs /mnt/home/mas9demo \
  --license-file /mnt/home/mas9demo/entitlement.lic \
  --uds-email parkerda@uk.ibm.com \
  --uds-firstname David \
  --uds-lastname Parker \
  --storage-class-rwo ibmc-block-gold \
  --storage-class-rwx ibmc-file-gold-gid \
  --storage-pipeline ibmc-file-gold-gid \
  --storage-accessmode ReadWriteMany \
  --superuser-username superuser \
  --superuser-password '$SUPERUSER_PASSWORD' \
  --ibm-entitlement-key '$IBM_ENTITLEMENT_KEY' \
  --accept-license \
  --no-confirm
"

The addition of the --db2-manage parameter is all that we require to instruct the installer to provision a new Db2 instance in the cluster and automatically configure Maximo Manage to use it.