Project

General

Profile

Plugins Directory » Redmine SLA

Author: Like HOPPER
Website: https://github.com/likehopper/redmine_sla
Code repository: git@github.com:likehopper/redmine_sla.git
Registered on: 2023-06-04 (over 3 years ago)
Current version: 3.0.3
Compatible with: Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x
User ratings:   (2)

Redmine SLA

Manage your SLAs in Redmine!

Digest

Redmine SLA plugin gives the possibility of managing service levels.
It provides flexible configuration of calendars, times and terms.
It calculates types of response times for project trackers.

Features

These are the features of this plugin :
  • Global administration of SLA definitions
  • Project-level SLA configuration
  • Role-based permissions
  • Full REST API support
  • Live SLA information in issue views,
    issue lists and time-entry lists

Localisations

  • English
  • French

Databases

SLA calculations are delegated to the database engine for performance and reliability.

Supported databases:
  • PostgreSQL 11+
  • MySQL 8.0+
  • MariaDB 10.2+

The appropriate tables, views and stored functions are installed automatically for the configured database adapter.

Fixtures

Sample data is available to test the plugin :
https://github.com/likehopper/redmine_sla/blob/main/doc/TESTING.md

And many examples (via APIs) are available in the documentation :
https://github.com/likehopper/redmine_sla/tree/main/doc

Credits

Icons created by https://www.flaticon.com/fr/auteurs/magnific

Installation notes

  1. Download plugin and copy plugin folder redmine_sla to Redmine's plugins folder.
  2. Go to Redmine root folder to install necessary gems with bundle install.
  3. Launch the plugin migration to create tables, functions and views : rake redmine:plugins:migrate NAME=redmine_sla.
  4. Restart your application server (Apache with Passenger, Nginx with Passenger, Unicorn, Puma, etc.) and redmine_sla is ready to use.

Changelog

3.0.3 (2026-09-20)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Security

  • Restricted SLA level filter options in cache queries to authorized projects.

Fixes

  • Fixed global MySQL and MariaDB cache purges so spent rows, including historical orphans, are removed without disabling foreign-key checks.

Maintenance

  • Removed obsolete empty default scopes and a shadowed visibility method.
  • Made schedule, status, calendar and holiday joins explicit.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v3.0.3

3.0.2 (2026-09-08)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Security

  • Added project-scoped read-only routes for SLAs, levels and calendars.
  • Restricted HTML and API results to projects where the user has the view_sla permission.
  • Restricted the SLA level custom-field filter to visible fields referenced by authorized SLA levels.

Removed

  • Removed the unused SlaViewJournal model and its skipped tests. Its obsolete SQL view had already been replaced; current SLA SQL views remain unchanged.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v3.0.2

3.0.1 (2026-09-05)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Security

  • Scoped SLA cache visibility and mutations to projects where the user has the corresponding view_sla or manage_sla permission.
  • Kept global cache purge restricted to administrators.

Fixed

  • Validated schedule overlaps atomically on every supported database.
  • Invalidated only affected SLA caches after configuration changes.
  • Rejected SLA terms referencing missing priorities or custom-field enumerations.
  • Fixed negative-term validation errors.
  • Restored SLA term grouping by priority label and calendar-holiday ordering.

Maintenance and testing

  • Removed obsolete commented implementations and inline TODO markers.
  • Added database-specific SLA calculation timing reports.
  • Extended project authorization, calendar validation, cache invalidation and priority reference tests.

Source tag: https://github.com/likehopper/redmine_sla/tree/v3.0.1

3.0.0 (2026-09-01)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Multi-database support

  • Added MySQL 8.0+ and MariaDB 10.2+ support alongside PostgreSQL 11+.
  • Database-specific views and stored functions are installed automatically for the configured adapter.
  • SLA level, elapsed-time and diagnostic calculations produce consistent results on every supported database.

Upgrade compatibility

  • Existing SLA types are preserved and receive deterministic positions when upgrading from an older version.
  • The ordered and non-null sla_types.position migration is supported on PostgreSQL, MySQL and MariaDB.
  • Existing project-level SLA permissions and secure PATCH-only cache operations are preserved.

Performance and reliability

  • SLA level calculation now evaluates calendar days instead of scanning every minute.
  • Holiday processing and elapsed-time calculations have been optimized.
  • The SLA "Explain" diagnostic view is available on every supported database.

Installation requirements

The normal migration command remains unchanged:

bundle exec rake redmine:plugins:migrate NAME=redmine_sla RAILS_ENV=production

MySQL and MariaDB installations must provide server time-zone tables. If binary logging is enabled, log_bin_trust_function_creators must allow creation of the plugin's stored functions.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v3.0.0

2.2.2 (2026-08-31)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Security and permissions

  • SLA cache refresh, deletion and purge now require manage_sla on every affected project.
  • Users with view_sla retain read-only access only to SLA caches belonging to issues they are allowed to see.
  • Global SLA cache purge remains restricted to administrators.
  • Project-scoped operations cannot modify caches belonging to another project.

Secure routes

  • Cache refresh and purge operations now use PATCH instead of GET.
  • State-changing requests therefore benefit from Rails' standard CSRF protection.

Upgrade reliability

  • Includes the safe SLA type position migration introduced in 2.2.1.
  • Existing SLA types are assigned deterministic positions in their previous creation order before position becomes mandatory.
  • Upgrade behavior is compatible with PostgreSQL, MySQL and MariaDB.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.2.2

2.2.1 (2026-08-31)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Upgrade fix

  • Fixed upgrades from installations created before SLA type ordering.
  • Existing SLA types receive deterministic positions in their previous creation order.
  • The resulting sla_types.position column is enforced as non-null.
  • The migration is portable across PostgreSQL and MySQL/MariaDB.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.2.1

2.1.3 (2026-08-29)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Fixed

  • Changed routine SLA issue-filter messages from error to debug level to prevent non-error noise in production logs.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.1.3

2.1.5 (2026-08-29)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Fixed

  • Improved the rounded bar gauge at low percentages so its fill remains visible without appearing circular.
  • Improved the flat pie gauge legibility by widening its ring and adjusting its size.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.1.5

2.1.6 (2026-08-29)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Documentation

  • Replaced the outdated issue SLA screenshot with a capture matching the plugin's current rendering.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.1.6

2.1.7 (2026-08-29)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

SLA type reliability

  • Dynamic SLA accessors are now resolved at runtime instead of being generated only when the application starts.
  • Newly created SLA types are immediately available without restarting Redmine.
  • Deleting an SLA type no longer leaves obsolete accessor methods in the application.
  • The change applies consistently to issues, time entries and SLA caches.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.1.7

2.1.4 (2026-08-29)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Performance

  • Project-scoped SLA cache purges now use bulk deletion instead of deleting records one by one.
  • SLA spent-time rows continue to be removed through the existing database cascade.
  • Improves purge performance on projects containing many issues without changing functional behavior.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.1.4

2.2.0 (2026-08-29)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

SLA type ordering

  • Added drag-and-drop ordering from the dedicated /sla/types list.
  • The configured order applies to issue gauges, issue and time-entry columns, the SLA Explain view and the SLA Level Terms matrix.
  • Added a toggle to reveal SLA types that are not yet used by an existing level.
  • Updated the SLA Level Terms matrix to use Redmine's native list presentation.

Additional improvements

  • Fixed rounded-bar and pie-gauge rendering issues.
  • SLA type accessors are now resolved dynamically.
  • Improved the performance of project-scoped SLA cache purges.
  • Removed routine query-building messages from error-level logs.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.2.0

2.1.0 (2026-08-28)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Removed

  • Removed the unused SlaLog subsystem and its database objects.
  • Removed the unused sla_cache_ttl setting.

Documentation

  • Removed documentation for the deleted settings.
  • Updated the project roadmap and SLA export status.
  • Removed obsolete sla_logs references from the data model documentation.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.1.0

2.1.2 (2026-08-28)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

Fixed

  • Fixed SLA documentation fixture generation for custom-field-based priorities.

Documentation

  • Updated EXAMPLE-04 to document the complete custom-field scenario.
  • Regenerated the example screenshots.
  • Added the documentation test suite to the testing guide.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.1.2

2.1.1 (2026-08-28)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x.

SLA calculation diagnostics

  • Added an on-demand "Explain" view for individual issue SLA calculations.
  • Shows the selected SLA level and calendar, working hours and the reason why a level matched.
  • Provides a day-by-day breakdown of elapsed SLA time, including weekends and holidays.
  • Access is restricted to users allowed to manage SLA information for the project.

Reliability

  • Long untracked status intervals are summarized instead of generating one diagnostic row per calendar day.
  • The diagnostic view is read-only and does not modify SLA caches.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.1.1

2.0.4 (2026-04-25)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x, 4.2.x, 4.1.x, 4.0.x.

Redmine 6.x — security, fixes & performance

Security

  • Role-based visibility in context menus (visible? check instead of admin?).
  • Fix SQL injection via sanitize_sql in SLA cache models.

Bug Fixes

  • Removed duplicate uniqueness validation in SLA schedules.
  • Improved error handling in the refresh action and priority lookup.
  • Schedule time normalization and status path resolution.

Performance

  • Memoized SLA cache / term / spent lookups on issues.
  • Fixed N+1 queries and duplicate default scopes.

Refactoring & Testing

  • Extracted build_sla_column to remove duplication in available_columns.
  • Comprehensive unit tests across all SLA models.
  • Functional tests for schedules and project-trackers controllers.
  • Version consistency suite (semver, registry alignment, CHANGELOG coverage).

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.0.4

2.0.3 (2026-02-12)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x, 4.2.x, 4.1.x, 4.0.x.

Redmine 6.x — documentation

Documentation

  • Major improvement of project documentation.
  • Harmonized examples structure.
  • Alignment between YAML fixtures and rendered UI behavior.
  • Reorganized screenshots (doc/screenshots/example-*).

Maintenance

  • Minor comment corrections and internal documentation cleanup.
  • Improved readability of test fixtures and examples.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.0.3

2.0.2 (2026-02-11)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x, 4.2.x, 4.1.x, 4.0.x.

Redmine 6.x — test suite & internals

Refactoring & Stabilization

  • Complete rewrite and stabilization of the test suite.
  • Reorganization of test architecture (unit, system, documentation).
  • Improved compatibility reliability with Redmine 6.x.

Testing

  • Documentation-driven test suite.
  • New base test classes (ApplicationSlaDocumentationTestCase, ApplicationSystemTestCase).
  • Improved Capybara / Selenium integration.
  • Deterministic test ordering and suite selection via the SUITE environment variable.

Internal

  • Ruby 3 keyword arguments compatibility.
  • Fixture loading refactor and various cleanups.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.0.2

2.0.1 (2026-02-01)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x, 4.2.x, 4.0.x.

Redmine 6.x — stabilization

  • Initial Redmine 6 compatibility adjustments.
  • Structural updates preparing the 2.0 stabilization.
  • SLA computation and rendering fixes.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.0.1

2.0.0 (2026-02-01)

Compatible with Redmine 6.1.x, 6.0.x, 5.1.x, 5.0.x, 4.2.x, 4.1.x, 4.0.x.

Stable release — Redmine 6.x

  • Official support for Redmine 6.x.
  • Rails / ActiveRecord compatibility adjustments.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v2.0.0

1.0.0 (2025-11-22)

Compatible with Redmine 5.1.x, 5.0.x, 4.2.x, 4.1.x, 4.0.x, 3.4.x.

Stable release — Redmine 5.x

  • First major stable release.
  • Compatibility updated for Redmine 5.x.

Full details: https://github.com/likehopper/redmine_sla/releases/tag/v1.0.0

0.0.9 (2023-06-04)

Compatible with Redmine 5.0.x, 4.2.x, 4.1.x, 4.0.x, 3.4.x.

Stable release — Redmine 4.x

  • First public release !

Full details: https://github.com/likehopper/redmine_sla/releases/tag/0.0.9

User ratings

  by Like HOPPER about 1 month ago

Feel free to use the fixtures to test the plugin !

  by Stefano Gensabella about 3 years ago

shoould provide template data to be able to test it.