The DevOps movement that stresses communication, integration, automation, and measurement of cooperation among information-technology (IT) professionals has evolved into a software development method that aims at breaking down silos among application development, test, and deployment. Its key emphasis is to develop and test against production-like systems, with the following objectives:

  • Deploy with repeatable, reliable processes.
  • Monitor and validate operational quality.
  • Amplify feedback loops.

Using IBM UrbanCode Deploy for deploying applications on z/OS
IBM® UrbanCode™ Deploy helps you orchestrate and automate the deployment of applications, databases, and configurations into development, test, and production environments. UrbanCode Deploy helps drive down cost, enforce security and traceability, and speeds time-to-market with reduced risk. UrbanCode Deploy supports the delivery of interdependent, multiplatform applications and provides a unified solution for continuous delivery of heterogeneous enterprise applications, including IMS™ applications running on the z/OS® platform.

UrbanCode Deploy offers a z/OS deployment agent and a toolkit that you can install to facilitate z/OS application deployment. The compile-and-link steps are usually performed by the software configuration management (SCM) build process outside of UrbanCode Deploy. Utilities included with UrbanCode Deploy are used to import compiled load modules into UrbanCode Deploy as a version of an application.

From then on, UrbanCode Deploy takes over and facilitates the building of a process that performs various tasks, such as deployment of the load modules into the appropriate z/OS subsystem. UrbanCode Deploy offers comprehensive z/OS support, from allocating and copying data sets to submitting jobs and running TSO and ISPF commands. Figure 1 shows an IMS application deployment using IBM UrbanCode Deploy.

Figure 1. IMS application deployment using IBM UrbanCode Deploy
Figure 1. IMS application deployment using IBM UrbanCode Deploy

IBM UrbanCode Deploy and IMS
Extensive built-in z/OS capabilities enable users of UrbanCode Deploy to create processes for deployment of IMS applications. You can deploy new or update existing applications. Any type of IMS application will work—traditional types, such as those written in COBOL or PL/I, or those written in Java™.

Many possible scenarios for deployment of IMS applications exist, where the deployment steps will vary from scenario to scenario. These steps depend on factors such as the type of the application, how it was initially deployed, the version of IMS, and others. In order to map a deployment procedure into UrbanCode Deploy, you can follow a prescribed recipe or simply design your own process.

Let’s consider a real deployment scenario and see how we can tackle this task with UrbanCode Deploy.

Assume that we’re deploying an updated IMS application running in a Message Processing Program (MPP) region with the DBLDL=0 parameter. The general procedure that guarantees application redeployment involves a program restart:

  1. Copy the updated application from local repository into the z/OS system where the application is to be deployed.
  2. Issue the command UPDATE PGM NAME(program_name) STOP(SCHD) to stop the existing application.
  3. Copy the new code to PGMLIB.
  4. Issue the command UPDATE PGM NAME(program_name) START(SCHD) to start the application.

On the UrbanCode Deploy process design tab, this procedure translates into connecting together the following steps:

  1. Copy Artifacts to copy the updated application into the target z/OS system.
  2. Execute IMS Command to stop the program.
  3. Deploy Data Sets to copy the new code to the PGMLIB.
  4. Execute IMS Command to start the updated application.

Figure 2 shows the final result on the UrbanCode Deploy process design tab.

Figure 2. Example process
Figure 2. Example process

Every time you add the Execute IMS Command step to your process, the Properties dialog opens, prompting you to specify the values for the following properties:

  • IMS Command: Where you specify the IMS command (or sequence of multiple commands) to issue. For example:

    UPDATE PGM NAME(program_name) STOP(SCHD)
    UPDATE PGM NAME(program_name) START(SCHD)

  • IMS PLEX: The 1- 5 character suffix of the IMSplex name.
  • IMS ID: Used to identify the target IMS system the command is directed to within a given IMSplex.
  • IMS RESLIB: Name of a z/OS library that contains the IMS nucleus and all the action modules necessary to run IMS and its utilities.

Deployment of other types of IMS applications, such as IMS Java applications running in a JMP region or COBOL, PL/I, or assembler applications that run in the MPP region, can be automated using similar techniques.

Common process steps include (but not limited to):

  • Execute IMS Command step to issue various IMS commands, such as the STOP REGION x command, where x is the region number processing the IMS application.
  • Copy Directory step to copy new code to the location in the HFS from where your updated Java application should be executed.
  • Submit Job step to submit any kind of JCL, for example one responsible for bringing up the JMP region where the Java application is processed. After the steps are defined in the process, the process can be repeated and scheduled to support automated or continuous deployment of your IMS applications.

IBM UrbanCode Deploy and z/OS Connect EE
With z/OS Connect Enterprise Edition you can create and deliver REST APIs for IMS applications and other System z assets. z/OS Connect APIs are deployed on z/OS Connect server and run alongside original IMS applications. In a typical scenario, changes to an IMS application will prompt updating both the application runtime and the corresponding API. UrbanCode Deploy can be utilized to perform simultaneous updates of all affected components.

Figure 3 shows an example of UrbanCode Deploy process that updates IMS application and z/OS Connect API. Note that this time, the two update steps run in parallel, as there is no direct dependency between them.


You can enable continuous deployment of IMS applications and zOS Connect EE APIs in an agile environment in an orchestrated, reliable, and secure manner by using IBM UrbanCode Deploy. With its support for z/OS deployment tooling and the IMS plugin that’s available for download, you can deploy IMS applications by issuing IMS commands, copying new code to the appropriate data set or HFS, and submitting JCL jobs, all through defined steps in a process that’s repeatable and traceable.

Additional information
See our demonstration video on YouTube about deploying IMS applications using IBM UrbanCode Deploy.

See the documentation about IMS application deployment with IBM UrbanCode Deploy, including UrbanCode Deploy installation information.

Download the IMS plugin for IBM UrbanCode Deploy at developerWorks®.

IMS plugin for IBM UrbanCode Deploy
Plugins in UrbanCode Deploy provide extension points for integration with other software. To assist you with IMS application deployment, an IMS plugin is available to download. Click View Plugin Doc to view the documentation for the plugin.

This plugin integrates as part of UrbanCode Deploy to simplify basic IMS operations by issuing IMS commands, and ultimately to facilitate automation of IMS application deployment. You can use this plugin for various scenarios where type-1 or type-2 IMS commands are traditionally used. But the most common scenario that takes advantage of UrbanCode Deploy is IMS application deployment, allowing you to automate application deployment for continuous delivery in an agile environment.

When the IMS plugin is installed, an Execute IMS Command step is added to your design palette in UrbanCode Deploy.

3 comments on"Continuous IMS application deployment using IBM UrbanCode Deploy"

  1. […] and reliable. You can read how UrbanCode deploy can be used to deploy IMS applications on z/OS here; and here is a quick UrbanCode Deploy […]

  2. Annamalai June 27, 2019

    I have a query in UCD. We can run job by using UCD But my scenario is before we run a job, I need to verify the status of online ( by submit TSO command ).
    Could you please tell me how can we execute TSO command in mainframe by using UCD tool.

Join The Discussion

Your email address will not be published. Required fields are marked *