Plugins Directory » Custom Workflows

Author: Anton Argirov
Code repository:
Registered on: 2012-09-03 (over 11 years ago)
Current version: 0.1.5
Compatible with: Redmine 3.1.x, 3.0.x, 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x
User ratings:   (33)

Plugin development is supported by DOM Digital Online Media GmbH

This plug-in provides a great functionality for those who is familiar with the Ruby language.
It allows to customize workflow by defining own rules of issues processing. It's possible:
  • To change issue properties if some conditions are met;
  • To create new issues programmatically if the conditions are met (for example you can create an issue in another project if the status of source issue is changed to specific value);
  • To raise custom errors which will display to user, if he does something wrong;
  • To do anything that conforms to your needs;
Starting with version 0.1.2 you can specify observable object for workflow. Supported observable objects for now:
  • Issue (before_save, after_save, before_destroy, after_destroy)
  • Group (before_save, after_save, before_destroy, after_destroy)
  • User (before_save, after_save, before_destroy, after_destroy)
  • Project (before_save, after_save, before_destroy, after_destroy)
  • Attachment (before_save, after_save, before_destroy, after_destroy)
  • Wiki Content (before_save, after_save, before_destroy, after_destroy)
  • Group Users (before_add, after_add, before_remove, after_remove)
  • Issue Attachments (before_add, after_add, before_remove, after_remove)
  • Project Attachments / Files (before_add, after_add, before_remove, after_remove)
  • Wiki Page Attachments (before_add, after_add, before_remove, after_remove)
  • <Shared code>

<Shared code> - special type for workflows that running before all other workflows and can provide libraries of additional functions or classes.

Follow Wiki for finding answers.

Installation notes

From a ZIP file:
  • Download the latest version of the plugin
  • Unzip to /plugins (Redmine 2.x) or /vendor/plugins (Redmine 1.x) folder of Redmine
After download:
  1. Run rake redmine:plugins:migrate (Redmine 2.x) or rake db:migrate:plugins (Redmine 1.x).
  2. Restart Redmine.


0.1.5 (2015-11-22)

Compatible with Redmine 3.1.x, 3.0.x, 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x.

  • New observable objects added (Project, Wiki Content, Attachment, Issue Attachments, Project Attachments, Wiki Page Attachments)
  • Ability to hook before_destroy and after_destroy events

0.1.4 (2015-07-15)

Compatible with Redmine 3.0.x, 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x.

  • Non-active workflows are now not checked for syntax. Now you can import non-valid (for your Redmine instance for example) workflow, make changes to it and then activate.
  • Log message changed so that issue_id is before subject
  • Fixed migration from version 0.0.4

0.1.3 (2015-06-24)

Compatible with Redmine 3.0.x, 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x.

Compatibility with Redmine 2.x.x has returned

0.1.2 (2015-06-23)

Compatible with Redmine 3.0.x.

  • Added new observable objects. Along with Issue objects you can now watch for changes in User and Group objects
  • Added support of shared workflows - special workflows that running before all other workflows and can provide functions and classes for it
  • Added Mailer helper for sending custom emails from workflows (check Wiki)

0.0.6 (2015-05-26)

Compatible with Redmine 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x, 1.4.x.

Added import/export workflow abilities

0.1.0 (2015-05-08)

Compatible with Redmine 3.0.x.

Compatibility with Redmine 3.x, support of Redmine 2.x.x has dropped (for Redmine 2.x.x please use version 0.0.5)

0.0.5 (2015-05-08)

Compatible with Redmine 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x, 1.4.x, 1.3.x, 1.2.x.

Compatibility with the latest versions of Redmine 2.x.x

0.0.4 (2012-10-08)

Compatible with Redmine 2.1.x, 2.0.x, 1.4.x, 1.3.x, 1.2.x.

  • Added ability to enable workflows globally for all projects. No need to enable 'Custom workflows' project module anymore. Just go to the 'Administration' -> 'Custom workflows' section and enable or disable your workflows in one place.
  • Fixed bug with 'Status transition prohibited' when updating the issue status by the repository commit

Don't forget to migrate plugins after installing the new version.

0.0.3 (2012-09-10)

Compatible with Redmine 2.1.x, 2.0.x, 1.4.x, 1.3.x, 1.2.x.

Added compatibility with 1.2.x, 1.3.x

0.0.2 (2012-09-08)

Compatible with Redmine 2.1.x, 2.0.x, 1.4.x.

  • Added ability to define after_save script along with before_save
  • Changed context of the script executing to the issue itself.
  • Improved logging

0.0.1 (2012-09-03)

Compatible with Redmine 1.4.x, 2.0.x, 2.1.x.

User ratings

  by Christian R about 2 years ago

  by Mr. Míng about 2 years ago

  by Виктор Воеводский over 4 years ago

  by Ivan Tsybanenko about 5 years ago

Works great with Redmine 3.4.6

- Don't use 'git clone'!!!

  by Rudolph van Niekerk about 5 years ago

This is the single best free Redmine Plugin I have come accoss to date. Our Redmine deployment's capabilities skyrocket with this plugin. Thanks a million to the dev team.

  by SOE Redmine over 5 years ago

I cant install on redmine 4.0.0.
rake aborted!
NoMethodError: undefined method `alias_method_chain' for ProjectsHelper:Module
Did you mean? alias_method

  by Michael Chen over 5 years ago

I try it on Redmine 3.4. it still working fine. Thank Auth for making this great plugin.

  by Nikolai Efimov-Soini over 5 years ago

Excellent plugin! Work with 3.4.6.

  by 朱 江波 about 6 years ago

3.3.4 need:bundle exec rake redmine:plugins:migrate RAILS_ENV=production

  by holly chen over 6 years ago

Create plugin! works in 3.3.1.

  by Imanol Alvarez over 7 years ago

With this plugin you can do your personal workflows.

  by Adam Szakacs over 7 years ago

Great - very powerful and flexible!!! Well done!!!

  by Anthony MCPROGSOFT over 7 years ago

A must have plugin.
Is it compatible with Redmine 3.3 ?
Or do you plan to make a new release ?

  by Robert Korulczyk over 7 years ago

  by Александр К over 7 years ago

  by Mikhail Voronyuk over 7 years ago

The awesome plugin!
It does for me
1) update a 'last modifier' user-field after each issue modification
2) check if spent time is specified for Support tracker when an issue is marked as Solved

  by Igor A over 8 years ago

  by Jan from Planio over 8 years ago

Very dangerous plugin from a security point of view. Can easily be used to steal or delete all data by rogue admins or compromised admin accounts. In my opinion, code changes should be made in the code, not via the web UI.

  by Quan VN almost 9 years ago

Excellent. version 0.1.2 also works for 2.6.5 with this change: in models/custom_workflow.rb, scope: for_project, change .join_table into .options[:join_table]

  by Adriano Ceccarelli almost 9 years ago

Very good this plugin!
Simple and practical.

  by minkbear minkbear almost 9 years ago

  by Tomasz O almost 9 years ago

  by [ Desperados ] about 9 years ago

it seems very useful
how I can create a rule for change project if author is in a determined group? where can I found guide/howto? thanks

  by benoit deleris about 9 years ago

  by Kos Kub about 9 years ago

I've tried to fix it for Redmine 3.0. Unfortunately, I have small experience with Ruby and Redmine. I've fixed controller and migration scripts.Migrations was successful,but example workflow doesn't exist and RecNotFound error occurs even if add manually

  by Moritz Koehler over 9 years ago

must have plugin
works in 2.6

  by Victor Gershgorn over 9 years ago

Amazing plugin!
If you want to check role of a user you can use the following syntax, which will return true or false:

User.current.roles_for_project(@issue.project).include?(Role.find(:first, :conditions => "name='SomeRloeName'"))

Works in 2.5.2

  by Cliff Peng over 9 years ago

We need more rules about the workflow script grammer.

  by dj jones over 9 years ago

This page header does not list a code repository: here is a mirror on github for the plugin:

  by Thierry LEPIEZ over 9 years ago

it like it.
Just a sample, for bug tracker as immediate by default :
before script:
if new_record?
if @issue.tracker_id==1
if @issue.assigned_to.nil?

  by Sergei Bershadsky almost 10 years ago

  by Raúl Gómez about 10 years ago

  by Duncan Robertson about 10 years ago

This does everything I wanted and more. From validation to automatic field calculation and complex svn integration. Works perfectly with Redmine 2.4.2