Features

Features

Besides being an attractive and user-friendly GUI, QuartzDesk provides many unique features that we think you should know about when evaluating and considering QuartzDesk. These features are summarized on this page.

 

Supported Quartz Versions

QuartzDesk supports all Java Quartz scheduler versions newer than or equal to 1.8.5.

This feature is available in all QuartzDesk editions.

 

JMX Protocols

QuartzDesk uses JMX to locally or remotely connect to all managed and monitored Quartz schedulers. QuartzDesk supports all popular JMX protocols such as the JMX/RMI (JMX over RMI protocol), JMXMP and REMOTING-JMX (JBoss proprietary protocol).

This feature is available in all QuartzDesk editions.

 

User And Group Management

QuartzDesk Web Application implements a fine-grained security model that enables you to manage QuartzDesk users, groups and their permissions directly in the QuartzDesk GUI. There are over 50 access permissions that can be assigned to individual users and/or groups. A current user's effective permissions are calculated from permissions directly assigned to the user and permissions assigned to all groups the user is a member of.

QuartzDesk users are authenticated against a pluggable security realm. A security realm is an arbitrary "database" containing basic user details (e.g. first name, surname, email, etc.) and authentication credentials. QuartzDesk provides two out-of-the-box security realm implementations:

DefaultSecurityRealm
The default security realm implementation that uses the configured QuartzDesk database (JDBC).
JNDISecurityRealm
A highly flexible implementation that can use an arbitrary directory service (LDAP). For configuration details, please refer here.

If required, users can provide and plug in their own custom security realm implementation.

This feature is available in all QuartzDesk editions.

  

Quartz Management Operations

Schedulers

QuartzDesk can manage multiple local and remote Quartz schedulers. Quartz scheduler connections can be organized using drag-and-drop into folders within the Schedulers tree panel. QuartzDesk provides an easy way to discover, test and register new scheduler connections.

This feature is available in all QuartzDesk editions.

 

Jobs

QuartzDesk supports all common job management operations such as:

  • Ad-hoc job triggering.
  • Adding new jobs.
  • Editing of existing jobs.
  • Cloning of existing jobs.
  • Removing existing jobs.
  • Viewing the list of currently executing jobs.
  • Real-time viewing of intercepted log messages of a currently executing job. (Only Standard and Enterprise edition and Quartz >= 2.1.0)
  • Interrupting of currently executing jobs. (Only Quartz >= 2.1.1)
  • Resuming and pausing of job groups.

This feature is available in all QuartzDesk editions unless stated otherwise.

 

Triggers

QuartzDesk supports all common trigger management operations such as:

  • Viewing all registered triggers.
  • Viewing triggers of a selected job.
  • Viewing extended trigger attributes. (Only QuartzDesk Standard and Enterprise editions)
  • Adding new triggers. (Only QuartzDesk Standard and Enterprise editions)
  • Editing of existing triggers. (Only QuartzDesk Standard and Enterprise editions)
  • Cloning of existing triggers. (Only QuartzDesk Standard and Enterprise editions)
  • Removing existing triggers.
  • Pausing and resuming of individual triggers.
  • Pausing and resuming of trigger groups.

This feature is available in all QuartzDesk editions unless noted otherwise.

 

Trigger Misfires

QuartzDesk keeps track of and displays all trigger misfires. A trigger misfire occurs when a trigger cannot execute its associated job at the scheduled time due to the scheduler being stopped, paused, or if the scheduler cannot allocate a free worker thread to execute the job.

When a misfire is detected, the scheduler uses the misfire instruction set on the misfired trigger to determine whether and how the associated job should be executed.

For each trigger misfire, QuartzDesk GUI displays the current refire status for the misfired job so that you can see if the job was executed after the misfire condition was detected and what the status of that execution was (i.e. Success, Error, Veto).

This feature is available only in the QuartzDesk Standard and Enterprise editions.

 

Execution History

QuartzDesk records individual job executions and vetoes. For each job execution, more than 30 runtime parameters are recorded. The collected data can then be easily accessed through the QuartzDesk GUI in the Execution History table. In the Execution History table, you can quickly identify all successful, failed and vetoed executions because these are shown with distinct row background colors.

If the executed job produced a result, you can view its textual representation by clicking on the icon in the Result column. If the job execution failed, you can view the execution exception by clicking on the icon in the Exception column.

The Execution History table is available at the job, trigger and scheduler level. Therefore you can easily obtain the execution history for the selected job, or trigger. Execution history on the scheduler level provides access to the complete execution history for the given scheduler across all of its jobs and triggers.

This feature is available only in the QuartzDesk Standard and Enterprise editions.

 

Job Execution Logs

QuartzDesk can intercept log messages produced by executed jobs. The intercepted log messages are recorded and can be viewed by clicking on the icon in the Execution History table's Log column in the QuartzDesk GUI.

Log message interception is currently supported for all popular Java logging frameworks, such as the Java Utility Logging (JUL), Log4j, Log4j 2 and Logback.

This feature is available only in the QuartzDesk Standard and Enterprise editions.

 

Planned Job Executions

In the Planned Job Executions tab, you can view the list of all jobs scheduled to execute between the specified start and finish datetimes. This is very useful, for example, when planning a downtime when you can use this feature to view the list of all jobs affected by the downtime.

In the Jobs and Triggers tabs, you can view the next fire times (planned scheduled times) of a selected job or trigger respectively.

This feature is available only in the QuartzDesk Standard and Enterprise editions.

 

Job Chaining

The job chaining engine allows users to easily orchestrate the execution of their jobs and completely externalize job runtime dependencies and inter-job communication from the application code. The job chaining works seamlessly across local and remote schedulers.

If users need to chain execution of their jobs, they need to create a job chain. A job chain has a condition that is evaluated prior to the execution of the configured job chain target jobs. Only if the condition evaluates to true, the job chain target jobs are scheduled for execution. QuartzDesk supports the following job chain conditions:

Condition TypeUsage
Execution StatusTriggers target jobs when the source job execution finishes with a configure execution status (Success, Veto, Error).
Max DurationTriggers target jobs when the source job finishes executing and its execution time exceeds the configured number of milliseconds.
Expression

The most powerful condition type that allows users to implement an arbitrary condition logic using the JavaScript language.

Besides standard JavaScript objects, the expression can use more than 70 scripting objects exposed by the QuartzDesk runtime. Please note that the list of available scripting objects includes the textual representation of the source job's execution log that can be, for example, easily parsed and analyzed.

QuartzDesk job chains can execute local and remote target jobs. These target jobs can be executed immediately, after a configured delay or at a specific datetime in the future returned by a custom JavaScript expression.

When a target job is executed, the following entries are automatically added to its job data map:

NameDescription
QD_JOB_CHAIN_IDThe ID of the job chain that triggered the target job.
QD_JOB_CHAIN_NAMEThe name of the job chain that triggered the target job.
QD_JOB_CHAIN_SRC_JOB_GROUP_NAMEThe group name of the source job.
QD_JOB_CHAIN_SRC_JOB_NAMEThe name of the source job.
QD_JOB_CHAIN_SRC_TRIGGER_GROUP_NAMEThe group name of the source trigger.
QD_JOB_CHAIN_SRC_TRIGGER_NAMEThe name of the source trigger.
QD_JOB_CHAIN_SRC_EXEC_STATUSThe execution status (SUCCESS, VETO, ERROR) of the source job.
QD_JOB_CHAIN_SRC_RESULTThe result object set by the source job. See the JobExecutionContext.setResult(Object) method.
QD_JOB_CHAIN_SRC_USER_DATAThe user-data object set by the source job. User-data is a QuartzDesk-specific extension object that can be set in jobs by invoking JobExecutionContext.put("USER_DATA", Object). User-data objects can be viewed in the execution history in the QuartzDesk GUI and they can also be used in execution notification rules.
QD_JOB_CHAIN_SRC_ERRORThe stack trace of the exception that caused the execution failure of the source job.

Job chains can be defined at the job, trigger and scheduler levels.

This feature is available only in the QuartzDesk Enterprise edition.

 

Execution Statistics

With the help of 12 Execution Statistics provided by QuartzDesk, you can get a complete picture of what is going on inside the managed Quartz schedulers. For example, the Execution Statistics allow you to easily identify the most frequently failing jobs/triggers, the slowest jobs/triggers and more. If you find a problem, you can then use the Execution History to drill-down and find out further details (e.g. job execution exceptions). You can easily set up your SLAs for individual jobs and triggers and then use Execution Statistics to verify whether these SLAs have been met.

Execution Statistics are available at the job, trigger and scheduler level for the following time periods and granularities:

PeriodGranularity
DayHourly
WeekDaily
MonthDaily
QuarterMonthly
YearMonthly

 

This feature is available only in the QuartzDesk Enterprise edition.

 

Execution Notification Rules

Execution Notification Rules provide a very effective way of monitoring job executions following the Hollywood principle. Whenever a job gets executed by any of the managed Quartz schedulers, all associated notification rules are evaluated. If the notification rule condition evaluates to true, a configured message is enqueued for delivery through the selected message delivery channel and sent to the specified list of recipients.

QuartzDesk execution notification rules keep you informed about all non-standard job execution-related issues before they turn into a problem that impacts your business and customers

QuartzDesk supports the following notification rule condition types:

Condition TypeUsage
Execution StatusSuitable for simple notifications based on the job execution status (Success, Veto, Error).
Max DurationSuitable for monitoring of job executions exceeding the specified number of milliseconds.
Expression

The most powerful type of all execution conditions that uses an arbitrary JavaScript expression. This condition can be used to implement any notification logic.

Besides standard JavaScript objects, you can use more than 70 scripting objects exposed by the QuartzDesk runtime. Please note that the list of available scripting objects includes the textual representation of the job execution log that can be easily parsed and analyzed.

 

The following table presents examples of some of the typical JavaScript expressions that can be used in notification rules.

ExpressionDescription
true
Always notify.
execHistory.jobName == 'MyJob'
Notify of all 'MyJob' job executions.
execHistory.duration > 5000
Notify of all job executions exceeding 5 seconds.
execHistory.execStatus == 'ERROR'
Notify of all job execution failures.
precedingExecHistory != null
&& precedingExecHistory.execStatus != execHistory.execStatus
Notify of a job execution status change.
( precedingExecHistory == null || precedingExecHistory.execStatus == 'SUCCESS' )
&& execHistory.execStatus == 'ERROR'
Notify of a job execution status change SUCCESS->ERROR (first error notification).
( precedingExecHistory != null && precedingExecHistory.execStatus == 'ERROR' )
&& execHistory.execStatus == 'SUCCESS'
Notify of a job execution status change ERROR->SUCCESS (recovery notification).
execHistory.log != null && execHistory.log.match( /Some Text/ ) != null
Notify of the 'Some Text' text appearing in the intercepted job execution log.
function isSuccess( result ) 
{ 
  log.info( 'Job exec result is: ' + result ); 
  return result == '0'; 
} 

isSuccess( execHistory.result );

Notify of the '0' job execution result set by the executed job.

Please note the use of a JavaScript function. Functions can improve readability and logic reuse when called from cycles, other functions etc.

Please note the use of a log statement. Log statements help debug created JavaScript expressions. Their output is available in the QuartzDesk JVM Agent log.

 

Each notification rule defines a message that is enqueued and delivered to the defined recipients. When composing a notification message you can make use of more than 50 available message subject and body macros that get automatically expanded before the message is enqueued and delivered. Some notification channels allow for adding message attachments. The following message attachments can be added:

 

In the QuartzDesk GUI, it is possible for individual notification rules to view the history of enqueued notification messages with their delivery status. You can also display the message body and attachments.

Notification rules can be defined at the job, trigger and scheduler level.

This feature is available only in the QuartzDesk Enterprise edition.

 

Message Channel Profiles

A message channel profile is a configuration object that describes message delivery channel type and properties. For instance, an email message channel profile defines the sender email address, SMTP server host, SMTP server port and optional SMTP server authentication credentials. Message channel profiles are used by notification rules described in the preceding section to deliver notification messages. QuartzDesk currently supports the following message delivery channels (message channel profile types):

 

QuartzDesk Web Application provides a trivial test implementation of the MessageReceiverService endpoint at the following URL:

http(s)://<host>:<port>/<context>/services/msgrecv/<version>/MessageReceiverService

where:

<host>
The name of the host the QuartzDesk application has been deployed on.
<port>
The HTTP/S port the QuartzDesk application is available at.
<context>
The web-context root of the deployed QuartzDesk application.
<version>
The MessageReceiver web-service version (e.g. v10_0,...).

This feature is available only in the QuartzDesk Enterprise edition.

 

Monitoring

QuartzDesk exposes a REST API to monitor individual managed schedulers, jobs and triggers. This API is primarily intended to be integrated into system / network monitoring solutions, such as Nagios, Cacti, etc. that provide URL monitoring capabilities.

The monitoring REST API is available at the following URLs.

Scheduler Monitoring

http(s)://<host>:<port>/<context>/monitor/quartz/scheduler/<scheduler_id>

Job Monitoring

http(s)://<host>:<port>/<context>/monitor/quartz/job/<scheduler_id>/<job_group_name>/<job_name>

Trigger Monitoring

http(s)://<host>:<port>/<context>/monitor/quartz/trigger/<scheduler_id>/<trigger_group_name>/<trigger_name>

where:

<host>
The name of the host the QuartzDesk application has been deployed on.
<port>
The HTTP/S port the QuartzDesk application is available at.
<context>
The web-context root of the deployed QuartzDesk application.
<scheduler_id>
The managed Quartz scheduler ID.
<job_group_name>
A Quartz job group name.
<job_name>
A Quartz job name.
<trigger_group_name>
A Quartz trigger group name.
<trigger_name>
A Quartz trigger name.

The monitoring URLs are shown in the QuartzDesk GUI from which they can be easily copied. The screenshot gallery below shows where these URLs are available in the application and the results that individual monitoring URLs return.

When using this type of monitoring, please note that its reliability depends entirely on the frequency used to poll data from the REST API. For example, if the polling frequency is lower than the job execution frequency you may easily miss some important job execution status changes. On the other hand, if the polling frequency is too high, it may unnecessarily increase the load on the server hosting the QuartzDesk application, as well as on the servers the queried schedulers / jobs / triggers are running on.

For these reasons, we recommend using this monitoring API primarily for scheduler monitoring where the expected frequency of state changes is typically very low, or for monitoring of jobs / triggers with low execution frequency (e.g. jobs executed few times a day). For all other use-cases, we strongly recommend using the Notification Rules that offer a robust, flexible and reliable job execution monitoring framework.

 

The scheduler, job, and trigger monitoring operations are also exposed through the Quartz Web Service described further below in this document.

This feature is available only in the QuartzDesk Standard and Enterprise editions.

 

Audit Trail

QuartzDesk intercepts all actions performed by authenticated users in the QuartzDesk GUI as well as actions executed through QuartzDesk JAX-WS web-services. The history and details of these actions can be accessed in Audit Trail grids in the QuartzDesk GUI. This enables you to see who modified a particular Quartz / QuartzDesk objects such as a job, trigger, job chain etc. You can see who manually triggered a particular job, who interrupted an executing job etc. 

There is a maintenance task that automatically purges audit trail entry records that are older than the configured number of days (default setting is 90 days). The configuration of this task can be accessed in Settings & Tools > Application Settings in the Quartzdesk GUI. 

This feature is available only in the QuartzDesk Standard and Enterprise editions.

 

Connection Web Service

The Connection Web Service is a SOAP-based JAX-WS compliant web-service that exposes operations that allow you to manipulate registered scheduler connections and folders accessible through the Connections panel in the QuartzDesk GUI. The Connection Web Service is provided by the QuartzDesk Web Application at the following endpoint URL:

http(s)://<host>:<port>/<context>/services/connection/<version>/ConnectionService

where:

<host>
The name of the host the QuartzDesk Web Application has been deployed on.
<port>
The HTTP/S port the QuartzDesk Web Application is available at.
<context>
The web-context root of the deployed QuartzDesk Web Application. 
<version>
The Connection web-service version (e.g. v10_0,...).

The WSDL of the Connection Web Service for the latest QuartzDesk release can be obtained here.

This feature is available in all QuartzDesk editions.

  

Message Channel Profile Web Service

The Message Channel Profile Web Service is a SOAP-based JAX-WS compliant web-service that exposes operations that allow you to manipulate message channel profiles and folders accessible in the Settings > Message Channel Profiles window in the QuartzDesk GUI. The Message Channel Profile Web Service is provided by the QuartzDesk Web Application at the following endpoint URL:

http(s)://<host>:<port>/<context>/services/msg_channel_profile/<version>/MessageChannelProfileService

where:

<host>
The name of the host the QuartzDesk Web Application has been deployed on.
<port>
The HTTP/S port the QuartzDesk Web Application is available at.
<context>
The web-context root of the deployed QuartzDesk Web Application. 
<version>
The Message Channel Profile web-service version (v10_0).

The WSDL of the Message Channel Profile Web Service for the latest QuartzDesk release can be obtained here.

This feature is available only in the QuartzDesk Enterprise edition.

  

Security Web Service

The Security Web Service is a SOAP-based JAX-WS compliant web-service that exposes operations that allow you to manipulate QuartzDesk GUI users and groups as well as their access permissions. The Security Web Service is provided by the QuartzDesk Web Application at the following endpoint URL:

http(s)://<host>:<port>/<context>/services/security/<version>/SecurityService

where:

<host>
The name of the host the QuartzDesk Web Application has been deployed on.
<port>
The HTTP/S port the QuartzDesk Web Application is available at.
<context>
The web-context root of the deployed QuartzDesk Web Application. 
<version>
The Security web-service version (e.g. v10_0,...).

The WSDL of the Security Web Service for the latest QuartzDesk release can be obtained here.

This feature is available in all QuartzDesk editions.

  

Quartz Web Service

The Quartz Web Service is a SOAP-based JAX-WS compliant web-service that works as a single endpoint interface through which you can perform all common scheduler, job and trigger operations on all managed Quartz schedulers. This web-service is provided by the QuartzDesk Web Application at the following endpoint URL:

http(s)://<host>:<port>/<context>/services/quartz/<version>/QuartzService

where:

<host>
The name of the host the QuartzDesk application has been deployed on.
<port>
The HTTP/S port the QuartzDesk application is available at.
<context>
The web-context root of the deployed QuartzDesk application. 
<version>
The Quartz web-service version (v5_0, v6_0, v7_0, v8_0).

The WSDL of the Quartz Web Service for the latest QuartzDesk release can be obtained here.

This feature is available only in the QuartzDesk Enterprise edition.

 

Quartz Exec History Web Service

The Quartz Exec History Web Service is a SOAP-based JAX-WS compliant web-service that works as a single endpoint interface through which you can access job and trigger execution history on all managed Quartz schedulers. This web-service is provided by the QuartzDesk Web Application at the following endpoint URL:

http(s)://<host>:<port>/<context>/services/quartz_exec_history/<version>/QuartzExecHistoryService

where:

<host>
The name of the host the QuartzDesk application has been deployed on.
<port>
The HTTP/S port the QuartzDesk application is available at.
<context>
The web-context root of the deployed QuartzDesk application. 
<version>
The Quartz Exec History Web Service version (e.g. v10_0,...).

The WSDL of the Quartz Exec History Web Service for the latest QuartzDesk release can be obtained here.

This feature is available only in the QuartzDesk Enterprise edition.

 

Quartz Exec Notification Rule Web Service

The Quartz Exec Notification Rule Web Service is a SOAP-based JAX-WS compliant web-service that works as a single endpoint interface through which you can manage execution notification rules on all managed Quartz schedulers. This web-service is provided by the QuartzDesk Web Application at the following endpoint URL:

http(s)://<host>:<port>/<context>/services/quartz_exec_notif_rule/<version>/QuartzExecNotificationRuleService

where:

<host>
The name of the host the QuartzDesk application has been deployed on.
<port>
The HTTP/S port the QuartzDesk application is available at.
<context>
The web-context root of the deployed QuartzDesk application. 
<version>
The Quartz Exec Notification Rule Web Service version (e.g. v10_0,...).

The WSDL of the Quartz Exec Notification Rule Service for the latest QuartzDesk release can be obtained here.

This feature is available only in the QuartzDesk Enterprise edition.

 

Quartz job Chain Web Service

The Quartz Job Chain Web Service is a SOAP-based JAX-WS compliant web-service that works as a single endpoint interface through which you can manage job chains on all managed Quartz schedulers. This web-service is provided by the QuartzDesk Web Application at the following endpoint URL:

http(s)://<host>:<port>/<context>/services/quartz_job_chain/<version>/QuartzJobChainService

where:

<host>
The name of the host the QuartzDesk application has been deployed on.
<port>
The HTTP/S port the QuartzDesk application is available at.
<context>
The web-context root of the deployed QuartzDesk application. 
<version>
The Quartz Job Chain Web Service version (e.g. v10_0,...).

The WSDL of the Quartz Job Chain Web Service for the latest QuartzDesk release can be obtained here.

This feature is available only in the QuartzDesk Enterprise edition.

 

GUI Customizations

Custom Background On Login Screen

You can override the default login screen background image by copying your custom background image to customization/images/background/background.jpg file in the configured QuartzDesk Web Application work directory. The recommended dimensions of the custom background image are 2000 x 1152 px. The image format must be JPG.

This feature is available in all QuartzDesk editions.

Custom Graphics In Top Panel

You can add up to 3 custom images in the top panel of the QuartzDesk GUI. These images can, for example, contain your company or customer logos etc. Some of our customers use the custom images to help them visually distinguish between multiple QuartzDesk Web Application installations running in different environments (e.g. dev, test, prod etc.).

The dimensions of the custom logos must be 300 x 40 px and their format must be PNG.

The custom logo file names for the left, center and right logos must be logo-top-left.png, logo-top-center.png and logo-top-right.png respectively. The files must be copied to the customization/images directory in the configured QuartzDesk Web Application work directory.

This feature is available in all QuartzDesk editions.

Custom Tabs

You can define custom tabs and links in the Navigation panel of the QuartzDesk GUI. These tabs and links can, for example, point to external applications that provide custom views and functionality.

Custom navigation tabs and links are defined in an XML file named navigation-panel.xml in the customization directory inside the configured QuartzDesk Web Application work directory.

When a user clicks a custom link in the Navigation panel, a security token parameter (st) is passed to the configured target URL. The target application can use the QuartzDesk Public API's com.quartzdesk.api.web.security.SecurityTokenUtils.decrypt method to decrypt the security token and obtain the username of the currently logged in QuartzDesk user. The decrypt method expects the following two parameters:

symmetricKey
A 128-bit AES symmetric key. This key must be shared between QuartzDesk Web Application and the target application. To configure a secret key in the QuartzDesk Web Application, please specify the BASE-64 encoded 128-bit AES key in the security.secretTokenKey property in your quartzdesk.properties.
securityTokenStr
A security token parameter value to decrypt.

Please note the security token is valid only for 60 seconds. If you attempt to decrypt an older security token, the QuartzDesk Public API will throw an exception.

 

Resources

  • A sample navigation-panel.xml file.
  • XSD schema files can be extracted from the QuartzDesk Web Application WAR (quartzdesk-war-<version>.war/WEB-INF/lib/quartzdesk-domain-<version>.jar/META-INF/xsd/model/customization/navigation/), where <version> is the QuartzDesk Web Application's version.

This feature is available in all QuartzDesk editions.

 

OEM Customization Framework

The OEM Customization Framework is a simple to use, yet powerful framework provided by the QuartzDesk Web Application component. It allows our OEM partners to externalize changes they make to the QuartzDesk Web Application component. The changes typically include modifications to localized resources (i18n*.properties files), icons/logos (*.png files), CSS stylesheets (*.css files) and JavaScript resources (*.js files).

The OEM partner prepares their changes inside the ${quartzdesk-web.work.dir}/oem directory, where ${quartzdesk-web.work.dir} refers to the configured QuartzDesk Web Application work directory. Once the changes have been finalized, the OEM partner moves the contents of the ${quartzdesk.work.dir}/oem directory to the oem directory in the root of the quartzdesk-web-.x.y.z.war file. This modified WAR file is then ready to be distributed to the end users.

The OEM Customization Framework completely eliminates QuartzDesk Web Application redeploys and servlet container / application server restarts during the development phase on the OEM partner's side because all changes are automatically applied upon reloading the QuartzDesk Web Application browser window. Therefore the framework greatly reduces the development time to implement and test the OEM partner specific changes.

The OEM Customization Framework is enabled by a special type of a license key (OEM license key) that cannot be downloaded on our website. OEM license keys are provided upon request only. If you are interested in QuartzDesk OEM partnership, please contact us at This email address is being protected from spambots. You need JavaScript enabled to view it..

This feature is available only in the QuartzDesk Standard and Enterprise edition and it requires an OEM license key.