Product Update: What's New in UAC 7.6
Discover UAC 7.6 enhancements, including workflow customization, SLA event monitoring, optimistic locking, container-ready UC support, plus performance, integration, and security updates.
Hello, everyone, and welcome to today's webinar on our latest product update and what's new in UAC seven point six. My name is Caroline Geckler from Stone Branch, and I'll be your moderator today. Before we get started, I just wanna cover a few small things. So this event is designed to be interactive between you and the speaker. So if you have a question, please let us know. Click on the q and a tab in your dashboard, and you can submit your question, and we'll answer it at the end of the session. In the event that we don't get to your question, we'll follow-up with you right after the event. Additionally, in the right hand corner of your screen, you'll find some handouts that are related to the session. Please feel free to take a look. And then lastly, closed captions are available for this session. So you can turn those on, and we have them available for you in multiple languages that you might be watching along in. So it's all with all that said, it's my pleasure to introduce our speaker today, Colin Cocksedge, who's our director of product management here at Stone Branch. Colin, take it away. So, yeah, the first thing we'll take care of here is is important release information. With, certain releases, there are just things we want people to be aware of if you're considering an upgrade. Then we'll look at the high level. Now there's a lot more things in the release that we have than we're able to cover in a release webinar like this. So, you know, again, we'll point those out and highlight those, but we do want you to look at the release notes maintenance lists in order to validate, what's changed, what's new before you install the product. We'll take a look at a demo of the product with a few of the features, and also talk a little bit about what's coming next in terms of future releases there just on the short term. So as far as important release information, there's a number of things that certain customers of the product will need to be aware of. So one of the things that we've done is is we've updated our support for, SQL Server, Microsoft's database, which means that we've had to update the JDBC driver. And Microsoft have introduced a number of breaking changes. Okay. In most cases, we don't see an impact, but we do encourage customers to review Microsoft's release notes in order to see what those breaking changes are and determine whether they impact you. We've got some notes on one that may impact some customers, although we'd be surprised if it does, with some mitigations there in terms of of handling that. But that's something we encourage you to look at if that's the database of choice. K? So in terms of the, the bundled Python that we ship with the agent, we've upgraded that, and we've done testing of all of the supported, integrations through the integration hub. But we do encourage your customers to test any integrations that you have just to make sure, and particularly if you've got any custom integrations, that you've done, or integrations that you've sourced outside of the the integration hub, okay, prior to moving the seven six agent into production. K? For IBM z users, the zOS side, non restartable steps, we've added support for the JCLRD keyword. It means a change in behavior. We don't see an impact because that's really the way they should be treated, but steps marked and r and n c will now be marked as non restartable. K? For the no longer supported, obviously, with the upgrade of, SQL Server, older versions of SQL Server, which are no longer supported by Microsoft, are dropping off our support radar. And similar with MySQL five dot seven as well on the database, just an old release that we wanna take off our our QA matrix there. And also for the agent Solaris ten, we're no longer able to support Solaris ten from seven six onwards. Okay? If anybody has any issues with any of the drop support, reach out to me. We can certainly have a discussion, and we can review these things. But, in general, usually sometime after the vendor has stopped supporting them, we will drop support. It just lightens the load on our our QA testing process to reduce the number of combinations of platforms that we have to test on. K. So in terms of the headlines, a whole bunch of things. These are really just the high level items. As I said, there's a lot of little items in there. We'll cover some of those as we go through the demo and discussion. But we've added validation for the software download so that you can confirm that the package that you download is a from us and b has not been corrupted in any way. A number of small performance improvements, and I'll go through some of those. Updates on the security side, as always. That's always an ongoing focus with the releases. Prevention of concurrent updates in the controller. We'll talk about the strategy there, and we'll kinda show you how all that works. You see, the controller is now container ready. It's always been able to run-in a container, but there's been a couple of things that we wanted to get around to improving its ability to properly operate in a container environment. And we'll kinda discuss a little bit some of the requirements around that. And at some point in the not too distant future, we will be publishing a supported image. But at the moment, you are able to create your own images for the container, and we can certainly help with that. K? The Python upgrade to three dot eleven, mentioned that already. SQL Server twenty twenty two support. We've continued with the modernization of the SAP task, which we had in the seven five release, so we'll look at some of the additional things there. And there are some techniques that we've put in that we will be utilizing and some that have been utilized in other areas of the product as well. We've got a new universal event for SLA violations, so you can track, notifications or actions in a new way and, quite a broad reaching capability. The ability to launch or trigger a work flow from a specific with a specific starting point or include specific jobs or combinations of both, and we'll look back at that further in the demo. K. So for the software download validation from seven six onwards, all software downloads are gonna be So the installation documentation for both UA and UC provide validation instructions and also the link that I've got here to get hold of the public key that you'll need to do that validation. K. So on the performance side, a couple of things there is this this will have significant impact for certain users, less impact for other users. But the the rewrite locks issue is that if you launch or trigger the same workflow with a lot of different triggers and you do it at the same time, there was a little bit of a deadlock situation with which we resolved in the product. So we don't have the ability so we now have the ability for those effectively to be multithreaded. Well, that process is multithreaded. The way the records were locked when the launch process was happening meant that if it was the same workflow definition that was being launched, you know, in some cases, dozens, hundreds, even thousands of times within a short period, they would single stream. So that's been resolved. And, also, we've gone in and, with the audit purge, if you have a lot of audit records, we've gone in and used the same technique that we use for the other purges, and they're basically purging it in chunks to improve the performance there. Okay. On the security side with the communication between, the agents, UAG, and the controller, This will happen automatically. It's kind of our internal protocol, and the version three of it basically means that the controller is gonna dynamically generate keys used for for encryption. Okay. So it's a one time key used, for the encryption when that connection's made. Nothing you really have to do to take advantage of that. If the components available support it, it'll be used automatically. So in terms of preventing concurrent updates, and we'll go through and kinda show you how this works in the demo, there are really two ways of doing it. So this was one of the, things that's been in the controller since it was built, since it was designed. Not generally a problem, but, effectively, you have the issue that, potentially, the last update wins if multiple people are updating the same record at the same time. Now traditionally using the product with a central admin group, this was less of a problem. But as we're seeing more and more widespread use of what we term citizen automators in the product, different groups of users being able to do, you know, various functions with automation, including creating and maintaining their own definitions, that there's more and more of a risk of this being an issue. Okay? And there are two approaches to this, optimistic and pessimistic locking. We've chosen the optimistic locking route, and we'll kind of explain what that is, in a second. The main reason for that is that the pessimistic locking really introduces some performance and scalability concerns that we were not comfortable with. So optimistic locking basically means that when we read the record, when you open the record for edit, you're gonna be in a situation where we will capture the version number of records that aren't versioned, the updated time, stamp for that record and check that that hasn't changed before we write it back. K. Disadvantage of that is that if someone else has updated it, you're kind of stuck. But it does stop you from doing that last update wins. Pessimistic locking means that we'd lock the record in the database if someone edits it. But there's all sorts of issues in terms of someone goes into edit, locks the record, goes to lunch, goes home, whatever. You've got that record locked in the database, and all sorts of things that you have to worry about with that. So we decided that that was probably a little too heavyweight for what we wanted to achieve there. With the container readiness, the things that we've done is we fixed the logging situation with the controller, now has the option to log standard out, which is more container friendly. We don't want to have log files on the file system within a container. And, also, because containers transient in nature, we did this for the agent as well when we containerized the agent. When an agent registers with the cluster, you have the option to make it flagged as transient, which means that it will remove itself from the cluster when it shuts down because, potentially, if you rebuild that container and restart it, you're gonna come in and register as a different node, which you don't want to then have all these dead nodes that you need to clean up. So it's basically an automatic cleanup for those. K. There's a fully supported image coming soon, and we'll kinda discuss as we go through the presentation some of the use cases around why you might wanna use a container. And I'm interested in feedback from the group as to whether you're excited about it, could care less, how you think you'd use it, and those kind of things in terms of that. So which takes us on to the question. So we have a poll question. And what I'd like to get is some information is to you know, would you use a controller in a container, and what would you use it for? You know, would you be interested in previewing and testing new releases in a container environment? Do you plan on having development environment, sandbox environment stood up in containers? Is it something you consider in production? Do you have other use cases that don't fit any of those, or you're not interested at all? So I very much appreciate you guys spending the time responding to the responding to the poll, and we'll give you a few seconds. There we go. Great. Okay. So the majority is around previewing and testing development sandbox. Interesting. Twenty percent for production. That's a discussion I'd like to to kinda get into what the production use cases are. There are there are a few there because, you know, traditionally, monolithic applications like the controller don't well suit for containers, but great for testing. However, there are some use cases where I think that would see, and I'm also interested in the other use cases. So the people that checked other, reach out to me and let me know what those use cases are. That would be great. And kind of about the expected of people that really aren't, interested at this point in the in the container side. So that's great. Thank you very much, everybody. Okay. So let's take a look and flip over to to the controller here. So this is my seven seven controller. I guess the first thing to go through is there's a change to the, the global search here. We've added the capability to search for a specific UUID. This came up in terms of some of the logging mentions UUIDs, and it's just a useful way of being able to go and say, hey. What definition is that? You know, some of them will mention both the record name and the UUID, so this just gives you that capability. If you have that, UUID or Sys ID as you'll see it referenced in the product, the unique ID for the definition or the instance or whatever it is, you'll be able to search for it and find it. So useful little little function there. K. So on the, universal template side, we've added some additional capabilities to to some of the fields here. Specifically, we've added the capability to have regular expression validation for text fields. So for example here, I've got one that will validate email address format. Okay? So you see in my hint, I've got, you know, at at what top whatever. So you can do things like that and provide validation for these fields. I've got another one that I've set up with phone number validation. And also for the credential fields, we have, set up the ability for those to automatically, take a variable in the same way that standard tasks do. Now for the other reference fields like, scripts and, connections, they will come. We took this release and picked the credential field in order to, have a shot at at getting the, getting that prototyped. Pee. There it is. So if we open those tasks, here, you can just kinda see what these fields look like. So we'll just pop it in with the validation. So for the, for the credential field, now you'll see it has the credential variable checkbox the same as the utility credential does. So it behaves in the same way. So now rather than when you design these having to use additional Boolean and text fields to to capture that information, it's done automatically with the field type for you. So you can then type a variable in there and have a variable result. So, for example, with these, if I put in and this is a US format, the, the ten digit. If I put in something invalid and go ahead and try and save that record, he said, there we go. I get US format does not match the regex pattern. So it gives you the pattern and tells you that it doesn't match in that case, same with the email address. So you can put validations on those fields now, which I think will be very useful enhancement for for a lot of things. K. So close that out. Yes. And close that guy. So the other thing we've done and this is also relevant to the to the universal extensions, universal tasks, but also other capabilities here, is the the lookup fields. It's just a small little change here in terms of the lookup fields. Now when I go and do a a a lookup for a field, submit that, you'll see there's a little bit of animation there which just shows you it's working. So if you have a lookup, depending on what you've done and how you do that, that takes a little bit of time, at least you can see it's still working. Small little change, but a nice usability feature there. K. Which kinda takes us on to the SAP task. What we see here is, actually, this field has been added as a dynamic lookup field, which it wasn't before. So, again, we're getting the information of available target servers from the SAP system itself. And we've also then taken some other things in terms of the the job steps that we added. In there is we added support for the other types of job steps that there are. ABAP program was the one that we introduced in the, in the last release. You can now add the external program and the external command, okay, in terms of adding those. And for the APAC program, we've added the, the print parameters and expanded the selection there in terms of making the format a lookup field, dynamic lookup field, and also you added output content, cover sheets, full request output options there. So a whole bunch of stuff there to make that more synergist with the way that you expect those fields, the that information to be available within the SAP system. So a little more friendly for your SAP business users that are used to the SAP interface in terms of seeing the same information in a similar way. K? And that's all through the the enhanced SAP form. We still have the legacy form, which basically maps all the functionality that we have in the connector, but the enhanced form there gives you that more user friendly experience there. Okay. So moving on to to workflows. K. That's curious. I'm not seeing everything. I'm expecting to see. It's because I'm on webhooks, not workflows. That makes sense. Give it a second to there we go. Switch over. First thing we noticed is a a small tweak to the UI. If you're using dark mode like I am today, when you open the work flow because it had previously had a white background, it could be a bit of a shock. So we just darken the background to make that a little more friendly from that perspective. And, also, what you would find is that clicking save when you were in edit previously would just save the record whether you'd made changes or not. The downside of that was it created a new version. So if you had users who would just click the save button, it meant that you would create basically useless versions that had no changes in them. So we prevented that from happening in terms of that. And you get a little pop up in the console saying, hey. Oops. I clicked no parent workflow. Let's just click on the save. Not the parent workflow. There we go. No changes detected, from that side. So then the other things we've introduced in here is the ability if we look at this workflow, and you kinda remember what it looks like, but we'll come back to it. And this is from workflow launch with variables and trigger now if the trigger has a single workflow in it. Right? We don't really know what to do if you got multiple workflows, but you'll see a new dialogue button pop up here in that dialogue, and it's the vertex selection. So, basically, what we wanna do is we want to start this launch this workflow, but not run all the jobs. I wanna start it from a certain point, and also run another task. Now all the tasks in here are called the same thing, so I'm gonna have to go by specific vertex ID. And vertex eleven is the one I want. But I also want to run, oops. Let Let me re edit that because I wanna make that a root job. What root job means is it'll run from that point onwards. Okay? If I didn't check root job, it would just say that task is selected to be in the workflow. None of its dependencies are taken into account. Okay. And if we select the same task but a different vertex, in this case, I think number five, and just to run that. So we show both sides of that and then go ahead and launch this workflow. And we'll go to instances for that workflow once I check it. And we'll look at the active instance and compare that to the, to the definition. K. So what you'll see here is that it's selected from that point onwards. There's obviously an error with the way I've got these tasks set up. That's fine and the other tasks there that we have now. Thing to bear in mind with this is that if any root task or individual vertex that you select that has actions, those actions will not those run skip criteria, sorry, that will not be processed. We're assuming that if you select it, you wanna run it. Now run skip criteria for anything beyond that point, yes, will get processed in the normal manner because you may be passing things between them to decide what runs and so on and so forth. But the root job or an individual hanging vertex there will run regardless if you select it in in this manner. K? Any sub workflows that are in this flow will be included in their entirety. Okay? So at this point, this is just a one level thing where we can go to a workflow and say, hey. I wanna launch it from this point. I wanna start it from this point, and potentially pass in whatever variables we need for that as well. Okay. Alright. Let's close the monitor down. Now what I'm gonna go and do is I'm going to put in a private window, log in to the session. That's gonna allow me to edit this workflow. Yep. One. Sorry. I wanna prod. I'm not doing on test. There we go. And we'll show you how the optimistic locking works to give you an idea of that, and that's basically available for all all definitions. Now you will potentially run into an issue, and there is a property available to switch that off for agents. We don't anticipate that people update agents very often, but agent records get updated every time there's a heartbeat. So if you edit, an agent record, there is a good chance that that record has changed since you since you have started editing it, okay, since you opened the record. So that's something that just may get annoying, and that can be disabled for those. It's just kind of a a special case there, that you have. So we'll go into workflows, and we'll open our complex workflow. Let's just edit it. That's easier than that. And I'll just make a small change, save that change. Okay. Come back to the other version here. Go back into my workflow editor. Okay. We'll go in, and we'll add a new task to this. And we'll just throw a new timer task in there. We'll go ahead and join it. Now previously, what would have happened is if I click save here, this would override the change made on the other system. K? Now with the, pessimistic locking in there, it shows that we've detected there were modifications made. What do you wanna do? Okay. So I'm change. Or, and then decide what to do, or I can cancel and close close the record, discard my changes. And I actually just wanna discard. I don't wanna make those changes there, so we'll head there. So that's an example of how the the optimistic locking there works, within the tool, but it prevents that last update win situation. Okay. We've also added a new universal event, and these these will come, you know, every release or so. There's a lot of events we wanna put in there. We made some changes to to some of the existing events. For example, UUIDs has been added to the agent, although that might have been the previous release. For the task, status changed, we added the, the critical flag to that. But, also, we've added the task SLA. So every time a task exceeds this you know, fails to meet its SLA conditions, this event will be fine. And you can use that in combination with the the webhooks to do things like notifications or kickoff, you know, access another another product like a service management tool or kick off a workflow or a task. Now one of the things you'll see and we we get asked this quest question every now and again. Well, hey. This launches a task. Well, that's a notification. You know, I just wanna send an email to say that I'm late. And if I use this, it launches a task. Right? The reason we do that is for visibility. So the idea is is that, you know, if you're using the, the notifications where we just do a notification email, that kinda happens in the background. You don't have visibility. Yes. There are administrative emails and get set if those notification tasks fail for whatever reason. But if we launch a task, let's say you launch an email task or or a web service task to do that integration, you've got complete visibility on whether that action has failed or worked within the dashboard, within the activity. And for all the tasks that are generated from the webhooks here, they are not part of the the license if you're on the, the usage based licensing. So you're you're not paying for it, but you get the advantage of having the extra visibility there in terms of that. So that's just kind of a architectural decision that we made. We feel much better to have that visibility. We exclude those from the licensing counts when you're for things for things like integrations to your problem ticket management system or notification emails, you know, whether you're sending messages to a Slack channel or something like that. That task, you know, we don't pay for. And, also, you know, in terms of the webhook stuff, and we talked about this before, you know, you can also just generate a URL if somebody is you know, the endpoint is set up to take a, to take a a webhook, an inbound webhook, great. If not, you've got complete flexibility as you can launch a task, or a workflow to do really whatever you need to with that notification there. Okay. And last on my list of things to look at is a change around the way the security permissions work. So we've run into a situation which has some limitations in the product in the past where, you know, an admin may want to give a user or group access to records, and basically assign them to everybody except, you know, in terms of, hey. Everyone can have access to this except for a few different, business services. And there's some limitations that they run into in terms of doing that. If we look at the permission records, and we just go ahead and create a new one. In terms of that, if you're putting in specific business services, you have a limit to the number of business services that you can specify. And the reason for that limit is that it it's largely created by some of the back end databases we use, but not all of them. So there are limits that we're hitting in some of those back end databases that preclude us from extending that field to an unlimited number. Plus there is some performance considerations around having very complex mapping in terms of doing that. So we kind of taken the other approach. So now you can say, hey. You know, we can we can basically exclude access by saying, hey. If you're not, we can grant you read access if you're not a member or we can restrict you if you're not a member of, you know, these three these two, three groups or whatever it is. So it gives you some additional flexibility there. So you'll see that business service criteria menu is being extended. Okay? Now one thing to be careful, and this is an issue with with or a wrong issue, the way permissions work in any case is you kinda have to be careful of how the permissions are aggregated. Right? So if you're granting this access in another way, in other words, you're specifically mentioning this business service and giving it access via another permission, he will have that access. Okay? So it's not a way of of kind of saying, hey. You're giving, you know, out and then specifically giving it to him and then specifically taking away cancels out. Doesn't work that way. But that's, you know, that's not really a change in behavior in terms of that. But just something to point out as you get into looking at utilizing that feature and and maybe testing that. K. Alright. Okay. So as mentioned before, I encourage everyone to go to the, go to the documentation. Okay? And under the support and maintenance list, you'll see that we have the maintenance list and the release information. So the release notes are high level, cover a lot of the features, but not all of them, and provide some information about, you know, what we've done, potentially why we've done that. And also then the maintenance list, which is a complete list of all of the new features, defects that are fixed in in the product there, you know, for both the agent and controller. So, again, before looking at an upgrade and certainly before looking at, rolling something into production, highly recommend that those get reviewed. So what comes next? So we've already started our next project. As I mentioned, we do two releases a year, and, you know, the planning cycle kind of overlaps. So we'd already planned what we were gonna do next before we deliver this release, and we're already starting to plan the release after the next one that that you'll see. But there are a number of things that just kinda give you an idea, and this is not a not a guarantee, by any means because things change, in the software world. But we're looking at a number of new dependency product geared towards line of business users that need to, do things like submit their own jobs with parameters or maybe review schedules that run regularly, look at output, potentially even some operational activities, you know, such as doing rerun and canceling for those things. But more of an interface geared towards that more casual or emotion user rather than the admin interface that you guys are used to today, which has all of the different permutations and options of the, you know, the powerful flexibility we have in the tool, available, but are not necessarily relevant to the more casual user who says, I need to run this report, or I just wanna schedule this report to run next week, or I wanna review when my financial closing is gonna happen, those kind of activities that we can do. Right? We're also working on a replacement for our messaging bus, the OMS. Now I've written longer term next to that because that will not be delivered in the next release, but work is ongoing. We actually started work on that a couple of releases ago. It's a it it's a big project, with far reaching and a lot of testing is gonna have to happen. And we will support the existing message bus for some time to come, but we're gonna introduce a new one, you know, definitely definitely not in the next release, but potentially in the release after that. So you'll start to see that. That'll give customers time to acclimatize to it, run some testing, and and so on. And it'll have some advantages over what we currently do, in terms of that. Kind of the history or the story behind that is that when we introduced the OMS, we looked at the message bus market for what was commercially and open source available, and we didn't find all the features that we needed. So we developed it. And I think it's a great great piece of technology, but there are things that we need to add to it in terms of functionality and flexibility and throughput and so on that, you know, have driven us to say, well, if we're gonna invest a lot of time and effort into, our message bus, The message bus market has moved along very significantly. So we reviewed the market, and we've looked at what's available, and we've made some decisions about what we want to integrate and implement. So we're using, you know, an open source source product there, and, you know, that's gonna replace that, and it provides some additional things in terms of the way the high availability works and some other things that really we're we're kinda quite happy with in terms of how it's gonna help improve, the way the experience of the product and the functionality there. K? Little thing that we need to do, we're gonna do quickly is that this is kind of historical the component of the agent that runs workload on behalf of the controller, reports back its own version. So each each component of the agent has a different version, and they're not necessarily the same. They all start off when we do a release at, you know, seven six dot zero dot zero. But if we push maintenance out, we may update UDM and UCommand, but we may not update UAG. So UAG's version number doesn't change, which means that you've got a package version of, seven six zero one, but the controller shows seven six o o. Okay? So we see that as a problem. So there's a couple of things we're gonna do there. One is we're gonna get it to report back the package version, and also then actually, probably not initially, but further down the line, have a way for it to view all of the different component versions as well, which also will help us from a support point of view is that we do occasionally get problems where, an upgrade was, some problem with an upgrade and the procedure that was used to upgrade an agent, and we get versions that are out of whack for the different components. So we can take care of that as well, identifying that more quickly. Some new authentication options for the various agent options in terms of how they authenticate with, the different operating system components. So UAG, UCOMAND, UDM are the major ones. There are others out there that will see that implemented. So that is something else that's coming. I know a number of customers are keen to upgrade their IBM z environments to the three dot one version. We should have validation within the next couple of months for that. That's not release dependent. Assuming we don't hit any, code changes required to support that. Not expected from the initial reviews that have been done, validation is in progress. So those of you who are waiting for that, we should have that as soon as possible. We're looking at on the z platform, monitoring a number of different things outside of what we do. External job monitor is one of them. So we're working towards capabilities there. And, again, we're working on a a new updated agent for the IBM I platform, as well. That's, again, longer term. You may see some components of that or some pieces of that in the seven seven, but we're not guaranteeing that at this point. But full functionality, and there's a long list of things that we want to do with that, will come over several releases. And I know there are a number of customers on the security side that are interested in us in agreeing with HashiCorp as a third party secrets provider. So that's gonna be rolled out. I've also heard of another one, name escapes me right now, that's come up a couple of times. We're reviewing that. You know, we basically wanna support as many third party secrets providers as possible. So if you're using ones that we don't currently support and we support the the CyberArk and we support the, you know, the AWS and the Azure stuff, if there are others out there, let us know. We'll add them to the list of ones that we wanna get to. And we're also busy looking at validating Oracle's twenty three c, latest database, which isn't quite GA yet, but we've put it in that project because it should go GA when it's in that during the life cycle of that project. K. So this turns us on to questions and, hopefully, some answers. Yes. Thanks, Colin, and great presentation. I will jump in with some of these questions. I think first, we have some people who are watching along who are sharing where they're watching along with, and I think that's really fun. So, we've got some folks from Tulsa, Oklahoma. Hey, Emily. We also have some people calling in from Byron, Michigan, and then we have some international folks from Denmark. So I just wanted to share that I'm at our Stone Branch office in Atlanta. And, Colin, maybe you can share with everybody where you're calling in from. I'm in, I'm on the Gulf Coast of Mississippi. Awesome. Very cool. So we're not too far apart, and we have a lot of diversity on this call and and where people are calling in from. So Yeah. Awesome. Awesome. Awesome. Exciting stuff. Okay. So let's jump into some technical questions. I think the first one we have for you is, how should I get started with UC in a container? So what we can do is provide provide I'm I'm still working on we'll provide a documentation page. Reach out to me if if you really wanna do that because I have the notes for it. We're just just tidying them up with instructions on how to do that. Basically, everything you'll need to make that happen. As I say, we will, we need to provide a, effectively a private repository to make that available. Unlike the agent, there are some concerns about putting that code on the, on sort of public access as we did with the agent because it's not strictly speaking, compiled code. Right? So we're working towards that. But in the meantime, I can give you everything you need to generate, create your own your own agents there, in terms of that for pretty much whatever platform you want. Right? I've got some examples for a couple of specific platforms, but, we should be able to help in case. And I have worked with a prospective recently who's got that up and running, so so we know that all works in environments other than mine. Perfect. Thanks, Colin. So short answer is if you get in touch with us at Stone Branch, we will make sure to get you all the resources to get you set up and running. We now have a bunch of other people who are chiming in, so I'll just name a few other places where I'm seeing people calling from. This is really exciting. We've got some folks in Indonesia, it looks like. We've got somebody from Columbus, Ohio, France, Deerfield Beach, Florida, Germany, India, Vermont. So thank you guys for all being on the call with us today. I know we have a few different time zones represented here. Oh, I'm seeing Philippines, South Africa. Super exciting. Thank you, guys. Minneapolis. Let's go on to our next technical question. So will UC in container run-in Red Hat's OpenShift? Yes. So that's an interesting interesting kind of story behind that. So I've been using UC in containers forever, and I just used, the Tomcat image that, Apache publishes, as a basis for it. But internally, we I know we have a lot of customers that run Red Hat, and the issue there is that, you know, in general, people that run Red Hat want to use and and, certainly, if we wanna get certified on the Red Hat system, we have to use the, the Red Hat images and specific UBI nine, which we use for the for the agents there. Okay. Now Red Hat doesn't provide an image that contains Tomcat, but, we we basically are able to create an image from that base image, install Tomcat, to do that. So so the install steps or the setup steps are a little different, but it yes. Absolutely. It it's doable, and and we've done it. We certainly have. And when we go with the public, we we will we'll provide both, and potentially others if you run into other requirements. Right? So Awesome. Thank you for that answer. The short answer. Yes. Yes. And we will make it happen. And get in touch with us, and we can show you how to do it. Okay. Next question for you, Colin. Can multiple SAP job steps be added to one task, or one job step equals one task? So and I'm not the SAP expert, but as I understand the question, the answer is yes. However, there's there's not so much a caveat, but something to be aware of. So I think if we go back to the controller screen, which is this one, and I closed that closed down my SAP window. Oh, yeah. Okay. Don't wanna save those changes. I didn't keep it open. So my left hand menus could be easier to navigate there. I had it closed for just to give me a bit more screen real estate. But if we go to integrations and the SAP tasks, with the enhanced form, which which we talked about earlier, which is the one that's called all the changes in it, you have the ability to add job steps. Right? So we we kinda looked at the different supports, so whether that's steps or whatever. So here on the job steps. So, yes, you can, in terms of that, but that that's for the enhanced one. That was originally introduced, in the seven five release. The seven six release extends the things that we can do. So here we see we've got multiple job steps. Okay? Now as far as I am aware, we cannot currently, do a rerun at the step level. That is something we're looking at, but that's something to be aware of. And it may be that if you have a you know, within a workflow, if you keep it to one SAP job per job step, then from a restartability point of view, at least as now, that's potentially the better way to go. It depends on your requirements. So that's kind of the only thing I'll I'll I'll say there, and we've probably exceeded my knowledge of SAP at this point. However, if you wanna have a follow-up discussion, we've got plenty of SAP experts in house that can talk more knowledge be than I can on SAP. Awesome. Yep. So let us know if you are working specifically with SAP, and we can put you in touch with the experts who can make sure that we're answering your questions correctly. Next question for you, Colin, is do we plan to support more databases? Oh, I'm sorry. Did I laugh out loud? My apologies. Not if I not if we can help it. So I know that there's one in particular that seems to come up, and we are considering it. I'm not even gonna mention which one it is. We would prefer not to, and the reason is that we already have issues where the different database we support have different capabilities, and that restricts what we can do. Also, from a testing point of view, if we add a database, it complete it it adds complexity to our testing matrix. And we already make a very significant investment in QA effort. We do our very best to test every combination of different versions, different platforms, and everything else out there. And although a lot of this stuff is automated, even some of the automated tests run for a long time. So if you have specific ones that that you want, drop me a note. You know, we'll we'll see where that is, but the my preference would be not to do that because there are other things I'd rather spend the development resources on in the product. However, if that's what the market demands, obviously, you know, we're not gonna stand in the way of that. But the answer is I'd rather not. Right. So you just have to wait around and see and stick with us. And if we cross that bridge, we'll get to it. Cool. Next question for you, Colin. Will the ability to update the due out time on a failed task instance be coming? Due out time, failed task instance. Good question. The due out time okay. So this is the because you're using a terminology. I don't think we're using the product, task is, So this is related to, when you rerun a task is, being able to reset the, the service level for it. Right? Hopefully. That that's and that's what I know we're looking at, and and even I'm that the right terminology is escaping me. And I can't put my finger on what we decided for a timeline for that one. What's the Okay. Okay. So if you are the person that I'm making I'm making a note of it, and I wanna confirm that that's what I think it is. Cool. So if you're the person who asked that question, we will reach out to you and follow-up on that question and and ask for a little bit of clarification. So we have five minutes left, Colin. I have one more question for you that I'm seeing. This question is any testing with UC on RHEL nine? We are on CentOS seven going to RHEL nine. Yeah. So abs absolutely. Yeah. So, in fact, that's the one of the container environments I have is the UEA nine, the Red Hat Enterprise Linux nine. All the yeah. Yeah. And we we use that in house as well. So so, yes, we're we're we're perfectly fine on, Red Hat Enterprise Linux nine. Not a problem. Super. And thanks to our audience. I see you guys are keeping the questions coming here. We just got one kind of last minute question come in. And this question is, how is the critical flag going to work? Will we be able to indicate some tasks are critical? Oh, okay. So this is a big topic, but we'll try and answer it quickly. Okay. So what the critical flag means is that if you're using the critical path thing, okay, if a task is on the critical path, that's the critical flag. However, the way the critical path works is you kinda have two options. You can let us calculate it, which means that we basically just calculate the longest path or paths through a workflow and decide what that is, or you can specify what the endpoints are. In other words, which jobs are critical. Okay. That's different to the critical flag that has its own different flag, and I forget what that flag is called, but there is a flag for that. That's not the one I mentioned when I mentioned the SLA. It's whether it's on the critical path or not. But, so so so the answer to your question is yes. You can indicate whether a job is critical, and then the critical path is calculated to that point, and you can see it all based on that. Hopefully, that makes sense. I don't have time to demo that right now, which would probably be the way to make that make sense. No. That was great. Thank you for walking us through that logic, Colin, and thank you everybody who has joined us today. I have one more question, that I just saw on the call that I think is more directed towards me and my team, and that's, will these slides be available after the event? And that is a high Definitely not. No. Yes. We will. Yes. Exactly. Exactly. So we will we will be reaching out after the event with the slides and also a post event recording. So just just look towards your email after this event, and we'll send those right over to you. Then wrap this up. I wanna thank everybody for joining us today, and thank you, Colin, for the great presentation. In the pop up on your screen, you should find a link to take our short event survey. We would really appreciate it if you would let us know what you thought of this webinar today. It should take you just a couple minutes. That way we can continue to improve on our Stone Branch webinars. Like I said, later today, you'll get that email that has a link to the recording of this event as well as those slides so you can rewatch and share with your entire team. And if you have any other questions, you can reach out to us. Don't forget to visit stone branch dot com to find additional resources and information about our upcoming events. Thanks everybody for joining us, and thank you, Colin, and we'll see you guys at our next session. Bye, everyone.
Optimistic locking is the change most Universal Automation Center users will feel first. Since the controller was built, simultaneous edits to the same record ended with the last update winning. That was tolerable when a central admin team owned every definition. It's a real risk now that citizen automators across an organization create and maintain their own. UAC 7.6 captures the version or updated timestamp when you open a record and checks it before writing back. If someone else changed the record while you had it open, you get a prompt instead of a silent overwrite. Pessimistic locking, which would lock the record in the database, was considered and rejected over performance and scalability concerns. Agent records are the one edge case, since heartbeats update them constantly, so locking can be disabled for agents through a property.
Workflows gain the ability to launch from a chosen starting point. In the launch with variables dialog, or on a trigger with a single workflow, a vertex selection button lets you pick which jobs to run. Mark a vertex as a root job and the workflow runs from that point onward. Leave it unmarked and only that task runs, with no dependencies considered. Any sub-workflows included run in their entirety. Worth knowing: run and skip criteria are not evaluated on the vertex you select, on the assumption that selecting it means you want it to run. Criteria beyond that point are processed normally.
The Universal Controller is now container ready. It could always run in a container, but 7.6 adds standard out logging so no log files sit on the container filesystem, and transient node registration so a rebuilt container removes its old cluster entry instead of leaving a dead node behind. A supported image was in progress at the time of this session. In the live poll, most attendees said they'd use it for previewing releases and for development sandboxes, with around twenty percent interested in production.
A new universal event fires on task SLA violations, usable with outbound webhooks for notifications or to open a ticket in a service management tool. The task status changed event picks up a critical flag. Webhook-launched tasks remain excluded from usage-based licensing counts, and the reason for launching a task rather than firing a silent email is visibility: a failed notification shows up in the activity display instead of disappearing.
Universal Templates add regular expression validation on text fields, so you can enforce email or phone formats with a pattern and a hint. Credential fields now accept variables natively, without the extra Boolean and text fields that used to be required. The SAP enhanced form continues from 7.5, adding external program and external command job steps alongside ABAP, dynamic lookup for target servers, and expanded print parameters.
Security permissions gain business service exclusion criteria. Rather than listing every business service a user should access, and hitting a field limit imposed by some backend databases, you can now grant or restrict based on not being a member of specific services. Aggregation still applies, so an explicit grant elsewhere will still take effect.
Performance work targets two specific pain points. Launching the same workflow definition many times in quick succession no longer single-streams on record locks. Audit purges now run in chunks, matching how other purges already worked. Agent and controller communication moves to a protocol version that generates one-time encryption keys automatically, with nothing to configure.
Colin closes with what's ahead: an interface aimed at line of business users who submit their own jobs and review schedules, a replacement for the OMS message bus built on an open source product, HashiCorp as a third-party secrets provider, external job monitoring on z/OS, and a refreshed IBM i agent.
Key Takeaways:
- Optimistic locking prevents concurrent edits from silently overwriting each other across all definitions
- Launch a workflow from a specific vertex, either running from that point onward or running that task alone
- Run the Universal Controller in a container, with standard out logging and automatic cleanup of transient cluster nodes
- Fire a universal event on SLA violations and route it through webhooks to notifications or ticketing
- Validate Universal Template text fields with regular expressions, and use variables in credential fields directly