adTempus 4 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:

4.9.2.0

Released October 23, 2022

Fixed Issues

General
Fixed issue with refreshing OAuth2 authentication tokens
An earlier fix for this issue did not resolve the problem in all scenarios for IMAP/POP3 connections. This update resolves those problems.

4.9.1.0

Released September 27, 2022

Fixed Issues

General
Fixed issue with refreshing OAuth2 authentication tokens
For more information see article K00000613.
Job Execution
Fix for step status override
When a step fails and a step failure Response is configured to change the step status to Succeeded, the step is now correctly reported as successful. Previously it was still incorrectly reported as a failure in some case.

Note that a simpler way to achieve the same outcome for a Program Execution Task is to change the Success Rule settings for the step to always report it as successful.
Continue executing if Response on failed step branches to another step
If a failed step has a failure Response to run another step in the job, adTempus will now continue execution at the specified step. Previously the failed step caused job execution to stop, and the requested step(s) were not run.

4.9.0.0

Released September 8, 2022

Enhancements

General
adTempus recompiled to use .NET Framework 4.8
adTempus has been recompiled to target version 4.8 of the .NET Framework. This was required to support newer TLS security protocols. To use this update you must update the .NET Framework on your computer to version 4.8 if you currently have an older version.
Support for OAuth2 authentication using Microsoft identity providers
Support for authenticating using OAuth2 has been added for users who use adTempus to connect to Microsoft mail platforms (Exchange Online/Office 365/Microsoft 365).
Job Execution
Ignore shell associations for certain file types
adTempus has been modified to ignore shell associations when running targets with the following extensions: .exe, .com, .bat, .cmd. This ensures that adTempus will always execute targets of this time even if the shell association has been altered. For example, if you change the shell settings for the .bat extension so that the default action is to edit the file (rather than execute it), in previous versions of adTempus this would result in adTempus launching the associated editor instead of executing the batch file. With this change, adTempus will ignore the shell association and execute the batch file.
Email Trigger changed to ignore pre-existing messages
The Email Trigger has been changed so that by default a trigger will ignore all messages that are already in the mailbox the first time the trigger connects to the mailbox. Before this change, each new trigger would process all existing messages in a mailbox, which could lead to unexpected triggers and also lengthy processing delays in cases where the mailbox had a large number of messages to be processed.

The original behavior (process all existing messages) can be restored by changing the "EmailMonitor:MarkAllSeenOnFirstRun" option to "false" in Advanced Server Options.


Fixed Issues

Conditions
Job Condition for "Job has not run" does not work correctly
If a Job Condition is configured with the rule "Job has not run," the condition may be satisfied even though instances of the target job have run.
Console
Fix for error when connecting to non-default remote instance of adTempus
Console fails to connect to non-default instance of adTempus on another computer with error "This may occur if the adTempus server is in a different domain" even when server is in same domain. This problem is possibly related to recent Windows security update for CVE-2022-21920. The problem was resolved.
Distributed Scheduling
Master server issues error and fails to execute some Job Control Action commands
When a job running on an Agent executes a Job Control Action, in some cases the command is sent to the Master for execution. When this happens the Master fails to execute the command and logs alert 5406 for the job:

An error occurred while executing a request for Agent XXX: Object reference not set to an instance of an object. Please contact technical support for assistance.

This problem was resolved. The update must be applied to the Master instance of adTempus but is not required for the Agent.
For more information see article K00000608.
General
adTempus service fails to start if Windows performance counters are corrupted
If the Windows performance counter database becomes corrupted, the adTempus service fails to start. This problem was resolved so that adTempus ignores the performance counter errors.
For more information see article K00000607.
Job Execution
Database task may generate excessive database connections
When you use a Database Task to run operations against a database, adTempus may fail to properly reuse connections to the database, causing the number of connections to grow in scenarios where many database tasks are being run frequently. This was corrected so that connections are properly reused. You will still see a separate database connection for each concurrently-executing database task, and those connections may remain for up to 10 minutes after the task completes. New tasks executed in that interval that use the same database and user identity will now reuse the existing connection rather than creating a new connection.
When job runs under built-in Administrator account, adTempus may log warning that user isn't an administrator
adTempus may log warning ADT005458 ("Job is configured to run with Administrator privileges but user .\administrator is not an Administrator. The job will run with normal privileges.") even though the user is an Administrator. See article K00000611 for more information.
Scheduling
"Nearest" floating rule does not work correctly
When a Date Rule is configured to run on the day "Nearest" to "a specified day" (defined by another Date Rule), the Console does not save the setting correctly, so the rule does not match any days and does not trigger correctly.
Scripting
Inline function execution fails if function arguments contain "%"

4.8.0.0

Released January 12, 2022

Enhancements

General
Updated logging component due to potential security vulnerability
The diagnostic logging framework used by adTempus was updated to eliminate a potential security vulnerability. The log4net component used by adTempus has a hypothetical security vulnerability CVE-2018-1285. Exploiting this vulnerability would require an attacker to be able to update the adTempus service configuration file, which generally requires Administrator permissions on the adTempus server. The component was updated to a version without the vulnerability.
For more information see article K00000591.
Added support for compressing files larger than 4GB
In previous versions the File Compression task failed with files (or total archive size) larger than 4GB, because this was the limit for the original ZIP format. The task has been modified to use the newer ZIP64 format when required, which supports larger files.
Job Execution
File Trigger now allows shorter polling interval
The File Trigger now allows a polling interval as low as 5 seconds (the previous minimum was 30 seconds). Be aware that using a polling interval this short may cause performance issues in scenarios where there are large numbers of files for the trigger to review.
Changes to support user accounts without local logon privilege
Previously the user account used to run a job was required to have "Allow log on locally" privileges for the adTempus server. adTempus has been modified to work properly if the account does not have this privilege but has "Log on as a batch job" or "Log on as a service" privileges.

Fixed Issues

Console
Job Monitor does not auto-refresh correctly
When the Job Monitor view is selected, it may not auto-refresh to show the latest status and activity for jobs. This problem was corrected.
Updated Job Variable picker in Console with missing variables for File Operation task
The following Job Variables were introduced in version 4.7 but not added to the variable picker in the Console. They have been added.
  • FileOperationTask.ErrorMessages
  • FileOperationTask.SucceededFiles
  • FileOperationTask.FailedFiles
Fix for problem with switching back from custom connection string in Database Operation Task
In the Database Operation Task if you check the option to enter an custom connection string and later try to switch back to using basic settings, the custom connection string is still used unless you clear the connection string field before switching back to basic mode. This problem was corrected.
For more information see article K00000597.
Variables, Responses, and security not copied when duplicating group
When duplicating a group, Job Variables, Responses, and security settings defined for the group (and sub-groups) are not copied to the new group(s). This problem was corrected.
Notification Address window does not show correct setting when address is configured to use a specific SMTP server
This problem was corrected.
Distributed Scheduling
Improvements to resilience of Master/Agent connection
In some scenarios, when the Agent reported an error while processing a command sent from the Master, this caused the Master to drop the connection to the Agent and then re-establish it. When the Agent reconnected, the Master tried the same command again, producing the same error and resulting in a loop of retries. As a result, new commands were not sent to the Agent and status updates were not received from the Agent
Master reports database error when Agent sends status updates for history records that have been purged
If an Agent sends a status update for an instance step, but the instance that the step belongs to has been purged from the history on the Master, the Master logs a database error. If the Master does not have the fix for issue 7692 applied, this triggers that problem, and the Agent is no longer able to communicate status updates to the Master.
Export/Import
Step references in Job Control Actions may not be preserved when importing jobs using the "Create new copies of all jobs" option
If you import jobs using the "Create new copies of all jobs" option, any Job Control Actions that target a specific step within another job included in the export will no longer point to the step after import. This problem was fixed.
Duplicate key error when importing a database credential profile that matches the name of an existing one
You import a job with a database task that uses explicit credentials. A Credential Profile for the same database and user ID has already been created independently on the server. The import fails to match the profile in the import to the existing profile and instead creates a new one. When you attempt to save the job or Credential Profile, you get an error indicating that it is a duplicate profile. This problem was fixed to correctly match to the existing Credential Profile.
Duplicate key error when importing a Shared Schedule that matches the name of an existing one
When you import a Shared Schedule that matches an existing Shared Schedule that was independently created, the import fails to match the Shared Schedule in the import to the existing Shared Schedule and instead creates a new one. When you attempt to save the new Shared Schedule you get an error indicating that it is a duplicate Shared Schedule. This problem was fixed to correctly match to the existing Shared Schedule.
General
Total Execution Time and Average Execution Time not updated
adTempus may fail to update the Total Execution Time for jobs when they run. As a result, the Total Execution Time and Average Execution Time may be incorrect (Average Execution Time is calculated from Total Execution Time). This update fixes the problem so that the Total Execution Time is correctly updated going forward. However, the Average Execution Time will be incorrect because the Total Executions was not affected by the problem, and thus reflects more executions than are included in the Total Execution Time. To resolve this you can force adTempus to recalculate the statistics for all jobs based on the available job history. To do this, stop the adTempus service and then start it using the service startup option "-rebuildjobstatistics".
Installation
Database configuration does not save custom port for database server
When configuring the adTempus database connection using adtdbconfig, if you set a custom port number for the database server this setting is not saved by the tool, so the adTempus service uses the default port and fails to connect to the database.
Job Execution
Fix to capture trigger files from network drives
When a File Trigger is configured to capture the trigger file(s) and the trigger file(s) are located on a network drive (rather than locally on the adTempus server), adTempus may fail to capture the file(s), reporting in the Job Detail Log that the file was not found. This problem was corrected so that files are captured.
Retain variables and options when recovering abandoned jobs
When a job is resubmitted on adTempus restart (because it was running when adTempus got shut down), any options or job variable overrides set for the original instance were not used. This has been corrected so the job is run with the same options, comments, variable overrides, etc. as the original instance.
Job Variable Condition may use wrong value for overridden variables
When a Job Variable is defined at the server level and overridden at a lower level, the Variable Condition may use the value from the server level rather than the value from the lower level. This problem was corrected.
SFTP operations may use wrong time zone conversion
When using an SFTP connection (for a File Condition, File Trigger, file operation) adTempus may convert the time zone incorrectly. This can produce unexpected behavior in some scenarios, such as when a File Trigger is configured to wait for a time to elapse after the file's Last Modification. For time zones with a positive UTC offset this issue causes the trigger to think the modification time is in the future, leading to long waits for triggering.
Notification Action fixed to include PowerShell output when include captured console output option is checked
Previously PowerShell console output was not included when this option was selected.
Log a warning if job cannot be run using elevated (Administrator) permissions
If a job is continued to run "with highest privileges" (as Administrator) and elevated privileges cannot be obtained for the user (i.e., because the user is not an Administrator on the computer) adTempus will now log a warning message to the Job Log. Previously adTempus gave no indication that the job was not run as administrator.

4.7.0.0

Released July 21, 2020

Enhancements

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.
General
Updated e-mail component
The third-party component used by adTempus for e-mail operations was updated to a newer version.
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.
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.
Job Execution
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.
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.
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.

Fixed Issues

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.
Export/Import
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.

4.6.0

Released December 21, 2018

Enhancements

General
Allow viewing of console output before step finishes

When a step is configured to capture console output from the program being run, you can now view the partial capture results while the step is still running. Each time you open the file from the job history, it will display the current contents of the console output. The view of the file will not refresh automatically. If the job is running on an Agent, you still will not be able to view the file until the step completes, as the file is not sent to the Master until then.

Further enhancements will be made in adTempus 5.

 

Add Comments column to job instance list
In a job instance listing (Job Monitor, History Query, history tab of job list), the Comments for the instance can now be displayed as a column. To choose the columns to display, right-click a column heading to show the list of available columns.

Fixed Issues

Actions
When "Restart limit exceeded" event triggers a Restart Job action, service crashes

If a Response that uses event "Restart limit exceeded" has an action to restart the job, the response evaluator goes into an infinite loop, causing the adTempus service to crash with a stack overflow exception.

This was corrected so that Restart actions are ignored when triggered by Restart Limit Exceeded events, as this configuration doesn't make sense anyway.

Console
Job Monitor may continue to show jobs as active after they have finished
The Job Monitor may continue to show jobs as active even though they have completed. This happens if the option to show past jobs is not selected. The problem was corrected to remove inactive instances.
General
Inline function evaluation fails
In some cases evaluation of inline scripts fails. This does not cause the job to fail, but an error message is reported in the Job Log ("Inline script evaluation failed") with no error reason.
Checkpoint utility adtchkpt fails with "Object reference not set to an instance of an object" error

For more information see Knowledge Base article K00000564.

adTempus may fail to start when running under non-English version of Windows

For more information see Knowledge Base article K00000573.

When using the Go To Job command, the job list should be scrolled to bring the selected job into view
Import/Export
Importing a job may not remove deleted steps or other objects
A job exists on server A and server B. On server A, you delete a step from the job, then export the job and import it on server B. After import, the deleted step is still present on server B; it should have been removed by the import. The same problem may occur with other parts of the job (triggers, conditions, responses, etc.). This problem was resolved.
Installation
Database Configuration Wizard and Database Utility fail when TLS 1.0 disabled

For more information see Knowledge Base article K00000562.

Scripting
Script or Script Library compilation fails with file access error
If two jobs run at the same time that use the same Script or Script Library, and that script or library has been modified since it was last used, one of the jobs may fail with error "Script compilation error: Unable to write output file..." If the job is rerun it works correctly.

4.5.1

Released January 21, 2018

Fixed Issues

Job Execution
No reason given when job fails due to login failure

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 account
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.

4.5.0

Released January 21, 2018

Enhancements

Actions
Add option to control Hold Type applied by Job Control Action

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.

API
Support additional features for integrating running applications with adTempus
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.
Console
Allow Termination or Force Execution when multiple instances selected in Console
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 window
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 it

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.

 

General
Add ability to "terminate" phantom active instances

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 slow

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 operations
Add option to adtexec command-line utility to allow termination of jobs
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 instances
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.
Job Execution
Component update for FTP and SFTP

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

Report Designer
Add Preview capability to Report Designer
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 Report

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.

Scripting
Add ability for scripts to invoke Responses

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.

Tasks
Modify file transfer task to allow upload without temporary file

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.

Fixed Issues

Actions
Variables set by trigger or manually are not carried forward when restarting or chaining job
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
ExecutionHistoryItem.Refresh method does not perform immediate refresh
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 instances
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.
Distributed Scheduling
Master continues trying to connect to deleted Remote Agent
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 queue
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 restarted
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 Master
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
Script execution may fail if two jobs try to execute the same script at the same time
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"
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 Action
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 account
This problem was resolved.
Remote Agents view reports server error when system performance counters are corrupted

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 check
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 characters

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.

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" checked
"Show matching dates" option in Schedule does not reflect holiday settings from Schedule Trigger
This problem was resolved.
Import/Export
Import does not behave as expected when importing existing jobs/groups and using the "Create new copy" option
This problem was resolved.
Job Execution
Service startup sequencing problem may cause some instances to get marked with the wrong status
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.
Responses
Step status override Responses do not work correctly for some tasks
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 events
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 holidays

For more information see Knowledge Base article K00000557.

Scripting
Script collisions when multiple scripts run concurrently in same host
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.

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

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 folder

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.

4.4.0

Released October 30, 2016

Enhancements

Console
Warn when manually executing more than one job

If you use the Run command in the Console when more than one job is selected, all selected jobs are executed, though this is easy to overlook in the Execution Options window.

A new warning message was added to prevent accidental execution of multiple jobs.

Dim failure icon for job when all failed instances have been acknowledged

Previously, a Job would be shown in the Console with a red failure icon until the next successful run, even if all failed instances had been acknowledged.

This has been changed so that the failure icon appears "dimmed" once all failures have been acknowledged.

See also related change CR00007235.
Distributed Scheduling
Changes to queue limit behavior for Load Balanced queues

Consider the scenario where a Queue is configured to use Load Balancing across multiple computers, and a limit is set to restrict the number of jobs that can execute concurrently in the queue on a single computer.

In previous versions, if all available agents were at or above the limit, a job was still dispatched to an agent (generally the agent with the lowest number of active and pending jobs). The job would then be queued for execution on the agent until an execution slot was available.

This has the drawback of potentially sending a job to an agent where it will wait for a long time to execute, while jobs that get triggered later may get executed first on other agents whose jobs took less time to run.

This behavior has been changed so that jobs will only be dispatched to agents that have available execution slots. If no agent has an available slot, the job will remain queued until a slot is available. All jobs sent to the queue for execution will be dispatched to agents in the order that they were triggered.

General
Show warning indicators for jobs with instances in "warning" state

The adTempus Console highlights jobs, groups, and queues that contain instances with an error state (such as failed) by showing an error icon next to the job, or on the group or queue icon. This feature was expanded to also highlight instances with a warning status (such as abandoned or aborted) by showing a warning icon. As with the error indicator, the warning indicator is removed when the instance's status is acknowledged.

See also related change CR00007234.

Console performance enhancements
Changes were made to improve the performance (responsiveness) of the Console for customers with large amounts of history data, particularly when using the Job Monitor, Failed Jobs, and Alerts views.
Import/Export
When showing Export window, transfer selections from active view

If you have objects selected in the active view (e.g., the job list, Notification Recipients list, etc.) when you open the Export window, you will now be given the option to transfer the selections to the export window so those items are selected by default in the list of object available for export.

Previously there was no such link.

Job Execution
Log alert when program fails to initialize due to DLL initialization failure
When a program run by adTempus fails with exit code -1073741502, this can indicate a lack of desktop heap memory that can cause additional jobs to fail with the same error. When this exit code is reported, adTempus will now log an Alert for the job, with a link to a KB article with more information about the error. An alert notification rule can be configured to notify administrators when this problem occurs.
Scripting
Enhance inline script capabilities

Inline scripting has been updated to correct some design limitations. The updates support:

  • Nested inline function calls.
  • Inline function calls that use variables as arguments, when those variables evaluate to inline function calls.
Tasks
Set ADTTaskResult variable from result of scalar database selection
When you execute a database task to select a scalar value, the value will now be stored in the ADTTaskResult Job Variable in addition to the variable you specify in the task settings. It will also appear as the "Result" for the step in the job history.
Triggers
Preliminary support for viewing Job Trigger status

Added preliminary support for viewing the status of Job Triggers, allowing user to see which rules have been satisfied for the trigger, and by which job instances.

To display the status, right-click the job and select the Trigger Status command at the bottom of the pop-up menu.

This option is only available if both the Console and the server are running adTempus 4.3.1.16125 or later.

Only Job Triggers currently report status.

Add status reporting for File Triggers
Added preliminary support for viewing the status of File Triggers. To display the status, right-click the job and select the Trigger Status command at the bottom of the pop-up menu. This option is only available if both the Console and the server are running adTempus 4.3.1.16139 or later.
Log Alert when root folder for File Trigger does not exist
When it begins monitoring for a File Trigger, adTempus checks to see if the root folder for the path you have specified exists and is visible to the user account used for the job. If not, adTempus will log an Alert warning you of this condition, which may indicate that your trigger is misconfigured or does not have the appropriate security access.

Fixed Issues

Console
Don't add " - Copy" to job name duplicating Job Group
When a Job Group is duplicated, the jobs within the group will no longer have " - Copy" appended to the name.
Job list may not maintain correct scroll position after refresh

When the adTempus Console refreshes to show the latest data while you are in a job list view, the list scrolls to keep the selected job in view. If you had paged so that job was out of view, you lose your position.

This was corrected to maintain the correct scroll position rather than scrolling to the selected job.

Unexpected error when port number not specified for incoming mail server

When setting up an incoming mail server, if you leave the Server Port box empty, the Console gives error

adTempus Console has encountered a problem"

Number Conversion from string '"' to type 'Integer' is not valid

After closing the error window, you can enter a port number value (use 0 for the default) and successfully save the provider.

Canceling an edit operation after duplicating an object results in unexpected Console error

If you duplicate an object (such as a Job Step) and then click Cancel in the edit window for the object or one of its children, the Console may fail with an "unexpected error" message.

This problem was resolved.

Object type selector in Deleted Objects window does not work correctly
When you search in the Deleted Objects window, the search shows objects based on the highlighted object type, rather than the checked object type(s). This problem was corrected.
Distributed Scheduling
Master server incorrectly logs error message when executing Job Control Action for Agent

For more information see Knowledge Base article K00000528.

Users are incorrectly able to modify some jobs on Agents
When you connect the Console to an adTempus server running in Agent/Standalone mode, you should not be able to modify jobs that are managed by the Master. However, adTempus may allow you to do this. This problem was corrected.
General
"Reset Master" option not enabled in Engine Mode tool

When you run the Engine Mode Utility, the Reset Master option may not be enabled when it should be when the utility starts.

Workaround: Click to select a different engine mode, then click back to the original setting. This should enable the option.

This problem was resolved.
Inline function calls always evaluated in C#

When you use an inline function call, the syntax for any code or strings in the call is processed in the C# language, even if the inline function library is set to use VB.NET. This can cause unexpected errors when compiling the code.

This was corrected so that inline function calls are processed in the same language specified for the InlineFunctions library.

For more information see Knowledge Base article K00000529.

When job fails, history record for instance does not indicate which step failed
This problem was corrected so the "Step" column in the History pane of the job list will indicate which step failed.
"Internal error" if the same inline function is called more than once in a text block

If the same block of text calls the same Inline Function more than once, job execution fails with "an unexpected internal error."

This problem was corrected.

Unnecessary job chain data sent from Master to Agent

For more information see Knowledge Base article K00000530.

"Force Execution" does not work for instance Queued for Execution after a condition wait

A job instance was previously waiting for a condition to be met. The condition has been met, but the job is now in status "Queued for Execution" because the execution limit for the Job Queue has been reached. If you use the "Force Execution" command in the Console to override the limit and force the instance to execute immediately, nothing happens. The instance will still execute when a slot becomes available in the Queue, but immediate execution cannot be forced.

This problem was resolved.

Multiple Instance option does not work correctly in some Distributed Scheduling scenarios

If a job is configured to use one of the Multiple Instance options other than "Execute," multiple instances may still be started for jobs assigned to a Queue that uses Load Balancing.

This problem was corrected.

Name/description of job step is not saved in job history

When you view a job instance from the job history, the names/descriptions for job steps are not displayed. This is occurring because adTempus is failing to save this information in the history.

The problem was corrected so the information will be stored when jobs are executed. For jobs run before the update was applied, the Console will show the current description for the step.

Audit and snapshot records are not retained when the "Keep forever" option is used
If you use the "Keep forever" setting for audit and snapshot records, adTempus mistakenly removes these records within 24 hours. The problem was corrected.
Job instance status not updated during execution

A change made in version 4.3 had the unintended consequence that the status for a running job instance may not be correct. For example, it may show "Queued for Execution" when it should be "Running," or "Running" when it should show "Waiting for Condition." This problem only affects display of the status, not the actual execution of the job.

The problem was corrected.

Import/Export
Jobs not queued for execution when auto-save option is used during import
When you use the option to "Save all imported objects if no problems are found" when importing jobs into adTempus, jobs are saved but are not scheduled for execution. Editing the job or restarting the adTempus service causes them to be scheduled.
Console gives unexpected error when export fails due to file permissions
Import fails for decimal values if culture settings do not use "." as decimal separator and "," as thousands separator

For more information see Knowledge Base article K00000526.

Job identity not included when Log Message is exported
When a Log Message is exported and imported, it is correctly linked to the Instance that it belongs to, if appropriate. However, the link to the owning job is lost. Therefore the message no longer appears on the Log Messages tab for the job, but does appear in the instance details window if it is associated with a specific instance.
"Deselect All" button in Export window does not work correctly
This problem was resolved.
Job Execution
ExecutionStart and ExecutionFinish job variables not always available as expected

If you use the Job.ExecutionFinish, JobStep.ExecutionStart, or JobStep.ExecutionFinish variables in your job (for example, in notification messages set by responses), the following problems occur:

  • The *.ExecutionFinish variables may not be set before Responses are executed, resulting in empty values if you use them in Responses.
  • The JobStep.* variables are not defined when job-level Responses are executed (they are only available to step-level Responses)

Both of these problems were corrected.

Job has status "Not Run" when all steps are skipped

When no steps within a job are executed (e.g., because they were disabled or their conditions were not met), adTempus reports the job with status "Not Run," which is misleading because this status is also used for cases where a job was aborted before it began execution.

Further, when such a job executes on an Agent, the Master continues to report the job as active even after it has finished because of a problem interpreting this status.

The behavior has been changed so that a job will be reported as "Succeeded" even if none of its steps ran. As a result of this change the Master now reflects the correct state of the job.

Responses
Job Control Action targets incorrect step after duplication
This fix requires that the adTempus server be updated to resolve scenario 1, and the adTempus Console be updated to resolve scenario 2.

For more information see Knowledge Base article K00000534.

Scripting
Server logs file capture error when running external PowerShell script

When an adTempus task runs an external PowerShell task with the option checked to capture the console output from the script, an error message is written to the adTempus diagnostic logs:

Failed to delete captured file PowerShell Output.txt
System.NullReferenceException: Object reference not set to an instance of an object.

This message does not cause any operational issues.

The underlying problem has been resolved.

Script Library editor doesn't allow adding references to other libraries

When editing a Script Library, the "Included Script Libraries" list is always empty, so it is not possible to reference other Script Libraries.

This has been corrected so that a Script Library can reference other Script Libraries (so code in one library can call code in another).

Script execution fails if script references additional assemblies

For more information see Knowledge Base article K00000532.

Security
Permissions not updated promptly for Dynamic Logins when Active Directory group membership changes

When a user has been authenticated to adTempus using a dynamic login (based on Active Directory group membership), permissions assigned to the user may be cached until the next time the adTempus service is restarted. Therefore if the user's group membership changes, the user's permissions in the Console may not reflect that change until the next restart.

For example, user Rachel is a member of an Active Directory group that has been given permission to execute jobs in adTempus. She logs in to adTempus and is able to run jobs. She is subsequently removed from that Active Directory group, but when she logs in to adTempus she is still able to run jobs even though she should not be permitted. After the adTempus service is restarted, her permissions are correctly updated.

This problem was corrected so that cached permissions are discarded and the user's permissions are always recalculated each time she logs in to adTempus.

Note: Group membership changes won't be reflected until the user restarts the adTempus Console, as the permission assignment only happens when the user logs in. Also, it may be necessary for the user to log out of Windows for the user's login session to be updated with the group membership change.

Tasks
File Compression task does not create target folder if it doesn't exist

If the target ZIP file is in a folder that does not exist, adTempus does not create it, and the compression task fails as a result.

This problem was corrected.

Triggers
Job Trigger reports wrong instance for target job(s)

When a job is triggered by a Job Trigger, the Execution Reason for the instance lists the jobs and instances that satisfied the trigger. However, the instance number is always listed as 0 for all jobs.

This problem was fixed to show the correct instance number.

Job Trigger may execute for wrong instance when using Cycle ID

For more information see Knowledge Base article K00000518.

Job Trigger may select trigger incorrectly when using "since previous execution of current job" options

When you use one of the "{most recent|any} instance since previous [successful] execution of the current job" instance rules for a Job Trigger, adTempus may incorrectly trigger for an instance that ran prior to the most recent execution of the current job. This happens when the trigger targets more than one job. If one or more target rules was satisfied before the current execution but at least one was not, the target rules satisfied before the current execution may not be re-evaluated, causing the job to trigger without waiting for them to run again.

This problem was resolved.

File trigger failures when debug logging turned on

When debug (diagnostic) logging is turned on for the adTempus service, File Triggers may fail if they are configured to detect modified files. An error is logged to the adTempus diagnostic log in this case: "Exception while checking monitor XXXXXX System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection."

Debug logging is turned off by default, so this problem does not affect most users.

4.3.1

Released June 9, 2014

Enhancements

General
Added timestamp to condition status listing for job instance
Installation
Changed to not run Database Configuration Wizard during installation if database is at correct schema level
Job Execution
Changes to improve job host configurability and resiliency
Provide access to captured console output during job execution

When a Program Execution Task executes with the "Capture screen output from console-mode program" option checked, adTempus will now save a copy of the captured output in a file in the job's temporary folder, so that scripts and tasks within the job can read the file. The name of the file is stored in the "JobStep.CapturedConsoleFileName" Job Variable.

Note that the file is not available until the program being run has exited.

Reports
Add reporting for Change Log
A new report was added to report on all audited changes in a specified timeframe.
Scripting
Option to run script in isolated mode is not available when running external scripts
When you edit a script in adTempus there is an option to "Run isolated from other scripts". There was no corresponding option available when running "external" scripts. An option was added to the Script Execution Task to support this.
Add ability to run scripts using 32-bit host
On 64-bit platforms, adTempus automatically uses a 32-bit host process for scripts written in VBScript or JScript, because those scripting languages are only supported in 32-bit environments. A new option was added to allow the user to specify that the 32-bit host should be used for other scripts as well. The new option is found in the Script Properties window. This option is only available when running scripts stored in adTempus. An option to run external scripts in 32-bit mode will be added in a future release.
Tasks
Improve output capture for database operation tasks

When you run a Database Operation Task with the "Execute SQL" or "Select a scalar value" Action, adTempus will now log each command/query executed, along with the output from the database server, to a text file, which will be included in the Captured Files for the job as "Database Results.txt".

During job execution (after the task completes), a copy of the file will be available in the job temporary directory, so that scripts and other tasks within the job can read it. The path/name of the file will be found in Job Variable "DatabaseTask.DatabaseResultFile".

Fixed Issues

Actions
When a Job Control Action runs on an Agent, the target job may execute on the same Agent when it should not
Note: This update requires that the Master and all Agents be updated at the same time.
Conditions
Conditions should be evaluated based on job priority
Condition evaluators were modified so that if jobs of different priorities are waiting on the same condition, the jobs will still be executed in correct priority order.
Job Variable Condition lists "does not equal" twice in comparison rule
The second occurrence has been corrected to "starts with".
Job Variable Condition not evaluated correctly for condition "does not equal" an empty string
Job Variable Condition ignores overridden values
If you override the value of a Job Variable when submitting a job for execution, any Job Variable Conditions in the job use the original value rather than the new value.
Console
Unexpected error when viewing captured file if there is no associated application
Alerts view does not include job-level alerts

The Alerts view should include job-level alerts (alerts logged for a particular job) but does not. This problem was fixed in the adTempus server and does not require an update to the Console.

Note: As a result of this fix, when you first start adTempus after applying the fix you may find a large number of old job-level alerts in the Alerts view, because these alerts were generated in the past but not visible in the view for acknowledgment

Console error when clicking Security button in Credential Profiles, Messaging Setup, or File Servers windows

For more information see Knowledge Base article K00000442.

Console error when deleting an overridden Job Variable
In some cases, if you add a new Job Variable that has the same name as an inherited Job Variable, and then delete the new variable, the Console gives an "unexpected error" message.
Slow performance in some views due to excess data transfer
In some views (notably Alerts, Message Log Query, Execution History Query) the search or display of results may be slower than it should be, because the server is sending over more data than it should be in response to a query.
Date Rule does not show correct relativity setting for rules relative to another date
In the Date Rule Properties window, if you configure a floating rule defined relative to a specified day, there is an option to specify whether the occurrence applies to days "after," "on or after," "before," or "on or before" the target date. The option you choose here is correctly saved, but when you return to this window it will always show the setting as "after." This problem was resolved.
Console settings not saved in roaming profile
The user's Console settings were being saved in the local profile directory rather than the roaming profile directory. The problem was corrected to save settings in the roaming profile.
Duplicate Credential Profile error when trying to create credentials for same user ID on a different database server
"Show matching dates" option in Schedule does not reflect holiday settings from Schedule Trigger

When you edit a Schedule within a Schedule Trigger and click the "Show Matching Dates" link, the resulting list of dates does not reflect the holiday settings configured for the Schedule Trigger. This is intentional, as the Show Matching Dates command was intended to be used to confirm that your date rule is matching the correct options.

This creates misleading results if the schedule uses a date rule with an option such as "exclude holidays" set. Therefore this command has been changed to reflect the holidays when holiday-related settings are used within the schedule.

Unexpected error when viewing object snapshot
When you attempt to view an object snapshot from an object Change Log, the Console may repport error "Return argument has an invalid type"
Data Conversion
Some captured files not visible in Console after upgrade
Database
Database configuration wizard may attempt to create adTempus database when database already exists
Distributed Scheduling
Master loses connection to Agent and fails to reconnect
Agent may not purge all mirrored data
When an Agent is re-initialized it purges all data that was sent to it from the Master. In some cases it may encounter an error while doing this, causing the purge process to fail.
Console reports incorrect status for Agent after changing address or port
If you edit a Remote Agent and change its address, port number, or instance name, the Console may report that the Agent is not connected even though it is, or vice-versa. Further, the connection status message may change back and forth between showing connected and not connected, and between the old and new values for the address, port number, or instance name. Restarting the adTempus service on the Master resolves the problem.
General
Database and other data are saved under default location even if adTempus is installed to a different location

If you install adTempus to a location other than the default location ("Program Files\Arcana Development\adTempus\4.0"), the adTempus database and other adTempus data may still be created under that folder. The problem was resolve to place data in the correct location.

Existing installations are not affected by this change. Please contact us for assistance if you need to relocate an existing data folder.

Server does not accept connections using certificate security

If you have configured the adTempus server to use certificate security (to accept client connections from outside the Windows domain), the server may still not accept connections that use certificate security.

This update must be applied to both the adTempus server and the remote computer(s) where the Console is run.

adTempus server startup options not removed from Registry on start
If Startup options are set in the Registry for the adTempus service, they are not deleted after being executed. This causes them to be executed again each time the service starts. For example, if the EngineMode utility is used to instruct an Agent to purge all data it has received from the Master, that command is passed as a Startup option in the Registry. Because the command is not being removed after being executed, adTempus reads it and purges mirrored data each time the service is restarted.
Missing edit for duplicate name for File Service Provider
If you create a File Service Provider with the same name as an existing provider, saving the provider fails with a database error referencing UQ_FileServiceProvider_Name. There should instead be a more friendly message indicating that the name is already being used.
Job Execution
Job priority not considered when jobs requeued after condition wait
If jobs are in a queue that has a limit on the number of jobs that can be executing, adTempus may ignore the jobs' priority setting when queueing them for execution after their conditions have been met.
Cannot terminate a job instance that is queued for execution after conditions are met
If a job has been requeued for execution after its conditions were met (i.e., conditions have been met but no execution slot is available in the Queue), terminating that instance of the job from the Console has no effect: the instance will still run when a queue slot becomes available.
If a Job Variable is created without a value, it does not retain its data type
If you create a Job Variable and define it as a data type other than string but do not provide a value for the variable, it gets saved as a generic string variable instead of the specified data type.
Internal error at end of job execution in some cases when job has network resources
If a job has network resources defined, and the job fails due to a login error for the main Credential Profile, adTempus logs an "internal error" message for the job.
Network resources may not be connected
If a job has more than one network connection defined (on the Resources page), adTempus may only connect one of the resources, leading to network access errors in tasks run by the job.
adTempus may wait and start new instance if instance is already running and multiple instance setting is "don't wait"
Job fails with internal error due to arithmetic overflow when process uses large amount of memory
If a program run by a job uses more then about 4GB of memory, the job may fail with an internal error, and the diagnostic log will show an arithmetic overflow.
"StepStatus" Job Variable may contain incorrect value
In some cases the "StepStatus" Job Variable may contain the wrong status value for a step when you use it in Responses executed for the step. For example, the variable may report the status as "Running" even though the step has failed.
"Do not execute any Job Control Responses" option is ignored when running jobs
If you check the "Do not execute any Job Control Responses" when submitting a job for execution, Job Control Actions are still executed even though they should not be.
Notification
Inline functions not evaluated for Notification Actions
If you use inline functions to insert dynamic information on the subject, message body, etc., of a Notification Task, adTempus fails to evaluate/expand the function calls.
Reports
Job Execution Schedule reports list all jobs when only some jobs are selected
Job Execution Schedule (by job) report shows 12:00 AM execution for jobs with no scheduled execution
If a job selected for the Job Execution Schedule (by job) report has no scheduled execution times for the specified period, it still appears on the report with a start time of 12:00 AM.
Fix duplicate group entries in Job Inventory Report document map
Extended description/notes not show on Job Inventory Report
Responses
Group-level Responses are not inherited past one level

For more information see Knowledge Base article K00000437.

Responses not executed for "Job Skipped" event
Scheduling
Active range for Date Criterion shows times when it should not

The Active Range for a Date Criterion shows date/time values for the start and end values. It should show only dates, because the time value is not used.

Active Range for Date Criterion is not saved when "Trigger on specific days" option is used
When the Date Selection of a Schedule is set to "Trigger on specific days," the Active Range values are not saved when you save the schedule.
Job triggered on wrong day when using alternate time zone
When a Schedule Trigger is configured to use a time zone other than the local time zone, adTempus may trigger the job on the wrong days (but at the correct time).
Scripting
Command-line parameters for PowerShell scripts may be parsed incorrectly
When you execute a PowerShell script using a Script Execution Task and set command-line parameters, in some cases those parameters are passed to the script incorrectly. For example, array parameters are not passed correctly. These problems were resolved.
Captured file output for some scripts is not associated with a Job Step
If an "external" script captures files, the files appeared in the job history without a corresponding step number.
Nested job variables not expanded when retrieved from JobVariables collection by a script

If a script retrieves a Job Variable value from the JobVariables collection and the value of that variable contains references to other Job Variables, the variable tokens are not expanded.

For example, Variable1 is set to "A", Variable2 is set to "B", and Variable3 is set to "%Variable1%%Variable2%". If a script retrieves the value for Variable3 using adTempus.JobVariables("Variable3"), the value is returned as "%Variable1%%Variable2%", when it should be returned as "AB".

Security
Server error when users try to log on using dynamic authentication
If you are using dynamic authentication to authenticate users based on Active Directory group membership, users may encounter error "An error occurred on the server while processing the request" (ADT000003X) when attempting to connect to the adTempus server.

For more information see Knowledge Base article K00000449.

Server Tools
EngineMode utility does not show correct current mode or master information
EngineMode utility uses wrong service name when trying to restart adTempus service
Tasks
Add ability to set command timeout for Database Operation Task

The Database Operation Task does not provide a way to set the timeout value for database operations, and uses a default timeout of 30 seconds. Operations that take longer than this will fail with a timeout error.

This was resolved by increasing the default timeout to 30 minutes and adding a global configuration setting to allow the value to be changed.

A future adTempus version will allow configuration of the timeout for each task.

For more information see Knowledge Base article K00000444.

File copy fails with error "Value cannot be null" when file pattern contains only one character
If a File Transfer Task uses a source file pattern with only one character (e.g., "*"), the transfer fails and the job detail log shows error "File scan failed: Value cannot be null. Parameter name: searchPattern".
Fixed various problems with include/exclude pattern matching for file operations
Scalar selection Database Task returns wrong result if query produces more than one result set
If the query used for a "Select a scalar value into a Job Variable" Database Operation Task returns more than one result set (e.g., contains more than one select statement), adTempus uses the value from the first result set, not the last as specified in the documentation. This was corrected to return the last value.
File Copy task does not preserve original file when using option to rename conflicting files
Fix to allow Job Variables in the "Source" for file operation tasks

File Operation Tasks now allow you to use a Job Variable as an include file when the Source Root is set to "Specify absolute paths."

You can include multiple files in a single Job Variable by using ";" or "," to separate them. For example, you can set "MyFileList" to "c:\test\file1.txt;c:\test\file2.txt;c:\test\file3.txt". In the File Transfer task, set the Source Root to "Specify absolute paths" and enter "%MyFileList%" in the Include Files box. The task will copy all three files.

This feature can be used to copy the files found by a File Trigger: Set the Include Files to "%FileTrigger.FileName%". The "FileTrigger.FileName" is automatically set by the File Trigger to contain the names of the files matches by the trigger.

Triggers
After an e-mail trigger reports a login failure, editing the Service Provider does not re-queue the job
If an e-mail trigger is disabled due to a service provider configuration problem, editing and saving the Service Provider should cause the trigger to get re-enabled, but this was not happening.
File Trigger may not properly handle disconnected network drives

If a network (or removable) drive is unavailable, the File Trigger may treat this as though all files on the monitored drive had been deleted, resulting in erroneous file deletion triggers followed by erroneous file creation triggers when the drive is restored. The problem was fixed to correctly handle this scenario.

adTempus may disable improperly disable e-mail triggers when connection errors occur
When an adTempus e-mail trigger fails due to a problem connecting to the mail server, it logs an error message and disables the trigger until the (assumed) configuration problem is corrected. However, this was being erroneously applied in situations where the error was transient (such as a connection timeout) rather than a configuration error. The behavior has been changed so that the problem is reported but the trigger is no longer disabled.
File Trigger continues using old settings after job is updated
If a file specification is changed for a File Trigger, adTempus may continue to use the old value for the file specification until the next time the adTempus service is restarted.
User Interface
Saved settings in Execution Options window are not used
If you check the "Save the selected options as the default options" box in the Execute Job window, the selected options may not correctly default those options when you return to this window.

4.3.1

Released April 1, 2016

Fixed Issues

Console
Hold and Release sub-menus are empty on the right-click popup menu for jobs

For more information see Knowledge Base article K00000515.

Import/Export
During import, Duplicate objects not handled correctly if "Don't import referenced objects that already exist on this server" option is checked
To resolve this problem, the adTempus Console must be updated with the new software. The adTempus service does not need to be updated.

For more information see Knowledge Base article K00000511.

4.3.0

Released March 26, 2016

Enhancements

Database
Add ability to wait for database to be available during startup
At computer startup, in some cases adTempus tries to connect to SQL Server before SQL Server has finished loading the database, so the connection fails, and adTempus fails to start. An option has been added to specify a delay for adTempus to wait for the database.
General
Support proxy servers for FTP and SFTP connections
Connections to FTP and SFTP servers now can be configured to use proxy servers.
Import/Export
Add option to only import objects that were explicitly exported

A new option in the Import wizard allows you to only import objects that were explicitly exported.

For example, when you export a job, the export file also includes everything the job links to, including its Job Group, Job Queue, Credential Profile, Remote Agents, Notification Recipients, etc. By default, all of these additional objects get imported on the target server if they are newer than the existing versions on the target server.

In some cases (such as copying a job from your test server to your production server) you only want to import the job itself and not overwrite the existing settings for the other objects. When the "Don't import referenced objects that already exist on this server" option is checked, these objects will not be listed on the object selection page of the wizard and will not be imported unless they do not already exist.

In all cases, adTempus imports any linked objects that do not already exist on the target server.

Fixed Issues

Actions
adTempus fails to use elevated context when capturing files or deleting files after capture

When capturing files for a File Capture Action, or deleting files that have been captured, adTempus may fail to use the elevated logon context, resulting in error "Access to the path is denied" if the necessary permissions are assigned only to Administrators.

Incorrect error message logged when adTempus cannot delete a captured file

When adTempus fails to delete a captured file, it logs error ADT005055 ("Could not capture file") even though the file was successfully captured to the file history. This has been replaced with error ADT005409 ("Could not delete captured file").

File Capture error if File Capture file specification is empty
If a File Capture Action is configured to capture a file where the file name is specified using a Job Variable, and that variable does not have a value at runtime, adTempus reports a failure because the filename is not valid. This has been changed to ignore file specifications that evaluate to an empty string.
Conditions
Job Condition may be satisfied prematurely when target job has multiple steps
If Job A has a Job Condition requiring that Job B must succeed, and Job B has multiple steps, in some cases Job A may execute after a non-terminal step in Job B completes, rather than waiting for the end of Job B.
Job stuck in "Waiting for Condition" status after all conditions are met

This problem still occurred in some cases even after fix CR00005098 in adTempus 4.2. The problem occurred only when:

  • A job runs in a Queue that is configured to use Load Balance or Slave mode
  • The Queue is configured to check conditions on the Master
  • The job has previously been sent to an Agent for execution following a condition check.

On subsequent execution attempts, the job will get stuck in "Waiting for Condition" status.

In addition, if the job is configured to not execute if another instance is already running, the job may be skipped even though no instance is active.

When a Job Condition is configured to look at the "Most recent instance since..." it may look at the wrong instance
Console
Cannot export data directly between adTempus instances running on the same server
If the adTempus Console is connected to more than one adTempus instance on the same computer, the Export window, does not show the additional instance(s) as valid targets for data export.
Hold and Release commands may not show correctly on context menu for Jobs, Queues, and Groups
Console connection fails in some cases when trying to hold or release Job, Group, or Queue

When you attempt to hold or release a job, queue, or group using the right-click context menu, the Console connection to the server may fail with the following error:

Message Number: ADT005166E Message: The server connection has failed or has been closed: There was an error while trying to serialize parameter http://arcanadev.com/adTempus/4.0:value. The InnerException message was 'Enum value '2147483646' is invalid for type 'ArcanaDevelopment.adTempus.Shared.HoldType' and cannot be serialized. Ensure that the necessary enum values are present and are marked with EnumMemberAttribute attribute if the type has DataContractAttribute attribute.'. Please see InnerException for more details.: Enum value '2147483646' is invalid for type 'ArcanaDevelopment.adTempus.Shared.HoldType' and cannot be serialized. Ensure that the necessary enum values are present and are marked with EnumMemberAttribute attribute if the type has DataContractAttribute attribute.

This problem was resolved.

Workaround

This problem only occurs when using the right-click context menu. You can still change the hold type by editing the job, queue, or group and changing the hold setting in the properties window.

Users cannot Duplicate objects unless they have full control

If a user tries to duplicate an object (e.g., a Job), they get a permission error unless they have full control for the object.

This was corrected to work properly. A user can duplicate an object if the user has permission to view the object and to create new objects of that type. For example, to duplicate a Job, the user must have permission to view the job and also permission to create new jobs in the Group where the job is found.

Job Monitor stops updating instances that have been running for longer than the "Show past" time limit

If the Job Monitor view is configured to show both Active and Past instances, the Job Monitor stops updating the statuses of jobs that have been running longer than the "Past" time limit.

For example, if the Job Monitor is configured to show instances from the past 12 hours, any job that runs longer than 12 hours will no longer be updated in the Job Monitor, but will still appear there as active even if it has finished.

This problem was corrected. The update must be applied to the adTempus server; the Console software is not affected.

When a different Job Group is selected, the history from the previously-selected job remains displayed until another job is selected
If you select a Job Group in the Console Tree but don't select a job within the group, the Console continues to display the history for the job that was previously selected, making it appear that the history is related to the new selected group. This problem was resolved.
Data Conversion
Database upgrade may time out when converting history data
During the database upgrade process from a previous version of adTempus, the conversion may fail due to a database timeout when converting job history data. This problem was corrected.
General
Job status changes may not be recorded when database deadlock occurs
In some situations when database deadlock occurs when adTempus is recording the completion of a job, this may result in a missing finish time for the job and instance.
Job instances and log messages do not correctly inherit permissions from jobs

If a non-Admin user is granted "Execute" permission for a job, user should be able to terminate an active instance of the job, and to acknowledge instances and messages for the job. However, if the permissions are assigned at the Job level (rather than at the Group or Queue level), they are not properly inherited, and these options are not available to the user.

Job may show error icon even though all failed instances appear to have been acknowledged

In some situations the Console showed a red "error" icon for jobs (indicating the existence of one or more failed instances for the job) even though no instances for the job appeared in the Failed Jobs view.

This problem was partially resolved in version 4.2 under CR00003058 but the problem remained in some scenarios.

"Total Executions" statistic for jobs is doubled

The "Total Executions" count tracked for each job and shown on the Statistics page is double the actual execution count.

This problem was fixed so that executions are not double-counted going forward, but the existing (incorrect) count is not adjusted.

Limit size of messages written to Job Log
Scripts run by adTempus can log messages to the Job Log. In some cases the size of the message text being logged was very large, resulting in size limit errors when trying to send data to the Console. adTempus has been modified to truncate large messages in the Job Log and send the full message details to the Script Debug Log.
Job Diagram may give unexpected error when processing jobs
Some data left in database during history cleanup operations

With adTempus 4.2 installed, when adTempus purges old history data from the database, records are left behind in some tables when they shouldn't be.

This update fixes the problem.

Jobs may not be immediately queued/dequeued for execution when group is released/held

When you hold (disable triggers for) a Job Group, all jobs within the group should be dequeued (should no longer be triggered). Conversely, when you release (enable triggers for) a Job Group, all jobs within the group should resume executing based on their schedules or other triggers. However, in some cases this does not happen after you change the hold settings for a group.

If you subsequently edit and save a job, that job will then be queued or dequeued as expected. If you restart the adTempus service, all jobs will behave as expected.

This issue was resolved so jobs are queued/dequeued when the change is made to the group.

Minimum interval applied incorrectly for Alert Notification Rules

If you have defined an Alert Notification Rule, adTempus interprets the Minimum Interval setting incorrectly and sends alerts before the minimum interval as elapsed, but not after it has elapsed. This is the reverse of the expected behavior.

This problem was corrected.

Import/Export
When importing jobs from adTempus 3.x, trigger times may be shifted to the wrong time zone
When you import an adTempus 3.x export file into adTempus 4, jobs that use Schedule Triggers to trigger at a specified time may end up scheduled at the wrong time due to a time zone shift. This occurs because adTempus 3 erroneously includes time zone information with the scheduled execution times, and adTempus 4 erroneously adjusts the trigger times using this information. specified execution times should always be absolute times regardless of time zone. This problem was corrected to ignore the time zone.
Job Execution
Jobs may be slow to start due to excessive data fetch
When adTempus starts a job, it is in some cases loading a large amount of unnecessary data about other jobs, delaying the start of the job by up to 10s of seconds. If many jobs are being started around the same time, this can produce a cumulative delay, resulting in jobs being started several minutes after their trigger time.
Nested variables not expanded when setting environment block for programs

If you have defined nested job variables, the nested variable(s) are not expanded when the environment block is set for programs run by adTempus.

For example, you have the following job variables:

  • "VariableA" is set to "Value A"
  • "VariableB" Is set to "The value is: %VariableA%"

VariableB is configured to be added to the environment for programs run by adTempus. If the program retrieves "VariableB" from the environment, it should get "The value is: Value A". However, it gets "The value is: %VariableA%" instead. This occurs even though the variable expansion works correctly elsewhere within adTempus and appears correctly in the debug log for the job.

Notification
Files not attached to notification message when maximum message size for messaging service provider is 0

When upgrading from adTempus 2 to adTempus 4, if a Messaging Service Provider has the maximum message size set to 0 (which indicates "no limit" in adTempus 2), adTempus does not include any attachments on notification messages.

Workaround: Edit Messaging Service Provider and click OK to update the limit to the default of 10MB.

Reports
Security Configuration report does not show any data

When you run the Security Configuration Report, it may not show any data. This problem was corrected.

This problem was resolved. The update must be applied to the adTempus server; the Console software is not affected.

Responses
Default notification message does not contain enough details for some Response scenarios

When a Program Execution Task has a Response configured to send notification on success or failure, the default notification message is a generic message: "The program has completed with exit code {0}". The message should indicate whether this is being treated as a success or failure.

The generic message ADT005003 has been replaced with the appropriate status message:

  • ADT005252: Task ended with exit code {0}, which indicates failure according to the exit code rules for the step
  • ADT005410: Task completed successfully with exit code {0}. 
Some Responses based on number of files processed by File Operation Task are incorrect

When you execute a File Operation Task you can configure Responses based on the number of files processed. The following problems were corrected for those Responses:

  • When you select "Affected file count matches a value," there was no way to specify the file count
  • The responses for "No files affected" and "One or more files affected" were reversed
Security
Users cannot hold/release jobs, groups, or queues unless they have Modify permission

A user who has been granted Hold/Release permission for a job, group, or queue is unable to change the hold settings for the object unless the user also has Modify permission, which should not be required.

This problem has been corrected.

Server Tools
Opening "Set Command" window in adTempus Database Utility may cause connection information to be lost

In the adTempus Database Utility, if you use the File/Set Connection command and cancel out of the connection dialog, subsequent attempts to open a new query tab result in error "SQL Server does not exist or access denied" because the tool has lost the database connection information.

Tasks
Job Variables not expanded in external script file name

If you use a Script Execution Task to run a script stored outside adTempus, and the path/filename of the script to execute contains Job Variables, adTempus does not expand the variables, and task execution fails because script file cannot be found. This problem was resolved to expand the job variables.

Triggers
File Trigger may not trigger for files on network drives

A File Trigger may not trigger for a file if all of the following are true:

  • The target file is on a remote (network) drive.
  • The trigger is configured to wait until x seconds after the last modification timestamp for the file.
  • adTempus initially detects the file before the x seconds have elapsed.

In this scenario, adTempus may not "see" the file when it subsequently tries to check the modification timestamp, and therefore does not trigger the job.

Job Variables created or modified by trigger scripts are not passed to job
When a trigger runs a script as part of the trigger evaluation process, if that script creates or modifies any Job Variables those variable changes are not passed through to the job when it executes.

4.2.0

Released April 6, 2015

Enhancements

Actions
Allow job to terminate itself using Responses

The Job Control Action has been modified so that a Response (run at the Job or Job Step level) can terminate itself. For example, this can be used to allow a job to terminate itself if it exceeds a specified run time.

When the Job Control Action is configured to terminate "The current job," it will terminate only the instance of the job that runs the Response, not any other executing instances.

Conditions
Show expanded filespec in Condition Status while job is waiting for File Condition
Console
Add ability in Console to review and trust server certificates
If the security certificate being used by the adTempus server is not trusted by the client computer, the Console now gives the ability to review the certificate and trust it.
When duplicating a group of jobs, map links between jobs in group to new copies

When you duplicate a Job Group (which makes a copy of the Group and all its subgroups and jobs), adTempus will now transfer links among jobs (i.e., Job Conditions, Job Control Actions, and Job Triggers) within the group hierarchy to the new jobs.

Previously these links were not updated and remained pointing to the original jobs rather than the new copies.

For example, suppose "Group 1" contains "Job 1," which has a Job Condition on "Job 2". When you duplicate "Group 1" to "Group 1 Copy", "Group 1 Copy\Job 1" will now have a condition on "Group 1 Copy\Job 2". In previous versions the link was not updated, and "Group 1 Copy\Job 1" ended up with a condition on "Group 1\Job 2."

Add job name to job execution dialog
Display Job Group Properties and Job Queue Properties as non-modal windows
Enhance connection options for Remote Agents and Peer connections

The connection property windows for Remote Agents and Peer connections have been enhanced to make it easier to connect to non-default port numbers and named instances, and to enter overrides for servers using untrusted server certificates (see CR00003003).

Refresh Console after modifying/moving/copying/deleting objects
General
When pruning job history, do not remove failed instances that have not been acknowledged

When adTempus prunes job history based on history retention settings, by default it will no longer purge any instances that failed if the failure has not been acknowledged.

This behavior can be changed using the advanced server option "MaintenanceThread:RetainUnacknowledgedFailures".

Import/Export
Add ability to select date range when exporting job history
When you choose to include job history data when exporting jobs, you can now specify the date range for the history records to be included.
Job Execution
When "Include captured console output" is checked for Notification Action or Notification Task, include database task output and other automatically-created job output that serves a similar purpose
Improve output and error reporting for database tasks

Database output file produced by Database Operation Task modified to:

  • Fix problem with output column formatting when data from database contains tabs or newlines. 
  • Show better delineation between result sets for commands that produce multiple result sets.
  • Show better information when database errors occur
  • When error is reported, write output generated before error (previously, error from database caused only error message to be written; any result sets generated by previous commands were not written)
Report error and failure instead of warning if network resource is already in use
When a job needs a network drive letter mapping and the mapping cannot be made because it already exists, adTempus treated that as a warning condition (message ADT000373) and continued job execution. This has been changed to be treated as an error condition that will trigger resource failure behaviors.
Notification
Initial support for HTML-formatted notification messages

Notification messages can now be formatted using HTML, though there is not yet support for editing messages using an HTML editor in the user interface. To use HTML formatting, paste in the HTML source for the notification message. The message body must begin with an "<html>" tag for adTempus to recognize it as an HTML message.

The same automatic conversion will be applied for message bodies set through code or Job Variables.

Reports
Add ability to report on specific groups/jobs for Object Change Log report
Responses
Support step-level Job Variables at Job level, to indicate current or most recent step

The step-level Job Variables are defined only when a Step is executing, and therefore cannot be used in a job-level Response. For example, you might want a job-level Response to run when the job fails, indicating which step failed. Presently there is no variable available to supply this information. adTempus has been modified so the following variables can be used in job-level responses; they will contain information about the most recent step executed:

  • ADTStepNumber
  • ADTStepDescription
  • ADTStepName
  • StepStatus
  • ADTTaskResult

 

Security
Added ability to generate permission report for object/user

The permission report shows the effective permissions for a particular object and user and can be used to debug problems with permission inheritance.

To display a report, right-click within the settings area on the Security page of an object properties window, and select "Show permission report for user..."

Server Tools
Add ability to generate self-signed server certificate
In order for the adTempus Console (or another adTempus server) to communicate with an adTempus server that is not in a trusted domain, adTempus requires that the server have an X.509 server certificate. While it is best to use a certificate issued by a certificate authority that will be trusted by client computers, the Endpoint Configuration Tool has been updated to include the ability to create a self-signed certificate.
Tasks
Improve support for running stored procedures in Oracle databases

Due to a limitation of the database driver used for Oracle, stored procedures could not be executed using the "exec procname" syntax when running Database Operation Tasks. adTempus has been modified to translate "exec" statements to the required syntax.

A statement such as

exec my_proc('parm1')

is now submitted to the database as

{call my_proc('parm1')}

Change File Transfer to log warning message when source directory does not exist
Triggers
Allow File Trigger and E-Mail Trigger to trigger for separate instances when job is configured to wait, then skip
If a job's Multiple Instances option is set to "Execute only if the previous instance(s) complete within the specified interval", adTempus does not allow you to create a File Trigger or E-Mail Trigger that is configured to start a new instance for each found file or e-mail message. This has been changed to allow this combination of settings. However, be aware that if the interval is not set to a sufficiently long time, this could result in the job not executing for some files/messages.

Fixed Issues

Actions
Notification message is incorrect for Responses run when a task is terminated because it exceeds its allowed run time
The text for message code ADT005052 should read "Task was terminated because it exceeded its maximum run time" but is being sent as "Invalid execution target".
Job Control Action cannot be configured to target the current job when selecting the "Run a Job" or "Terminate a Job" option
When a Job Control Action restarts a job, the restart count for steps is not reset
If Job Step has Response for "Restart limit exceeded" this can result in infinite attempts to restart job

When you create a Response for a Job Step using the "Restart Limit Exceeded" event, adTempus applies that event any time another Response on the Step tries to restart either the Job or the Step and reaches the restart limit. Because of the ambiguity over which restart this Response should apply to, adTempus ends up invoking the Response in an endless loop once the restart limit for the job is reached.

To resolve this problem the behavior of the event has been changed so that the "Restart Limit Exceeded" event only applies to restarts of the Job Step when it is used for a Response defined for a Step.

Any Responses defined at the job level for "Restart Limit Exceeded" will be invoked for any job restart, whether invoked from job-level or step-level responses.

Conditions
Condition status timestamps shown in UTC instead of local time
When file condition is set to "Only consider files modified since the last execution of the job", it only looks at files modified since current instance started
This issue was corrected so that the File Condition will properly look for files created/modified since the previous instance of the job that ran successfully (Failed or Aborted instances are ignored). If no previous instance of the job exists, the condition will ignore the timestamp.
Job remains stuck in "Waiting for Condition" status after all conditions are met

For more information see Knowledge Base article K00000460.

Console
Error when browsing for files on server and user does not have permission for folder
Cannot retrieve/view Captured File that exceeds approximately 10MB in size
Change client to use "localhost" instead of computer name when connecting locally
When connecting to the local computer, the client was incorrectly using the computer name instead of "localhost", possibly causing the connection to be routed through the network stack and adapter instead of being treated as a local connection. In one reported instance this caused a problem.
Inherited Job Variables show wrong Value Type when changing value
Job may show error icon even though all failed instances appear to have been acknowledged
Failed Jobs view does not requery when "Also show instances that completed with warnings" option is changed

If you change the setting of the "Also show instances that completed with warnings" option in the Failed Jobs view, the view does not use the new setting right away. Therefore it continues to show jobs filtered based on the old setting. For example, if you check the box to show instances with warnings, no instances will be shown, even if some exist.

This problem has been resolved.

Add status icons to Job Groups and Queues

Added status icons to Groups and Queues to indicate whether they contain active and/or failed jobs. This behavior was present in adTempus 3 and earlier, but was omitted from version 4.

Duplicate Group fails for groups with child groups

When you use the Duplicate Group command to make a copy of a Job Group, the copy may process may fail if the group has sub-groups, giving error ADT000063E: The requested object cannot be found.

If you click the "Look online for more information" link for the error message, this may fail with the error "ActiveX control cannot be instantiated because the current thread is not in a single-threaded apartment."

Fix excessive redrawing/flickering when dragging over Console Tree
Console times out or hangs when attempting to delete a job with a large amount of history

When you attempt to delete a job with a large amount of history (several thousand instances retained), the Console may report a timeout error or may hang indefinitely. This was caused by the adTempus server incorrectly trying to delete the job history in real-time, while the Console waited for a response.

This problem has been corrected so that history for the deleted job is purged during the normal background history cleanup process.

Execute Job window may not reflect changes to steps in job

If you modify a job to add, remove, or reorder steps, and then execute the job manually using the Run command, the Steps page of the Execute Job window may not reflect the changes you have made. This does not affect execution of the job, only your ability to select specific steps.

This problem has been resolved.

Data Conversion
Database upgrade fails on duplicate Credential Profiles

For more information see Knowledge Base article K00000463.

Database upgrade may fail if Active Directory security group used in job permissions cannot be resolved
Database
adTempus cannot connect to database if database password contains certain characters

If you use SQL Server security for the connection to the adTempus database, and the database password contains certain characters (semicolon, single quote, or double quote), adTempus may be unable to connect to the database, reporting the following error:

Keyword not supported: 'XXXX; application name'.

where "'XXXX" is part of the password.

Distributed Scheduling
Jobs not removed from Agent when moved to a different queue
Triggers not sent to Agent if Queue mode changed from Slave or Load Balance to Mirror
Job Variables defined for Remote Agent do not get sent to Agent
When you define Job Variables in the properties for a Remote Agent, those variables should become server-level variables on the Agent (replacing server-level variables of the same name from the Master, if appropriate). However, the Master fails to send them to the Agent.
Request processing error on Agent in some cases when Master sends object delete command
Distributed execution limit may be exceeded when jobs submitted for execution close together
If a Queue uses the Load Balance model and has the option set to "Limit the number of jobs from this queue that can run concurrently across all target computers," this limit may be exceeded if multiple jobs are submitted for execution within a short interval.
General
Missed jobs do not get put in "Missed" status
Remove client session validation based on IP address
Validation of client IP addresses is now turned off by default.

For more information see Knowledge Base article K00000458.

StepDescription column in job history grid is never populated
Import/Export
After successful import and save, "Finish" button should be enabled instead of "Cancel"
Export or import fails if size of exported data exceeds approximately 10MB
Import from version 3 fails if export file contains job history

When importing a version 3 export file into version 4, the import fails if the file contains job history, with error ADT005114E: Import failed: Invalid value "{1EC07219-59BE-4F02-A3BF-C7FDDA2AC982}:{guid value}" for field jobOID

Option to hold imported jobs is ignored when importing from version 3
Job Execution
"JobStatus" job variable may not contain correct value
Remote Agents do not use Job Variables defined at the server level
Network resources may be loaded under wrong security context for user
If a job is run under a user account that is a member of the Administrators group but is not being run with elevated privileges, network resources for the job may be loaded under the elevated security context anyway, leaving them unavailable to the non-elevated processes run by the job.
Job Variables not expanded when loading network resources
adtexec does not wait for jobs that run in a Distributed Scheduling queue that perfoms condition checks on the Master
Job may be skipped in some cases even though another instance is not running

In some scenarios, a job that is configured to skip execution if another instance is already active may be skipped even if no other instance is active. This may occur when all of the following are true:

  • The job has one or more conditions.
  • The job is assigned to a Queue with the following characteristics:
    • "Slave" or "Load Balance" mode
    • Check conditions on the Master
    • Run on Master not checked
  •  

Manual execution through Console or adtexec may report error

When you submit a job for manual execution (through the Execute command in the Console or the adtexec tool) you may receive errorADT000003X: An error occurred on the server while processing the request. The job is successfully submitted for execution despite the error.

This problem was resolved.

ProcessExitCode variable not propagated to other steps
When the Program Execution Task sets the ProcessExitCode Job Variable, the value is not available to subsequent steps in the job. Changed to propagate the value to subsequent steps, as is the case with other task-level result variables.
Database Task fails with internal error after application of hotfix 14323.0927
Job may continue executing steps after Response Action specifies that execution should stop
If two jobs use the same Credential Profile but different network drive mappings, drives may be mapped incorrectly

When adTempus runs multiple jobs at the same time and all use the same Credential Profile, the jobs are run under a single logon session for the user. In cases where two jobs need to map the same drive letter to different resources, this causes the second job's mapping to fail, because the drive letter is already being used in the logon session.

This behavior was modified so that jobs that use different mappings are run under different logon sessions.

Logon sessions may not be logged off when no longer in use
After adTempus finishes executing jobs under a logon session for a Credential Profile, it may fail to log off the user, leaving an active logon session until the adTempus service is restarted. This problem has been resolved so that adTempus closes the logon session when no jobs are using it.
After application of hotfix 14321.1207, adTempus starts multiple job instances even when configured to wait or skip
Logon fails with "unknown error" when password is missing for Credential Profile
Performance
Improve performance when removing expired job history data
Reports
Object Change Log Report does not show changes
When you run the Object Change Log Report, the details of the changes are not shown--only blank space where the change listing should be.
Responses
"Job Skipped" Responses are not inherited past one level of Job Group
Scheduling
Changes to Shared Schedules or Holidays do not take effect until jobs are requeued or adTempus service is restarted
Scripting
When a script fails, the step status may get reported as "Execution Failed" rather than "Failed"

When a script run by a Script Execution Task fails with an error such as an unhandled exception, adTempus may report the status of the step as "Execution Failed" rather than "Failed." Because of this, the step is treated as a failure even if the Success Determination Rule is set to "'Report the step as Successful...'

This behavior has been changed so that "Execution Failed" is only reported if a script cannot be started, and "Failed" is used for any failures during script execution.

Security
Server error when trying to connect to adTempus using Active Directory group-based authentication
May result in error "An error occurred on the server while processing the request.  Please contact Technical Support for assistance."
In some cases Logins cannot be removed from Security Groups
Server Tools
Engine Mode tool cannot be used to configure instances other than the default instance

For more information see Knowledge Base article K00000461.

Service Failures
adTempus service fails to start if performance counters cannot be opened
Tasks
Database operation tasks may fail with "unexpected internal error"
Web Request Task does not use job credentials
When you check the option to "Use the job's credentials," the task does not: it operates in the System context instead.
Database task reports "job not found" regardless of real error when job status cannot be determined
Database may time out while querying for database job status
Fix to database task to allow execution or Oracle stored procedures using "exec" command
Fix for problems caused by database timeout or connection failures when Database Operation Task is running a SQL Server job
File operation task may fail with unexpected internal error
Triggers
If multiple instances are waiting on a previous instance, they are released at the same time
A job is configured with a Multiple Instances option that requires the job to wait for previous instances to finish. Instances 2 and 3 are submitted while instance 1 is running, so both 2 and 3 are waiting for 1 to finish. When instance 1 finishes, instances 2 and 3 may be started at the same time. This behavior has been corrected so that only instance 2 will start, and instance 3 will wait until instance 3 finishes.
Job Variables defined for Schedule Trigger and Startup Trigger are not passed to job when it is triggered

4.0.2

Released March 13, 2014

Enhancements

Notification
Change warning message to Alert when e-mail notification fails

Previous behavior: when e-mail notification fails for a job, adTempus logs a warning message to the Job Log and continues to retry the notification at intervals for up to an hour. If notification is still not successful after that time, an Alert is logged.

New behavior: The initial warning message is now logged as an Alert instead of just appearing in the Job Log for the job.

Fixed Issues

Auditing and Snapshots
Server error when comparing snapshots
Data Conversion
Database upgrade fails due to orphaned script library links

Due to a problem in an earlier version of the software, the adTempus 2 or adTempus 3 database may contain records that point to data that has been deleted. This causes the database upgrade process to fail. The database conversion scripts were modified to remove the invalid data during conversion.

Notification Action Recipients not converted during database upgrade

For more information see Knowledge Base article K00000432.

General
Step number appears twice in many listings of job steps
Slow performance when opening job with links to other jobs
When editing a job that is linked to other jobs (on either end of a Job Condition or Job Control Action) the adTempus server erroneously sends all jobs linked to the job (and jobs linked to them, etc.), resulting in a very slow load.
Security
Login to adTempus server fails with database error when using dynamic login
Administrators may not be provisioned on service startup

adTempus Administrators added through the Database Configuration Wizard or the Administrator Provisioning tool may not be added to adTempus on service startup.

Server Tools
Administrator Provisioning tool crashes on load
If more than on instance of adTempus is configured, the Administrator Provisioning tool may crash after you select the instance to manage.

4.0.1

Released March 2, 2014

Enhancements

Security
Add support for adTempus logins based on Active Directory groups

adTempus can now automatically create logins for users based on Active Directory group membership. See Automatic Login through Group Membership in the online help for more information.

For more information see Knowledge Base article K00000428.

Fixed Issues

Actions
Database error when job restart response runs

For more information see Knowledge Base article K00000423.

Console
Exit code criterion may display incorrectly

If a Program Execution Task, Script Execution Task, or Response Event has an exit code rule that tests for a value equal to 0, the "0" value is not displayed in the Console (the entry box is empty). However, the criterion is still applied correctly using a value of 0. If the criterion is set to a value other than 0, it is displayed correctly.

Console connection to server fails with server certificate error when using adTempus security

For more information see Knowledge Base article K00000426.

Find/Replace references does not replace some references
The replace references function did not replace references to Notification Recipients. The problem was corrected.

For more information see Knowledge Base article K00000427.

Data Conversion
Database upgrade may fail if duplicate Credential Profiles exist
Database
Database Configuration Wizard does not grant permissions on local database to LocalSystem account

As a result adTempus cannot connect to the adTempus database if the LocalSystem account did not already have permissions for the database. Database wizard was fixed to ensure that LocalSystem account is granted permission for adTempus database.

Distributed Scheduling
SSPI error when Master tries to connect to Agent or Peer when target adTempus service is running under a user account
If the adTempus service on an Agent is running under a user account (instead of LocalSystem), the Master fails to connect with error "The target principal name is incorrect". This problem was resolved.
Import/Export
Export file browse dialog does not include adtexport4 extension
Job Execution
adTempus does not set the ComputerName environment variable

 

For more information see Knowledge Base article K00000424.

Internal error when running two jobs at same time: An item with the same key has already been added
In rare cases when two job steps are executed at exactly the same time, one job may fail with an internal error message.

For more information see Knowledge Base article K00000425.

Reports
Job name not shown on Job Inventory Report

For more information see Knowledge Base article K00000429.

Scripting
MyInvocation.MyCommand not exposed correctly for external PowerShell scripts
Due to the way that adTempus executed external PowerShell scripts, the $MyInvocation.MyCommand was of type Script rather than ExternalScript and did not have the Path and other properties set. This was corrected.
Job Variables are not expanded in parameters for PowerShell scripts
If you include Job Variables in the Comand-Line Parameters for a PowerShell script run by the Script Task, the variables are not expanded before being passed to the script.
Security
Remove access to security settings windows for users who don't have administer permission
Applies to container-level security windows (Notification Recipient Security, Script Security, etc.)
Add button available for Jabber servers even if user has no create permission
Server Tools
Changed server tools to require Administrator permissions for execution
The Database Configuration Wizard and Database Utility were changed to require Administrator authority for execution.
Tasks
Cannot change Program Execution Task step from running batch file stored in adTempus to running external program
Console gives error "The Execution Target and Batch Script cannot both be specified" when step was configured to run an internal batch script and you change it to run an external program.
Triggers
File triggers that use Job Variables in the file specification do not trigger
If a File Trigger includes Job Variables in the File Specification, adTempus may fail to trigger for the file(s).
File Trigger does not wait for multiple files
If a File Trigger has more than one file specification and is configured to wait until all specifications have been matched, the Trigger ignores this setting and fires as soon as any of the specifications is matched. This problem was resolved.
Cannot change schedule from running on selected days to running every X days
If a Schedule has been configured to run on specific days and you change it to run every X days, you get an error when you try to save the Scheduler: "Cannot specify days when Criterion Type is Interval".
User Interface
Job Diagram not showing some information correctly
The Job Diagram does not show Job Triggers, and may fail to draw links between jobs linked by Job Control Actions.

4.0.0.0

Released December 19, 2013

Enhancements

Scheduling
Add support for custom work week definition
Previous versions had the ability to schedule on "weekdays" (Monday through Friday) and "weekends" (Saturday, Sunday). Changed to eliminate these fixed definitions to support other workweeks (e.g., Sunday through Thursday).
Scripting
Added support for PowerShell Script Libraries

Fixed Issues

Actions
File capture based on start time does not work
If option checked to only capture files modified since start of job, files not captured.
Job Control Action to run another step skips over the selected step and goes to next
Notification Action does not include attachments
File Capture Action does not e-mail files
Conditions
File condition fails when directory not found

 

Data Conversion
Job Control Action links lost in conversion
General
Alert notification rule matching is incorrect
Alert logged daily for update messages
Cannot remove existing object references in some scenarios
In some scenarios it was not possible to remove a reference from one object to another. For example, if a Schedule Trigger was configured to use a Holiday Set and you changed the Schedule Trigger to no longer use holidays, after saving the Schedule Trigger the holidays were still referenced.
Report Designer
Report designer crashes when creating new report
Scripting
PowerShell output not captured when script uses "exit" command
E-mail send from script fails
Added support for including PowerShell scripts

PowerShell scripts can now reference/include other scripts.

Tasks
Remote service control fails with permission error
Triggers
Job Trigger "Ignore manual instance" option looks at wrong job
Job Trigger not checking source machine of instance events
Event Log Monitor not matching event severity correctly
User Interface
Linked Servers window doesn't show information in columns
Message log query doesn't include non-job messages if jobs selected
Cannot create server-level job variable
Cannot specify remote computer name for service control task
Cannot change name of Job Group
Changes were not saved
Server error when comparing two snapshots
Error when duplicating step that executes notification task
Console error when trying to save object after correcting error

 

Console crash when trying to run job from selected step
Job Control Action does not correctly display selected target step or checkpoint
Console error when duplicating step that contains a Response