Workload Automation for the Modern Enterprise
Scheduling batch processes is only the beginning. Enterprises require critical workloads to execute reliably, run securely, conform to complex business logic, and adapt to new requirements. Explore the business cases for switching from native or legacy scheduling tools to a centralized workload automation solution.
During this recorded webinar, our technical services team will highlight key drivers that prompt IT teams to look beyond their current scheduling tools. You’ll learn best practices for:
- Reporting on job statistics
- Granting secure access to automated jobs
- Responding to job failures
- Scheduling jobs according to more than one calendar
See how you can bring enterprise standards to your mission critical batch processes. If your native scheduler just can’t keep up, this webinar is for you.
Today, we’re going to share some of the challenges that organizations typically face as they look into enterprise solutions. Then, we’ll highlight the features in JAMS that help organizations across the globe modernize the way they automate their jobs. If you have questions, please go ahead and post those in the chat window that’s accessible through the panel on the right hand side of your screen. We will be monitoring those questions as we go. If we don’t get to your question right away, don’t worry. We will take some extra time at the end of our webinar to answer as many of those questions as we can.
Workload Automation is our focus today but it’s always good to know that at Fortra we offer an entire suite of products. I like to say that with our product suite, we really can solve any IT problem that you might have. We are a global company, with dedicated JAMS team offices in the United States, the United Kingdom, and Australia that offer 24/7 JAMS support.
Our support team has deployed JAMS to hundreds of customers worldwide. You can see a small sample of our customers here. It’s a general rule that you’re going to interact with a JAMS customer today. Whether that’s watching a show on a Vizio TV, building a bird feeder with Milwaukee power tools, checking the forecast with AccuWeather, or going for a run in Nike sneakers.
We also have an incredibly strong partner network as you can see here. I know we have some attendees in the higher education space today who are probably going to be happy to hear about our newest partnership with Ellucian, the makers of banner. Here at the JAMS team, everything that we do is for your success. From incorporating your needs directly into our development cycle to offering professional services and support services that jumpstart your automation.
Now, I’m excited to introduce our host today, Kevin Vliet. Kevin is the product evangelist and director of support services for JAMS, the enterprise Workload Automation solution from Fortra. He has led more than 100 enterprise conversions to JAMS and is an expert on the nuances of scheduling on Task Scheduler, SQL Agent, Cron, and many business applications. Kevin has presented at numerous SQL, Microsoft, and PowerShell user group meetings on topics including enterprise security for batch processes, PowerShell automation, and hybrid cloud automation.
Kevin also co-authored the JAMS University curriculum, a comprehensive training program for IT administrators to manage large scale cross platform enterprise workflows. Now, I’ll turn things over to Kevin.
Great. Thanks, Cody. Thanks for joining us today everyone. Again, my name is Kevin Vliet. I’m the director of support services for Workload Automation here at Fortra. I’ve got a few things I’d like to talk to you about today. First, we’ll cover the differences between job scheduling versus the modern Workload Automation. Then we’ll get into what really drives use cases and the need for Workload Automation, WLA as we refer to it.
We’ll cover a few of those use cases in JAMS, looking at them to get a glimpse at some of the robust functionality that JAMS has to offer. Now let’s get started. Job scheduling has been around since the days of the mainframe. Now while most of us probably don’t need to be concerned with reserving scarce time on a mainframe, we all need to find ways to execute critical business processes efficiently over and over again with minimal interruption.
The job schedule is the framework for getting work done. Now a well-defined schedule reduces labor costs, the chance for errors, especially those human errors, and ensures a timely start, but not necessarily a timely completion. We rely on stable executions and pray scheduling. I’ll explain what I mean by that in just a minute.
Now, job scheduling in the traditional sense works well under certain conditions. There are few users setting the schedule, jobs run predictably on the same runtime, the same resources required, and they rarely error out or have issues. Jobs are atomic. They run on one system and don’t really depend on other sub processes. Job definitions rarely change. Nobody’s making changes to the source or updating them, and they’re stable.
Lastly, everyone knows what the jobs do. Now, if you have those simple requirements, such as those and you just want to backup a database at let’s say 2:00 am, that’s easy. Tools such as Windows Task Scheduler, Cron, and SQL Agent work fine for those happy path jobs. But what happens when you’re a team of 10 people scheduling thousands of jobs a day? Then what happens when two of those people on the team turnover? Suddenly, you’re not dealing with little tasks and potentially little problems, you’re now dealing with an entire system.
Now, the modern enterprise defies that simple scheduling. The word job is broader than what we might think of it as because we use many different applications, platforms and teams to accomplish the work at the rate that the business demands. Now in the modern enterprise, many people are leveraging the schedule, defining jobs and schedules, executing ad hoc jobs and rerunning those jobs. Jobs are unpredictable. Let’s face it.
Some have many inputs and take a long time to execute. Some of them might execute quickly. Some fail not because of the job definition itself, but because of a simple network error. Jobs depend on different platforms and applications. Enterprises choose technologies because they match with their businesses, with the business needs, not because they all come from one vendor.
Job definitions are updated regularly, often by more than one person. Jobs have varying measures of success. Success for one job might mean completes by 5:00 pm and produces three files and updates a variable. Another job it could be something entirely different. Now, are these things that first come to mind when you’re scheduling a job? Probably not. Now are these the things that can have a significant impact on your jobs? Absolutely. That’s why we focus on not only scheduling, but on automating.
Now, Workload Automation ensures that enterprises aren’t just putting jobs on a timer and hoping for the best. That’s what we refer to as pray scheduling. An example could be when we have two jobs that run on separate systems. They both take about an hour to run and are dependent on one another. The first job runs at 1:00 am based on the schedule we’ve defined, and then we schedule the second one to run at around 2:30 am, praying that the first job completes within that 30 minute buffer that we’ve built in.
Not only is that unreliable and risky, we run the risk of that first job running long and then potentially interfering and affecting that second job. But it’s also really inefficient, because now we’re pushing out our SLA an extra 30 minutes potentially, when it really doesn’t have to be out that far. Workload Automation puts every critical business process on a path to success. No matter how convoluted each path is. An enterprise solution combines each unit of work, i.e. the job with all of the necessary configurations for it to execute successfully, while following the rules of the business.
Note that last part about business rules, there are a lot of workarounds to push jobs through to a schedule. Giving users admin rights, even though they’re a non admin, storing passwords and scripts in plain text, provisioning more resources than are really necessary, just in case they’re needed or to avoid headaches down the road. The list goes on there. But all of those workarounds have hard costs. Ignoring regulatory requirements, squandering IT budgets and risking security is no way to automate. Enterprise IT has goals and constraints. These are the driving principles behind enterprise Workload Automation.
Now we see four main drivers of Workload Automation initiatives. Reliability, sprawl, security, and failure cost. Now we automate to improve productivity. It frees our minds of worrying about those tasks, but only if those tasks execute reliably. Businesses typically encounter two types of reliability issues. The job just doesn’t execute, or worse, the job appears to have succeeded but the actual source of the job never ran. Both are unacceptable for most critical jobs. The enterprise workload automation solutions, such as JAMS, employ a host of features to ensure jobs execute successfully, adjust to condition outside of the job source and return the correct status.
Having more than one application for the same task is a telltale sign of inefficiency. One department uses Windows Task Scheduler, another uses Cron, another uses SQL Agent, and a fourth uses a different instance or even version of SQL Agent. The list goes on. Take an inventory of all of the scheduling tools in your business and ask yourself, why do I keep these separate? Does it give me an advantage having all of these tools each of which work a little differently or can I do something better here?
Jobs and workflows are valuable corporate assets. They may not be private corporate databases, but they often access private corporate databases. Their source can reveal a business’s special sauce and their execution can affect millions of critical processes and transactions. These need as much protection as secure databases. When workflows fail or stall, businesses incur costs, it could be hard costs such as the SAP order process failed and we ended up having to pay $1.10 more than we should have for some material. Or it could be a soft costs such as Steve, one of our lead developers just spent two hours trying to figure out how to resubmit our individual franchise sales to the general ledger. Neither of those are good situation to find yourself in.
Let’s talk about some use cases. Up first, we’ve got a situation where we’ve got a lot of SQL servers, and we have to generate monthly reports. At the end of the month, we need one metric on how reliably our ETL processes are performing. They run on 50 different SQL servers throughout the month. We need to log into each one separately, in order to obtain the logs to build our report. Furthermore, when one of our SSIS packages fails, we need to log in to each of those servers separately to find that failure.
How do we bring that all together and make our lives easier in gathering all of that information? That’s where JAMS comes into play. I’ll go ahead and pull up the JAMS application now. This is the JAMS client. One of the great things about JAMS is it has built in reporting features. Under the report viewer, I’ve gone ahead and pre generated a report that was built out using the Report Designer inside of JAMS.
This is a weekly run report, you could also create them for monthly and apply lots of different filters and parameters that you see over on the left. What we see here is all of the jobs that have run in the past week, so from 7/10 to 7/17. As we scroll through, we get some runtime statistics, as well as the completion severity for all of these jobs. If I needed just my failure report, I could easily do that by just updating these parameters.
I can also create Jobs inside of JAMS that run these reports on a schedule. I don’t have to come into here into the report viewer and generate these reports every month, I can actually put it on a schedule and let it run and have it email me that PDF or any other file format that I’d like on that schedule. Lots of great tools in here.
Moving back, let’s talk about the second use case. Now, we’ve got one workload, and four contributors. Now our nightly branch reconciliation process involves four people. Our application developer writes and updates the source. Our head of IT ops determines when the job should run. He tests it, and then he promotes it to production. Our CFO needs an alert if the resulting files are going to miss their delivery time. Our support team is on call all night to troubleshoot the job if something goes awry.
Each person has a distinct roll and we can’t just give them all admin privileges. What do we do? We define security at various levels in order to give everybody the permissions they need. Again, we’ll hop back into JAMS. Let’s talk about security for a minute. JAMS has very robust security of which it integrates directly into active directory. You can create users in custom groups inside of active directory and then reference them inside of JAMS.
There are multiple levels of access control within JAMS. The first is this access control section. This is where you define top level security for various object types within JAMS. First would be the front door we’ll call it that. That is the server setting. Within here, this gives people the ability to access a JAMS environment. If they have execute access, they can open up the JAMS client and connect to that JAMS environment.
Next, we have all of the various object types within JAMS. So anything from agent definitions, which are used to connect and execute jobs on remote servers, to folder definitions, which is where your job definitions are stored. Notice that we have different Active Directory groups predefined here. These are going to give you varying levels of access based on what we predefine here. Anyone in the inquires group is just going to have read only access to a lot of these different object types.
Whereas a developer would more or less have full access to a lot of these objects. They’re going to be able to build things out inside of JAMS. Whereas an operator, if we look at the monitor, the monitor access control item, they’re going to have the ability to submit jobs to run in an ad hoc fashion, or restart a job, things like that. But they’re not going to be able to create or modify that job definition. If the source code needs to be updated, they’re going to have to involve a developer for that.
That’s the top level. Next, we would move into the folder structure. Again, this is where all of your job definitions are stored inside of JAMS. There’s various properties that can be defined at the folder level and they can be inherited down to the job level. You can get very granular with your properties and set them on the job level if needed and that includes security. If we go to the root folder here, and go to the Security tab, again, you see very similar Active Directory groups defined. Again with varying permissions for each one.
This is going to give you full control of security within your environment. That can be inherited all the way down to the job level. Security can be locked down at a very granular level to ensure that it is designed exactly to your company’s needs.
Next, let’s take a look at what happens when we have a large team of users building and creating jobs and then somebody, an owner of your jobs, leaves the company. Jobs have been running successfully for years. Then suddenly, the expected output from a particular job stops. Now the person who created that Cron job, left the company a while ago. We don’t really know what changed, whether it be on the job itself or in the environment. We don’t know where to find the source. We don’t know how she kept running that job for the past 10 years. To be honest, we’re not sure if it still does what it needs to do.
We need somebody with that tribal knowledge to understand what it’s doing, but also be where is it and how do we fix that? With a product like JAMS, we can take all of those jobs out of those disparate systems like Cron, and SQL Agent, and Task Scheduler on all of my remote servers, centrally manage them in one spot, with version control, all in one spot.
If we jump back over to JAMS, we’ll take a look here. Not only can I store all of my jobs in one location, but I can also manage them in one spot. This monitor view gives me a holistic view of everything going on in the schedule right now. If I sort here, you can see I’ve got several jobs that are currently executing on various servers. I’ve got a lot of jobs that are queued up to run in the next hour or so. Then I also have some that needs some manual intervention. Then lastly, and probably most importantly, I see here that I have a job that failed recently. That’s why it’s highlighted in red.
This gives you a single pane of glass, top down view of exactly what is going on in my entire environment, not just a single server and a single application. Jumping back over to the folder definitions, if I open up one of these jobs, you’ll see that the source code is contained directly in the job definition itself. I’m not referencing a PS1 file sitting out on a remote server to execute this PowerShell script, I actually have it stored directly in JAMS.
That source code is being stored in a database, the SQL database that JAMS has as a back end. It also has source control, which includes version history for the source itself, not just the over 150 properties that are tied to each and every single job within JAMS. Pulling up the audit trail, Job Revision History window, I can now compare a couple high level statistics for each version. I get a version count. My current version information is up here. But I can also select other versions and then go ahead and hit compare.
It’s going to pull up all of the various properties and source and parameters side by side so I can see exactly what changed. Here we see anything in red indicates that there was a change between the version so the source, something changed between the source. I can go through that and see what changed. Maybe somebody made a change to a job source and now the job is erroring out, or we’re having an issue with it. I now have visibility as to what is going on and what changed so I can make corrective actions quickly.
Then lastly, if I did make a change, and I want to roll back to a previous iteration, I can hit the revert to button and hitting yes would roll back to version nine, the previous iteration. There’s a lot of great control with this Revision History directly inside of JAMS.
Lastly, let’s talk a little bit about schedules, right because JAMS is a scheduler at the end of the day. A lot of times… Companies are global. They’ve got to manage all kinds of exceptions when scheduling their jobs. They’ve got US holidays, UK holidays, fiscal quarters, government fiscal years, blackout periods, all kinds of different things that they have to worry about when they run their jobs to ensure that they run when they need to, and they don’t run when we don’t want them to run.
All of these requirements don’t fit neatly into a single calendar. But it’s just the way that the business operates so we have to find a way to adhere to that. Now With JAMS you have the ability to create not just one custom calendar, but many custom calendars so that your jobs can adhere exactly to the correct calendars that they need to.
Not only that but JAMS also has what we refer to as natural language. Rather than creating a custom calendar that you have to maintain to run a job on the first day of every month or every other Tuesday, these are all things that JAMS understands natively. Within the schedule, you could just tell it to run every other Tuesday or third Wednesday of the month. I’ll show you that in just a sec. If we jump back over into jams, let’s take a look at first the calendars section.
This is where we would define all of those calendars that I just described. There is no tying back to security. There’s security for every single one of these. You would have the ability to define users who can set these calendars as well as use them on their job definition. Our default calendar has everything from various regions. European holidays, global company holidays, maybe some school holidays. Then the accounting department, they care about banking holidays and fiscal periods.
They have their own set of calendars, then the HR department, they care a lot about the company holidays. In this calendar here, you also have the ability to reference dates defined in another date type or another calendar. This company holidays calendar, there’s actually no dates physically defined in this calendar but they reference this calendar up here. That really helps you manage them so you’re not defining the same set of dates more than once.
Lots of robust functionality within the calendars inside of JAMS. What do we do with these calendars? Now if I jump back to the job that we were looking at earlier, I can head over to the schedule tab. Now this is where I can set a schedule on the job to run. Let’s say I want this job to run on the second Wednesday of the month. Again, that’s the natural language that I was referring to earlier, I don’t have to create a custom calendar that just has the second Wednesday of the month manually defined each month.
That’s time consuming and pretty inefficient. JAMS has built in functionality to understand what we’re talking about here. Not only that, but let’s say I had a typo, or I put in something here that JAMS didn’t really understand. It’s going to come up and it’s not going to evaluate that date. You have to go back and you have to correct your typo or whatever is wrong with that line. JAMS is going to know what you’re talking about. It can also be comma separated so you can have more than one value defined here.
This is when the jobs are going to be scheduled for but I can also schedule around my holidays date. If I scroll down here, let me define a calendar and now we should be in good shape if I type holidays. See if I can correct that. Okay. You can set calendar exceptions for your schedules as well. Now, not only that, but I can also set recurrences for my schedule. That schedule is second Wednesday of every month at 4:00 am. Then I can also set a recurrence on there.
This job is going to repeat every 15 minutes on those days we want it to run until 11:00 am Eastern. For those seven hours, the job is going to be running every 15 minutes based on those business requirements. In addition to those scheduling capabilities, there’s lots of other scheduling properties that we can define. Anything from triggers, so run this job on that schedule after another jobs completes. Based on the presence or absence of a file, based on an email coming in. Lots of different options there for triggers.
We can also say that okay, this job is scheduled for 4:00 am but we need to make sure that there’s a file present, that would be a file dependency whereas a file trigger says run this job when that file shows up. A little bit of variation there. We can also take action on jobs based on their behavior. If a job is in a runaway state, meaning that it’s been running for longer than a predefined time limit, say two hours, it should be done by now, go ahead and put a runaway limit in there and cancel it with informational status. Or send an email off to somebody letting them know that this job is running long.
On the opposite side of things, if you had a job that completes way too quickly, you could go ahead and change that job status from success to maybe failure. Then send an email off letting the owner of that job or some distribution list know that this is a job that may have had an issue, maybe a database didn’t load properly. My ETL transaction went through and ran against an empty database which obviously is not going to give me the results that I need.
Lots of different options there. When those runaway limits occur, this is where I would set up my email. This is HTML emails that can be created. You can pass parameters into it with a lot of different options there so that I get the information I need including that JAMS log file with all of the output information from the job directly in that email without even having to go into the JAMS application.
Then lastly, I can also create reports. If I need to say use one of the integration packs that ships with JAMS is JD Edwards or Microsoft Dynamics. All of those things are fully supported within JAMS. So based on the type of job that I’m running, I might need to create a JDE report and send it off to an email distribution list fully supported here.
There’s lots of great tools within the schedule tab that you can take action on, based on when that job needs to get into the schedule or based on what happens while it’s running in the schedule. Diving back, I think, just to recap here, again, JAMS offers robust, centralized reporting through that Report Designer and report viewer tool.
You have the ability to not only generate those custom reports, create them, but you can also generate them on a schedule using JAMS jobs that input those parameters and put them on a schedule for you. JAMS is reliable and offers secure job execution through access control. It allows you to consolidate and manage and monitor all of your job definitions across the enterprise. You don’t have to log into each server into each application to understand what’s going on with your jobs. You have them all on one pane of glass.
Lastly, JAMS offers flexible scheduling through calendars and natural language. Everyone, I think that is it for me. I’ll turn it back over to Cody to see if we had any questions that came through. Cody, was there anything?
Absolutely. Thank you, Kevin. Very helpful so far. I’ll just remind everybody right now that you do have the ability to ask questions over on the side of your screen there. Feel free to fire away. All right, I apologize in advance for paraphrasing any of these that have come through. The first question that I have here. We saw PowerShell jobs, what other types of jobs does JAMS support?
Great question. Let’s jump back into the application. It’s easiest if I explain that one out right here. If we go up to the home view here, this is the default view that you’ll see when you launch the JAMS application. This gives you great shortcuts to do various things in JAMS but to answer your question, it gives you a little bit of information on all of the various types of jobs that JAMS supports. If we explore these JAMS tasks here, you’ll see that as far as Windows is concerned, anything from batch, PowerShell, VB script, we can convert our task scheduler Jobs directly into JAMS.
That’s a free conversion utility that we offer. If I wanted to pull up any information about each of these tasks or job types, you’ll get a window with a brief description. Then I can also hit the try it button to create a job based on this execution method or job type that I’m interested in. Scrolling down to Linux, again lots of shell, Agent D and Agent X are job agents that we offer allowing you to run basically anything on a Linux or Unix system.
Lots of SQL support. JAMS is a .Net solution with a sequel back end so we integrate heavily with the Microsoft ecosystem, including SQL. Anything from SSIS to SSRS, stored PROCS, run some T-SQL. Similar to the task scheduler converter, we can also convert SAQL Agent jobs or just run them remotely so I could leave my SQL Agent jobs sitting in SQL but I could initiate them from a JAMS job and then track their status.
A couple different ways to do that. Lots of integrations with Oracle, big data, allowing people to go and run some big data processes, create servers, run a lot of processing and then take those servers down through a workflow that can all be done. Lots of native JAMS tasks. JAMS reports. Then all of our integrations are listed here so anything from SAP to Informatica. Cody mentioned Banner through Ellucian product earlier in the demonstration. All of the information about each of these products can be listed here. Definitely check that out if you pull down a copy of JAMS.
Great, thank you for that. The next question that I have here and again sorry for paraphrasing any of these. Is it possible to link two or more calendars together?
Good question. Yes. If we jump back over to JAMS, what you can actually do is if I pull up this company calendar, your company holidays here, I can go in and I can see reference date types. This company holidays date type, under the default calendar is actually being referenced by the company holidays calendar under the HR, the company holidays date type under the HR calendar.
HR doesn’t have to maintain those lists of dates within… For company holidays, it’s actually managed by a different department potentially. That’s certainly possible within JAMS.
Great, sounds really flexible. The next question that I have here and again, apologies for paraphrasing any of these. We have issues when two people both try to run the same job. Can JAMS stop that?
It sounds like there are issues with people stepping on each other’s toes, if you will. One of the great things about JAMS is that monitor view. It gives you a holistic overview of everything going on in the ecosystem. If I am coming in to run a job, I can go to the monitor view and I can see if that job is already running. If it is, I know that I don’t have to touch it.
Not only that, but I can see who actually submitted it. If I open up this guy here, I can actually see… Let me find a better job. If I open up the audit trail, I can actually see that it was submitted by the JAMS scheduler and what’s going on here. If I look at a JAMS log file, even better, you can see that it was submitted by… I happen to submit this job a little earlier, and it is executing as a specific user account.
There’s full traceability and visibility within the JAMS application. Additionally, there are… Let’s say somebody doesn’t check this, the monitor view, and they go and they try to execute the same job that was just submitted moments ago. There are properties inside of each job inside of JAMS where you can set a concurrent job limit so you can define a threshold. If this job cannot be running more than once at the same time, I would just set that value to one and then it’s a single threaded job where it can only execute one at a time.
Great. The Next question that I see here. If a job fails, what type of information does JAMS provide to find the root cause?
Good question. JAMS captures the standard out and standard error for all of your jobs. You would see that listed directly in the log files which we just looked at a moment ago. You would see the standard JAMS header with basic information about who submitted it, where it’s submitting, where it’s running, things like that. In the middle would be that standard out and standard error.
Anything that the job is outputting, JAMS is going to capture whether it be good or bad information. Then at the bottom, once the job is completed, you’ll get a footer with run time statistics. How long it took to run, IO counts, things like that. Lots of great information directly in that job log file. If you choose to send a notification, email after the fact. You also have the ability to attach that log file directly to the email.
Great. The next question that I came up with here, our biggest issue is running jobs from our QA team. How would we transfer QA jobs in JAMS? Could you go over a little bit about promotion?
Sure, absolutely. JAMS has the ability to promote your jobs across environments. As a best practice, we would recommend that large organizations especially have multiple JAMS environments for each level of the development lifecycle. I would have an environment entirely dedicated to development, then I would have a QA and staging and then finally a production environment which could also be in a failover configurations.
Lots of resiliency there. Once I have the ability, once I have those multiple environments setup, I have the ability to single or multi select a couple jobs, right click and copy to. Then with my JAMS client, I have the ability to connect to multiple servers. So that dev QA production server instances. I would right click Copy to, select the server I want to go to. This is one of our servers here. I would select go to Dozen. I would pick a folder that I want to go to. Then I would hit OK. I would promote these jobs throughout the development lifecycle.
You don’t have to worry about exporting to flat files, manipulating the file contents and then importing them back in through some scripting or anything like that. It’s all done directly in the user interface.
Great. Back to the question bucket here, seeing one more and that is, again, apologies for paraphrasing any of these, can we configure how a daily workflow responds if the job runs longer than 24 hours?
Good questions. JAMS has runaway limits that can be defined on your job definition. If I open up this job, I can add a… There we go. I could add a runaway limit here. If the job runs for longer than 24 hours, 002400, or we could just call that one day. Or even let’s say, an elapsed percent. Let’s say it runs 200% longer than it normally takes to execute. I could go ahead and maybe cancel this job, to informational or warning and then set a notify event class maybe make this a moderate event.
When I hit finish, you’ll see it listed here. Then I could also kick off an email address in the event that there was a moderate event created saying, “Hey, this job is in a runaway state. It’s been running for longer than 24 hours.”
Great. All right. We do have a few more questions here in the bucket that are outside of the normal scope of this webinar. If you do have a question that we did not get to, we will respond to you right after the webinar is over. Thank you again, Kevin. This has been extremely helpful. Thank you all for joining us today to learn about Workload Automation.
If you are new to JAMS you can start a trial at any time by downloading the latest version of JAMS right from our main site. That download is going to give you everything that you need to get up and running, including ways to contact our team and links to training materials. I hope you all enjoyed this webinar. Thank you again for joining us and have a great day. Thank you, Kevin.
Thank you everyone. Have a good day.