adTempus 5 Release Notes

Each release includes all changes from all prior releases. View release notes for all releases in this major version below, or select a specific release:

5.0.3.0

Released September 19, 2023

Enhancements

Console
Change to allow a Save operation to be canceled from the Comments window
When auditing or snapshots are enabled, the user may be prompted to enter comments when saving an object (Job, Queue, etc.). The comments window does not have a cancel button, and closing the window without clicking OK does not cause the Save operation to abort. This behavior was changed so the window now includes a Cancel button that can be used to cancel the Save operation.
User Scripts
New limit on number of messages user scripts can write to the Job Log
A user script can use the adTempus.LogMessage method to log messages to the Job Log for the executing job instance. Because each message is stored as a separate database record, logging a large number of messages can have an adverse effect on adTempus database space requirements and on Console performance. A new limit of 100 script messages per job instance has been added, to protect against excessive logging from scripts. Once this limit is exceeded, all subsequent messages are sent only to the Script Debug Log, which appears as a Captured File in the job history.

This limit can be configured through the "JobExecutor:ScriptMessageLogLimit" Advanced Server Option.

If your script needs to log a large number of messages for debugging or diagnostic purposes, use adTempus.LogMessage with MessageTypeEnum.Debug, which sends the message to the Script Debug log instead of the main Job Log.

Fixed Issues

Console
In some windows, clicking a button causes the window to unexpectedly close
This issue was resolved.
For more information see article K00000624.
Server connection broken when saving duplicated items
Attempting to duplicate some items (such as steps within a job) causes the connection between the Console and server to be dropped when using an adTempus 5.x Console with a 4.x server.
For more information see article K00000626.
Console may prompt for comments when saving objects even when configured not to
When a user saves an object (Job, Queue, etc.) the user may be prompted to enter optional comments for the change, even when auditing is not enabled for the object (in which case the comments are not saved anywhere) or when the audit setting is "Automatic" (in which case the user should not be prompted for comments).
Server connection broken when setting Advanced Server Options
Attempting to set an Advanced Server Option causes the connection between the Console and server to be dropped when using an adTempus 5.x Console with a 4.x server.
For more information see article K00000629.
Distributed Scheduling
Connection fails if large amount of data is waiting to be sent from Agent to Controller
If a large amount of data (status updates, log messages, etc.) is waiting to be sent from an Agent to its Controller, the connection between them may fail when the Agent tries to send the data. This failure prevents any updates from being sent, and also may block the Controller from sending commands to the Agent. This problem can occur if the Controller is unreachable for an extended period and/or jobs on the Agent are producing large numbers of log messages, and happens because the Agent tries to send more data at one time than the Controller can accept.

This problem was resolved so the Agent sends data in smaller batches in this scenario.
General
adTempus reports database error alert with error "Object reference not set to an instance of an object"
For more information see article K00000628.
Installation
Database upgrade fails if user running installation does not have default schema of dbo
If the user running the database upgrade process does not have their default schema set to dbo in SQL Server, the database upgrade process may fail because the upgrade scripts do not include the dbo table prefix in all cases,
Job Execution
Job Control Action fails after upgrade from 4.x
After importing or upgrading data from adTempus 4.x, some Job Control Actions may fail to execute.
For more information see article K00000627.

5.0.2.0

Released July 10, 2023

Enhancements

File Transfer Task
Added option to select files for transfer based on modification date
A new option was added to the Console to allow the File Transfer Task to select only files modified since a specified date/time (which can be defined at runtime in a Job Variable). This functionality exists in server versions 4.0 and later but was not previously exposed in the task settings.

Fixed Issues

Console
"Show matching dates" command in Execution Schedule Properties may cause error when connected to 4.x server
When you are using the adTempus 5 Console to manage a server running adTempus 4.x, the "Show matching dates" command in the Execution Schedule Properties window may fail, reporting a server error. This backward-compatibility issue has been fixed.
Installation
Server cannot be installed to other than default location
When installing the adTempus server, if you choose an installation location other than the default location, that choice is ignored and the software is installed to the default location. (Console installations are not affected.) This problem was corrected.
Server
Missing or incorrect error message when temporary or evaluation license expires
When the adTempus server is operating with a temporary or evaluation license and that license expires, that condition is not correctly reported. As a result:
  • No jobs are triggered or executed (this is the correct behavior)
  • No message is logged to the Alerts view
  • Attempting to execute a job manually produces error ADT000056E An error occurred on the server while processing the request, rather than the correct message indicating that the license has expired
For more information see article K00000623.

5.0.1.0

Released June 1, 2023

Enhancements

General
Refinements to handling of system clock changes
Jobs can be configured to run if their scheduled execution is missed because the system's clock is set forward and/or to repeat if the clock is set back. This feature was intended to address small time changes such as clock synchronizations and Daylight Saving Time changes. It can cause problems in scenarios with larger time changes, such as on a computer where the system clock is incorrect by months or years at startup and is subsequently synchronized with a time source after adTempus has scheduled jobs for execution. To address these issues adTempus was modified to recalculate execution schedules (ignoring the settings for individual jobs) for forward clock changes of more than 4 hours or backward changes of more than 12 hours. That is, if the clock is set forward by more than 4 hours, no missed jobs will be executed; if the clock is set backward by more than 12 hours, any jobs that would normally execute in the "repeated" timeframe will be executed.
Job Execution
Job Detail Log now includes variable values at job end rather than at the end of each step
The default logging settings previously had adTempus log the values of all Job Variables to the Job Detail Log at the beginning of each job and at the end of each step. This has been changed so variables are logged at the end of the job, rather than at the end of each step.

The previous behavior can be restored by changing two Advanced Server Options: change "JobVariableLogging:LogAtJobEnd" to "false" and "JobVariableLogging:LogAtStepEnd" to "true".
Job Variables
Changed rules for Job Variable names
The rules for Job Variable names have changed to exclude some punctuation characters that were previously allowed, and to disallow spaces in variable names. Existing variables are not affected but you will not be able to create (or rename) variables using the restricted characters. If you are adversely affected by this change, contact us for information on how to enable to support for the newly-restricted characters.

Fixed Issues

Console
adTempus 5 Console cannot connect to adTempus 4 instance if software update messages are present
The adTempus 5 Console fails to connect to an adTempus 4 server if that server has software update messages to report.
For more information see article K00000619.
Unexpected error in Console when trying to set server option to an empty value
In the Advanced Server Options window, if you try to set an option's value to no value (empty), the Console displays an "unexpected error" message ("Conversion from type 'DBNull' to type 'String' is not valid." )and may crash. This problem was corrected.
Fixed ability to reset advanced server option to default value
In the Advanced Server Options window, an overridden value can be reset to its default value by pressing the Delete key while the option row is selected. This was the behavior in previous versions but was not working correctly in the 5.0 release.
E-Mail Notification
High importance indicator does not work for Microft Outlook
An enhancement in adTempus 5 sets email notification messages with a severity of 9 (in adTempus) to have message headers marking them as important. However, the header values used did not cause Microsoft Outlook to flag messages as High Importance. This has been corrected.
General
Resolved problem with erroneous clock change detection
In some cases where the adTempus server is under high load (server CPU at 100%) adTempus may incorrectly detect that the system clock has been set forward by a second or two. If this happens at the exact second that a job is scheduled to run, the execution may be missed if the job does not have the option set to "Run once if clock set forward."
Job Execution
File Transfer task may behave incorrectly if source folder has a trailing slash
If a File Transfer Task is configured with a source folder that has a trailing slash (e.g., "c:\myfolder\"), the task may behave incorrectly, including:
  • Failing to properly apply exclusions
  • Failing to copy/move files from the source folder
File Trigger may miss first file created when monitoring folder that doesn't exist yet
If a File Trigger is configured to monitor a folder that does not exist when the trigger starts monitoring, the File Trigger may fail to trigger if the folder is created and files are immediately created in it.
Terminating a job with pending instances may lead to phantom active instances
If a job is executing and other instances of the job are pending execution (waiting for the active instance to complete) and you terminate all instances of the job, in rare cases this can result in a database error that causes adTempus to think there are still active instances of the job even though there are not; this can prevent additional instances from running if they are configured to wait for previous instances. This problem was corrected.
Job Variables
Variable tokens not replaced correctly when tokens include format strings
When a Job Variable is inserted into text fields using variable tokens that contain format strings (for example, "%BatchDate{yyyy-MM-dd}%"), the token is not correctly replaced with the variable's value.
Text that includes percent characters (%) may be corrupted during text processing
When text that is subject to Job Variable expansion includes a "%" characters that is not part of a variable or inline script token, the text may be parsed incorrectly, producing an incorrect result.
For more information see article K00000622.
Inline function evaluation fails if function reference has format string
If you have an inline function call that uses a format string, evaluation of the script call fails when the text is expanded.

For example, an inline script call such as this will fail:
%=now(){yyyyMMdd}%

This problem was corrected.
Job Variables added at the server level are not saved
When you add a new Job Variable at the Server level (in the General Server Options window), that variable is not saved.
Linked Server Connections
adTempus 4 servers may fail to communicate with adTempus 5 servers
If you set up Linked Servers to allow standalone adTempus 4 instances to communicate (for example, to support job conditions and job chaining across servers) and one of the servers was upgraded to adTempus 5, the adTempus 4 server was not able to process updates from the adTempus 5 server. This prevents Job Conditions, Job Triggers, and Job Control Actions from working correctly on the adTempus 4 server.

This problem has been corrected.
Scripts
Script Host not returning values for some properties
When a script runs, the adTempus object is not returning values for these properties:
  • JobOID
  • JobInstanceID
  • StepOID
  • StepInstanceID;
  • InstanceID
  • StepNumber

5.0.0.0

Released February 13, 2023

Enhancements

Console
Added hold status indicators to Groups and Queues in the Console Tree
A new menu option (View > Show Hold Indicators) displays information in each Group and Queue node in the Console Tree about the hold status for the group or queue.
Added Preview column to Job Variable list
The Preview column shows the expanded value of the variable, with references to other variables resolved.
Added ability to acknowledge all instances for a job
When a job has instances that completed with errors or warnings, those instances are highlighted in the history views in the Console until they are "acknowledged." A new context menu command was added to allow you to acknowledge all instances for a job at once (including instances not shown in the history list).
Elapsed Time column available in main job list
The Elapsed Time for the job is now available as an optional column in the main job list. Previously it was available for instances but not for the main list. To select the columns displayed in a list, right-click the blank area at the right end of the column headings and select the desired columns.
Improved experience when deleting large number of objects with interconnections
When you delete a job or other object that other objects link to, adTempus requires you to review and remove or replace those links before deletion. When you delete a large number of jobs at once, adTempus previously required you to review and remove all links, including links to other jobs that were being deleted. This process has been improved so that links to jobs that are also being deleted are removed automatically. The workflow to review and remove references has also been modified to reduce the number of clicks required.
Fixed issue with password-protected private keys for SFTP
When loading a private key file for an SFTP file server, adTempus did not correctly decrypt the file, resulting in failure when adTempus tried to connect to the server.
Windows Task Scheduler import
A new tool was added to the Console to allow importing of tasks from the native Windows Task Scheduler. This tool was previously available as a Console add-on but is now fully integrated with the Console.
Tools and commands now work from the Welcome page if there is one connected server
If the Welcome page is selected in the Console and there is exactly one connected server, tools (such as Go To Job) and menu commands will now work as if that server were selected in the Console. Previously, server-specific tools and commands only worked if the server node or one of its children were selected.
User interface improvements to Advanced Server Options window
Including the ability to search/filter options.
New override rules for Job Variables
Job Variables now have a setting to control whether they can, cannot, or must be overridden at lower levels or at runtime.
New tool to search for references to Job Variables and Inline Functions
A new search tool finds all places where Job Variables and Inline Functions are defined or used.
Enhancements to Job Variable listings
The Job Variable lists found in jobs, groups, steps, etc., has been enhanced:
  • New indicators more clearly show which variables are inherited from higher levels and which have been set in the current object
  • New "analyze usage" tool shows which variables are in use, and where
Improved job selector
The tree control used to select jobs (in report parameters, action targets, etc.) has been improved to be searchable.
Console returns to last-selected view
When you open the Console, it will return to the view that was selected the last time you closed the Console. If a job was selected, that job will be selected.
Improvements to Description/Notes fields
The description/notes fields for objects have been enhanced to support rich text formatting (such as headings, bold text, etc.). Notes fields have been added to several objects that did not previously have them. By default rich text is disabled to ensure backward compatibility and it must be enabled in the General Server Options window.
Holiday definitions moved to Configuration menu
Holiday Definitions are now available from the Configuration menu rather than as a node in the Console Tree.
Database
Change to database locking mechanism for simpler failover and database copying
A new locking mechanism makes it simpler to transfer control of an adTempus database to a new instance. See the Database Ownership topic for more information.
Database Operation Task
Added per-task configuration of timeout for Database Operation Tasks
Previously there was a single, global setting used to set the timeout for all Database Operation Tasks. Now there is a global default setting, but each Database Operation Task can be configured with its own database timeout.
Database Task
Fix to capture information messages from database operation when error occurs
In some cases, when a database selection command failed, adTempus did not log the informational messages from the connection (such as print statement output from a stored procedure).
Distributed Scheduling
Changed Agent selection rule ordering for load balancing
The order of rules used to select an Agent for a Queue that uses load balancing has been changed. See the load balancing rules help topic for more information. The old selection rules prioritized comparisons of CPU usage and memory usage, which are not always a good indicator of load. The new selection rules pay more attention to the number of jobs running in adTempus.

To revert to the previous rules, set the "LoadBalance:TestRules" option to:
CPUUsage,MemoryUsage,adTempusLoad,MemoryAvailable,QueueLoad,AgentPriority,ControllerLast,Random

Or configure your preferred rules as discussed in the referenced help topic.
Added ability to set a priority for each agent in a queue
Each agent in a queue can now be assigned a priority, which can be used in load balancing to prefer some agents over others. See the load balancing rules help topic for more information.
File Trigger
File Trigger now detects delete/create in same snapshot as a creation
If a file is deleted and re-created with the same name within the trigger polling interval (i.e., between snapshots of the folder) adTempus previously reported this as a file modification. This scenario will now generally be reported as a file creation (but the deletion still will not be reported). This depends on the file's Created time having a newer value than the previous file with the same name, which may not be the case if the file was moved into the folder (vs. being copied into or created in the folder), because moving a file preserves its original timestamps. The previous behavior can be restored by setting the "FileTrigger:DetectNewFilesUsingCreationTimestamp" server option to "false".
General
New options for overriding Hold state for jobs and groups
New options were added to allow jobs and groups to override an inherited hold state. For example, you can now enable a job to run even if the group it belongs to is held.
Changed Conditions to wait by default
New Conditions now have their Condition Wait setting set to "Wait until the condition is met" by default. Previously, conditions defaulted to "Do not wait," which was dumb.
Record details when an alert or failed instance is acknowledged
When an alert or failed instance is acknowledged, the timestamp and the identity of the user who made the acknowledgement are recorded and are displayed when viewing the message or instance details.
OAuth2 authentication added for some mail providers
Support for OAuth2 authentication was added for some mail providers:
  • Google
  • Microsoft
Added support for Exclusion Periods
Exclusion Periods allow you to define periods of time (such as maintenance windows) when jobs are not permitted to run.
OAuth2 authentication now supported for Google email integration
When configuring adTempus to send or receive email through Google (Gmail or G Suite), you can now use OAuth2 to authenticate, rather than a user ID and password. See the user guide for more information.
Added support for cloud storage providers
adTempus file tasks and file triggers now work with many cloud storage providers:
  • Amazon S3
  • Microsoft Azure Blob
  • Microsoft Azure File
  • Backblaze B2
  • Box
  • Digital Ocean Spaces
  • Dropbox
  • Google Drive
  • Google Cloud Storage
  • IBM Cloud Object Storage
  • Linode Object Storage
  • Microsoft OneDrive
  • Wasabi
See the online help for more information.
New option added to FTP and SFTP server settings to control use of temporary file on upload
FTP and SFTP server connections can now be configured to disable the use of temporary files during upload, for cases where the temporary file renaming causes problems. This option replaces the global option discussed in Knowledge Base article K00000595.
Distributed Scheduling terminology changes
The "Slave" mode in Distributed Scheduling has been renamed to "Basic" mode. The "Master" instance of adTempus is now referred to as the "Controller."
Installation
Server instances can now use different software versions
In adTempus 4, multiple instances of the adTempus server all used the same version of the software. In version 5, each server instance is a separate installation of the software, allowing you to run different versions for different instances.
Job Execution
Additional timing information tracked for jobs
adTempus now records several additional date/time values for job instances to give more insight when delays occur in job execution:
  • The Job Submitted time shows when the job was triggered or submitted for execution
  • The Queue Enter and Queue Leave times show how long the job spent waiting in the queue for execution (e.g., when running in a queue that limits the number of executing jobs)
  • The Condition Wait Start and End times show how long the job spent waiting for conditions to be met
  • The Agent Wait Start and End times show how long the job spent waiting for an Agent to be available.
  • The Execution Start time shows when the job's steps started executing (i.e., after conditions are met)
Similar information is captured for steps as well:
  • The Step Submitted time shows when the step was submitted for execution
  • The Queue Enter and Queue Leave times show how long the job spent waiting in the queue for execution, if a condition wait or other event caused the job to have to wait to resume execution
  • The Condition Wait Start and End times show how long the step spent waiting for conditions to be met
  • The Execution Start time shows when the step's task started executing (i.e., after conditions and waits are met)

New option to suppress Cycle ID update for manual job execution
When you submit a job for manual (on-demand) execution from the Console, a new option allows you to skip updating the Cycle ID if the job would normally update it.
Scripts run by Script Execution Tasks can now return boolean (true/false) results
Previously, a script run by a Script Execution Task was required to return a numeric result to indicate success or failure. A Success Criteria option has been added to allow scripts to return true/false instead.
Oracle database tasks no longer require client installation
When using database operation tasks with an Oracle database, it is no longer necessary to install and configure the Oracle client software first: adTempus now includes an integrated Oracle client.
Scripts can set job and step success state
Scripts can now set the success/failure state for a step or job using the adTempus.SetJobOutcome and adTempus.SetStepOutcome methods. This is equivalent to the functionality provided by JobControlActions that set the step or job to succeeded or failed.
Multiple exit code ranges/values now supported for rules in Program Execution Tasks, Script Execution Tasks, and Response Events
When defining a rule that applies to numeric exit codes (for example, the success determination rule for a Program Execution Task) you can now specify multiple values/ranges rather than a single range or value. For example, the target exit code can now be set to a value such as "1,4-8,14,19".
Enable gMSA support by default
Global Managed Service Account (gMSA) support is now enabled by default. In previous versions it was supported but had to be enabled first.
Improved processing for variables and inline script calls
The processing engine for variable and script tokens within text has been improved to handle various scenarios involving nested tokens that previously led to errors.
Job Scheduling
Added option to schedule on 31st day of month only
Previously, when you created a date rule to run a job on the 31st day of the month, this rule also applied to the last day of months with fewer than 31 days. A new option allows you to create a rule that applies only to months with 31 days
Notification
Added ability to set email notification messages to high priority/importance
Email notification messages sent with a Notification Severity of 9 are now marked with "Highest" importance/priority. Some mail clients may use this information to highlight these messages as important. The severity threshold can be adjusted using the "Notification:SMTP:HighPriorityMessageSeverity" advanced server option.
Responses
Job Control Action can now be configured to delay before executing a job
The Job Control Action now supports a delay time, which can be used to delay execution of the target job when using the "Run a job" action.
Scheduling
Juneteenth added to standard US holiday list
The holiday is added for new installations and for upgrades if not already present. The holiday is disabled by default.
Scripting
Updated .NET language support for user scripts
The compiler used for C# and VB scripts was updated to support the latest language features.
Security
New process added to periodically refresh group membership for dynamic logins
Group membership and permissions for dynamic logins are automatically refreshed each time the user logs in to adTempus, based on the user's group memberships in Windows/Active Directory. In some cases you may want to see such changes reflected in the adTempus security windows in between logins. If so you can enable a background process that will periodically refresh group membership without waiting for the user to log in. This refresh process is disabled by default. To enable it, set the "MaintenanceThread:DynamicSecurityRefreshInterval" advanced server option to the interval at which you want the information to be refreshed.
Tasks
New Job Execution Task
The new Job Execution Task provides additional ways to chain and reuse jobs.
User Interface
Added ability to convert standard login to dynamic login when editing an adTempus user

Fixed Issues

Console
Changed to display step number in addition to step name/description
In places where a job's steps are listed, the list now includes each step's step number.
Fixed incorrect behavior for some context menu items in the main Console Tree
When you right-click a group or queue in the main Console tree, some context menu items (including the Hold/Release options and the Change Log command ) were sometimes applicable to a different group or queue than the one you right-clicked. This problem was corrected.
Backup/snapshot time is shown incorrectly in Server Options window
On the Database Backup tab of the Server Options window, the backup time shows the current time rather than the configured time. This was corrected.
When deleting a group with no jobs, Console asks whether you are sure you want to delete 0 jobs
Fix to sort Captured Files properly when job has more than 9 steps
File Trigger
Changing settings for File Trigger may cause trigger on old files
When a File Trigger is configured to trigger only for file creation and is then modified to trigger for file modification as well, the job may trigger for files that already exist when the setting is changed.
General
Console Welcome page fixed to open web links in system default browser instead of always using Internet Explorer
When recording change log records for Jobs and Groups, store the fully-qualified name
Job Execution
Keep correct instance numbering sequence when job is restored or imported
In some cases, when a job is imported or restored its instance numbering resets to 1, possibly leading to duplicate instance numbers. This has been fixed.
Fix to expand Job Variables in batch scripts
Fixed to expand Job Variables within internally-stored batch files run by the Program Execution Task. Previously variables only got expanded if they were configured to be set as environment variables.
Fix to File Capture Action to consider creation timestamp in addition to last write timestamp
When the File Capture Action is configured to capture files only if they have been modified since job start, adTempus looked only at the file's Last Write time. In a scenario where a file is copied to a new location, its Last Write time retains its original value (from before the job started), while the Creation time gets a new value. adTempus was changed to also capture if the Creation time is newer than the target time. This is the same behavior already used by File Triggers and File Conditions.
File Capture and Notification actions now work correctly when capture spec is a variable containing a list of files
A File Capture Action or Notification Action can be configured to capture a file specified in a Job Variable. Previously that variable could contain only a single file name or pattern. This has been changed so the variable can now contain a comma-delimited list of files (or patterns) to be captured.
When a notification address is configured to use a specific email server, this setting is ignored
This problem was corrected.
Scripting
Fix for PowerShell error when last line of script is a comment
If the last line of a PowerShell script is a comment and there is no newline after the line, script execution fails in adTempus with error "Missing closing '}' in statement block or type definition." This problem was corrected.
Scripts
Inline script calls within Job Variables are not resolved when variable value is retrieved from user script
When a user script requests the value for a Job Variable, and that variable's value contains an inline script function call, the function call is not resolved, and the raw function call remains in the variable. This was corrected so the function call is evaluated and the function call in the variable is replaced with the script result.
Security
Allow deletion of login while change log records or linked server authorizations exist
Previously it was not possible to delete Security Logins if the user was linked to an audit (change) log entry (i.e., if the user had performed an audited action within adTempus) until the audit log retention period expired and the audit records were automatically removed. Attempting to delete the login gave error ADT000073E: Cannot delete Security Login "userid" because it is being referenced by ObjectChangeLog "ObjectChangeLog" (and possibly other objects). A similar problem occurred if the user previously authorized a Linked Server.

This behavior was changed so the audit table now stores the user's name rather than a link to the login record in the database, so the login can now be deleted even if audit records or linked servers exist. The audit record is retained (with the user's name) even if the login is deleted.
For adTempus logins using Windows authentication, user name is now updated in adTempus if it changes in Windows
If an adTempus login is created using Windows authentication and the user's name subsequently changes in Windows, the login name will be updated in adTempus the next time the user logs in to adTempus.
Triggers
When a Job Trigger is configured to only match jobs on the same server, run the triggered job only on the same server
When a Job Trigger target is configured with the option "Only match jobs running on the same server," the triggered job will run only on the server where the matching job was found. Previously the job would run on all agents where it was configured to run, regardless of where the triggering job was executing.

Trigger Status Report for File Trigger now shows filespec with variables expanded
The Trigger Status Report now logs the actual path/filespec being scanned, after variable expansion is complete. Previously the status report only showed the target before variable expansion, making it difficult to confirm the actual path/filespec being scanned.
User Interface
Sorting added to several lists that were unsorted
Changing "Include dynamic logins" in Server Security Settings may produce error
This problem was fixed.