Files
2026-04-24 22:01:18 +00:00

1.7 KiB

Redmine Event Outbox

Small Redmine 3.4-compatible plugin that records selected Redmine changes into a local database outbox table for external workers.

Events Captured

  • issue.created
  • issue.updated
  • journal.created
  • contact.created when redmine_contacts is installed
  • contact.updated when redmine_contacts is installed
  • helpdesk_ticket.created when redmine_contacts_helpdesk is installed
  • helpdesk_ticket.updated when redmine_contacts_helpdesk is installed
  • journal_message.created when redmine_contacts_helpdesk is installed
  • journal_message.updated when redmine_contacts_helpdesk is installed

The plugin does not publish to Redis, RabbitMQ, webhooks, or external search services directly from Redmine request callbacks. It only writes local database rows.

Install

Copy this directory to the Redmine plugins directory:

cp -a redmine_event_outbox /path/to/redmine/plugins/

Run the plugin migration:

cd /path/to/redmine
RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME=redmine_event_outbox

Restart Redmine. For Passenger:

touch tmp/restart.txt

Verify

List the rake task:

RAILS_ENV=production bundle exec rake -T redmine_event_outbox

Dump pending events:

RAILS_ENV=production bundle exec rake redmine_event_outbox:dump LIMIT=20

Create or update a low-risk test issue, then run the dump task again. You should see JSON rows in event_outbox_events.

Notes

  • Payloads are JSON serialized into a text column for MySQL and Redmine 3.4 compatibility.
  • Outbox write failures are rescued and logged so normal Redmine saves are not intentionally failed by this plugin.
  • Consumers should treat events as at-least-once and idempotent.