Sharing regions between region types in a CICS platform
ChrisHodgins 060000AX8A Visits (2018)
OK, so you are designing your platform but you decide there are a few regions that must be shared by multiple region types. There are various reasons why you might want to do this. For example, in a platform on your development CICSplex, you may wish to use a single region shared by all of your region types. This really simplifies things while you are kicking off new development. You may also need to share regions in production, where you have multiple platforms sharing a single set of TORs or an FOR.
Setting this all up is surprisingly pain-free. First create the system groups (CSYSGRP) that are going to become your platform region types on installation. Define the systems (CSYSDEF) that will be the regions in your platform. Next define the linkage between the regions and system groups. Add each of the regions to the system groups as required. Where regions are shared between multiple system groups simply add the region to each of the groups. Define the region types in the platform bundle to adopt the system groups into the platform. Define your platform definition to point at your new platform bundle in the platform's home directory. Finally install the platform definition. On installation regions shared between multiple system groups before the install will remain shared but now as part of the platform. All of this can be done quickly through the CICS Explorer.
Regardless of the reasons, whether you are sharing within a platform or between multiple platforms, care must be taken to ensure conflicts between specific CICS resources do not exist. Bundle installation for platforms and applications only checks for conflicts at the CICS bundle level. If two different bundles are installed into the same region and both create the same resource, the duplicated bundle part will become unusable. If multiple platforms are sharing a group of regions and both require the same resources to be installed, only one of the platforms should attempt to install those bundles. This means, that this platform should normally be installed and discarded first. It is possible for both platforms to install the same set of bundles, however this approach is fraught with uncertainty. The platform install will state that no bundles were installed for the second platform. The second platform will show a platform ENABLESTATUS of INCOMPLETE and bundle install failures will also be recorded in the shared region. With this second approach, you will also have to be careful about discarding a platform, as only one platform will have installed the bundles you will have to make sure the other platform has the bundles installed that it needs to function. The worst case scenario with this technique is where both platforms are installed at the same time. In this case each platform may install a subset of the bundles and so both platforms will show a platform ENABLESTATUS of INCOMPLETE. However even in this scenario the platform will correctly clean up all of the bundles left behind when the platforms are discarded.
Sharing regions between region types can certainly be a valuable configuration and very easy to set up within a platform. Although there are more considerations than keeping everything separate, these can be mitigated with a little planning.