Zammad Scheduler is a small PHP app that helps you create, manage, and schedule tickets for your Zammad help desk without having to remember every recurring ticket yourself.
It logs users in through LDAP, pulls groups and users from Zammad, lets you build scheduled ticket templates, creates tickets on a daily, weekly, monthly, or yearly cadence, and keeps a log of what happened.
The app is a web-based scheduler for Zammad tickets. You define a ticket once, choose who it should be assigned to, which group it belongs in, the priority, tags, CCs, and how often it should appear. Then the cron scripts do the boring part and create the ticket in Zammad at the right time.
From the UI you can:
- sign in with LDAP
- view scheduled tickets by Zammad group
- create new scheduled tickets
- edit existing schedules
- disable or delete local schedules
- trigger a ticket immediately with
Run Now - inspect logs for logins, updates, and cron activity
- PHP
- Composer
- PostgreSQL
- A Zammad instance
- A Zammad API token
- LDAP access for authentication
- Cron access on the server that will run the scheduled jobs
The app uses these Composer packages:
directorytree/ldaprecordzammad/zammad-api-client-php
-
Clone the repository to your web server.
-
Install dependencies:
composer install
-
Create your runtime config:
cp inc/config.phpSAMPLE inc/config.php
-
Edit
inc/config.phpand set:- database host, name, username, and password
- Zammad URL and API token
- LDAP host, bind DN, bind password, and base DN
- any optional settings such as log retention
-
Create the database tables.
- Open
install.phpin your browser and run the installer, or - import
mysql_import.sqlinto your PostgreSQL database manually
- Open
-
Make sure your web server document root points at the app directory.
-
Update the hardcoded document root path in
cron/run.phpso it matches your deployment. -
Add one cron job for the scheduler.
The repository includes a single scheduler entrypoint:
cron/run.php
Run that script once per day. It will automatically create any tickets due that day across the daily, weekly, monthly, and yearly schedules. For example:
0 2 * * * /usr/bin/php /path/to/zammad_scheduler/cron/run.phpOnce installed, open the app in your browser and log in with your LDAP credentials. From there you can:
- Create a scheduled ticket.
- Pick the Zammad group, priority, assignee, customer, tags, and CCs.
- Choose a frequency:
- Daily
- Weekly
- Monthly
- Yearly
- If you pick yearly, specify one or more dates in the picker.
- Save the schedule and let cron do the rest.
When the job runs, the app creates a new ticket in Zammad with the saved settings and stores the created Zammad ticket ID locally.
- The local database stores the scheduler records and logs, not the Zammad tickets themselves.
Run Nowis handy when you want to test a schedule or launch one immediately.- The yearly picker stores dates in
MON-01style values. - If you are debugging, set
debugtotrueininc/config.php.
See LICENSE.
