MQ

MQ

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only

Migrating between releases - OPMODE in MQ V9 LTS for z/OS 

Tue November 12, 2019 08:11 AM

Migrating between releases - OPMODE in MQ V9 LTS for z/OS

gwydiontudur |Apr 7 2017 Updated

When migrating between MQ releases on z/OS, it’s possible to fall back to the previous version of MQ. So you may, for example, migrate from MQ V8 to V9, back to V8, then forward to V9, before deciding to stay at V9. There are some new capabilities in each new release of MQ, which if used, would prevent the queue manager from falling back to the previous version. For example, in MQ V8, 8 byte log RBA and host names in channel authentication rules.

To prevent the accidental use of these new capabilities you have to explicitly set a switch to indicate that you do not want to go back to an earlier release, and to allow these new capabilities to be used. You set this switch with the OPMODE parameter.

The idea is that you migrate your queue manager to the new release of MQ, perform enough testing to reassure yourself that you are happy to stay at that release, then enable the restricted new capabilities using OPMODE, which prevents the queue manager from being started at an earlier release.

As the behaviour of OPMODE has changed slightly in MQ V9, I thought I’d take this opportunity to explain how it works in a bit more detail, and what’s changed in MQ V9.

This article deals only the behaviour of OPMODE in the Long Term Service (LTS) release of MQ V9, that is, MQ V9.0.0. The behaviour of OPMODE for the Continuous Delivery releases of MQ V9 is different, and I hope to cover that in a future blog post.

Setting OPMODE

Setting OPMODE requires recompiling the system parameter module (ZPARM), and restarting the queue manager.

You set OPMODE for a queue manager with the CSQ6SYSP macro when compiling the ZPARM. The format of the OPMODE parameter of CSQ6SYSP is:

OPMODE=(mode,verificationLevel)

mode can be set to either COMPAT (the default) or NEWFUNC. If COMPAT is specified, you cannot use the restricted new capabilities. If NEWFUNC is specified, the restricted new capabilities will be available, but you will not be able to start the queue manager at an earlier release of MQ.

verificationLevel should be set to the VRM (version, release, modification) code for the level of MQ that you are working with. For example, this would be 900 for MQ V9.0.0. This is used as a check to ensure that you do not accidentally set NEWFUNC for a queue manager by resubmitting JCL used for a previous release of MQ. You will get a compile time error if verificationLevel does not match the version of CSQ6SYSP that you are running.

The value of OPMODE when the ZPARM was compiled is displayed in message CSQY101I during queue manager startup.

Which capabilities are restricted by OPMODE at MQ V9?

Previous releases of MQ have all introduced new capabilities that are restricted by OPMODE. MQ V9 is different. There are no new capabilities added in MQ V9 that are restricted by OPMODE.

This does not mean that OPMODE has no effect in MQ V9, because capabilities that were restricted by OPMODE in MQ V8, are still restricted in MQ V9. This is a change from previous releases of MQ, where typically a queue manager migrated to a new version of MQ would be able to use all the capabilities of earlier releases of MQ, regardless of the value of OPMODE in its ZPARM.

This means that a MQ V9 queue manager started with OPMODE=(COMPAT,900) cannot use the V8 restricted capabilities such as 8 byte log RBA and host names in channel authentication rules. A MQ V9 queue manager started with OPMODE=(NEWFUNC,900) or OPMODE=(NEWFUNC,800) can use the V8 restricted capabilities.

When should I recompile the ZPARM?

You do not need to recompile the ZPARM when migrating a queue manager to MQ V9 from a previous release. An MQ V9 queue manager will start with ZPARM built with previous releases of MQ. You should only recompile the ZPARM with OPMODE=(NEWFUNC,900) when you are certain that you will not need to revert to running at a previous release of MQ.

There are three scenarios to consider.

New MQ V9 queue manager

By default, the ZPARM for a new MQ V9 queue manager will be built with OPMODE=(COMPAT,900). This means that capabilities restricted by OPMODE in MQ V8 will not be available. To allow all MQ V8 and V9 capabilities to be used, you need to recompile the ZPARM with OPMODE=(NEWFUNC,900).

This table shows how OPMODE affects which capabilities are available for a new MQ V9 queue manager.

OPMODE value in ZPARM

Available functions

COMPAT,900

All V7.1 and earlier functions

NEWFUNC,900

All functions

Migrating from MQ V7.1 to MQ V9

A queue manager migrated to MQ V9 from MQ V7.1 will start in compatibility mode with only capabilities restricted in MQ V7.1 available. You do not need to recompile the ZPARM as part of the migration process. If you need to recompile the ZPARM at V9 for some reason, setting OPMODE=(COMPAT,900) will still allow the queue manager to be started at MQ V7.1.

Once you are sure that you will not need to fall back to MQ V7.1, you can recompile the ZPARM with OPMODE=(NEWFUNC,900) to allow all new capabilities to be enabled. This operation will prevent the queue manager from being started at a release earlier than MQ V9.

This table shows how OPMODE affects which capabilities are available for a queue manager migrated from MQ V7.1 to MQ V9.

OPMODE value in ZPARM

Available functions

Release queue manager can fall back to

COMPAT,710 or
NEWFUNC,710 or
COMPAT,900

All V7.1 and earlier functions

V7.1

NEWFUNC,900

All functions

None – OPMODE prevents backward migration

Migrating from MQ V8 to MQ V9

You should rebuild the ZPARM after you have successfully migrated to MQ V9, and will not go back to MQ V8, rather than as part of migration process.

The capabilities available when the queue manager is started at MQ V9 depends on the value of OPMODE in the ZPARM, and will be the same as the capabilities available before the queue manager was migrated.

If the ZPARM was built at MQ V8 with OPMODE=(COMPAT,800):

  • The queue manager will start at MQ V9 with only MQ V7.1 capabilities available.
  • If you need to recompile the ZPARM for some reason, setting OPMODE=(COMPAT,900) will still allow the queue manager to be started at MQ V8. This will not allow MQ V8 capabilities to be used.
  • Once you are sure that you will not need to fall back to MQ V8, you can recompile the ZPARM with OPMODE=(NEWFUNC,900) to allow all new capabilities to be enabled.

If the ZPARM was built at MQ V8 with OPMODE=(NEWFUNC,800):

  • The queue manager will start at MQ V9 with all capabilities available.
  • You should not recompile the ZPARM with OPMODE=(COMPAT,900) as that will prevent MQ V8 capabilities from being used.
  • If you need to recompile the ZPARM to change some other parameter, while still retaining the ability to fall back to MQ V8, specify OPMODE=(NEWFUNC,800). You will get a return code of 4 from CSQ6SYSP to warn that the verification level is different to the release of MQ, but the ZPARM will be compiled successfully.
  • Plan to recompile the ZPARM with OPMODE=(NEWFUNC,900) as soon as you are sure that you will not need to fall back to MQ V8.

This table shows how OPMODE affects which capabilities are available for a queue manager migrated from MQ V8 to MQ V9.

OPMODE value in ZPARM

Available functions

Release queue manager can fall back to

COMPAT,800 or
COMPAT,900

All V7.1 and earlier functions

V8

NEWFUNC,800

All functions

V8

NEWFUNC,900

All functions

None – OPMODE prevents backward migration

Summary

In summary, the main points to keep in mind when working with MQ V9 LTS is that restricted capabilities added in MQ V8 are still restricted by OPMODE, and that because of this you should not recompile the ZPARM when migrating to MQ V9 LTS.

More information

There are a few things I haven’t covered here, such as the behaviour of OPMODE for queue managers in a queue sharing group (QSG), and also how OPMODE works for the MQ V9.0 continuous delivery releases. I hope to make those the subjects of future blog posts.

In the meantime, there’s more information on OPMODE in the Knowledge Center at the following locations:

 

Thanks to Colin Paice and Ulrike Geuther who helped with this blog post.

 


Statistics
0 Favorited
22 Views
1 Files
0 Shares
1 Downloads
Attachment(s)
docx file
OS.docx   24 KB   1 version
Uploaded - Tue November 12, 2019

Comments

Wed February 12, 2020 10:22 AM

Hi Peter,

Yes a number of customers have said that sort of thing to us. On the plus side once you are at 9.1.0 there is no more OPMODE to worry about. Should a future version of MQ need to have some other gate to prevent backwards migration we would ensure it didn't require a queue manager restart.

Wed February 12, 2020 08:50 AM

​Thanks, however to migrate from LTS 9.0 in COMPAT 710 to 9.1, we have to first migrate MQ to NEWFUNC 900 mode on 9.0. It can take several months to schedule a restart of every z/OS QM due to the large number of critical applications dependent on them. The documentation states as follows:

"Before migrating to Version 9.1.0, you should first start your Version 8.0.0 or Version 9.0.0 queue manager in NEWFUNC mode. That is, for Version 8.0.0, start your queue manager with OPMODE=(NEWFUNC,800), and for Version 9.0.0, start your queue manager with OPMODE=(NEWFUNC,900) or OPMODE=(NEWFUNC,800).

If you, instead, leave your Version 8.0.0 or Version 9.0.0 queue manager in COMPAT mode, and then migrate to Version 9.1.0, you will be able to enable function which is not compatible with COMPAT mode in Version 8.0.0 or Version 9.0.0, such as buffer pools with a LOCATION of ABOVE. This will cause problems if you subsequently migrate back to Version 8.0.0 or Version 9.0.0, as you will need to change to NEWFUNC mode before you start your queue manager, otherwise the queue manager might not start."

Wed February 12, 2020 06:49 AM

Hi Peter, you might be interested in this blog, giving you more info on OPMODE.

Wed February 12, 2020 06:25 AM

​Thanks, very useful. It's quite a pain that new features such as hostnames in chlauth are subject to this OPMODE. It's not as if anyone is going to use a new feature by accident and what harm would it be anyway to enable it? Having to migrate to NEWFUNC means twice as many IPLs and in our production environment this would take months to schedule so we have left it in COMPAT mode and can't use these new features following our V7.1 to V9.0 LTS upgrade. Very frustrating especially as it was my RFE (years ago, at another site) to allow hostnames in channel auths...​​