pluggable UI for Quartz.NET
C# JavaScript TypeScript HTML CSS Pascal Other
Clone or download
Latest commit f6479ca May 23, 2018

See this branch for the latest beta version

Crystal Quartz Panel is a lightweight, completely pluggable module for displaying Quartz.NET scheduler jobs information.

Build Status Join the chat at


  • simple and lightweight, could be embedded into existing application:
    • supports OWIN-based web or standalone applications;
    • supports non-OWIN web applications;
  • displays basic scheduler information:
    • scheduler state and properties;
    • triggers by jobs and groups;
    • job properties (JobDataMap);
  • ability to perform basic scheduler actions:
    • pause/resume triggers jobs and groups;
    • start/shutdown a scheduler;
    • delete (unschedule) job;
    • execute a job on demand ("Trigger Now").
  • easy integration with a remote scheduler (see examples);

Getting started

CrystalQuartzPanel is implemented as a module that can be embedded into an existing application. Getting started strategy depends on a kind of environment you use.

Option 1: OWIN

UPDATE 2017: Default panel url for OWIN is /quartz instead of /CrystalQuartsPanel.axd now. It helps to avoid issues with routing and runAllManagedModulesForAllRequests configuration. OWIN-based approach is the preferred way of configuring CrystalQuartz panel now as it allows to setup Simple, Remote or Self-Hosted scenarios in a clean, code-only manner.

Please check complete OWIN setup guide for getting started.


Option 2: Non-OWIN

Non-owin CrystalQuartzPanel implemented as an http module. It can work in web-applications only and requires some configuration to be added to the web.config file. There are two NuGet packages aimed to help in case of non-owin application, the choice depends on the type of scheduler you use.

Option 2.1: If Quartz Scheduler works in the app domain of your web application:

  1. Install CrystalQuartz.Simple NuGet package.

Install-Package CrystalQuartz.Simple

  1. Customize SimpleSchedulerProvider class that has been added by NuGet package
public class SimpleSchedulerProvider : StdSchedulerProvider
    protected override System.Collections.Specialized.NameValueCollection GetSchedulerProperties()
        var properties = base.GetSchedulerProperties();
        // Place custom properties creation here:
        //     properties.Add("test1", "test1value");
        return properties;

    protected override void InitScheduler(IScheduler scheduler)
        // Put jobs creation code here
  1. Run you application and go to YOUR_APP_URL/CrystalQuartzPanel.axd

Option 2.2: If Quartz Scheduler works in a separate application (remote scheduler):

  1. Install CrystalQuartz.Remote NuGet package.

Install-Package CrystalQuartz.Remote

  1. Customize url of the remote scheduler in web config file:
        <add property="Type" 
             value="CrystalQuartz.Core.SchedulerProviders.RemoteSchedulerProvider, CrystalQuartz.Core" />
        <add property="SchedulerHost" 
             value="tcp://localhost:555/QuartzScheduler" /> <!-- Customize URL here -->
  1. Run you application and go to YOUR_APP_URL/CrystalQuartzPanel.axd


Custom styles

It is possible to apply some custom css to CrystalQuartz UI. To do so you need:

  1. create a css file somewhere in your web application;
  2. add a reference to this css file in CrystalQuartz config:
<sectionGroup name="crystalQuartz" type="CrystalQuartz.Web.Configuration.CrystalQuartzConfigurationGroup">
      allowDefinition="Everywhere" />
  <!-- options section is required -->
      allowDefinition="Everywhere" />

<!-- ... -->
  <!-- ... -->

See custom styles example for details.

Building from source

Please use Build.bat script to build the project locally. Rebuilding directly from Visual Studio would not work correctly because some client-side assets should be regenerated. Build.bat is a bootstrapper for Rosalia build tool. Prerquirements:

  • Typescript should be installed on your machine and tsc command should be globally available

Once the build completes successfully, you can Run the VS project as usually.


Please use gitter to ask questions. Fill free to report issues and open pull requests.


Latest update:

Added an ability to add triggers for existing Jobs

Add Trigger option in Job dropdown:

Add Trigger form:

See full changelog