Summary

This article describes the changes included in adTempus version 4.5.1, released on January 21, 2018.

Obtaining the Update

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

Update to SQL Server 2017 Express

Previous adTempus 4.x releases included SQL Server 2012 Express. Beginning with version 4.5 the installation package includes SQL Server 2017 Express instead. (A separate installation package with SQL Server 2014 is available to support Windows Server 2008).

If you are upgrading from an earlier 4.x version, the installer will not upgrade your SQL Server installation. You can run the SQL Server 2017 Express installer separately if you wish to upgrade your SQL Server installation.

Changes in This Update

Version 4.5.1 replaces version 4.5, originally released on January 14, 2018. Version 4.5 has been withdrawn because it introduced two new problems (see below).

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

The following changes are included in this update:

Actions
Add option to control Hold Type applied by Job Control ActionCR00007267
Enhancement

In previous version of adTempus (3.x and earlier), using the Hold or Release action in a Job Control Action disabled all execution for the target job, because there was a single hold type. In adTempus 4.x, the Job Control Action only holds triggers for the target job, allowing manual and chained execution.

A new option has been added to configure this behavior globally to restore the previous capability. A future release will allow the option to be configured separately on each Job Control Action.

Variables set by trigger or manually are not carried forward when restarting or chaining jobCR00007324
Defect
Job Variables that are set when running a job manually (in the Execute Job options window) or that are set by a trigger (for example, the FileName variable set by a File Trigger) do not get passed through when a Response is used to restart the job or chain another job. This problem was corrected.
API
Support additional features for integrating running applications with adTempusCR00007248
Enhancement
The ApplicationIntegration class has been enhanced to allow applications being run by adTempus to interact with the adTempus server to set job variables, capture files, send notification messages, and log messages to the job log.
ExecutionHistoryItem.Refresh method does not perform immediate refreshCR00007320
Defect
In the adTempus API, the ExecutionHistoryItem.Refresh method does not perform an immediate refresh of the instance as expected. The instance is only refreshed if 60 seconds have elapsed since the previous refresh. The code was corrected so that the refresh is immediate.
Conditions
Job Condition for "running" or "not running" may not look at enough instancesCR00007274
Defect
When a Job Condition is configured to use the "Running" or "Not Running" rule, the Condition may look only at the most recent instance of the target job, when it should be looking at all instances. This may cause it to report false positives or false negatives for the condition.
Console
Allow Termination or Force Execution when multiple instances selected in ConsoleCR00007316
Enhancement
The Terminate and Force Execution commands are now available when multiple job instances are selected in the Console (History and Job Monitor views).
Remember previous selection when opening Job Selector windowCR00007317
Enhancement
When you open the Job Selector window (e.g., when selecting the target job for a Job Control Action), the selector will highlight the previously-selected job, or if there is no current setting, the most-recently-selected Job Group. These changes make repeated data entry quicker.
Distributed Scheduling
Add option to abandon all jobs on Agent when Master loses communication with itCR00007287
Enhancement

A new option has been added to handle cases where the Master loses communication with an Agent (because the Agent has been shut down or the network connection has failed). When this option is enabled, the Master will mark all jobs that were active on the Agent as "Abandoned." This is to assist in a scenario where a job is configured to not run if a previous instance is already running, or a queue has execution limits. Without the new auto-abandon option, in those scenarios, the Master would continue to think that the jobs on the Agent are active, until the connection to the Agent is restored and the Master receives updated status information. Thus new instances would be prevented from running.

This option currently is available only as a global configuration setting, which affects all agents, queues, and jobs.

To enable the option, go to the Advanced Server Options window in the Console and look for the option "DistributedScheduling:AbandonJobsWhenAgentLost". Set the Current Value to "true" and click OK to save the change.

 

Master continues trying to connect to deleted Remote AgentCR00007263
Defect
If you delete a Remote Agent through the adTempus Console, the adTempus Master may continue trying to connect to the Agent until the next time the service is restarted. This results in warning messages written to the diagnostic logs but does not cause any operational problems.
Next Start missing for jobs that run in a mirrored queueCR00007265
Defect
When a job is assigned to a Queue that uses "Mirror" mode, the Console may not display the Next Start time for the job.
Master may continue to show jobs as running after Agent is restartedCR00007276
Defect
If an Agent is restarted while jobs are running, the "Abandoned" status may not get reported back to the Master correctly when the Agent starts up. This results in the Master continuing to show the jobs as active.
Jobs abandoned on Agent not correctly reported to MasterCR00007283
Defect
If an Agent is restarted while jobs are active, those jobs are marked by the Agent with status Abandoned. However, that status update is not communicated correctly to the Master, which continues to show the instances as running. This causes further problems when a Queue has a limit on the number of concurrent jobs, or when a job is set to skip if another instance is already running, causing jobs to skip incorrectly, or to be queued waiting for previous instances that are not actually running.
General
Add ability to "terminate" phantom active instancesCR00007257
Enhancement

In some scenarios (such as when database problems occur), adTempus may fail to record the completion of a job instance. This results in an instance that shows as active in the Console even though it is no longer running. Such a phantom instance may also disrupt job flow, in cases where other jobs depend on the state of the job, or where the job is configured to not allow multiple concurrent instances. Though the Console shows the "Terminate" command for the instance, using this command has no effect, as there is no real instance to terminate.

The adTempus server has been updated so that in situations like this the Terminate command will update the database record for the instance to show a status of "Unknown." The user can then use the "Override Status" command to set the instance to Succeeded or Failed as appropriate.

Handle scenarios where logon to Windows is slowCR00007266
Enhancement

In rare cases (typically involving a corrupted user profile, or network connectivity problems), the logon process for a Windows user account may take a very long time to complete. In such cases, the job requesting the logon and any jobs subsequently triggered (even if they use a different user account) remain in "Starting" status with no indication of what the problem is.

adTempus has been updated to issue a warning message after waiting 1 minute for logon to complete and to fail the job after waiting 10 minutes. Additionally, other jobs that use different credentials are no longer delayed by the problem.

Improved error messages for FTP operationsCR00007313
Enhancement
Add option to adtexec command-line utility to allow termination of jobsCR00007314
Enhancement
The adtexec command-line utility (used to submit job execution commands) has been enhanced to allow termination of jobs from the command line. See the adtexec command line reference for more information.
New Trigger option to allow termination of prior instancesCR00007325
Enhancement
A new option has been added to the "Multiple Instances" settings on the Trigger page of a job's settings. When you choose "Terminate prior instances, then run," adTempus will terminate any running instances of the job before starting the new instance.
Script execution may fail if two jobs try to execute the same script at the same timeCR00004096
Defect
If two jobs are executed at the same time, and both use the same Shared Script, the script may fail due to a compilation error. This happens because the script engine tries to compile two copies of the script at the exact same time, resulting in a file collision in the script cache. The script engine was modified to avoid this problem.
Opening text edit window gives error "Could not compile script library InlineFunctions"CR00007255
Defect
On a computer with a Console-Only installation of adTempus, opening the text editor results in an error because of a missing component in that installation type.

For more information see Knowledge Base article K00000543.

Job triggers do not fire after job is released from hold by Job Control ActionCR00007272
Defect
When a job is released from hold status by a Job Control Action in a Response, the job is not re-queued, and its triggers do not fire. Restarting the adTempus service or editing the job will cause the job to be queued and triggers will start working at that time. This was fixed so that triggering resumes when the job is released from hold.
Jobs fail when running with elevated privileges, when adTempus service is running under a user accountCR00007275
Defect
This problem was resolved.
Remote Agents view reports server error when system performance counters are corruptedCR00007284
Defect

When you select the Remote Agents view in the adTempus Console, the Console fails with error "An error occurred on the server while processing the request."

This can happen if the Windows performance counters on the Master server have been corrupted. This indirectly causes a failure in adTempus when it is generating the load metrics reports that are shown in the Agents view.

The problem was corrected so that corrupted counters will no longer cause the problem.

Multiple job instances may end up running concurrently after step condition checkCR00007285
Defect
In some scenarios, when a job had conditions at the step level, multiple instances of the job or multiple could end up running after the condition check is complete, even when options are configured to not allow multiple concurrent instances, or to limit the number of jobs running in a queue.
Job fails if Job Variable names contain some special charactersCR00007288
Defect

I you have defined a Job Variable with a name that contains certain punctuation characters (such as "\"), any job that defines or inherits that variable will fail with error 104: "An internal error occurred".

To work around this problem, remove the punctuation character from the variable name.

When rerunning job manually after failure, execution options window may default to starting job on step it was on at time of failure. CR00007291
Defect

For more information see Knowledge Base article K00000546.

Value of variable should not be written to Job Detail Log when variable has "Hide value from user" checkedCR00007303
Defect
"Show matching dates" option in Schedule does not reflect holiday settings from Schedule TriggerCR00007310
Defect
This problem was resolved.
Import/Export
Import does not behave as expected when importing existing jobs/groups and using the "Create new copy" optionCR00007318
Defect
This problem was resolved.
Job Execution
Component update for FTP and SFTPCR00007293
Enhancement

This release includes an update to the third-party component adTempus uses for FTP and SFTP, which fixes some issues with this functionality.

Service startup sequencing problem may cause some instances to get marked with the wrong statusCR00007269
Defect
Due to an issue with the way jobs are loaded at service startup, it was possible for the server to mark a job instance as "Abandoned" even if it had been triggered since the service start. This produced a secondary issue where the server thought the instance was still running even after it finished, preventing the execution of new instances of the job in cases where the queue or job was configured to limit concurrent instances.
Report Designer
Add Preview capability to Report DesignerCR00007268
Enhancement
The Report Designer now has a Preview tab, which allows you to preview a report while you are designing it.
Reports
Allow suppression of system-generated events on Object Change Log ReportCR00007312
Enhancement

A new option was added to the Object Change Log report to "Exclude system-generated changes." Checking this option excludes all events where the user is shown as "System." These events come from automated actions such as Job Variable Update tasks that modify a job definition.

Note: you can prevent adTempus from generating these change log entries in the first place, as described here.

Responses
Step status override Responses do not work correctly for some tasksCR00007251
Defect
If a Step has a Response that overrides the step's status (forces it to Succeeded or Failed), the override has no effect for E-Mail, File Operation, or Database Operation tasks. The problem was corrected.
Allow inheritance of responses for execution time threshold eventsCR00007290
Defect
Previously it was not possible to define an execution time threshold event in a Response defined at the Group or Job level, and have that Response execute for task-level time threshold events. This was changed so Responses can now be configured this way.
Scheduling
Scheduled execution may be missed in some scenarios when using holidaysCR00007309
Defect

For more information see Knowledge Base article K00000557.

Scripting
Add ability for scripts to invoke ResponsesCR00007253
Enhancement

Scripts can now trigger Responses for jobs. This can be used, for example, to make it easier for a script to trigger another job in a job chain.

To use this feature, add event "Invoked by a script" to the Response, and use the "tag" field to give the event a name or description. In the script, use the adTempus.ExecuteOnDemandResponses method to invoke the Response, passing the tag value to tell adTempus which response(s) to trigger.

Script collisions when multiple scripts run concurrently in same hostCR00007315
Defect
adTempus has been modified to not run more than one script concurrently in the same host process. This may result in more running instances of the "adtempus.jobhost" process than you are used to seeing.

For more information see Knowledge Base article K00000558.

Tasks
Modify file transfer task to allow upload without temporary fileCR00007249
Enhancement

When a File Transfer task uploads a file using FTP or SFTP, it uploads the file using a temporary name, then renames the temporary file to the final name. This is done so that any existing file is not corrupted in the event that the transfer does not complete successfully. However, in some scenarios the upload/rename operation causes problems and a direct upload is preferable.

A new advanced server option, "FileTransfer:UseTempFileForUpload", was added to control this. Set this option to False to turn on direct upload.

This setting affects all file transfer operations. A future version of adTempus will allow control over this setting at the file server or task level.

Triggers
E-mail trigger stops triggering if a login failure is encounteredCR00007304
Defect

If the e-mail trigger encounters a login failure or other error that it interprets as a configuration error, it logs an Alert and stops polling the mail server until the mail connection settings have been checked and re-saved. This was intended to prevent repeated connection attempts using incorrect settings or bad credentials, but in practice sometimes causes the trigger to stop monitoring due to transient failures that are interpreted incorrectly.

The behavior has been changed so that the trigger will log an Alert on failure but will continue trying to connect.

File Trigger fails to scan folder when user does not have permission for higher-level folderCR00007319
Defect

When a File Trigger is configured to scan a folder but the job's user does not have permission for a higher-level folder in the hierarchy, the trigger ignores the folder but does not report an error.

For example, a trigger is configured to watch "d:\input files\customers\customer1\*.xml". The account that the job is running under has permission to view folders "d:\input files" and "d:\input files\customers\customer1" but does not have any permissions for "d:\input files\customers".

When scanning for trigger files, adTempus starts at the root folder and works its way down to the lowest level, one level at a time (this allows it to accommodate folder name wildcards). If it encounters a level where it does not have sufficient permission, it will either get an access error (if it does not have View permission) or will not "see" the next level of folders (if it does not have List permission). Therefore it never gets to the "d:\input files\customers\customer1" folder to look for files.

This behavior was changed so that when there are no wildcards in the path adTempus will scan the lowest-level target folder directly, so the trigger will work correctly as long as the job's user account has permission for that folder.

Changes in release 4.5.1

Version 4.5.1 corrects two problems introduced in version 4.5 (which has been withdrawn):

Job Execution
No reason given when job fails due to login failureCR00007328
Defect

For more information see Knowledge Base article K00000561.

Job may fail when two or more jobs start at exactly the same time for the same user accountCR00007329
Defect
If two or more jobs are started at the same time for the Credential Profile, some jobs may fail with a non-specific error. This is caused by a problem with the way the user login process is handled in this scenario. The problem was fixed.