Product Update: What's New in UAC 7.5
UAC 7.5 offers OpenTelemetry support, multi-factor authentication, enhanced truststore and keystore administration, z/OS JCL editor updates, and a new self-service wizard for SAP.
Hi everyone and welcome to Stonebranch Online 2023. In today's session, we're going to be sharing what's new in the latest release, UAC 7.5. My name is Caroline Geckler from Stonebranch and I'll be your moderator today. Before we begin, I'd like to cover just a few things. Firstly, this event is designed to be interactive between you and the speakers. So if you have a question, click on the Q& A tab in the dashboard and submit your questions to us. In the event we don't get to your question, we'll follow up with you after the event. Additionally, in the right- hand corner of your screen, you'll find some handouts related to our session. We'd love if you take a look. With all that said, it's my pleasure to introduce our renowned speaker today, Colin Cocksedge, who's the Director of Product Management here at Stonebranch. Let's go ahead and get started. Colin, take it away. Great. Thank you Caroline. Welcome everybody to our what's new in UAC seven five product update session. We do these regularly and we have another release that's just come out. So let's cover what we've got in store for you today. Okay, so we're going to cover a few things. As always, there's a lot of information in the release and this is really a highlight session. So we're going to cover a couple of important pieces of information upfront. We're going to talk a little bit of an introduction to a new topic for Stonebranch called observability and give you some background on that. And then we're going to have a live demonstration of some of the new features that we have. But as I say, it doesn't cover everything that's in the release. We have a lot of content in all the releases and we just don't have time to go through all the little details. So I do encourage users of the product to check out the release notes and the maintenance lists because they will cover other things that we may not have covered in this session today. Okay, so getting into some things that we want to point out for users considering an upgrade to seven five, we try and avoid in general making changes in default behavior, but there are certain circumstances that arise where really that becomes something that we have to do. And we've got a couple in this release that you just need to be aware of and understand what potential impact might be for your environments. So on the universal events, we've added a new universal event in the seven five release. And during that implementation, we reviewed the security requirements for universal events and we decided that it was probably prudent to make everything behave in the same way. So we've retrospectively gone back and changed the security behavior for events that already existed, which were the property changes and the agent status change events, which now have security requirements which they hadn't had before. It's unlikely that this will cause an issue, but you just need to be aware and review that information that they now require the relevant repermissions to the items that they cover. The other side, which will impact z/ OS users that use a specific feature. When you're using override JCL, you have the option to have that JCL automatically deleted. And if you use that option, previously what happened is that the counter, so if you decided you wanted to use override JCL for the next three runs, the counter was previously only decremented on success. We've added finished status to that. We felt that that was a prudent thing to do, because if you force finish a task, it's really you're making it successful manually in terms of completing that. So we've added that into what's considered when we decrement that counter. So again, you just need to review those and be aware of those before you do an implementation of seven five. Okay, so one of the big headlines with UAC seven five is something we're calling observability. And we say here, observability with OpenTelemetry. So effectively what we've done is we've implemented something called OpenTelemetry, and we'll talk a little bit about this now and we'll also talk in more detail in the session we have tomorrow about what this is, how to configure it, what the impact can be to your environment. But we're just going to talk a little bit of background here today. So observability is a topic that's becoming more and more pertinent I think for IT organizations. And really what it is is it's kind of an evolution of monitoring, and it really allows applications to provide data that can be used to provide actual insights based on things which we're calling metric trace and log data. So basically metric data is stats around what's going on in the environment, and those help you identify if there's a problem. Trace data is a little more detailed, which will give you information in terms of potentially where a problem resides, where the problem is. And then log data will give you the more detailed information at the lowest level, which will really help you drive to what the problem actually is. And the reason observability comes into play is that it's a way of, we're basically making UAC observable, which means that external third party observability tools, and we'll talk about what those are as we go through, have the capability to take this data and use it in conjunction with data coming from other applications in your environment, coming from your infrastructure, and give you a complete picture of the health and wealth of your IT environment. So it's a little different from the monitoring that we traditionally had in the product and which we're keeping in the product through the dashboards and reporting and so on. It really goes into a much more of a drill- down lower level and gives you the ability to combine data from different sources to work out what's going on in your environment. So basically we're providing metric and trace data with the first part. So the big push has been in implementation of OpenTelemetry, which is an open source standard for formatting and exporting telemetry data. So in this case, we've implemented at this stage metric and trace data. Log data is something that we will add into future release as we go. But also what plays a part in this is a feature we've had since the 7. 1 release, which is what we call our metrics API, which puts our metric data in a Prometheus format, which gets a lot of the system data from the controller. And we've expanded the metrics that are available with that as well. So that has a part to play. A lot of organizations are just starting to get into observability. There are a lot of commercial observability tools out there. But for customers that are new to observability, we're making a recommendation for some sort of a reference architecture of tools that you can use to take advantage of the telemetry data that we're pushing through these new features and enhanced features in the product. And there'll be a lot more detail on that in tomorrow's session where we'll talk and go through exactly what that is, give you a view of the kind of information you can see and how you get to it in that. So OpenTelemetry itself, it's an open source framework that standardizes the collection exports of observability data to various systems that you may have. So if we look at the picture here, we can see that from the controller point of view there at the top of the picture, we've got the UC Metrics API, which is producing the metrics data from the controller. What we've added in seven five release is the OpenTelemetry collector for the metric and trace data. And that's hooked into the controller, it's hooked into the OMS and UAG components of the agent, and it's also hooked into the extensions. And hooking it into the extensions is where we can add a lot of power to the telemetry data that we're providing by allowing the extensions to collect data and publish data from the third party applications that we are managing, the ones that we're integrated to, the workloads that you are running. And again, tomorrow's session, we'll cover some use case examples of that and we'll talk about exactly how that's integrated, how you can integrate that if you build your own integrations. So for the reference tool architecture set, we're looking at tools like Prometheus and Grafana for the metric data and Elastic and Jaeger for the trace data. And the trace data UI is embedded into the controller. You can embed any of those tools that you have and we'll show you how to embed the Jaeger tool in tomorrow's session there. So some examples of the usability, use case examples for the observability. We've implemented into a couple of different integrations that we're publishing on the marketplace in terms of collecting data from different applications. So the ODBC SQL task basically now has the ability to give you information about the rows returned, give you information about the data, the values that are returned from SQL queries that you do. And you can use that for a variety of different reasons. For example, a use case around that would be that you can confirm that the query you have is returning a sufficient number of rows. If you get a low number of rows returned, there might be something to do with the fact that maybe some processing hasn't happened, maybe some data hasn't collected, maybe a Pacific region hasn't reported their sales data, whatever it is, it gives you that kind of level of validation of the data. And again, you can do the same with the value in. If you're collecting sales data, you could look at doing a pass and saying in your observability tool, you set thresholds and say, " Look, we're expecting revenues of at least five million dollars," whatever it is. And if you get values return that are outside of those thresholds, you've got some idea that there's something that might be need to be investigated in terms of looking at the quality of the data that you're processing. So again, as I mentioned, Mike and myself will be doing a session tomorrow where we're going to look at those new features in more detail and we're going to cover in some depth a little more about what observability is. This was just a taster of that. And also we'll then get into looking at how it's implemented, what control you have over that, what kind of data is available. And Mike's going to do a nice little demo of the reference architecture that we have to show you how you could set that up in your environment. So there are a number of things that we've got into in the release. More and more with our releases, we cover a lot of wide- ranging themes and we've done some usability enhancements, particularly around the SAP task. And we've taken a different view of looking at how we manage this specific integration. We've made it very much look and feel familiar to users who are familiar to using the SAP user interface themselves. So the idea here is this is much more friendly for self- service users, business users who are doing their own automation to allow them to build the tasks out themselves within the tool without having to have more technical knowledge of how our connected to that environment, our integration to that environment works, okay? We're keeping the existing view or what we are calling the legacy view. So for more technical users who are used to that, familiar with it, prefer to deal in scripts rather than forms to select the different steps that they need to run, they still have that capability. And we've taken advantage here as to looking at a couple of different user interface techniques and capabilities that we prototype with this that we will be rolling into other areas of the product in the future, which makes this exciting from my point of view is that this is something that ultimately is going to give us more far- reaching benefits to the usability of the UAC UI. We've got a number of different options here in terms of enforcing things. And again, for the self- service side is for users that are running their own workloads through the UI, we've made it so that we can enforce that they will basically have to deal with the variables. Rather than accidentally launching a tool, launching a task that has variables, they now have the ability to say that that screen will always pop up. They're given the option to provide override variables, and also we've given the option to lock that so that the variables defined or the task are the only ones that can be impacted from that point of view. So we have a number of other things here on the user interface as well. The scenario around this one is very much that we have the capability to provide an undo and redo from bulk commands that we're issuing through the user interface. So for example, for enabling and disabling triggers, you could create a filter. It gives you a list of triggers. You go ahead and you enable those. And typically you'll do something like that for maybe a maintenance window where you want to take down a specific application or group of applications because you've got something going on. Maybe you're changing because it's month- end or year- end or some kind of special processing. And then you have to go back and work out which triggers you disabled and work out how to enable them later. Well, now you have the ability to go to the audit and see all the triggers that were disabled based on that filter and undo that action. In other words, re- enable those triggers as we go through there. So what I'm going to do now is we're going to jump into the product and go through a number of different things here. What we have in terms of one of the major things that we've done is affected the security here. So I've gone through the log on screen. Usually when I do these demos, I'm already logged on, saves a bit of time, saves you watching me fat finger my password. But we've added for local user accounts a two- factor authentication. Typically, a lot of users will integrate with single sign- on or they'll integrate with LDAP. And you can handle two- factor, multi- factor authentications through those authentication methods as you need to. However, we always recommend that you keep it one, at least one local user account, the admin account. For audit purposes, it's great to have that protected by two- factor authentication. So when you set up a local user account for two- factor authentication, it's going to pop up this dialogue, which effectively means that we've got to configure this with our authenticator apps. So whether you are using Google Authenticator or Microsoft Authenticator, you can just go ahead and scan this URL and you can't see this, but I'm doing this right now and I'm selecting then the authenticator app to add the account. So I've added this account in my authenticator app. So now if I go through, and the second time I log on or all future logons now with this user ID will pop straight to this screen, where after I've entered the password, it's asking for that additional code there for the two- factor authentication from my authenticator app. So I can go ahead and enter that. And oops, it just timed out, so it's given me a new code. So let's enter the new code. Apologies for that. That should perform the login there. Okay, so the flow for the login is we do this on the initial login. Once you've established a session and that session's remembered in the browser, timeouts of that session will not go through that dialogue again. You'll just have to enter your password to unlock the screen if your session's timed out. So it's just on that first login when you create the session and each time a new session is created. For existing sessions, you are good, you don't have to go through that dialogue there. But in the user dialogue here, you'll see that the login method, we've added this standard authenticator app there, and you can just select that for the user. We can see for my user, that's the one that's selected. So you have the ability to reset this. If for whatever reason somebody lost their phone, their authenticator app and they need to go through the initial dialogue again, there's a right click option to reset this, which basically will pop up that initial dialogue again where the user gets to scan the code or see a URL that they can type in and use that to set this up. All right. Let's get into some of the other things that we've got to... I'm just going to search for the different tasks that we want to go through today. Sure, I got that right. Yeah, searching member business service. There we go. All right. So one of the things we've done in the UI, when you click on an item or double click, it opens up in a window. It's been like that in the product forever, which is great if you just want to go in and look at something and then close it or you want to create a new definition and again, put all the information and close it. But it can be a little annoying if this window pops up and you then want to go off and do something else, okay. Because the window's going to cover what you have. You've either got to minimize it, move it, or close it and come back to it. You've always had the option to do a right click and open in tab, but now you've got an option in the user preferences to change the default behavior for that double click or click on the icon. So if we go through the preferences, we've got a couple of different ones here. Record open in tab and record new in tab. So I can now set those to yes, I want to open that in tab if I'm doing a new record or I want to open in tab and change my default. So now when I go ahead and click on this, it's going to open it in a tab and then I've got the ability to go somewhere else in the product, look up information, double check something else without this being in the way. So you can set that at a system level or each user has their own preference to how they want to do that. You still have the capability if you want to open it then in a window just by using the right click. We've just changed the default, but all of the options are still there. All right. So on the SAP task, as I mentioned already, so you'll see now under SAP details, we have a legacy and enhanced view. So when I create new records, the default will be the enhanced view. So the thought is that users are probably going to want to use the new capabilities to create new records. But we have not done any kind of conversion or migration of existing SAP tasks that you may have. They will still display it in the legacy view. And the reason behind that is that a lot of them contain scripts and scripts can be something that would take us a fair bit of effort to do a conversion to make sure that we get everything captured and done in the right way. But also we think there's a potential performance hit on an upgrade for users that have hundreds of thousands of SAP tasks to go through an upgrade and do the conversion for all loads. So we've made the decision to keep your existing tasks at the legacy view, new tasks will get the enhanced view. And if we look at some of the features of the enhanced view here, so we can see on the enhanced view that we have a number of things that we've done differently. Things like email notification, information is being pulled out into a little popup. So this is information that you may fill in, but usually you don't reference very often. Certainly when you go back and view the task, you don't necessarily need to see this information here. The other thing we've added is lookup fields. So we're doing that two- way communication that we do in some of the integration tasks, that we do in the PeopleSoft task where we can go and connect to the SAP system and get the information we need from the SAP system. So if I can't remember the language code, I can go ahead and select this and it populates that list for me. So we can go ahead and select English as the language here and then we can close that so we have that there. The other thing that's different is we don't have scripts in this anymore, so we have job steps. So if we look at the job steps here, we can go ahead and we can do what we need to do in terms of looking at the information here. So we can basically get the information we need from the SAP system. Oh, let's put a filter in. This is just to minimize the query. So I'm just to doing a basic query on a generic query there. So when we look at zero, we're going to put in zero two. Okay, we can fill out the other information if it's available there. There are no variants for this. Override the user name, use a temporary variant if we want to to override the variance there. But we can go ahead and save this and then I can reorder these if I want to. So this effectively is the script. So this is going to run three ABAP scripts in this order as if I put them in a script, but we've now got this informed much easier for the user, the less technical user to deal with. The other thing you'll notice is that the type is grayed out. Currently, we only implemented ABAP programs for the seven five release, the seven six release. The next release will include the other items that are available to call in scripts such as external programs, commands, those kinds of things that are also available. ABAP programs are currently supported on that. So we have all that sort of nice new capability in there. And this should be a lot more familiar to users of SAP users that are familiar with using the SAP UI there. All right. So if we go into workflows here. I want to save that, so that's good. All right, so previously if I launched a task, it would just launch that task and I had to launch with variables, but I now have on all my workflow and task definitions, the ability to enforce variables and lock variables. So that way if I just click launch, it's going to pop up the launch variables dialogue. So in this case, I always want to provide parameters for this workflow or I always want to review the parameters that we have there. So I now have that capability. And what this also does is during this dialogue is this prevents me from updating the name or adding, these are grayed out, or adding or removing any of the variables here. These are locked, which is what the lock variables does. The enforced variables pops this up, so now I can come in and select the information that we need based on filling this out correctly. So again, little bit improvement there for users that are using this from a self- service perspective, have that capability to do that as they want to. So also you'll notice that in the workflow definition, we've added launch with variables just so it was always there if you did the right click, but we wanted to make it front and center. And also we've added that on the workflow editor. It was always one of those things that we didn't want to, people had to go in and they could launch a workflow, but they couldn't launch the variables. They'd have to go back if they're reviewing it. So now you have the ability to launch the variables. But again, the enforced variables is enforced from the screen as well from that point of view. So you have that capability there. Also on workflows, if we go into workflow tasks, if I create a new workflow task, previously I had to save the task and then I could go in and edit the workflow. But the flow really is that when I'm creating new workflow, I want to start adding jobs to that workflow immediately. So we've updated the options available on save to give you a save, save and edit, which saves the task. I'll give it a unique name, which saves the task and drops you straight into the editor. So now I can start going adding tasks to this as I want to, as we normally would do. Go ahead and drop those tasks, workflows, whatever we want into then it join them together. So it kind of saves a step in the process of creating a new workflow in terms of that. Okay, so for the triggers that we have, I got the time triggers. We kind of talked about this already, but if we look at, I'm going to create a quick filter. So we've created a filter and I've got the option here to run a command on everything that's filtered here. Particularly useful if you get a list that covers more than one screen so you don't have to do them in groups. Everything that's filtered will be available with their own command option. So we can go ahead and we can enable these and this will, oops, they were already enabled. I'm sorry, let's disable them. Okay, so we've disabled those there. We can go into, now if we go into the audit. And as of a couple of releases ago, you'll find that users have access to their own audits. So any user that has the ability can do this. So we'll see in the audit that we have the disable trigger, which is their own command, which actually generates two child audits. So each one has its own audit. We could go in and undo those individually. But really what we want to do is we want to undo this one which contains these two commands. So we can go ahead and we can undo that and we have go back to our time triggers. We should see those now enabled. So again, useful feature, we'll probably expand that to other things in the audit as we go through. We're just reviewing use cases around the various things that might be useful for that. We felt the triggers that seemed to be a fairly common action that people disable and enable groups of them, and it just allows you to keep that selection together so that you can undo that command as you want to. All right. So workflows and tasks now have a new option available, which is I find where it is on here, which is called previous instance wait. And you'll see two things here. We've got override previous instance wait, which I'll get to in a second, and a previous instance wait. So it's fairly common, particularly where we've been involved in doing migrating customers from solutions that have schedule plans, daily plan type schedules is that they want to basically have the task dependent on the previous run of itself. And there's been a number of different ways that we've been able to implement and achieve that, but we've just added a global option here which allows you to do that. So you can select having a task that this will wait if the previous instance of it is still running, if the previous instance, if it's a task in the same workflow or you can wait for all possible instances of it and say, " Hey, everything that's out there in the history has to complete it before we'll consider running this or everything that's in the history that's in the same workflow container and so on." So you can set that now at the workflow and/or task level, but you have the capability then to override that. So if this was a workflow that was in another workflow that was waiting for the last instance, we might want to override that and say that, " Yes, I want to override it, but I don't want this to wait." So the container workflow was waiting for all and now we can override that. So you've got that option then for individual tasks within a workflow to override that option as you want to. So it gives a much cleaner, easier way to implement that, having it wait for itself to make sure that the previous days or the previous run's workload is completely finished before you start the next run. On the administration side, we have a new option for truststore settings. So basically what we've done is we front- ended the truststore. And the truststore is used for, we have obviously a truststore and a keystore. The keystore will follow. But the truststore very much gives us the capability to allow us to have a user interface in front of the CA certificates that we're managing. And the CA certificates are used in a number of different places. For example, the web service tasks use them, and that's usually one of the areas where you need to add a CA certificate or a trusted certificate because the situation is that you may have a self- signed certificate for an internal application so it's not in the standard list of certificates that come with the Java implementation that we use. So you have the ability to add it, review it, and you can see you have the capability to see which ones have expired. And if you had a better security setup, and I have the security's not being configured correctly on this, so I don't have the capability, but I can import certificates here. And depending which component is using it, that will have immediate effect. So basically what happens is that when the controller starts, it loads the security context for the Java environment, which gives you access to all this. Now there are certain components that use that security context, in which case, when you add a cert in order for that to be effective, that will require a restart of the application. However, things like the web services tasks, they basically access those on an as needed basis. So they don't use that default security context, so they won't need to restart for that. And that's usually the more common thing. You'll need to be aware that when you add a new certificate or the leader certificate will make changes here that you'll need the capability. You'll need to do that on multiple nodes if you have a high availability environment because each node has its own security context in terms of that, you can certainly share the trust store, which is a file on the file system between the environments depending on your setup. But if you haven't done that, then you just need to make sure that you do that and it does pop up a notification to tell you when you add something, I believe, " Hey, go and do this on other nodes within this cluster," because you'll need to do that. Okay, all right. Another one, which is very much I think a hidden option. So if we look at the backend database that we have in the system, so previously it's been configured that the password for it is in the configuration file. So it's in the uc. properties, and that obviously when we read it the first time we encrypt it, store it back there and that's used. So we've done a couple of things to improve that because more and more people want to change these passwords on a regular basis and some cases it's automated in environments. So the first change we've made is that we've made that a refreshable property. So there are various properties within the controller that refresh automatically and you have control in the properties of how often that refresh happens. Usually I think the default is 10 minutes, but you can set that down or up if you want to. We'll look at that, look for changes and refresh applicable attributes as needed. But what happens now is that this is now a refreshable property, but also you have the ability to add configuration for third party SQL providers. So that's CyberArk, AWS, Azure in terms of that. So that password can be stored in a third party SQL provider, and we just get that as we need it whenever we need to do a connection to the database in terms of that. So you have the ability to configure it that way as well to automate that process. All right. Number of updates for clients using z/ OS, quite a few wide- ranging options we have here. So if we go back to my list of the tasks here, I didn't put it on that list, so we'll go to it directly. For some reason I didn't get the business service right for that. So the first thing we have on the z/ OS task is, and those of you, let's just open that. It's on tab, make it full screen for you. We'll notice that we've got a new icon here. So if you're given permissions to do this, so there are properties to allow you to edit the JCL, viewing the JCL. If you've got read to the task, you can read the JCL. The ability to edit and/or view and/or edit the JCL in both the JCL location if you're using the override location there as well. So very simply just click on the edit icon here and it'll come up, populate the agent. If you've got an agent defined here and also the credentials. And the credentials are not pulled from the task, they are your credentials. We want to make sure that you have access to read them. Those credentials will be checked that you have updated access to that. And that is set in a user property here. So just show you that quickly. So in the user preferences you have the ability to set a default JCL credential to populate that in if you want to. So I've selected my credential here so when we do that. So we go ahead and view that JCL. Okay, so it pops up that JCL. I have the ability to edit that JCL and save that away if I want to. I think I've got authority to do that on this system. So we'll just add a blank comment line here and I can go ahead and save that. Before I do, just want to point out a couple of things in this JCL because it's prevalent to the next feature that we're going to do is you'll notice that I've got a couple of variables or parameters that will get substituted when this gets submitted. And those of you familiar with the JCL is that we effectively have two different ways of passing parameters in. I've done it with both so that we can see how that works. But let's go ahead and save the JCL here. And again, if we go back and view this, you'll see that it has on the member there the extra column I had. So what we've also done with the z/ OS tasks is we've added the capability, an additional capability for the simulation for JCL, so we can simulate that JCL. So you'll see in this task definition that I have parameters that I'm passing in. For the two different kinds of parameters, we do one as a set statement and one does a direct replacement if you are upgrading updating parameters in system members and so on. So you'll see I've got JCL here that does that. So in the simulation, we've added the capability to simulate that variable substitution. So if we look at the simulation record I've created for this task, you'll notice that there is, I clicked on in itself, I click on the simulation. There's a new other options in the simulation and we'll add, there's only the z/OS JCL resolution at this point, but we will add other task specific options here as they become relevant because different kinds of tasks may well have different options for simulation. So you have the ability now to add z/ OS JCL resolution here. So if I go ahead and run this in simulated mode, what it's going to do is it's going to send that JCL to the agent, which is a change for the simulation. Other simulations don't impact the agent, but it doesn't get submitted. The agent just goes through the process of updating those variables and then returns as the output the resolved JCL. So if I go ahead and I'm just going to launch with variables which will allow me to check the simulate option. Okay, passing in a couple of values here for the high level qualifier and the member name that we're updating there, we're going to go ahead and launch that. If I look at that in my activity, we'll see the simulation run to success. We can see that it's a simulated JCL, the simulation flag is checked there. So we can go ahead and retrieve the output for that. And what we see now is that the JCL, oh, I'm just trying to highlight the one item. If I open it this way, then I can highlight the one item in the dataset. It's resolved that, okay, it's resolved the high level qualifier and it's added the set statement for the member, how that will be resolved on the z/ OS side for that. So we can see that that's been done. So we can just confirm that we've got all the variables we need in here. We don't have anything that's unresolved and we can confirm that they get resolved correctly, which is particularly useful if you're using functions to generate that data just to make sure that you've got the function coded correctly in terms of what you see gets passed into this. So quite a powerful and useful function there. So I mentioned already that for when we're using override JCL, okay, we'll open this in its own window, that you have the ability to delete the override JCL. And what you'll see is that the override instance count for deletion is set to three. So again, we changed the behavior here so that this previously would only be decremented on success, it's now decremented on success or finished statuses. So if you force finished the task, we're assuming that that's a complete run and that will decrement that count and contribute towards the deletion of that if you use that feature. Also on the agent side, there's a new capability to allow you to inject user ID information, user account information to jobs that run, which is a configuration on the agent side. So we ran into some requirements around that. That's pretty standardized, but not all the JCL has that information. As we were submitting JCL, it was just a nice neat way to ensure that all the jobs got what they needed and there is some capability to put a little bit of logic in there in terms of managing how that's done. Okay, let's clean up my screen a little bit and then we'll get to some stuff that we have here. So we've added to the system events that we have. We've added a new event. So we go ahead and look at the universal event templates here. We see we have a new one for task status changed, which has a whole bunch of information. So these are events that we publish and you can use those for all sorts of different things via the webhooks that we have, which is the outbound webhooks. So for example, you could use this for let's say notifications. So previously you could do this at a task or workflow level, or you could set up a task monitor to do this. Effectively now you can set up webhooks to do something with this information. You can also use it for your integrations to third party products like portal management tools or observability tools or change management tools. Whatever you need in terms of that, pass that information out. So we've got a couple of webhooks that we have defined for that. So my scenario here is that I have two different teams in the environment. The automation ops guys and the automation ops guys use Slack. So they want their notifications through Slack, but my QA ops guys use Teams and they want their notifications through Teams. So we've added business service filtering for this. So this is basically being done on the business services. So it's the QA ops guys, okay, this is the webhook that's going to fire. If it's the automation ops guys, this is the webhook that's going to fire. And you have the option with the webhooks, and we've kind of discussed this in previous when we introduced this feature to send a real webhook, i.e. a URL that has the payload in it with all of the information, or you can have any task. And any tasks that are launched by these because these are really used for internal notification stuff, for those of you running with usage- based licensing, this doesn't count against your licensing. The task that gets launched doesn't count as one of your, because it's not part of your workload per se in terms of that. Okay? So you can see the attribute, the event attributes I have on this is that they're both the same in here, that anything that's undeliverable action required. So basically the list of things that I'd be concerned about for notification, okay, I'm not interested in notifying on workflows. I want the real task involved in it and I don't want the webhook itself. If it happens to have the same business service and it gets a fail, I don't want that to send a notification to that team. That notification will go somewhere else. But if we go in and look at the jobs I have here, so I have just some jobs that will run that will just fail. So we can go ahead and we can launch the notification tasks for the automation ops guys and we can then go ahead and do the same for the QA ops guys. And we see that those tasks have failed. And you also see that the notification tasks have run there. So if we take a look at that and the notifications I have, we'll just look at the one in Slack here. So here it is, today's date, 9: 48. So I've kept it simple. All of that information you saw in the task record is available to put in your notification. So I just have a very simple task that uses the inbound webhook or the inbound API for Slack. Same with Teams. It has very similar functionality and the payload is they have a little language that allows you to format things like a click button. So we are generating an action URL so that the user can go directly to the task instance. Give that a second to load, pop that in because it's opening in a different browser. If the user doesn't have a session active, this popped up in a different browser, so I don't have a session there, takes me directly to that task. Oops. And of course I've set up a multi- factor authentication, so I enter my code again and takes me directly to that task definition. So now I can do things like review the output, see what the error messages are, et cetera, et cetera, in terms of looking at anything that's useful there. So again, a new way to do those kind of integrations, I think a fairly powerful way. Lots of available information, really good filtering on this. So it is something that I think customers are going to use going forward for things like notifications, for things like integrations into third party tools that need information about what's happening, failures, maybe getting information about the output for failed tasks, those kinds of things that we can do. So the slides do contain some additional information. You get those as part of the package. So I think we're at the point where if there are any questions, that's kind of the overview of the top 10, top 15 features that we've put in the product this time around. But happy to answer any questions. We usually get a lot on these sessions. Yeah, thank you so much Colin. We've had really, really great participation on today's session, so there's plenty of burning questions for you to answer. So let's go ahead and get into it. The one I'm seeing most votes for in terms of audience participation, and I think the most burning question we have is what is the behavior of SAP job steps in the new UI if a job in one step fails? Do we have control to stop there and then or continue any subsequent steps jobs? Well, no changing behavior at this point, and I'm not a hundred percent familiar with, because the SAP is not my area of expertise per se, but my understanding is that yes, that's still something that I think we need a little more granularity in how we address. And there's certainly discussions that come out as part of this topic because the first pass was to get the UI where we wanted it. There's still some things that we have on the back burner for that which are coming in the next release. So I mentioned already the different types of things that you can put in those steps to add. But I think that whole issue of granularity of control, the first thing is reporting individual step status, which I believe is something we don't do, something we're looking at. And then more control over things like rerun starting from a specific step and so on. So it is a case of what's this space and I'm sure that I'll be pinged afterwards by the SAP experts in our environment if I've answered that question incorrectly, but that's my understanding there. Awesome. Thank you Colin, and thanks for the insights there. The next question that we have up for you, and this should be a pretty quick one, is I wasn't sure if the second authentication feature with 7. 5 is mandatory or if it's an option that can be turned on and off. Can you please verify? Yeah, it's an option to be turned on and off. So when you're in this upgrade, you'll see no change, right? You have the option to set that for specific local accounts in terms of whether you want to use that or not. Yeah, and if you switch it on and decide you don't want to do it, an admin can switch it off for that user, not a problem. That'll go back to the previous behavior. Perfect. Thank you for that clarification. Next question, is the JCL editing similar to editing the copy JCL in something like ESP or are you actually changing the value of the member on the mainframe? We're changing the value of the member on the mainframe. So we don't hold the JCL, currently don't hold the JCL in the product, right? So we reference it, which is why we have the override JCL. So you have that ability to go ahead and edit those JCLs, right? And you control who has access to that, who has that capability. But if you want to create an override version and edit that one, then you can do that through the tool. But yeah, we don't hold our own version of that JCL, so it is updating the member, which is why we do also do the security check through the user ID there. Although technically it's the broker user ID that does the update, but we've put a check that that user has the right authority in front of that in the process flow that we have. And again, you don't have to use it, you don't have to give people that role. Super. Thank you for the clarification there. Next question, is the launch with variables enforce functionality, something that might be aligned to triggers in the future as well? Like manual triggers or items that are truly manually triggered and you want variables to be required. That's my bad because I didn't clarify that. So those options are available on triggers too. So yes, you can set that trigger. So if you want to do that for a trigger, you have that capability that someone does a trigger now. It will pop up, the enforced variables will pop up the trigger with variable dialogue and the lock variables being there. So yes is the answer to that question and that's definitely my bad for not highlighting that. I should have done it. It's probably in my notes somewhere. Awesome, thank you. Next question. Can we edit the SAP program or variant as we can edit the JCL for z- OS task? You can provide override, which I assume gives you the same capability. So I think the answer is yes, and I don't know enough about our SAP system that have one that has a variant in it or know whether I should affect it without impacting somebody else in our SAP system. So I don't have that as part of the demo, but hopefully my answer that you can override the variance and that's there, provide temporary variance, gives you the ability to do that. Whether you edit them directly or not in terms of updating the base variant, I'm not sure and I don't think so. Great, thank you. Another question, you are showing this on a mainframe. How well is it integrated with Facets windows and Unix servers? Can you see the active log while job is running on a server? Yes. Okay. Question I'm expecting, but yes, so any jobs that are running on, depends, but Windows and Linux Unix servers, you can retrieve the output at any time. It really depends on the application as to when it publishes it, right? But typically you can retrieve the output and that gives you access to that. It's automatically, well, you have the option to automatically retrieve it at the end if you want to, but you always have that manual override. So the answer to that is yes. Perfect. Thank you. Next question. Let's see. We connect through a connection string via SAP router to the SAP instance. Where do I implement this connection string? Testing me with the SAP stuff. I knew if we did SAP on here, I'd get covered with stuff that I'm not sure about, but that's fine. Okay, so my understanding is that that will be, the information for that is either in the connection, so you have an SAP connection, which is where you define all this stuff and I don't know what we have in terms of that. Whether the connection string is in here, you can certainly provide that. And I don't know enough about whether this contains all the information you want, but this is how you define a connection. You have the capability that there are, I presume that's where it goes in here. Unfortunately, we don't have anyone with SAP on this call, so would be that. We'll follow up with that to give you a clarification example, it's just I don't have enough SAP knowledge to know, right? This has been configured by someone else and I just run the jobs. But I believe so and this is where it would be. If not, there is a configuration file on the agent which contains the connected software where I know you can put that stuff in. Awesome, thanks Colin. And to echo, we can definitely make sure we follow up with anybody who has those SAP specific questions. Let's switch gears a little bit. So here's another question. When can we expect the Azure DevOps integration for jobs as code? Good question. That's kind of outside of my project domain role. I know it's on the list of things that we are looking at. So noted that we've had another request for that. So the integrations are kind of done outside of development. So I product management for product owner for the development side, which is the features that we actually write in the product. The integrations, although we provide the infrastructure they use and the backbone that gets used for that are done by actually a couple of separate teams. But we have an integrations team that does the ones that we support out there and they have taken over ownership of the jobs of code solution. So I'll make sure that that's on my list, but I'm pretty sure I've heard that discussed and that we know that that's going to be coming. I do not have a date for that. Nice. Great to hear it's on the horizon. Another question. Any plans to offer notification support for Cisco Webex? Not familiar with Cisco Webex, but theoretically I'd have to look at it. I assume that it has some kind of interface that we could call or an API we could call or a command line we could run to do that. So theoretically it should be doable. But I'll make a note of that. Someone will have to look at what's required for that assuming the documentation is fairly easily available. This is a customer, I would say reach out through your sales rep, get hold of the services team and discuss with them what could be done because they would be the team that would take the first crack at that. But my assumption is that, yeah, that should be doable unless there are limitations on the third party application side. Awesome. Thank you so much Colin. I think we're right at time today, so ready to wrap up our Q&As. But we will, like we said, follow up with anybody who we didn't get to your question and drill down on some of those more specific SAP answers like we said. But thank you so much Colin, and thank you for your time today. Thank you everybody for your participation. It's been a really great session. Before we end, I just want to remind everybody that our series is running until November 2nd, every Tuesday and Thursday and a few Wednesdays at 10:00 AM Eastern Time. We'd love to have you join our next session, which is tomorrow Thursday, October 19th, where we'll be learning more about observability, the new telemetry features in UAC 7.5. To register for the session or for any of our upcoming series, please click on the popup on your screen. We're also going to be sharing some very special information about an exciting giveaway. So make sure you catch us right here at 10:00 AM Eastern tomorrow, or you can check up with us on LinkedIn Live. I just want to say a big thank you to all of you for joining us today. When you exit this session, you'll be redirected to complete a short survey and we would really appreciate it if you would take just a few minutes to share your feedback with us so we can continue to improve on this event. Later today, you'll also receive an email that contains a link to the recording just in case you want to watch it again. Thanks again to everyone who joined us and we'll see you tomorrow.
Observability is the headline in Universal Automation Center 7.5. UAC now implements OpenTelemetry, the open standard for formatting and exporting telemetry data, covering metric and trace data in this release with log data to follow. Collectors hook into the controller, the OMS and UAG agent components, and extensions. That last one matters most, because extensions can publish data from the third-party applications they manage. The ODBC SQL task, for example, can report rows returned and values from a query, so an observability tool can flag when a region's sales data comes in short or revenue falls outside a threshold. This complements the existing dashboards and reporting rather than replacing them, and works alongside the Prometheus-format metrics API introduced in 7.1. For teams new to observability, Stonebranch recommends a reference architecture of Prometheus and Grafana for metrics, Elastic and Jaeger for traces, with the trace UI embeddable directly in the controller. See the analytics and observability page for more.
Security gets a significant addition. Local user accounts can use two-factor authentication through Google Authenticator, Microsoft Authenticator, or any compatible app. It's optional and set per user, and it's worth enabling on the admin account for audit purposes even when the rest of your users authenticate through SSO or LDAP. Administrators can reset a user's enrollment if a phone is lost. Certificate management also moves into the UI: a new truststore interface lets you review, import, and check expiration on CA certificates, which most often matters for self-signed internal certificates used by web service tasks. The database password becomes a refreshable property and can now live in a third-party secrets provider.
The SAP task gains an enhanced view designed for self-service users. It looks and behaves more like the SAP interface itself, with lookup fields that query the SAP system directly and job steps replacing scripts. New tasks default to the enhanced view. Existing tasks stay on the legacy view, deliberately, since converting hundreds of thousands of script-based tasks during an upgrade would be costly. ABAP programs are supported in 7.5, with other step types coming in 7.6.
For z/OS, you can now view and edit JCL from the task form, permissions allowing, with your own credentials checked for update authority. JCL simulation is the companion feature. Run a task in simulate mode with z/OS JCL resolution enabled and the agent resolves variable substitution without submitting the job, returning the fully resolved JCL as output. That's a fast way to confirm your functions and parameters produce what you expect.
Elsewhere in the UI: enforce launch variables so the dialog always appears, and lock them so users can only supply values, useful for self-service workloads. Save and edit drops you straight into the workflow editor. Set records to open in a tab by default instead of a window. Undo bulk commands from the audit, so a filtered batch of disabled triggers can be re-enabled in one action. Previous instance wait gives tasks and workflows a built-in dependency on their own prior run, with an override at the task level.
Task status changed joins the universal events, publishing through outbound webhooks with business service filtering. In the demo, two teams get separate routing from the same event type, one to Slack and one to Teams, each with a click-through link back to the task instance. Tasks launched by these subscriptions don't count against usage-based licensing.
Key Takeaways:
- Export metric and trace data through OpenTelemetry from the controller, agents, and extensions to third-party observability tools
- Enable two-factor authentication on local accounts with any standard authenticator app
- View, edit, and simulate z/OS JCL from the task, with variable substitution resolved without submitting the job
- Build SAP tasks in a redesigned view with lookup fields and job steps instead of scripts
- Route task status change events to different teams and tools using business service filtering on outbound webhooks