Video: Product Review & Roadmap | Duration: 3940s | Summary: Product Review & Roadmap | Chapters: Welcome and Overview (21.965s), Release Planning (337.97s), ChangeMan Modernization (533.765s), DB2 Object Dependencies (694.645s), Dynamic Approver Setup (1915.5951s), Package Search Enhancements (2762.4s), Tomcat and Notifications (3141.85s), Component List Extraction (3746.125s), Server Flexibility (3798.425s), Session Conclusion (3827.295s)
Transcript for "Product Review & Roadmap": Just waiting for a couple more people to join. K. Excellent. Well, welcome, everyone. Wanna welcome, everyone, to our first annual Change Museum of virtual user group in quite some time as the first one on the Rocket Software. We have a lot of people on today's session. I suspect we're gonna go a little bit beyond the the sixty minutes I had allotted, but it's all good stuff. I have several people here, with us. They're gonna go through, multiple presentations. But before we get started, just a couple housekeeping rules. First and foremost, everyone comes on muted. We have been advertising this as interactive. We want it to be as interactive as possible. Obviously, there's gonna be some some limitations because it is virtual. But if there's anyone that wants to come off of mute, you know, during any of the presentations we have, you can raise your hand. It's a bit of a process for us, but we'll basically promote you to be able to unmute yourself and then, ask the questions. Otherwise, you can always use the QA panel and put there's about five or six of us on our end that will, monitor that throughout the whole session. And, also, I'm gonna forget. I'm gonna I'm gonna say it now too is that, we do have a survey at the end of this. Please take a few minutes to go through that. This is the first one we've done in quite some time. This is a little bit different than the usual webinars that we do. So So we definitely wanna get your feedback in terms of how we can improve this going forward. As I mentioned, it's the first one we've had in, in quite some time. We've had a chance to do this a few different ways. The option or the what you see now is, we think is the best way forward. So, ultimately, we have a session today. That's the one you guys are in right now. We have another session next Thursday, same time. And then we have one, on the twentieth. And today's session is really gonna be focused around, product review, a little bit of the road map, which is why I have, Jeff Boatwright. A lot of you have probably never heard of him before because, he's with Rocket Software, but he's the VP of software engineering. And, in just a few short minutes after myself, I'll transition to him, and then he'll start introducing a little bit of the team as we go through. Next week, it's gonna be around customers. So we have two customers that are gonna be presenting for us, Johan Jacob, While you might recognize over at Euroclear and then Wolfgang, I apologize. I'm gonna I'm gonna butcher his last name. It's, Beckrika over at Ryefesen. We've had a chance to work with them over the last, handful of months over the summertime, and we just thought it'd be really good for them to be able to present, their view and what they've been able to do from customizations around change management and math. And then for, the keynote, I have Ed, Marujian, who's gonna be kicking that off. Lastly, I have, Tim Wilgang, who's our CTO officer, who's gonna be taking us through the third session. And third session is a little bit different, where it's not gonna be a lot of canned presentations. It's really supposed to be open ended, open discussion. The themes around that is Versus Code and, and Git. Obviously, we have both, but we know we need to do a lot more for that going to the future. And and then we also left it open for anything around DevOps, or there could be other integrations and things we might wanna be able to to bring up and raise for us. So we wanna have that session as well. Okay. Just a little bit of pause here. Alright. For today, I have about five more minutes to take you through my section, and I'm gonna then gonna kick it over to Jeff. He'll take you through a little bit of what we've been doing on the other side. So, as you can imagine, you know, we've had some really good growth here since we've been acquired at Rocket Software, which is, about eighteen months now, give or take. We've had a lot of growth, and I don't wanna take too much of Jeff's, thunder there. But, reason for this session is that it's just a lot more that we can probably bring to our customers that didn't deserve or deserved more than just our normal webinar, which is why we've done it over three different sessions. Once Jeff's done, he's gonna transition this over to, Steve Downs. He'll take you through the d b two and HLX stuff that we've had in, a three patch two, but that's gonna be stuff you haven't seen before. He's gonna also highlight a couple of things from eight three one as well, which will then dovetail into things that Bob Yates has, lined up for his presentation. Once he's done, we're gonna then hand it over to, Peter Webb. We'll take you through the, package search, enhancements that he has. And then lastly will be John Skelton, which will be Tom Cat and the event notification updates that he's been working on as well. At any point, please ask questions. As I mentioned, you can use the QA panel. This is being recorded, and I do suspect that we are gonna go over by about, ten minutes or so. For anyone that does have to drop, rest assured we have this recorded in probably about two, three days will then be available for everyone else. Just some things to point out. So we have, the next release that's coming out is eight three patch two or as well as also known as eight three two. That's targeted right now for mid q one twenty twenty six. We are not seeing any delays in that release, whatsoever. We feel really confident we're gonna be able to release on time. What you'll also notice too is that I have, the customer advisory board, which is gonna be planned for late q one, early q two twenty twenty six. This will be on-site. I've been mentioning this before. We're gonna try and do an on-site one, and, I have, you know, confirmation that that will happen. Just haven't quite nailed down the date yet, but it's gonna be probably around the the tail end of q one, really part of q two. Being from Boston, it's a beautiful place to come and visit, but you never wanna be here during the wintertime. So trying to push it out as much as you can so it's not gonna be, you know, in February or early early March. And this will be used to help shape road map for August, which also is gonna dovetail into, session three, which is in a couple weeks, which also feed into August. And the purpose of the advisory board, just like anything else, just like this one, is they would wanna be able to feed into the road map. Now the one caveat is that we've been really good for the last four or five releases. We've been about twelve months between one release and the other. This one's gonna stretch out a bit, which is why for eight three three, as you can see there in the last last section, this is gonna be targeted for early q two twenty twenty seven. Normally, this would be right around the q one time frame, but, to do this session correctly like we're doing it now, having that interactiveness, and then be able to have the third session, and then also have a cab after that. We're already gonna start doing development right after the holidays. You know, we're already starting to wind down August. We're in the hiding phase. So, you know, the team's already starting to work on the backlog for it, but we wanna make sure that we capture a lot of that feedback feeding into these next three sessions as well as the cabinet. Do that right? We're gonna have to stretch out the release a little bit, But I think it's gonna be all good stuff because as you can see from the major themes there, a lot of it's gonna be around Versus Code and Git. We have a a pretty good understanding of what we wanna do for Versus Code. On the Git side, we're a little bit we need a little bit of help from our customers. So that's why we wanna be able to stretch that out just a little bit. And, normally, this goes back to when we first started doing, you know, the patch updates where we're only gonna do executables, unless it's gonna be the first couple of releases after the major release. You'll see this one here, I am gonna have to still do both executables and customizable components in the last patch update for August. That's only because, we wanna make sure that things that are going to, you know, create customizable components that we can actually fit those things into the release without having to then delay it that much further. So, with that, I'm gonna now transition over to, Jeff. If, whenever you're ready, Jeff. Alright. Alright. Thank you, Jimmy. I'm Jeff Boatwright, the vice president of software development at Rocket. And it gives me great pleasure to thank you all for choosing to spend time with us today. The ChangeBank virtual user group meeting is an important step in our efforts to engage with ChangeBank customers as part of Rocket Software. We wanna talk with you about what has changed since Rocket completed their acquisition of the ChangeBank product from OpenText and how we can work with you going forward. First, if you're new to Rocket Software, we're a company that has built our business on creating and marketing system and utility software for our zOS community. Even today, this continues to be a large part of our business, and as such, we remain committed to our zOS customers and ensuring their success via our solutions. ChangeMAD is now part of that Rocket zOS portfolio. We are committed to ChangeMAD products, our customers, and their modernization journey with this product on zOS. Since the acquisition, I have doubled the engineering team, and we have set about engaging you, our customers, to ensure our roadmaps align with your goals. Our product management and marketing teams are excited to expand our customer engagement opportunities. They will broaden their engagements through webinars, user group meetings, and one on one opportunities, including development partnerships. Modernizing your development where you are and where you want to go is what we are focusing on now. We continue to embrace the core strengths of ChangeMan. This product line was developed by developers for developers, and we are looking to expand our integration capabilities to support tool chain integration as well as adopting compatibility with hybrid development models. We will continue to ensure change control that includes traceability and accountability. But mostly important, modernization doesn't mean replacement. ChangeMan's EMF helps you move forward without starting over. Lastly, Rocket is committed to your success. We wanna share what we are doing with you, listen to your goals and challenges, and partner with you on modernizing your DevOps journey through ChangeMam. I don't wanna keep you from learning more about our ChangeMAD from our ChangeMAD teams. So now I'll pass control over to our ChangeMAD principal engineer, Steve Downes. Thank you. Okay. Thanks, Jeff. Hello, everybody. I'm just gonna transition there were some demos at some point. Here we go. So what I'm gonna talk to you about today is a little bit about some stuff that's coming up in a three patch two and also highlight some features that may have gone under the radar in eight three patch one since we've had haven't had a a session like this for quite a while. So to begin with, I'm looking at, an enhancement to attempt to automate, d v two object dependency. This is coming out with patch two. It addresses, triggers functions, procedures, d v two objects. And the normal way of processing these objects is to use CMN d v two d d to drop and then recreate these objects in individual steps for each type of function. Now that works fine apart from when you have, some other object dependent on the one you're working with, in which case the drop will fail. So the the approach to the solution for this is is a is a is a granular one. It's three phase approach. You can implement as much automation or as little as you want. Phase one addresses, triggers, call routines. These all have to be in the package. So everything that's affected, triggers, routines, all have to be in the package. And the only thing that phase one implements for you is gathering together these objects and their their, definition code, and sorting the definitions into a a logical sequence. So for example, when we drop, we'll drop the triggers first and then the routines. And then when we create, we'll create the routines and then the triggers. Phase two allows for stuff that's not in the package that's being promoted or installed. So, you can have your change routine in the package. And if the depend if the trigger is dependent on your routine and it's in the package two, then fine. We'll just treat that as as we as we have done as we have done in phase one. But if not, we then go out to extract the definition for the for the trigger from the catalog, and add it to the list to be processed. And that list, that gets sorted so that dependent dependent objects are dropped first and created last, all to to get to avoid the the dreaded, SQL error due to dependent object. Because grants on objects get dropped when you drop the objects, we also automate the extraction of grant information, and those grants run after the objects are created again. In phase three, it's an attempt at the full set. We'll look for dependent routines as well as dependent triggers, and this is obviously more complex. You could have nest of dependencies here and even recursive dependencies. But But we gather together the list of objects that need to be processed, some of which may be in the package that have been promoted, others may be only in d two catalog. And those that are in the catalog will pull out the definitions for pull out the grant requests, and then sort the, the the object definition requirements in the correct order so they will drop successfully and then recreate successfully. This is all implemented by an admin change, and we'll see that in a second. The supplied skeletons have been updated to react to the admin change, but if you don't make the change in admin, then the skeletons will just process as normal. So let's have a look at the admin required to do this. So it's, obviously, it's a d b two option. Bear with me a second. So we're gonna look at d b two admin, and it's a parameter on the logical subsystem definition. And the one I used earlier today to promote to to show this working is a multiple subsystem for our unit test unit one, and it's a, a miscellaneous parameter, a new one, this one here, check object dependencies. So if you don't check that one, if you don't turn that one on, then everything just works as it does now. But if you put that one on, then there's a a new set of processes that that gets generated into the promotion skeleton. So let's have a look at the job I ran earlier. This is a promotion job. And as you would expect with a d v two objects promotion, you get a a series of CMNDb two DD executions, one for each particular object type. So in this particular package, I've got an SQL stored procedure, and I've got a function. Both of them have dependencies. So this is the this is the step for one of them. And because I've set the, the admin function to to to use this new process, we get a new file created in in the job. This is a flat file coming out of, 81 f is our d v two d v two subsystem name. And this pass through equals seek is what generates the output to the flat file. So the normal process here would be we'd take in the definition of the d v two object, we'd template it, and then we'd present it to be dropped and recreated with the new definition. We'd pass through equals seek or sequential. Instead of doing that right now, we write out the requirements to this flat file. So if you write it out flat file in this case. And then there's a subsequent step for the other d v two object type that I had in my package. It does exactly the same thing. Instead of presenting the output to d v two, it writes it out to the sequential file. Again, here we go. Pass through equals sequential. Make sure that's done. And when all the d v two d d steps have run and they've modded all this information onto the sequential file, at the end of the job, there's a post processing step. This is a new program, c m n d v two PR, And that takes in the accumulated requirements for the various objects that have been found by the d v two d d steps leading up to this. And depending on what we've got in here, it will do one of those three phases. This one is at phase three. If you just want to deal with triggers and and routines that are in the package and not dynamically grab them from the catalog, then get rid of both of these, get rid of the check dependencies. That's phase one. If you just want to process dynamic triggers from the catalog, you can get rid of check dependency because routine. And if you wanna do it all, that's what it looks like. So it's worth saying at this point that, there's a lot going on here, and there's a possibility if you've got a an an SQL error in one of your incoming d v two objects or the whole thing falls flat in its face. And for that reason, the whole process, the whole set of drops, and the whole the creates that go on from there are all done without an inter intervening commit. So it's all one unit of work. So if there is a problem, we just do a rollback. We go back to scratch. You could fix the problem and then, reattempt the promote. Once once everything is successful, then we commit it, and it's all done and dusted. Okay. So that's d p two object dependencies. Moving on. The next d p two, announcement in 8.3 patch two is for bind copy for packages, the d p two packages. So the the usual process for for binding at remote sites is to set up a a promote or install site, and to have the bind actually run at that remote site. But some customers would prefer to bind locally to the ZMF instance and then had d b two copy the results of that bind to to remote locations, DDF connected d b two subsystems as locations. So to do this, we've made use of an existing facility called logical subsystem connectors. These were implemented to allow the store procedure bind deploy mechanism to be automated by ZMF. It's worth pointing out that this mechanism, the bind the stored procedure bind, deploy mechanism has since been deprecated by IBM. And so while we'll still support this mechanism, the ZMF, it will not be further developed. However, it's a very similar process to what we want with bind copy. So we've extended the the way that logical subsystem connectors are defined, so for bind copy for DBC packages. So when you when you initiate a local bind, obviously, you connect an active library to a logical subsystem, and a bind is generated for that logical subsystem. In a similar way, if you if you associate the same active library with one of these new connectors, it will generate bind copy parameters to follow on from the local bind. So once again, the supply skeletons have been changed, and we'll process the local bind first and then and and if and only if required, I. E. If you've done if you've associated the active library with a connector, if and only then, it will generate by copy commands to go to follow on the local binds. So let's just have a a quick look at that in real life. So the logical subsystem admin. First of all, again, we're again gonna use unit one as our local logical subsystem, but we've got some of these set up, which are due to be bound at target two two subsystems. So this one's a different one, eighty one g is on a different LPAR, AR 20. And, again, this one, eighty one c is on AR 18. These are these are the target logical subsystems. So let's connect them together. We will use a connector, and we've got a couple here. There's one that connects unit one to AR 18 unit. There's another one here, unit one to AR 20 unit. We'll just have a look at one of them here. And it just contains, information that'll be required by the the file tailoring process to generate the the bind control perm the bind copy control parameters that we need. So stuff like, we need to know what the target d u two location is, whether we're using versions on the package. The default options parameter is options composite, but if you want to make the options command, you can do that here. And then there's a series of parameters that you can add to the bind copy, and it's just reproduced as is in the generated bind copy parameters. So having set up your connectors, you then let me just sort this one in a second. Okay. So I'm gonna be promoting to I gonna be promoting a DBRM to this library. This is unit test library. And this is my local logical subsystem, but I've also associated with these two connectors. And that's what that's the admin change you need to make to get the bind copy generated, in the in the d p two p l step. Okay. So let's have a look at what I did earlier. This package has got two d b two, source components in it. We'll have a look at what it's generated first. It would it's just a standard d b two p l step as usual for the local copy. Sorry, the local bind. And here's all the stuff you'd normally expect. Then a bit further down, these are the new parameters that have been generated by the the fact that the connector definitions have been associated with the active library. So we're we're once we've done the local bind, we're then going on to bind here with these parameters and then begin to bind here with those parameters. What that actually looks like, I just, put out the output from the d b two p l steps, something we can see immediately. So, obviously, this is the local bind for the first DRM, which is global d b two zero one. And it's been templated. And that's just the local bind as you'd normally expect from CMN d v two p l. Because we've added the bind copy parameters, it's also generated bind package at this target location in this collection, but copy the local package to do that bind. And we're using package versions. The process has looked in the DBRM, this one that was used to do the local bind to find the version, and it's recreated the version name here on the copy first step. And the second of these is the bind copy to the second target location, and then it repeats it all again for the second, component that's in the package, COBOL d two zero two. So all this stuff is well, it is and will be when you get the the updated version of the manual was documented in the d p two getting started guide. Okay. So to round off this section on d b two, we have, information that was on a feature that was introduced in patch one, but may have been under the radar. And this is a h I HLL exit for, CMN DB two PL, especially CMN EX one zero one. This this exit was always one of the handful of assembler exits that requires genuine assembler knowledge to change. It's it's a one off exit in terms of it doesn't need to be taken thousands of times in a short space of time, fair that with all these other exits, which have to remain assembled for performance reasons. So so performance is not really an issue with with this one. So we can we can use the HLLX mechanism to make this easier for you. Okay. It's not a stand alone it's not a standard HLLX. It's as we don't reach out to either z m f or HLL x to get it executed. It's all done within the CMNDB two p l step, so you don't need a z m f to talk to. You'd be able to get the exit to run. So I'm gonna look at the simulation I did earlier. This is the same job as the bind copy that I've just run. So this job here, but this time, I've used an s l an h l l exit on it. And the way that's done, is this the user exit parameter is changed, so it recognizes in the first parameter, rex or le, just as you'd expect for a standard HLLX definition, and it follows it by the the name of the exec or the load module that needs to be executed. And this is a Rex exec. We also need the HLLX Rex library concatenation so they can find the exec in order to execute it. And if you want stuff to be written by the rex exec, you need this d d statement as well. So just to take a quick look at what this exit is trying to do, I'm not gonna go wander through the code here. I'm just gonna look at the comments in this sample exit. And as usual, with all HNL exits, there is a sample to follow this. And this specifically is what I'm doing with this exit. I'm scanning the incoming bind parameters for a specific parameter, in this case, AP compare. And if it's there, then we're happy. We we want the AP to scan the incoming bind parameters for the copy parameters. We don't want to add this to bind copy parameter statements. But if neither of them are true, then we want to add the AP compare warn parameter to the result to the to the bind set and then pass that back to d p two p l to process as normal. And if we have a look at the outputs so SysTS Props as we as in normal with all sample HML exits, we populate it with all the the fields that have been set across to the HML exit. You can obviously take these displays out of the exit when you're happy that it's all working fine. And just to look at what it's produced, so it's inserted this comment, and it's telling you that it's added the AP compare parameter to the next bind set. It hasn't done it for the bind copies for the very reason I mentioned in the while we were looking at the exit code, and it's done it again for the next one. So you can do pretty much anything you want with this exit. I mean, this time, you don't need to know assembler to do it. Okay. So moving away from d b two for my last item. So another function that may have gone under the radar with eight three patch one, and that's query impact, the object action feature. So to to set it up, the preamble is that, audit auto resolve is an all or nothing tool. You run audit with auto resolve on, and it it generates all the jobs you need to resolve all the issues with copybooks not being included and static subroutines and so on. In our own development processes, we often we quite often make several nonstructural changes to the basic copybooks in our particular development. The package master copybook is used by pretty much everything. If you add a comment to it or or a new, flag setting, an audit would want to re rebuild the whole product if you let it. But, yeah, I quite often I I might make a a structural change that impacts a dozen or a dozen or so source components, and I'd like an easy way to get them built before they're having to run a full auto resolve. And this is what this does. For base EMF, it, it queries the baseline impact analysis table, and it presents a list of affected components from which you can use various line commands to perform various actions on the components presented in the list. And for ERO, it does pretty much the same thing, but it's more extensive in that it starts by looking in the start area of the current lease for impact analysis of the implementation, And then it works its way back through all prior releases, looking in start areas in the prior releases for the same information. And finally, it augments the result set with information that is picked up from baseline IA. And only the first found results are presented for each affected component. So let's have a quick look at that in action. It shouldn't take too long to do this. I'm going to change man. I've got a specific package set up to to look at this. This is, package five nine six. So in this package, I've got a a copybook that's used by a lot of components. I think when I put obviously, when I first set it up, I I set it up to be used by 60. So if I now do a QI, this this is how you get into this this action, query impact facility. QI by it, it populates an impact query with the information from the line you issued against issued the QI against. And if it entered, this is a result of the impact. We've got 80 components here which should use this copybook, then you can do various actions Let's check it out into the package. And you could this one, you could just build it. Let's build that component because this one's in baseline. It's not in the package. The build process has chosen a recompile. The way it goes, it recompiles it. But if I build the one that I checked out, try that one, this time it's chosen chosen to stage the component because it's just been checked out of the package. So if the component's in the package, the build command will stage it. And if the component's somewhere else, like in baseline, it will recompile it. If you want to do them all at once, you can do a build build all. And that sets the BC line command against all of them, and you can go through it. As you go through the middle, choose stage or re impile as you go through. And I think that's all I need to show you today. Thanks very much for your attention. I'm now going to hand back to Bob. I need to stop sharing somewhere. Oh, there we go. There we go. It's technology is marvelous, isn't it? Over to you, Bob. Thanks, Steve. And, welcome everyone. For those who don't know me, I'm Bob Yates, solutions architect. Been working with ChangeMed for a while. So, similar to Steve, I'm gonna take you through just a a few slides and then do a live demo. So something that I think many of our customers, if not all, have, you know, done in the past is they've had a need to add a dynamic approver. And, there was a request that came in, to me from one of our customers recently, and they wanted to add a dynamic approver, but not based on component type. Many times folks will say, you know, if we have d b two, we wanna add a d b a, those kinds of things. But this was based specifically on the day of the week. So, that was a a little bit different than, request than we normally get. So the typical way you would do that, as soon as you hear that, I think, you know, most anyone who's worked with change man for a while would say, oh, okay. You know, there's a there's a change man exit available, specifically Exit 9. And I just I pulled up, some of the Exit 9, verbiage, from the documentation. If you're not familiar with exit nine, it's been around, quite a long time, but it's, it uses the assembler. And I'll actually show you an example of that. So while those who know assembler, that's great. For those who don't, and we seem to be finding more and more of our administrators don't know assembler, then it becomes a little bit problematic. You either need to, you know, turn to someone else in your shop or, you need to, you know, try to struggle through it on your own with some of the, the samples that we give you. So I went about looking to see, is there another way to do this other than, CMN exit nine? And, there is. And this may have slipped under the radar as well. This was introduced in 08/03. And, there is now a new high level language exit, called h x r x zero zero nine that's been added. And so, I had never used that, so I thought this would be perfect. I could go ahead and use that for this customer example. So I'm gonna walk you through that steps, those steps, in in the demo that I have. So let me stop sharing here and go over to screen. And I wanna do entire screen just like Steve said. Go here and share. Perfect. And then I'm gonna come over here to my mainframe. So let's just walk through those steps. So, you know, the first thing that that we talked about was, you know, what does Exit 9 look like? So I already have Exit 9 up, you know, for those who don't know it. And so if you, you know, look through Exit 9, you know, here's here's exactly what it looks like. Right? So there's a, you know, a csect, and you go through the various exits and, you know, you can you can do what's needed. We do provide some, you know, examples. But again, it requires you to understand, assembler. So okay. You know, how else could we do that? So let's just come back to Change Man. For those who aren't familiar with some of the setup, let me just quickly show you that. So in order to turn on high level exits, if I go into admin global and then select eight for h l l exits, then here I am at the full list of exits. Now this specific one, if you look at it, you might think, well, I could go into, you know, we're trying to do something with adding an approval. Maybe I could go into a for approve reject, but that's not where this is located. This exit happens to be located under s for specific. And so if you select s, then you can see there's some now, high level exits that don't fall into some of the normal patterns that that others have. And if I just go ahead and max to the bottom, here's that exit. So the internal name, X009 or 90000, and the external name, I just went ahead and called it the h x r x zero 09. That is, what the sample's called. You can see here I've turned it on by saying yes and it and it is Rex. And you'll see, it actually tells me in the description, it is ACMNEX009, alternative. So okay. I have that turned on. That's great. But what does it, what does it look like? So, let's swap over, to what the samples look like. So I I already, you know, had this pulled up. So if you look at the sample and if I come down here, you actually see on line 25, it is an alternative. And it starts off with a whole lot of say functions, that, you know, I'm taking a look at. But what I noticed is there's not something for the specific day of the week. If I look down and I come down here, you know, I see all kinds of things, but I don't see anything that talks about the day of the week. Let me just max to the top again and come through this. I do see things like line forty nine and fifty that I see the I see the Gregorian date and I see the Julian date, but I don't see, you know, anything else there. So, that was my first challenge. Just pardon me for that. So that was the first challenge. So, you know, how was I going to go about, solving that? So let me just swap over to another screen here where I have my rex, and here's how I solve for that. So this is that same code that I copied into my custom rex library, and I, you know, went ahead and and added in. So let's just go to the top of this so you can see. So I first come in and I say, okay. This is that same thing. I can see everything. But if I if I come down here right after the the Julian date and everything else so let's just get that. Here's what I added for the demo then. I did put in a say, command just to make sure. And I'm using a a rex function that, I just went and did a search. I I I, you know, was able to easily find this. But this function says, I can pass any, a date to this, to the date routine in certain formats and then ask it to give me back what the equivalent is. So in this case, I'm passing the Gregorian date and I'm telling the date function that this is the value I'm passing you is Gregorian, and I'm asking it to pass back to me the day of the week. And so that's exactly what this does here where the date w, next parameter, install date Gregorian, which is the value that, we're already generating, and then, the next parameter of an s. So, you know, how does all of this work then? So let's let's come back to Change Man and take a look at a couple things here. So let's actually run this. So first, let's go to, a package. And I played around with this earlier with package one fifty one. So let's query this package first, and let's go to number seven to look at what approvals are there. So right now, there's just a single approver called global administrator. Okay? That's that's great. So how does this get triggered? Well, just like anything else, at freeze time, I want to be able to dynamically, add that approver. I already have my Rex code set up, so I'm going to freeze that online by doing an f one. Okay. My package is frozen. Let's query that again. I can see some messages come back. Let's go into seven and look at my approval list. And sure enough, I went ahead and added an approval, and I just gave it a description of added approval entity, called a t p r v new. Now why don't we look at SDSF real quick just so you could see what was happening. So here on my, HLLX started task, if I take a look at that, I had tested this earlier. So if I look at this d d name, you actually be able to see here was the output for what I just ran. You can see here where I added in, the message what the day of the week was. It was Wednesday. And then if I'm just maxed down to the bottom, you'll actually see how the approval entity APPR be new with a description of added approval entity be new. I gave it an order of 11. The four is, email notification, and I'm the user. If I come back over here, that's exactly what we have. And just to show you just one additional thing real quick that, you know so what happens if, you know, I froze it, now I promoted my package, I did some testing, and, oops, I need to make some additional changes. So if I was to revert that package, so we'll just say because so now I've, I'm clocking right now. There we go. So I've now reverted that package. And if I come back, sure enough, if I query that package and look, that approval has been removed as I would want because, you know, maybe I'm making some other changes and then that approver is no longer, needed. But once I, you know, if I was to freeze that package again, just do an f one and then query the package, you'll see that that is added right back in with the sequence of 11. So hopefully, that's something that, you know, you can take advantage of. I know a lot of shops already have, like I said, CMN Exit 9, but I think this is far easier and far more flexible, and and really allows you to do a lot. So, with that, I'm going to stop sharing there. And we'll come back over here, and we'll go to slides, and I'll pass it off to, to my next colleague. Take it away. You ready, Peter? Hope if I unmute. I'm just trying to get the, slide 22 up. Oh, yeah. Okay. It wasn't hitting the right part of the picture. Okay. Good day. I'm Peter Webb, ZMF developer. I'm gonna be covering package search change, today. There we go. So as request has come in to add the package request a name and the, request a phone to be able to search on on things like package list, While at that, we decided, we'd really need that information to be available to exits. So I'm gonna go over that just briefly too. So moving on. So package request and name and phone. These are fields basic fields, on the first panel when you create a package. The information is it's it's just informational. It's not doesn't have any specific use within z m f, just information about a package. And because of that, some customers are using those fields for customization for their own purpose. You can, in global admin, you can give the package requester, name and phone a a different name so it shows up differently, different text on panels. So in eight three patch two, these fields, are now available on the approved package list inquiry package search criteria. The these fields are available to the package search service, before. They've they've been there for a long time. And on those fields, we we do a a scan type search. So if you search for text, it'll find that text anywhere in that field. Like I've shown here, if you search for Smith, you'll find all the Smiths. That's the way it's it's been forever. And I had concerns about that, but the more I used it, the more I decided that that's exactly how I would expect it to work. And I assume customers are relying on that. So moving on a little. So I don't know how well you can see this, but this is the package list search criteria panel. And just above the work request, we've now got the request to name and phone fields. In this particular case, I've just put in Smith as a as a test example. And so it's going to find all the packages that satisfy all of the criteria on this, on this screen, different package status, but also role required at AS Smith in the requester name. So pressing enter on that, that will come up with a list of packages. And I'm just showing here on this particular one, it's got a name of John Smith in there. So it's so it's a scan type search and match. My that's package list. Here's a customized fields example. Went into global admin, changed, those two fields that requested to be a a category and a subcategory. And here, I'm searching for a category, containing XML. And in my test, I got a few packages. I got XML reports, services, and then XML related. I put XML in the in that category field. And you can see on this one, for example, it's returned me one of the packages as just XML reports in there. So, pretty simple. Not much to that. I think next on, I go on to the exits. As I say, if customers are using this information, if it's important information that they're relying on for for customization, we figured they really needed to be passed to all the exits. So, they're now passed to all the assembler exits in the c o n exits copybook, just like, work request department, other main package fields. For HLL exits, there's a a, at least a few HLL exits that take the basic package fields. And where they didn't have request to name and phone, they've been added. And those were the approve, the scratch rename, exit, and the new, newish Exit 9 HLL exit. I've listed here the the Coburn Peel 1 field names from the Coburn PO 1 copy books for the HLL exits, and also the Rex variable names. One of the things I found most useful for for testing here was actually using exit nine so that I could, for example, add, extra approvers if my package had things like, XML related stuff in it. And that is that's really it it's very simple. Basically, just a a couple of extra fields on the search on the search panels and then the variables a available to the exits. And that, I shall stop sharing and try and pass this on. Okay. You turn this on to me, and I need to share those slides. How come why? Can everybody see those slides? Yes. Okay. Okay. I think I've got it. Good morning. Good afternoon, everyone. My name is John Skelton. I'm gonna talk about some additional updates that we have in ZMF eight three two. Those two items are, Tomcat and event notifications. Let's start with Tomcat. The the current state of Tomcat. Currently, we distribute a dovetail software version of Tomcat. And why do we distribute this particular one? We have firstly, some key configuration items are available in partition datasets, versus the UNIX file system. It's made it a lot simpler, for customers that were new to Tomcat in getting the setup done. So and this is done through a set of XML entity references. So that allowed things like host name, port, your, logging configuration, your logging retention period, all to be set up in a member of a PDF as opposed to the UNIX file system. This was all enabled by j z o s, which was a component written by Dovetail Software, and it was purchased by IBM. And it's been available by IBM for quite a while now. That enables things like that file, dataset access I just referred to, as well as a lot of ZOS services are now available from your Java programs. For example, Tomcat running in a batch job, you can issue modify commands against it. That's all available through j zOS. The version that we distribute is eight five six, and, unfortunately, it has reached the end of its life cycle. So it's no longer supported by the open source community. And Dovetail no longer distributes any version of Tomcat. So it did not upgrade anything. So our web services are, were written for Java EE, which is an older spec. And I mentioned this because we want you to know that there is a path forward even using the existing software that we have. So newer Tomcat versions like ten and eleven would support our existing applications by the use of this web apps.javaee folder. So you put our applications in that folder, and it's automatically upgraded for you, when the web application is deployed. So Tomcat ZMF eight three two. So we no longer distribute Tomcat with ZMF. Instead, we are providing instructions that provide a detailed description of how to install it and configure it from scratch. As part of this, we upgraded our web services to the Jakarta EE spec, which is a newer spec. So we were gonna require a minimum of Java of Tomcat version 10, which requires Java 11. Along with this, ZMF or ECL is now gonna require Java 11, and that's because we run an embedded version of Tomcat with ZMF for ECL. And that shouldn't be a problem. Newer versions of Eclipse are coming out with Java 17 embedded and IDZ 16, which is the the latest supported version of, IDZ. The earliest version that's still supported is running Java 11. So that shouldn't be a problem for any customers. Quick overview of what you're gonna have to do to install a newer version of Tomcat. We provide a much more detailed description in the documentation. This just gives you a high level overview. So you need to download Tomcat, and keep in mind that version 10 requires Java 11. Version Tomcat version 11 requires Java 17. And that may be dependent on the version of zOS you're running. If you're running an older version like two five, you may have to stick with the version 10. You then need to upload Tomcat to zOS into the UNIX file system and use the char command to unzip the Tomcat distribution. That's really not a new step. It's just it's a little different. We used to make you use, the packs bin command. Now we're just gonna have you use the char command. You need to review the ZFS permissions on your files, and that's also it's not new. But we recommend that you run Tomcat using the same user ID that runs the, change man started task. So you need to make sure that they have access to the Tomcat distribution folders. This is a new step. You need to review the default web applications because by default, Tomcat comes with a manager app, some sample applications, and you can either configure them, leave them alone, or you can just delete them, and it'll it'll work fine. You need to update host name ports, login configurations, and that is now going to be done in the UNIX file system directly into the in the files. And then lastly, you need to update your JCL to point to the newer versions of, the j z OS batch launcher and update the TC and ENV member to point to your new contact configuration. That's it for Tomcat. The next thing I wanted to go over is event notification. Again, it's current state. We have this parameter called notify URL, and this is used by both rest services and RLM. And what we do is we create an event subtask. It reads our log events and sends them to this notify URL endpoint. You can filter events by setting up, the ALS filter DD name and adding events into that dataset. Updates to that filter, if you wanted them to take effect, unfortunately required a task restart or a ZMF restart. So there's a couple of problems here. We're reusing a parameter to for two separate products, and you requiring a restart is not very user friendly. So for August, we added multiple endpoints. So we have added three additional ones. Your notified URL is gonna remain the same, but we added a one, two, and three option. There's gonna be a separate subtask for each endpoint. And the event filtering is moved from the ALF filter DD name into the package master. Services are now available for manipulating those items in the package master. It's the log and URL service in a way of lift, create, update, and delete options for that. And we have a batch utility that is gonna convert existing ALS filter, filter definitions and put them into the package master for you. So that it's a pretty straightforward conversion process, and you could use multiple products at the same time. And you can write your own and be a recipient of these events. And that, I think, is it for me. And we are at the end of the session, so we're gonna do a little bit of q and a here. Thank you everyone for attending today. Thank you very much, John, and everyone else. I know we are over. We have some questions that come in. Steve, for your session, there's a handful of questions. But one you had a chance to answer already, you want to, if I ask a question, you wanna just answer that again for anyone else that might not have seen the answer. Is that okay? So so, the bind copy commands are delivered to D B 2, and then d B 2 will send it out to wherever d B 2 is connected to. There's no need for, z m f to to be involved in in the actual delivery of these. So if if you want ZMF to be involved, you do it the old fashioned way. You set up a remote site, and and you send the job over there to do the bind on the remote site. If you're using bind copy, you don't need that. Thank you, Steve. There's two other follow-up questions, but, for the person who asked him, Steve and I just got a talk offline probably later today or tomorrow, and then, I should be able to get back to, to you on that. Bob, there's a handful that came in during your presentation. I don't know if you had a chance to look at them yet. I can go in auto or whatever is easiest for you. Yeah. Yeah. Yeah. They all seem to be around the same thing unless I'm missing something. It looks like about, in that, new, exit, the HR Rx zero zero nine, How can I get the component, list? Is that Yep. Yeah. Yeah. And I believe you can do that. I think, Johan, attempted to answer that. But you can use an XML service, that will get you the list of components that are in the package, and then it'll be available in the exit. I was actually trying to code something real quick. So what I'll what I'll do as a follow-up is I'll go ahead and code that, and then we can send it out as part of the, response to this webinar. Okay. Very good. Thanks, Bob. Yep. There's another question for you, John. And, let me just ask it. It's, can can can you use an application server other than Tomcat on zOS? Yes. You can. We're gonna remove that restriction that we enforce that you use Tomcat. So you can use any web application server as long as it supports the Jakarta EE specification. Very good. I don't see any other questions that have come up that we haven't already answered. Like I said, there's at least two more that we're just gonna me and Steve will take that offline and get back to the customer on that one prior later this week or first part of next week. Okay. As a reminder, next week, is another session at 11AM eastern. And then, obviously, we have various time zones for everyone else, especially there in, in EMEA. I think most of that will be, between five and 6PM your time. So hoping to see everyone there for that one. As you can see, this is our first time using the platform, and it's been a while since we've had six, seven of us do a presentation. So it's a little bit of a handoff. We'll be better next week. And then, the one on the twentieth is just as important. I hope people have registered for that one. If you haven't, please do. And if you don't have the registration link for either one of the sessions for next week, the one after that, please reach out to us, and we'll send you those links. Again, these are is being recorded. I just saw that question just come up. All three sessions will be recorded. This session usually takes about twenty four to forty eight hours, which is on a Thursday. It might be up, by end of the week tomorrow. Worst case, we'll probably be up on Monday. Everyone, thank you very much. Yes. If you in order to get a link to the recording, it's very important that you do register. Thanks everyone. Thanks very much for all the presenters, John, Peter, Steve, Jeff. Can't say think enough for you guys to be able to do this. Thanks everyone. Have a good rest of your day now. Bye