In some projects there are tasks that need to be assigned on a schedule. Such as check the ssl registration once per year or run security checks every 3 months
Read more about the plugin, how it works internally and its history in this blog post.
After you installed the plugin you can add it as a module to a project that already exists or activate it as default module for new projects. On each project it will add a new tab named "Periodic Task" - just go there to add your tasks.
List of scheduled tasks for a project, showing interval, next run date and last run:
Creating or editing a periodic task - it mirrors Redmine's own issue form (tracker, priority, watchers, custom fields, ...):
Task detail page with the history of issues generated from it:
Support for old redmine versions has been dropped. If you are using an old version, you can use the corresponding branch according to the following table. If you cannot migrate to a newer version and still need support, you can hire me to do it. Just contact me with the details.
| git branch | redmine version support | |||||||
| 1.x | 2.x | 3.x | 4.x | 5.0 | 5.1 | 6.0 | 6.1 | |
| main | ? | ? | ? | ? | ? | ✅ | ✅ | ✅ |
| redmine4 | ? | ? | ✅ | ✅ | 🚫 | 🚫 | 🚫 | 🚫 |
| redmine2 | ✅ | ✅ | 🚫 | 🚫 | 🚫 | 🚫 | 🚫 | 🚫 |
To use redmine2 branch, when cloning use -b redmine2 like this git clone -b redmine2 https://github.com/jperelli/Redmine-Periodic-Task.git plugins/periodictask
Run these from your Redmine root (paths below assume /opt/redmine — adjust to yours):
cd /opt/redmine
git clone https://github.com/jperelli/Redmine-Periodic-Task.git plugins/periodictask
bundle install
bundle exec rake redmine:plugins:migrate NAME=periodictask RAILS_ENV=production
Then restart Redmine so it picks up the plugin (see Restarting Redmine).
cd /opt/redmine/plugins/periodictask
git pull
bundle install
bundle exec rake redmine:plugins:migrate NAME=periodictask RAILS_ENV=production
Then restart Redmine (see Restarting Redmine).
cd /opt/redmine
bundle exec rake redmine:plugins:migrate NAME=periodictask VERSION=0 RAILS_ENV=production
rm -rf plugins/periodictask
Then restart Redmine (see Restarting Redmine).
How you reload Redmine depends on how it's served:
- Puma / Unicorn under systemd:
sudo systemctl restart redmine - Passenger (Apache or nginx):
touch /opt/redmine/tmp/restart.txt - Docker:
docker compose restart redmine
Periodic tasks are created by a rake task that you run from cron. Cron has a minimal PATH, so use the absolute path to bundle. Find it with which bundle (e.g. with rbenv it's something like /home/redmine/.rbenv/shims/bundle, with a system Ruby /usr/local/bin/bundle).
Edit the crontab of the user that owns your Redmine install (crontab -e) and add one of the following. Replace /opt/redmine with your Redmine root and /usr/local/bin/bundle with the path from which bundle.
Once a day, at 01:00:
0 1 * * * cd /opt/redmine && /usr/local/bin/bundle exec rake redmine:check_periodictasks RAILS_ENV=production
Once per hour:
0 * * * * cd /opt/redmine && /usr/local/bin/bundle exec rake redmine:check_periodictasks RAILS_ENV=production
Every 10 minutes:
*/10 * * * * cd /opt/redmine && /usr/local/bin/bundle exec rake redmine:check_periodictasks RAILS_ENV=production
You can use the following variables in the subject and description of a periodic task. They will be replaced with the corresponding value when the issue is created.
| Variable | Description |
|---|---|
**DAY** |
Day of the month, zero-padded (01..31) |
**WEEK** |
Week number of the year, starting with the first Monday as the first day of the first week (00..53) |
**WEEKISO** |
ISO 8601 week number of the year (01..53) |
**MONTH** |
Month of the year, zero-padded (01..12) |
**MONTHNAME** |
Full month name (e.g. January), localized |
**QUARTER** |
Quarter of the year (1..4) |
**YEAR** |
Four-digit year |
**PREVIOUS_MONTH** |
Previous month, zero-padded (01..12) |
**PREVIOUS_MONTHNAME** |
Full name of the previous month, localized |
If you want to get localized month names, please add LOCALE="de" (available are de, en, ja, ru, tr, zh) to the cronjob like this
0 * * * * cd /opt/redmine && /usr/local/bin/bundle exec rake redmine:check_periodictasks RAILS_ENV=production LOCALE="de"
redmine-periodictask supports redminecrm checklist PRO to be used when creating a periodic task.
Start with docker compose up --build and wait until it finishes.
In other console do ./provision.sh, this will install initial data for it to be easier to develop.
Then go to http://127.0.0.1:3000/ and login with
user: admin
pass: admin
You should have a project named project1 with periodictask installed
In order to run the "cron checker": docker compose exec redmine bundle exec rake redmine:check_periodictasks RAILS_ENV=development
- Julian Perelli (Current Maintainer)
- Tanguy de Courson (Original Author)
MIT


