maikschneider / scheduler-as-code
Manage TYPO3 scheduler tasks as YAML files in version control: export existing tasks, sync them into the database on deployment, and mark file-managed tasks in the Scheduler module.
Package info
github.com/maikschneider/scheduler-as-code
Type:typo3-cms-extension
pkg:composer/maikschneider/scheduler-as-code
Requires
- php: ^8.2
- symfony/yaml: ^7.0
- typo3/cms-backend: ^13.4 || ^14.3
- typo3/cms-core: ^13.4 || ^14.3
- typo3/cms-scheduler: ^13.4 || ^14.3
Requires (Dev)
- armin/editorconfig-cli: ^2.1
- ergebnis/composer-normalize: ^2.45
- friendsofphp/php-cs-fixer: ^3.12
- maikschneider/scheduler-as-code-fixture: @dev
- move-elevator/composer-translation-validator: ^1.3
- phpstan/extension-installer: ^1.3
- saschaegerer/phpstan-typo3: ^3.0
- typo3/cms-install: ^13.4 || ^14.3
- typo3/cms-lowlevel: ^13.4 || ^14.3
- typo3/testing-framework: ^9.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-06 08:46:35 UTC
README
TYPO3 extension scheduler_as_code
This TYPO3 extension keeps scheduler tasks in YAML files under version control. Scheduler tasks normally live only in the database, so every environment drifts: a task created on staging never reaches production, and the repository cannot tell which tasks a project is supposed to run. With this extension, the files are the source of truth and the database follows them.
# config/scheduler/cleanup-deleted.yaml type: 'cleanup:deletedrecords' description: 'Remove deleted records older than 30 days' group: 'Maintenance' execution: frequency: '0 3 * * *' parameters: options: min-age: 30
Commit the file and deploy. The task appears in the Scheduler module on the next request, with no extra deployment step.
✨ Features
Automatic import: Runs when TYPO3 boots after the task files changed or the caches were flushed
- New files create tasks, changed files update them, removed files disable them
- A task deleted in the backend comes back while its file exists
- Last execution, running executions and failures are never touched
Export: scheduler:export turns existing tasks into task files and links them
Task files: Console commands and task classes, cron expressions or intervals
- Arguments and options as plain maps
- Task groups by name, created on demand
Site sets: Extensions ship tasks with a site set
- Imported while a site uses the set, disabled when none does
- A project file overrides the set's task
Badges in the Scheduler module: See at a glance which tasks come from a file
- Managed in file, with the source file on hover
- Out of sync for tasks changed in the backend since their last import or export
- File removed for tasks whose file is gone
🔥 Installation
Requirements
- TYPO3 13.4 LTS or 14.3 LTS
- PHP 8.2+
Composer
composer require maikschneider/scheduler-as-code
TER
Download the zip file from TYPO3 extension repository (TER).
📂 Setup
Create the extension's database columns:
vendor/bin/typo3 extension:setup
Then export the tasks you already have and commit them:
vendor/bin/typo3 scheduler:export git add config/scheduler
From now on, change tasks in their files. See Usage for what each change does to a task.
📙 Documentation
Please have a look at the official extension documentation.
🧑💻 Contributing
Please have a look at CONTRIBUTING.md.
⭐ License
This project is licensed under GNU General Public License 2.0 (or later).