Virtual CICS User Group Sponsors

IntelliMagic
Broadcom Mainframe Software
DataKinetics

Virtual CICS User Group | March 2024

CICS Event Processing and CICS Policies

Jenny He
PhD, IBM Master Inventor, CICS Development
IBM Hursley Park

CICS event processing and CICS policies are two relatively ‘new’ features in the long history of CICS.

Using event processing enables you to extend core business applications and build extra valuable solution without the complication of code change. CICS policies enable a flexible management of running CICS region with automatic response to certain conditions.

This session will deep dive into these two features, with example use cases of them, the differentiation between them, how to create, enable and manage the event and policy resources.

Jenny He – PhD, IBM Master Inventor, CICS Development
IBM Hursley Park

Jenny HeJenny He is a CICS Software Developer based at the Hursley laboratory in the UK. She has developed a number of CICS releases since 2010, in the areas of asynchronous APIs, performance improvement of CICS web support, CICS Policy, IPIC high availability and event processing, CICS statistics and monitoring. Apart from software development, Jenny is active in patenting and is a Master Inventor in IBM.

Read the Transcription

[00:00:00] – Amanda Hendley (Host)
Okay, we’re ready to get started. Hi. I’m going to assume you can see my screen and if you can’t see anything, you can drop me a note. You might have to restart. My name is Amanda Hendley. I’m happy to host you today for the virtual CICSfull-hour user group meeting. We’ve got a great session for you today and before we get going, I’ve got just a few things to cover and then we’ll get right into our presentation. I believe it’s just about a full hour session. We should be finished by, let’s say, 1:05, but let’s go ahead and get started. So as you see we start off with our introduction, that was it.

[00:00:49] – Amanda Hendley (Host)
Congrats. We’ve made it past part one. But before we move on, I do want to thank our partners, Broadcom, IntelliM,agic and DataKinetics, our sponsors of this virtual user group. We couldn’t do these sessions without the support of our sponsors. So if you’ve got time, take a minute, go to their websites or shoot your contacts at  those companies a note thanking them forone-question their support of the user group. A very brief one question exit survey at the end of our session today. And I hope you’ll take the time on your way out the door to complete it and it’ll give us some feedback on what you thought of today’s session. We are also in the midst of a promotion that we started last week. We’re doing the most influential people in mainframe over at Planet Mainframe and we’ve got a call for nominations happening. And I would love for you to nominate someone that you think is the most influential person in mainframe. And now we’re ready to get started. So, like I said, pretty. To get through our introduction to today’s session, we’re here to talk about CICS event processing and CICS policies. And Jenny He our CICS speaker today.

[00:02:13] – Amanda Hendley (Host)
She’s at IBM Hersley laboratory in the UK and she’s developed a number of releases of CICS since 2010, including asynchronous APIs, performance improvement, IPIC availability, event processing and more. And she is also active in patents and is a master inventor with IBM. So, Jenny, thank you so much for joining us. We’re excited to host you.

[00:02:40] – Jenny He. PhD (Presenter)
Thank you. Thank you for inviting me, Amanda. So I’m going to start sharing my screen. So hopefully you can see my screen.

[00:02:50] – Amanda Hendley (Host)
Now we see the application for PowerPoint.

[00:02:54] – Jenny He. PhD (Presenter)
Okay, now I’m in the presentation mode.

[00:02:58] – Amanda Hendley (Host)
Looks great.

[00:02:58] – Jenny He. PhD (Presenter)
PowerPoint. Great. Okay, so, hi, good morning. Good afternoon, everyone. As Amanda introduced me, I work for the CICS development since 2010, which is the time when CICS TS 5.1 version was just started being developed. So for today’s topic on CICS event processing and the CICS policies, they are relatively new features for CICS, comparing to the long history of 55 years this year for CICS product being used by our customers. But the event processing came into CICS 4.1 CICS ts 4.1 version. That’s in 2009 and the CICS policy is new in CICS ST 5.1 version. So they are not very old, but they bring a lot of value to your existing environment. So let’s have a look what they are going to bring, how it can be used by your existing environment. So I will go through what’s a CICS event and also show you a demo of using that and also then we’ll move on to the CICS policy and with a demo to go with it. So if there is any questions feel free to raise it. I probably cannot follow the chat, so if anything raising the chat also please let me know. So for the event processing in CICS, it’s all surrounding the businesses happening in the application running in your CICS regions.

[00:04:44] – Jenny He. PhD (Presenter)
So it can be anything from withdrawal from bank account or your application has triggered a request for loan or placed order for some office supplies. So all the businesses application happened in the application can be captured and CICS can monitor and notify in a number of different ways when this kind of business event has happened, which without changing your application. So you don’t need to worry about changing the application source code in this sense. So for example on the screen here there are some couple code which as you can see here says place order which move to a CA response message. Then exact CICS will link to a program with a area, then at the end it will check the return code. So this is quite a typical for example a CICS application running on a CICS region. When you know, when your application run this code, then there is business happened, then using the event on this particular command for example, then it can tell you what happened. So the event from your source code, they are centered around the exact CICS APIs. I will show you later the list of exact CICS APIs that we call it event enabled, which means they can be filtered to trigger business event.

[00:06:28] – Jenny He. PhD (Presenter)
What you need to do is define what kind of EXEC CICS calls which you want to put, monitor and monitor the business events on. And also you can say where I want that event, what’s the format and what kind of things I want to be in the event when such kind of business application did that thing. So that’s all you need to define, then install to CICS, then CICS will automatically then monitor, then inform you when that happens. So to get the business event definition started, we need a tool called CICS Explorer. This is where the environment as a user interface to edit, to create event binding or change event binding. That’s the name for business event definition. Then of course we need a CICS region to run those definition on. And optionally, if you have the application source code, including copybook for example, it will be handy to be there. Then you know what’s the exact command for example. Then if you need to filtering into those copybooks, then you know the offset. They can find out offset. But if you don’t have the application source code, that’s also fine as long as you get the application data.

[00:08:04] – Jenny He. PhD (Presenter)
What’s the offset, what’s the fields, what’s the exact CICS command? Then you can go ahead with it. So after we get this, then we would define the event business event in a CICS bundle. So CICS bundle has been used for quite some years. It’s a new way to define resources into CICS. A bundle can contain event binding and also you can define program, transaction, et cetera, et cetera into it. But having a bundle which include in the event binding which is a .evbind file within it, you can have the specification on capture, which means where you want that event CICS to monitor that business event speaker. Then you can define the filtering, also the destination format. What’s in the event. In a nutshell, when we have CICS explorer within the Explorer, you define a CICS bundle that can contain event binding with all the artifacts there. Once we get CICS bundle ready, you are quite happy with the definition. Then you can try it out by export to zFS. Or you can find other way make it available on the zFS which ito s a Unix file system on the Z platform. When that’s available on the zFS, then on the CICS region you define okay, now I have a bundle definition, then I install that bundle pointing to that zFS directory, then enable that bundle.

[00:09:57] – Jenny He. PhD (Presenter)
This makes this event binding definition available for the CICS region. Then the next thing will happen is when your business application running CICS will monitor that, then will trigger then get a business event if it meets all the filtering condition you have defined with. This is a brief show, a screen capture of what an event binding specification looks like. Then we will move on. I will show you in a real Explorer view CICS Explorer what it looks like. So I’m going to base on the business event on a CICS supplied sample application called Catalog Manager. This is a CICS supplied sample application on the screen here we see this green screen application which will show the list of items in a database through a CICS transaction. It will show that the user can place an order using that on this application or inquire item. So when that happens underneath that catalog manager sample application, it essentially will link from a program called DFH0XCFMN, then link to a program called DFH0XVDS. So for both inquire and order the program issue an exact link to the program. There is subtle difference when we differentiate whether it’s to an inquiry order which is on one field.

[00:11:52] – Jenny He. PhD (Presenter)
So let’s jump into the CICS Explorer. So here is CICS Explorer. It’s a project Explorer view which in the resource you would use to define a CICS bundle. So here I have a number of bundle projects, but I got a catalog events. I decided that’s a bundle name. I wanted for this sample catalog events to rely and it has an order event EV bind. So with that I’ve opened it which has two event specification. So I wanted say to filter on when my business application has inquired any items or any item has been placed an order on. So here I got two specifications on the event binding tab. Then if we switch to the next tab called specification, we can see two specifications. One is called item_inquired and I give it a name called inquire to XVDS. For example, you can give it any name you want. Once I clicked on that specification, it will show those different tabs at the top of the screen. The first thing is show is Capture Point because we want to capture on the link in the CICS link program. So we select this is an CICS command I want to capture on and it can capture before and after.

[00:13:48] – Jenny He. PhD (Presenter)
Then after I selected that’s a command I want to capture. Then within that capture ignetCICS place I can define say I only want to capture if the exact CICS link command is from a current program called DFH0XCMMN. So any other program link into the next program xvts I don’t want to capture it. So with this way you can scope the event capture only focus from the DFH0XCMMN into the DFH0XVDS. So that’s how we do it. Then also because the link is through a area pass into the linked program, then I want to be quite precise on there may be a number of ways link from one program to the same program. So I wanted to be quite precise on this link when the commerce value equal to a certain value. Then that’s the time I want to capture it. So if I double click on this one, you can see I got an operator say when it is equals but there are other operators available. And then I specify the value for that particular place. Then how to select where I want to capture what offset for that area I want to matching the value on.

[00:15:34] – Jenny He. PhD (Presenter)
So that’s a area and it’s a type of character. Say it’s an offset zero and the length is six. So this comes handy. If you already have the copy book there. You can do that by make that copy book available on your computer. Then you can then say select from this copy book which I already have, that is called DFH zero XCP three o copy. So you got that? Then you will be able to select the offset from it. So here is define all the filtering to be very precise on the point of business application where you want that event to happen. Then on the next tab it’s all about okay, this event has happened. How do I want the place where get this event know about this event? So for this particular one I give account of items how many items is that inquired happened. So for that I want this kind of information to be available for the destination of that event. Then can process upon based on the other one. The other specification is about ordering. So for that order, if that program linked to XVDs make an order, again it’s on the link program but the filtering is very slight difference comparing to the previous one is this value to look at particular fields on the area to identify that order.

[00:17:29] – Jenny He. PhD (Presenter)
It’s not an inquire and there’s a source, the information source. When the order happens, I would like to know who made the order, what’s the item number and how many being ordered, what’s the quantity being ordered. So for all this captured information, make available for your further on processing on this event it can be very useful. So for example, if you get an event on the order happened, then you got the user ID, then you got these items ordered. You can use those information on this event saying send an email to that user saying oh you have ordered this much. You have got this quantity ordered for example. So that’s how the value add using the business event can be based on. So where those event will go to. So for the event will go to on the tab called adapter that’s where the event will be sent to by CICS. There are a number of formats can be MQQ or can be TSQ or TDQ or HTTP and can be a transaction start, which means when this event happened, I want a certain transaction to start and that transaction will get the event information and do anything you would like about it.

[00:19:04] – Jenny He. PhD (Presenter)
For this particular one, for simplicity we’re directing it to a TSQ and the name of the TSQ thing is called Cat event. Cat event. Then the format of that event can be a few different formats, so it can be XML or CICS flattened event, which is a binary form. So that’s how we define a business event by going through the filtering on different places, then define the destination. So once you’ve got that defined, what you need to do to make that available on the ZFS. So we can do export the bundle project to this JS Unix file system. So I’ve already got my explorer connected to the ZFS system, so I’m going to choose so it’s exported to this catalog events. So once we click that Explorer will be able to export it. Then you can tell you the previous old folder is deleted and what’s been the artifacts been created on the ZFS so that we make that available. If we now back to some MyCICS regions, I will show you some of my CICS region. So here is on the top left corner here is sample catalog transaction I have run. So for example, at the moment I haven’t got that event business event bundle installed.

[00:21:00] – Jenny He. PhD (Presenter)
I’ve got it available here on my demo group. So if we refresh it, so we show I have a CICS catalog. If I browse it, sorry, view it, you can see it’s pointing to the directory on the ZFS which I’ve just now exported to. So at the moment if I do any list, inquire, event or order at the moment because there is no such bundle installed. So when I do this inquire on this queue, the queue is called cat event. If I refresh it, there is nothing on it. But if I come out of here and try again egui, I bring this up. But now if I install that bundle, now the bundles we say this bundle is installed successfully. So that means this event specification now is available in CICS. So if we refresh this TSQ, still nothing there. But if we do some list items, that’s called inquire happened. So now we got an event on this queue. If we look at what’s content on it, I scroll it on the right, go right a little bit so we can see the event name is called item inquired. So that matches what has been defined on this order.

[00:22:40] – Jenny He. PhD (Presenter)
Event item inquired and we would see for this one it will have some information, standard information on the CICStage network Apple iD. When that event is captured then eventually it will show you the capture spec name. Then eventually it will show you the data you wanted which is count of items which is 15 at this one. Okay, now we say okay, I want this person wanting to do some ordering of this one. So now we’re trying to order item 30 for a ball pen called Red 24 pack. So order quantity there are 106 available. I want to order two. And the username we say HeJenny Hejen and my department it says a virtual group. If I press enter the order is placed. If we come back to here we got another event which says order placed. So which corresponding the second to other order placed specification. Then for this event, for the second one here, if we go to the right we can see it shows us the item ordered is number 30 and the quantity ordered is two. So that’s data being captured. Okay, so this shows how this business event can be used.

[00:24:25] – Jenny He. PhD (Presenter)
Based on this event you get either TSQ or can be an MQ message or can be HTTP et cetera. Then you can make use of those events data. Then to expand the value of your business can expand on the services can be offered to your customers. So let me go back to our slide. So we’ve seen the event binding. So the number of event capture point on the exact CICS command are the delete file, delete queue, converse invoke service or put container. We have put 64 container also available on later CICS releases. So there are a number of them. As you can see here, if there is no exact CICS command in your application exist, you can capture. What you can do is can change the ad called signal event exact CICS command into the existing application which then will be able to send an event out from that application. The different adapters as we can see already seeing from the explorer that’s available and apart from one destination we have seen a TSQ destination. You can define a number of destinations which can be one event can be sent to MQQ or to end to a TCIP not sorry, to HTTP endpoint, to TDQ, TSQ, et cetera, et cetera.

[00:26:14] – Jenny He. PhD (Presenter)
So we call it a set of EP adapter can also be used for one event to be sent to as well. So the last couple of points on the events is around dispatching because we know for the business application it can happen so quickly so many times. So sometimes you may want some flexibility of the event. So think about what happens to if the task which this event is captured from rode back. Do I still want this event to be emitted? The scenario can be the transaction might this application increased a certain user’s credit card limit? And then you would like an event sent to an approver to approve that credit card limit. Because maybe that limit increase is huge. But if the approver is not available, which can be demonstrated, when that EP adapter is not available, it’s failed. So in that case, I do not want this credit card limit increase to go ahead. So I wanted this task which increased the credit card limit rollback for this case. If you do want this happen, then you would use an emission mode on the EP adapter called sync synchronous emission mode that will sync the emission of event together with the task UOW success.

[00:28:08] – Jenny He. PhD (Presenter)
Another angle is if the task fails the commit which is looking at the task UOW point of view, do I want the event to be emitted to send out which can be when the transaction scheduled reduced bank account balance, but the transaction is rolled back. But my event already captured when the account balance is reduced. But if the transaction is rolled back, I don’t want this event to be emitted because it doesn’t make any sense anymore. So in this case, you can consider to use code event is transactional on this tick for the EP adapter. The last one I’d like to mention is about this dispatching priority. It has low normal or high normal. So this is about the event. One particular event versus other events also captured from the CICS system. So when CICS capture event, it will put to an internal CICS dispatch queue and waiting for dispatch to the destination of EP adapters. But what’s the relative priority of one event comparing to the other already queuing? So if you think your event is a higher priority than other one, very important. You may want to use a high dispatch priority. Otherwise you can use normal.

[00:29:56] – Jenny He. PhD (Presenter)
Okay, so that’s about the event dispatch characteristic. Then there are a set of tools for our system admin to know about event processing. There is comprehensive SPis to inquire or set the event binding and even the event process. That’s for the whole CICS region. And also you can inquire the EP adapter. There is statistics to show the event processing. For example, how many number of events has been captured? How many are queuing to be emitted? What’s the number of synchronous and asynchronous event have captured? Are there any failures? How many have failed? And what’s different types to different types of event adapter? What’s the number of events have been emitted to those different types. And there are also resource statistics on the event binding, EP, adapter and capture specifications. So those are comprehensive set of tools for system admin to keep an eye on all the event bindings in your CICS regions. Okay, so that’s about event processing is any questions so far? Okay, cool, I’ll move on. So the next part will be on the CICS policy. So CICS policy, there are similarities of events and the policy. That’s why put them together, but they are very different.

[00:31:49] – Jenny He. PhD (Presenter)
So policy is a way for a modern way for you for system admin to monitor the status of your CICS region, the resources in your CICS region, and the CICS tasks. So there are two kinds of policy rules. One is called task rules, which is monitor on the CICS user tasks when they make excessive use of system resources. For example, a user task has consumed certain number of storage or issued certain number of TSQ request. So if that’s abnormal, you can define a task rule to monitor on all the user tasks or scope down to certain transaction or certain user ID to monitor those user tasks. So keep your CICStage in the health status. One popular one is about the number of storage being used. We don’t want one particular task creeping into use lots of abnormal amount of storage. Another set of rules are called system rules. These system rules are for monitoring the status of resource changes. For example on a file CICS file or on IPIC cComparedonnection or MRO connection. On bundle resources can be enabled with a bundle disabled or is a file being closed? Is a file enabled? So this is about when those resource changes and when you define to monitor them.

[00:33:37] – Jenny He. PhD (Presenter)
Then you can define the action to take on when those happens. So for example when file is closed you may want to send a message out to let yourself know or when the number of active tasks in the region exceed 80% of the max tasks defined, then you may want a message to let you know about that. So it’s very flexible, allow you to monitor those status. And one particular point I’d like to point out is because CICS installs those definitions, then monitor them. It’s not a polling mechanism to CICS periodically the status of the resources. It’s when those status change or when the threshold has reached, then CICS will action on it. Comparing to the policy rule and the events, we know the CICS system events was offer, but it’s deprecated and it’s not enhanced anymore because it’s replaced by the CICS policies. And also the CPSM RTA is deprecated if you can migrate your RTA definitions to CICS policies as much as you can. That’ll be very future proof. So looking at the definition of CICS policy, as you can feel it’s quite similar to the event. We need a CICS explorer as a tool to define those policy.

[00:35:29] – Jenny He. PhD (Presenter)
And a policy needs to be within a CICS bundle. And within a bundle you can have a number of different resources, can be different policies, and each policy can have a number of rules as well. So there is no limit on how many rules you can put into a policy. You can decide purely on how you would like to organize for your organization. So once you define that again we export to ZFS and install to CICS region and CICS will then wait, monitor and trigger it. So this is a policy rule user interface for you to define. A gigs policy here shows some task storage allocation and the container storage. So this around task rules, it’s looking at how many storage has been allocated for a certain user task. If it exceed certain limit I want to abandon the action is at the bottom showing aband the task with abandoned code. So next I’m going to jump into the CICS explorer to show you the bundle. I’ve got bundle called policy bundle here it has two policies, also have some adapters there. So I have one called and name it as task policy. But you can name as any other names for that task policy.

[00:37:21] – Jenny He. PhD (Presenter)
I have one rule defined called TSQ request. The number of TSQ requests I want to monitor and for that. So if you want to add any new rules, what you do is to click on that plus green plus sign there. Then you bring up this dialog. So you can choose the different types of task rules, for example or system rules. So here you can also choose TSQ bytes. TSQ quest is the one already there. File request exact CICS request storage. That’s how you choose a particular rule type of rule. So once you select the type of rule then you have the chance to select exactly what kind of details for that rule I want to monitor. So for this TSQ request I just want to monitor any kind of write QTs command. Any task which has issued more than two write QTs command. Then I would like the action is to get me an event, and that event is going to a place called policy adapter. So I have a policy adapter defined here to say for that adapter. Again I want it to be in the cat event just to the same TSQ destination.

[00:39:01] – Jenny He. PhD (Presenter)
So that’s easier simpler for us to demonstrate or you can choose to abandon the task or issue a message. Another policy I’ve shown open up here is the system policy on the same policy bundle. For that system policy, what I define is okay, I want to monitor a bundle enable status rule which is one of the bundle enabled status rule. One type of system rules here. So as you can see there are a number of system types of rule with available here. All those ones are single conditioned system rule. Apart from the compound condition, the compound condition was in CICS 6.1 release. It allows you to monitor more than one system resource, connections or status, which means when you monitor as one entity, then any one of them change, then there was event or action can be taken. So if you are interested in this one, I would recommend to look at this one. It’s quite handy for you to monitor a set of connections status. If any one of them change, for example being discarded or disabled, then you want your CICS region to stop accepting incoming request. Then that’s a useful place to go.

[00:40:42] – Jenny He. PhD (Presenter)
So for this bundle enable status rule, looking at monitor, I want CICS to monitor any status that bundle was right, then it become disabled. So it can be from enabled bundle status become a disabled. So that bundle is put is somehow changed to a disabled status. Then when that happens, I want an event to be sent to the policy adapter which is the same destination as the task policy. But again you can choose many different other actions for it. For example, this one for the system rule only is to set us WLM open status to either to be closed or you can open it depending on what you would like for that event when that route is triggered. Okay, so we don’t want to make that change. So once you’ve defined that. So again it’s make this bundle available on the zFS using the same export menu we have seen for the event. So I already got the bundle defined. So here I got a policy BU that’s a bundle if when we look at it, it’s pointing to a policy bundle on the ZFS so I can install that into the system because I was monitoring a bundle enabled status.

[00:42:26] – Jenny He. PhD (Presenter)
So I would like another bundle for the testing purpose as well. So I install another bundle which contains resources on EP adapter for other purposes. That’s okay. So with that then firstly let’s look at the task rule. The task rule which is about how many write TSQ write commands, isn’t it? It’s about any task which have done more than two write QTs commands. I wanted an event happened on this CAT event TSQ. So with that I’m demoing this using a khaki as a task to write to a TSQ. So I’m writing to a queue called Hej. Then from give a text CICS virtual one. So this is if done once, we’ve done two times of write TSQ, there is no events or this task rule hasn’t been triggered. But if I do the third time which exceed two threshold, now we can see that task rule has been triggered. For that task rule, it has precanned event fields which tells you about what’s a task rule name, what’s the policy name again, which CICS it’s from. Then it will tell you it’s a task rule event it tell you the timestamp and the CICS region, et cetera, et cetera.

[00:44:16] – Jenny He. PhD (Presenter)
So that shows you a task rule can be triggered in this way. Now early on there is a system rule which is monitor a bundle disabled event. So if we look at a bundle, inquire a bundle, we can say this is a bundle. So this is a bundle adapter bundle and at the moment it’s enabled. So if I change it to disabled, that’s perfectly fine. That’s a status change on an important resource and I wanted event to notify me on that. So again that’s a policy rule. Policy system rule. Now it shows you that has happened. So it’s a bundle enable system rule event which corresponding to the definition of name this so bundle enable bundle enable rule system event. And also we can see it knows where it come from, which CICS region, when that happened, and what’s event binding name for that. That’s precanned so you cannot change that. Then it has those payload data. Okay, so that shows us policy. What is policy like, how to define it, how to make it available and what’s the triggering is like. Back to our slide deck, there are a number of task rules which you can choose from and also for those task rules, task rule can be scoped, limited to certain transaction ID and or user ID, and also can be scoped by entry point, which entry point is a concept.

[00:46:35] – Jenny He. PhD (Presenter)
On the cloud. On CICS platform you can define entry point on particular program or transaction or UI map. So if you want to know more about that, there is a page you can go and look at on that. So for the task rules, how geeks keep track of those counting to know whether it’s reached the threshold. So for the request for that gigs request, or how many write queue requests, et cetera, they are counted regardless whether the request is API request is successful or not. But except the storage and the bytes TSQ bytes and in particular for the storage request it count all the implicit and explicit get main request for task storage. If the task did some freeman, then the storage counts will be decremented. When this freeman happens, except on the shared and for the time related which can be CPU or elapsed time, it will check on every exact CICS command when that happened or when task related user exit was invoked. And we also looked at task rule action which is a message or an event or abandoned the current task. For task rule, the message will have the number of DfH MP3 one.

[00:48:17] – Jenny He. PhD (Presenter)
Then you can use this code together with any existing automation products you’re using the policy message, their output to the CMPO direct to the CSSL destination. This is an example of DFHMP3001 message. It tells you the time and the CICS region, which task made that policy rule happened, and more details a little bit detail on that rule and what was the threshold for event? It supports all the EP adapter types, but the policy event can only be emitted to asynchronous and non transactional EP adapters. So early on at the end of the business event, we mentioned synchronous and the transactional characteristic of the event versus the task, but for policy, for the event from a policy rule, it can only be asynchronous and non transactional adapters. This is because we do not want to hold on any of your system task for example, or task CICS task because the EP adapter characteristic being different and the event from the kick policy rule is precanned so cannot be changed, cannot be customized. One particular is we can also abandon a CICS task if you want it to be. Apart from abandoning the task, a message called DFHMP3002 will be issued.

[00:50:12] – Jenny He. PhD (Presenter)
The task rule does not apply to all the CICS system tasks. There is some exclusion from that list or doesn’t apply to the terminal initiated CICS supplied transactions that accept Kaki. So there are some exclusions there. So you may wonder how do I know what’s the threshold I need to define? So there is a list where you can look at on the web page on the CICS document topic on the policy CICS page. So there are performance analyzer which is a product can analyze the SMF 110 monitoring data which can tell you in certain type of report CICS PA forms to tell you for example, how many asynchronous requests a task has issued, what’s the number of database request, what’s the exact CICS request? So you can, based on those reports or similar reports from other products based on SMF 110 data to get the initial set of threshold for those task rules. So for the system rule that’s new one things 5.4 then CICS has enhanced added more system rule types in 5.5 & 5.6 and 6.1, et cetera. These are the types of policy system rules. As you can see on the left hand side they are all about resources, the status of them, MQ, MRO, pipeline program, et cetera.

[00:52:08] – Jenny He. PhD (Presenter)
Then on the right hand side there are some. In the middle of it there is threshold transaction dump how many transaction dumps I wanted this region to take so the region will not if having more transaction dump, it will not impact other CICS, regions or other systems on the same LPA and also a message system rules and the last part of it is around the number of the tasks, which can be the number of user tasks in terms of the percentage of the number of max tasks and what’s the trunk class tasks, how many are queued? I want you to know about queuing on the trunk class which is available in the CICS TS 6.2 open beta. For the system rules. We can also be limited to the file. For example file enable system rule. You can monitor certain file or certain start with certain name for that name, and you can also limit to just filtering on certain transaction Id or use id for those system rules. For most of the system rule types and the system root action is a lot of them. Similar to what a task rule can take which issue a message, but it’s a different number of the message, then emit an event or change the WLM health status.

[00:53:51] – Jenny He. PhD (Presenter)
And optionally you can set the health interval as part of when CICS taking that action, which is available with CICS 6.1 with the APAR PH58295. So with that you can automate the CICS region. For example, if you start a CICS region setting the WLM health to zero, then when a certain rule is matched, for example, I have a number of files, now it’s enabled, then I can change the regions WLM health status to open. With that I can use the interval to make that happen. For the aid threshold rule only, you can fail the exact CICS start request with a response code called infrac. That’s only for this particular aid threshold, because the aid threshold, it monitors the exact CICS start request that meets a certain condition which is documented on the CICS document. So here shows you what the message will look like for the system rules. And lastly, I’d like to mention there is a set of tools for CICS system admin to know what are the policy available in the CICS region and also know how many events, for example has been emitted because of certain policy rule. So you can look at the resource statistics on policy, on the rule, on what’s the action, how many times the action has happened, when was the last time that action happened?

[00:55:49] – Jenny He. PhD (Presenter)
So that’s available there. There are monitoring fields which is related to the CICS rules as well. You can monitor using monitoring fields to know how the number of task threshold, the task has triggered an action or the number of times a policy system rules has been triggered. You may wonder, when I install those policy rules, what’s the performance? Does it impact my CICS region? So within CICS development team we have performance team which measure the performance overpad for CICS policy. So they have tried with CICS region run two scenario. One is with task rules, another is without. So the team has installed 1000 policy task rules. Perhaps that’s a bit extreme situation for a CICS region to have 1000 task rules there. But the purpose is demonstrate the performance overhead and the region run a transaction rate of 4000 it run 1000 of exact CICS, assign commands, but there is no rules triggered because the purpose we want to see is what’s the performance overhead. If I have rules there, just keep my region, keep being kept an eye on the tasks. But given that those tasks didn’t do anything bad, which my policy rule is looking at.

[00:57:29] – Jenny He. PhD (Presenter)
So in the region about five macrosecond overhead is measured. So we think it’s insignificant looking at the performance overhead point of view. And you can look at further details on this performance study on the CICS policy following links link on the CICS documentation website and also we’ve got many other performance measurements across different CICS releases on other areas available there. So it’s a very useful place if you want to look at any of performance measurements. So early on mentioned application events and policies, they are a bit similar in terms of the defined using CICS bundle and both can go to CICS events. Both are installed into CICS region. So what’s the difference? The difference being the CICS policy is using the rule to monitor system resource stats, the amount of resource usage and any unusual system state. But for the application event, it’s filtering on the business application data. That’s a big difference between these two tools. So then you can work out which things I can use for the goal I want to achieve. Okay, so that’s about what I like to talk about today around this. Are there any questions so far? I’m just looking at the chat.

[00:59:43] – Jenny He. PhD (Presenter)
Right. Let me start with a question. That firstly asked can I know which CICS release CPS MRT will be deprecated. At the moment we’ve been saying it’s been deprecated, it’s because CICS hasn’t actively developed on it. But when you will be taken out of the CICS region function. So that has not been decided yet, but we would like to encourage you moving away from CPSM RTA if you can. Okay, next, hopefully that answered your question. So next one is from Jonathan. So has it been announced regarding okay, it’s again about RTA. So the second is a best practice. How many rules in a policy before creating a policy? So I would say that how many rules in a policy is totally up to you. How you would like to organize it. I would think from the way, because a policy is defined in a bundle, then if you disable the bundle or install the bundle, that’s how you get the policy rule available into CICS region. So perhaps you want to think from that granularity point of view how you would like to organize those rules. But there is no hard limit. But it’s all about best practice, how it suits your situation.

[01:01:23] – Jenny He. PhD (Presenter)
So I’m guessing we can add a bundle to GitHub. Yes, definitely you can add that. It’s a good way to use to easily see what’s being done of configuration changes. So for that. So definitely if I switch to the CICS explorer. So as you can see in the CICS explorer, they are all files basically on my file Explorer. So although when you double click it on CICS Explorer, it have this user interface which easily for you to see and the change. But if I say open it with a text editor, even XML editor as you can see behind it, they are XML files. So you can perfectly use any automation tool. For example if you know what to change to change then adding sections into it or change it using automation and that’s a perfect use case, a way of defining policy for the situation you want it to be. So if I look at the event binding as well to show you XML editor, they are behind all XML files and this can be perfectly version controlled, there is no limit on they cannot. And also earlier on I showed to export the project to ZS Unix file system, but there are many other ways to getting files into the ZFS so can be through your pipeline.

[01:03:15] – Jenny He. PhD (Presenter)
So at the moment I think what I’m showing you is as a proof of concept or you can try out those tools and see how you can organize better, how you can try a business event, see how it happens. But once you get to the production stage, you do want those artifacts being version controlled and having automated process to make that available into the CICS region. Let me see what’s the question. The next thing is when HTTP write when HTTP adepts support JSON format. That’s a very good question. So at the moment I haven’t got any timeline, but I do encourage you please to raise requirement we call it now called ideas towards CICSts for the HTTP adapter to support json format. Great. Thank you. If you don’t know where to raise this, let me know. Send me email next can adapt your threshold to limit how many message I send. Only send the first message if they income more than one times right. I think at the moment these are not on the adapters function at the moment. But again, if you would like to talk about that scenario race idea, we can assess the scenario and also maybe can get in touch with you to look at your particular requirement to see if there is any other way to address it.

[01:05:06] – Jenny He. PhD (Presenter)
So again, feel free to get in touch. Then there were exclusions based on how transaction was attached. But transaction being attached via web request is a big use case. Okay cool. Yeah, can policies to terminal are being used to see if terminals are in service? I don’t think there is a policy system rule on the terminal yet, but there is a okay, so not yet. So again, we are more than happy to evaluate your requirement and if you can put a business use case on to let us know the next one is from Christopher. Are you able to exclude multiple transactions? You have a task rule want to apply to all except for a few creating yes, exclude so creating several rules with the same condition where exclude one transaction would trigger yes. Okay, so this is about how to do the filtering. Define the filtering to exclude certain ones except a particular one. So let me bring up for example the filtering at the moment we can have for chain iD. We can say start with or do not start with. So those are four characters. I would think that will work. There is nothing say okay, exclude that particular one.

[01:06:58] – Jenny He. PhD (Presenter)
But you can use the exclusion in the way of start with. Also do not start with. That’s very similar to other. We call it operators. So equals or do not equal or start with or start with less than yes. Perhaps you may find that the editor doesn’t have exact when you get into quite complicated filtering scenarios, you may find the editor doesn’t do what you particularly do. One way to get around is to create multiple, but if there is any. Again, any examples you find is cumbersome or not really work. Yeah. Please get in touch. Okay, cool. I wonder, any other questions? Thank you very much for your you, Jenny Aisha. Thank you. I’ll stop.

[01:08:24] – Amanda Hendley (Host)
Well, I will. I saw the notes so hopefully my video and audio will stay pretty clear as we wrap up today. Going to go ahead and share my screen again. A couple of people ask. The presentations are going to be available. The PDF presentation, the video and the transcript will be available within the next week at virtualusergroups.com. And that is where you can check out previous sessions and their information. I’ve got a couple of articles and news, so real quick we’re going to close it in the next day or so. There’s an AI survey at virtualusergroups.com. We want to know from you about using AI and CICS, what your thoughts are. If that’s a session, we should look and if you know of any sessions that we should be taking a look at to offer. I mentioned the nominate a mainframe user or influencer campaign so that’s available as well. Would love to have your nominations on the planet mainframe job board. There is senior mainframe developer for COBOL looking for CICS skills, if you will check that out. It was posted today so it’s a fresh opportunity and as always, we are looking for contributors at Planet Mainframe if you haven’t had a chance to take note, a lot of our social media pages have changed.

[01:09:58] – Amanda Hendley (Host)
We’ve done some consolidation in order to make things a lot more streamlined to help you navigate between the different groups. So you can check out us on X at mainframe virtual user group and then similarly on our other platforms. And I think you can probably see we’re most active on our LinkedIn pages. I want to do another shout out to our partners broadcast and intellimagic for their support of this series. Please do again. Reach out to them. They’ve also got a lot of resources that you might want to see and take advantage of. I know Broadcom’s got a very active community. Intellimagix got a pretty robust blog, data connects, has some white papers as well on their site. So you can take a look at these organizations and get their resources. And I encourage you to, when you’re talking to them, mention that you saw them on the virtual user group series and thank them for their support. Save the date please, for our next meeting on May 14, same time, same place. And that if there are no other questions, Jenny for present, think today. Great presentation and lots of engagement. And with that, I hope you all have a great rest of the day.

[01:11:24] – Jenny He. PhD (Presenter)
Thank you.

Upcoming Virtual CICS Meetings

March 12, 2024

Virtual CICS User Group Meeting

CICS Event processing and CICS policies
Jennhy He, PhD
IBM Master Inventor, CICS Development
IBM Hursley Park

Register here

May 14, 2024

Virtual CICS User Group Meeting