Rehost IMS workloads to virtual machines by using IMSql

Azure Virtual Machines
Azure Virtual Network
Azure Virtual Machine Scale Sets
Azure SQL Managed Instance

This architecture shows how to use Raincode's IMSql to rehost IMS Database Manager (IMS DB) and IMS Transaction Manager (IMS TM) systems on .NET and SQL Server in the simplest way: by using virtual machines. You can recompile legacy applications to target .NET and interact with IMSql in the same way that they interact with IMS on a mainframe. IMSql transitions mainframe applications to an Azure-native architecture while thoroughly preserving the business logic.


IBM z/OS architecture, before migration

Diagram that shows the mainframe architecture before migration.

Download a Visio file of this architecture.


A. Users connect via TCP/IP by using protocols like TN3270 and HTTPS.

B. Input into the mainframe uses standard mainframe communication protocols. 

C. Applications receive the data. These applications are either batch or online systems. 

D. COBOL, PL/I, Assembler, or other compatible languages run in an enabled environment. 

E. Database systems, commonly hierarchical/network and relational systems, store data. 

F. Common services, like program execution, I/O operations, error detection, and protection within the environment, provide support. 

G. Middleware and utilities manage services like tape storage, queueing, output, and web services within the environment. 

H. Operating systems run on partitions. 

I. Partitions run separate workloads and segregate work types within the environment. 

Azure architecture, after migration

Diagram that shows the IMSql architecture after migration to virtual machines.

Download a Visio file of this architecture.


  1. IBM 3270 terminal emulators connect to IMS TM applications that are deployed on Azure unchanged via the IMSql Terminal Server.
  2. Batch processes written in JCL are run unchanged via transient Azure container instances that run the Raincode JCL interpreter. Compiled legacy programs access IMS DB by using standard IMS APIs. Raincode JCL can store its catalog on any file-based storage.
  3. Read/write SQL Server views on the IMS data enable modern applications or business intelligence (like Power BI) to communicate directly with IMS applications, abstracting away mainframe elements like data structures and character encodings.
  4. Raincode Console provides a web-based administration environment for IMSql.
  5. SQL Server Service Broker is the communications backbone for IMSql components.


  • Azure Virtual Network is the fundamental building block for your private network in Azure. Virtual Network enables many types of Azure resources, like virtual machines (VMs), to communicate with each other, the internet, and on-premises networks, all with improved security. Virtual Network is like a traditional network that you operate in your own datacenter, but it provides more of the benefits of the Azure infrastructure, like scale, availability, and isolation.
  • Azure Virtual Machine Scale Sets provides automated and load-balanced VM scaling that simplifies the management of your applications and increases availability.
  • Azure SQL Managed Instance, part of the Azure SQL service portfolio, is a managed, highly secure, always up-to-date SQL instance in the cloud.


  • You can use SQL Server in an Azure virtual machine as an alternative to SQL Managed Instance. We recommend SQL Managed Instance in this architecture because of benefits like high availability, seamless integration with various Azure services, and management of underlying security patches and maintenance.

  • You can use an Azure single-VM architecture as an alternative to Virtual Machine Scale Sets. You might want to use single VMs for workloads that have constant load and performance demands and don't need scaling. This architecture uses Virtual Machine Scale Sets to handle typical IMS workloads.

Scenario details

This architecture shows how to seamlessly rehost to Azure a mainframe workload that has critical IMS features and capabilities. You don't need to translate or modify your existing application. The architecture uses IMSql and Azure SQL.

  • Raincode compilers generate 100 percent thread-safe managed code for .NET. The .NET assemblies are loaded dynamically and called by IMSql processing servers.
  • IMSql is intrinsically non-transformational. It keeps the source (COBOL, PL/I) as is. The IMS-specific CBLTDLI and PLITDLI calls and EXEC DLI statements aren't changed. This capability ensures optimal maintainability of the resulting system. It extends to IMS DB data: the data is imported as is, in bulk, with no changes, cleansing, or normalization.
  • IMSql uses the robust, versatile, and scalable SQL Server as a database, transaction processor, and execution platform.
  • IMSql operates in three modes:
    • Online
    • Batch
    • Load and Unload (for data migration or for JCLs that produce or consume sequential files)
  • On mainframes, Database Descriptions (DBDs) and Program Specification Blocks (PSBs) are compiled to create the database and the program's description. Similarly, on IMSql, DBDs and PSBs are compiled into an XML representation. This representation enables IMS-aware programs to determine which database segments pertain to them. It also drives the generation of various server-side artifacts for IMSql, like the database schema and stored procedures.

Potential use cases

  • Modernize infrastructure and eliminate the high costs, limitations, and rigidity associated with IMS, or, more generally, with mainframes.
  • Reduce technical debt by implementing cloud-native solutions and supporting a DevOps strategy.
  • Move IMS workloads to the cloud without the side effects of a complete redevelopment.
  • Move IMS business-critical applications while maintaining continuity with other on-premises applications.


These considerations implement the pillars of the Azure Well-Architected Framework, a set of guiding tenets that you can use to improve the quality of a workload. For more information, see Microsoft Azure Well-Architected Framework.


Reliability ensures your application can meet the commitments you make to your customers. For more information, see Overview of the reliability pillar.

  • This OLTP architecture can be deployed in multiple regions and can incorporate a geo-replication data layer.
  • The Azure database services support zone redundancy and can fail over to a secondary node during outages or to enable maintenance activities.


Security provides assurances against deliberate attacks and the abuse of your valuable data and systems. For more information, see Overview of the security pillar.

This solution uses an Azure network security group to manage traffic to and from Azure resources. For more information, see Network security groups.

These security options are available in Azure database services:

  • Data encryption at rest
  • Dynamic data masking
  • Always Encrypted data

For general guidance on designing highly secure SQL solutions, see Azure security recommendations.

Cost optimization

Cost optimization is about reducing unnecessary expenses and improving operational efficiencies. For more information, see Overview of the cost optimization pillar.

  • Azure provides cost optimization by running on Windows VMs. You can turn off the VMs when they're not being used and script a schedule for known usage patterns. Azure helps you avoid unnecessary costs by identifying the right number of resource types, analyzing spending over time, and scaling to meet business needs without overspending.
  • SQL Managed Instance provides various pricing tiers, like general purpose and business critical, to optimize costs based on usage and business criticality.
  • Use Azure Reservations and Azure savings plan for compute with a one-year or three-year contract and receive significant savings off pay-as-you-go prices.

Use the Azure pricing calculator to estimate the cost of implementing this solution.


This article is maintained by Microsoft. It was originally written by the following contributors.

Principal author:

Other contributor:

To see non-public LinkedIn profiles, sign in to LinkedIn.

Next steps

For more information, contact

See the companion architecture:

More related resources: