Summary

This article describes the changes included in adTempus version 4.7, released on July 21, 2020.

Obtaining the Update

See the download page to download the latest version of adTempus. The setup program will update your installation.

Upgrading from Prior 4.x Versions

If you are upgrading from an earlier adTempus 4.x release, this upgrade is a minor update that does not affect the adTempus database. It can be reverted by uninstalling the newer version and reinstalling the older version, with no impact on your configuration data.

Changes in This Update

Version 4.7 includes some minor enhancements, plus fixes to issues found since the release of version 4.6. See article K00000576 for a list of changes in version 4.6.

The following changes are included in this update:

Conditions
Job Condition may not be satisfied when jobs are resubmitted at startup
If a job was active when the adTempus service was stopped, and is therefore restarted at service startup, a Job Condition configured to look for instances executed "since the previous execution of the current job" will treat the interrupted instance that was running at shutdown as the "previous execution." As a result it will go into "Waiting for Condition" state even if all its conditions were satisfied and it was executing before the shutdown. This problem has been corrected to ignore the "resubmitted" instance when evaluating jobs to satisfy the condition.
Job Condition may be satisfied for wrong instance when target job is active when dependent job starts

When a job has a condition on a target job, the condition may be satisfied by the wrong instance in some cases where the target job is running when the dependent job starts. See article K00000586 for more information.

Console
Console crashes if configuration file is invalid
This problem was resolved. See Knowledge Base article K00000585 for more information.
Cannot terminate an instance that is waiting for restart or waiting for a previous instance
If a job instance is in Waiting for Restart or Waiting for Previous Instance state, attempting to terminate it from the Console has no effect. This problem was corrected.
Console Auto-Refresh Interval setting is ignored
If you change the auto-refresh setting for the Console from the default of 30 seconds, your new setting is not saved, and has no effect. This was corrected so that the new setting is saved and used. Note that for performance reasons we recommend that you not use a refresh interval smaller than the default of 30 seconds.
Database
Add support for hosting adTempus database in Azure SQL Database
The adTempus Database Configuration tool has been modified to support creation of the adTempus database in an Azure SQL Database server.
Export/Import
Job import fails when manually-added variable already exists with the same name
A job was originally created on Server A and exported to Server B. On Server B, the job was edited to add a Job Variable named "Variable 1". The job was also edited on Server A to add the same Variable. The job is now exported again from Server A. When you attempt to import it on Server B, the save operation fails with a database error because of a duplicate key. This problem was corrected so that the same-named variables are correctly matched during the import.
Import with auto-save may fail for previously-imported jobs
If you import a new version of a Job that already exists in adTempus and choose the option to automatically save imported objects, the import may fail and report a database error. Examination of the adTempus diagnostic log shows the following error:
Violation of UNIQUE KEY constraint 'UQ_jobStatus_Job'. Cannot insert duplicate key in object 'dbo.jobStatus'

This happens only in a scenario where the Job was originally imported without using the auto-save option and is now being imported with the auto-save option.
Some references are not imported correctly
When you import jobs or other objects into adTempus, some links between objects may not be imported. For example, when a Script is imported, its links to Script Libraries that it references may not be preserved. See article K00000582 for more information.
Import fails for export file containing Remote Agent
When importing from a source file that contains a Remote Agent, the import may fail with an error similar to "Import failed: No entity returned for: <Item ref="54:{6278093E-25B8-4AA8-8019-0723E915FE8A}" />" This problem was corrected.
General
Trigger Status window corrected to show status timestamp in server local time
Previously the Trigger Status reported timestamps in UTC time rather than local time.
Updated FTP and SFTP components
The third-party component used by adTempus for FTP and SFTP operations was updated to a newer version to correct various SFTP issues.
Job triggered by Job Trigger may have wrong Cycle ID
When Job B is triggered by Job A using a Job Trigger configured to fire on "Job Started," and Job A is configured to update the Cycle ID for the cycle scope, Job B is started before the cycle is updated, and therefore has the wrong (old) Cycle ID.  The problem was corrected so that Job B receives the correct Cycle ID.
Updated e-mail component
The third-party component used by adTempus for e-mail operations was updated to a newer version.
Non-admin users cannot view Trigger Status
If a user who is not a member of the adTempus Administrators security group tries to view Trigger Status for a job, adTempus reports error ADT000003X "An error occurred on the server while processing the request." This problem was fixed.
adTempus server may make excessive database backups if system clock is wrong by many days at service startup
If the system clock is wrong such that it is reporting a date in the past at adTempus service startup, and then is corrected after adTempus is running, this may result in adTempus trying to create a database backup for each day that was "missed". For example, if the clock was reporting a date 200 days in the past and then was corrected to the correct date, adTempus may make 200 database backups. This can cause problems with database performance and lead to other problems. The problem was corrected.
Network resource problems when network resource set to use explicit credentials that are the same as the job's
When a job is configured to load a network resource, and that resource is configured to use explicit credentials that are the same as the job's credentials, the resource mapping may fail with error "The local device name is already in use" because of a problem with the way adTempus tries to connect the resource.
Network resource problems when multiple jobs start at the same time
When multiple jobs start at the exact same time under the same user account, and they all are configured to map network resources to drive letters (on the Resources tab of the job properties), some problems may occur:
  • If the Target or Startup Directory for a Task reference the drive letter, the task may fail with error "The program could not be started: The directory name is invalid (267)".
  • Programs run by the job that try to use the drive letter may fail with error "The directory name is invalid".
These problems were the result of an issue with the way adTempus was or was not reusing existing logon sessions, which has been resolved.
FTP task may fail when file specification contains backslashes
If a File Transfer task has an include file specification that includes a backslash ("\") rather than a forward slash ("/"), in some circumstances adTempus may fail to convert the backslash to a forward slash, causing the FTP operation to fail. In this case the job detail log includes the message "Failed due to status code." This problem was resolved so that adTempus properly converts backslashes to forward slashes in these scenarios.
Added support for SSH tunneling for SFTP connections
When configuring an SFTP file server, you can now tunnel the SFTP connection through another SSH server. This is configured in the Proxy settings for the file server setup.
Add support for validating host key fingerprint for FTPS connections
When using an SFTP connection, it is now possible to specify the expected fingerprint for the server's host key, which is used to validate the connection is being made to the correct server. To find and set the fingerprint, click the Test button while editing the connection definition. The server fingerprint will be shown, and you will be prompted to save it as part of the connection settings.
Replace References does not work for database task credentials
If you use the Find/Replace References feature in adTempus to replace the credentials used by a Database Operation Task, the command does not produce any errors, but the credentials are no replaced. This problem was corrected.
The adTempus service may fail (crash) when problems occur while communicating with another adTempus server
If an adTempus server is exchanging job status information with another adTempus server instance (to send status information needed for remote job triggers) and certain problems occur with the connection, the adTempus server service may crash. Subsequent attempts to restart the service may also result in a crash, leaving you unable to start the service. This problem was corrected.
Permission error when duplicating group containing task with variable update
If you attempt to duplicate or import a Job Group that contains a job with a task to update a job variable in that group, the duplicate or import operation fails with error ADT005244E, "You do not have permission to modify the Job Variables for the specified target." The problem was corrected.
Added additional Job Variables with the results of File Transfer operations
The File Transfer task now sets three new Job Variables on completion, which can be used by subsequent scripts or tasks:
  • FileOperationTask.ErrorMessages: Contains any error messages reported by the transfer process
  • FileOperationTask.SucceededFiles: Contains a list of files successfully transferred
  • FileOperationTask.FailedFiles: Contains a list of files that failed to transfer
See the Job Variables section of the File Transfer Task Properties help topic for more information.
Server startup fails due to Linked Server entries with duplicate names
See Knowledge Base article K00000587.
Job Execution
Database error causes Job Condition to go into Condition Failed state
If adTempus encounters a transient database error while evaluating a Job Condition, the job is placed in "Condition Failed" state and does not execute. This behavior was changed so that adTempus will continue to poll the condition so it can be properly checked when the database issue resolves.
Changed third-party component used for SFTP and FTP
The FTP and SFTP file transfer capabilities of adTempus are provided by a third-party software component. This component has been replaced by a component from a different vendor. As a result, it is possible that file transfer behavior could be affected in some scenarios (e.g., slightly different error messages, or unexpected problems due to programming errors during the switch, different software capabilities, etc.). Customers using file transfer should be alert for any problems.
Faster job resubmission when recovering jobs at service startup
When the adTempus service starts, it resubmits jobs that were running at shutdown (based on recovery options for each job). The execution start for these jobs was being staggered at 30-second intervals to prevent server overload in cases where there were a large number of jobs. However, this could also lead to a very long delay before all jobs were resubmitted.  The default interval was reduced to 5 seconds between jobs, and the interval is now configurable using the "JobManager:RestartSpacing" advanced server option.
Fixed problems with relative path resolution in File Transfer tasks
In some scenarios where a File Transfer task uses a relative path for a file specification (for example, when the files to include specifies a path such as "./folder/*.txt"), the task may fail to find or to transfer files.
"Run only on same Agent" option on Job Control Action does not work correctly on Master
Job A and Job B are both configured to run in a Queue that executes on the Master and on Remote Agents. Job A has a Job Control Action configured to run Job B, with the "Run only on same Agent" option selected. When the action executes in an instance running on an Agent, it correctly starts Job B only on that Agent. However, when it executes in an instance running on the Master, Job B is triggered as if this option were not selected, so it is submitted to run on the Master and on all Agents.
Option added to Job Condition to only consider instances of target job running on the same computer
The new option Only match jobs running on the same computer was added to Job Conditions. See the Job Condition documentation for more information.
Notification
Remove support for SSL protocol for SMTP connections (require TLS)
Support for the obsolete and deprecated SSL protocols has been disabled by default for SMTP connections, in favor of the newer TLS protocols. This is to resolve issues connecting to some servers if SSL is enabled. If your mail server still uses the older, insecure SSL protocols, you can enable them by setting the "Notification:SMTP:AllowSsl" Advanced Server Option.
Performance
Service startup times out due to slow job load
In some circumstances, adTempus instances with a large number of jobs may experience a slow load of jobs at service startup, due to some performance issues. This slow load causes the service control manager to time out waiting for the adTempus service to start.
Reports
Job Inventory and Security Configuration reports fail with "Object not set to an instance of an object"

When you try to run the Job Inventory Report or Security Configuration Report, or try to print records from the Execution History Query or Message Log Query, the Console reports an unhandled error with message "Object not set to an instance of an object". Clicking the buttons to report or save the error information causes the Console to hang.

This problem was resolved.

Scripts
Fix to recompile script when an indirectly-referenced library is updated
For more information see article K00000583.
Triggers
Improved File Trigger performance when dealing with large numbers of files or slow networks
The File Trigger was enhanced to offer better performance when scanning folders with a large number (many thousands) of files, or when scanning folders over a slow network connection. See article K00000571 for more information.

Additionally, a new limit was added to the File Trigger to limit it to launching no more than 500 job instances at a time. This was added to prevent unexpected system overload when large numbers of files appear unexpectedly. The limit can be altered by setting the "FileTrigger:MaxFilesPerTrigger" option.