Accelerating Mainframe Modernization to Sovereign Clouds – Part 2

July 26th, 2025

Migrating AWS Card to STACKIT — Gary Crook, CEO

Previous Article in this Series

Introduction

To illustrate Heirloom’s capabilities, we migrated AWS Card—an open-source COBOL/CICS/JCL/VSAM mainframe application that processes financial transactions, to the STACKIT cloud platform.

This demonstration is a simple but powerful illustration of the potential for even the most entrenched legacy systems to thrive in sovereign cloud environments.

The Challenge

The AWS Card open-source application represents a typical mainframe workload with:

– COBOL-based business logic
– CICS for online transaction processing
– JCL for batch processing
– VSAM data storage

The Heirloom Solution
Using Heirloom, this open-source mainframe application was transformed into a cloud-native solution deployed on STACKIT’s Cloud Foundry runtime with PostgreSQL as the database layer:

  1. Automatic Code Conversion: The COBOL programs were automatically transpiled (without any changes) to Java source while preserving business logic integrity.
  2. CICS Emulation: Heirloom’s Java framework recreated the CICS environment in the cloud, allowing seamless operation.
  3. Data Migration: VSAM data structures were mapped to PostgreSQL tables, ensuring efficient data storage, management, and retrieval.
  4. CI/CD Integration Potential: The application can be easily integrated into modern DevOps pipelines for continuous deployment.

Technical Implementation: Architects’ Guide

For technical architects interested in the high-level implementation details, here’s an overview of how the AWS Card application was deployed to the STACKIT sovereign cloud platform.

You can review some short video demonstrations on how the application code and data were migrated using Heirloom, here.


Cloud Foundry Configuration
Once we have created a Java application package card.war, the next step is to configure the target infrastructure on the STACKIT cloud. The application environment was configured using a standard manifest.yml file to describe the Cloud Foundry runtime:

applications:
- name: card-app
  memory: 2G
  instances: 1
  path: card.war
  buildpacks:
    - java_buildpack
  env:
    JBP_CONFIG_OPEN_JDK_JRE: '{ jre: { version: 17.+ } }'
    JBP_CONFIG_TOMCAT: '{ tomcat: { version: 9.0.+ } }'
    JBP_CONFIG_DEBUG: '{enabled: true}'
  timeout: 180

STACKIT Cloud Foundry Deployment Steps & Application Execution

Deploying the application to the STACKIT Cloud Foundry environment was very straightforward:

$ cf push heirloom-demos -p card.war

As soon as the application is deployed, we can execute it (and until we shut down the instance, you can too):

https://heirloom-demos.apps.01.cf.eu01.stackit.cloud/servlet

USER ID: USER0001
PASSWORD: PASSWORD

This is what the menu item “06. Transaction List” looks like:

Previous Article in this Series