adTempus 5.0.0.0 Release Notes

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.