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.1.0
Compatible with: Redmine 7.0.x, 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 Magnific on Flaticon.

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.1.0 (2026-10-12)

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

Added
  • Optional description for SLAs, SLA types, SLA calendars and SLA levels, edited with Redmine's wiki toolbar, shown on their pages and exposed by the REST API.
  • Descriptions are shown as tooltips wherever these names appear: the SLA block of an issue, the SLA level column of issue and time-entry lists, the plugin lists and the SLA level pages.
  • Optional Description column (shown below each row) in the SLA, calendar and level lists.
Fixed
  • Fixed HTTP 500 errors when a block column was displayed in the plugin lists; block rows now span the whole row.
Performance
  • Formatted description tooltips are reused within a page.
  • Changing only the description of a calendar or level no longer invalidates the SLA calculation caches.
Validation
  • All five test suites passed on Redmine 5.1.13, 6.1.4 and 7.0.1 with PostgreSQL 17.7, MariaDB 10.11.19 and strict MySQL 8.0.46. Each of the nine combinations passed 1051 tests with no failures, errors or skips.
Upgrade
  • Back up the database, update the plugin files, run bundle exec rake redmine:plugins:migrate NAME=redmine_sla RAILS_ENV=production and restart Redmine.
  • Migration 202111112021022 adds a nullable description column to SLAs, SLA types, SLA calendars and SLA levels; existing records remain valid. Rolling it back removes these columns and their contents.

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

3.0.6 (2026-10-10)

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

  1. Fixes
  • Fixed stale issue SLA values after saving or reloading an issue, including project, tracker, priority and custom-field changes.
  • Corrected SLA exclusion, presence and absence filters in native issue and time-entry queries.
  • Fixed SLA sorting and grouping under strict MySQL, including group labels, counts and hour totals.
  • Fixed SLA display and filtering for time entries without an issue.
  1. Maintenance
  • Added the SLA logo to the README.
  • Updated root dotfile ignore rules while preserving .github and .gitignore.
  1. Validation

All five test suites passed on Redmine 5.1.13, 6.1.4 and 7.0.1 with PostgreSQL 17.7, MariaDB 10.11.19 and strict MySQL 8.0.46.

Each of the nine combinations passed 989 tests with zero failures, errors or skips, including browser tests.

  1. Upgrade

Update the plugin files and restart Redmine. No new schema migration is introduced relative to 3.0.5. For upgrades from older versions, follow the migration instructions in the README.

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

3.0.5 (2026-09-27)

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

  1. Security
  • Enforced project-scoped manage_sla permission when creating or moving project-tracker assignments.
  • Rejected mismatched project context in direct and bulk operations.
  • Restricted project choices in assignment forms to manageable projects.
  1. Compatibility
  • Fixed cache refresh and purge routes for Rails 8 / Redmine 7.
  • Fixed invalid SLA type update responses across Rack versions.
  • Improved browser-test compatibility across Redmine layouts.
  1. Validation

All five suites passed on Redmine 5.1.13, 6.1.4 and 7.0.1 with PostgreSQL 17.7, MariaDB 10.11.19 and strict MySQL 8.0.46.

Each of the nine combinations passed 971 tests with zero failures, errors or skips.

  1. Upgrade

Update the plugin files and restart Redmine. No new schema migration is introduced relative to 3.0.4. For older versions, follow the migration instructions in the README.

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

3.0.4 (2026-09-25)

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

  1. Fixes
  • Fixed spent-cache grouping by SLA level under strict MySQL and aligned group labels with their counts.
  • Fixed project cache purges to remove historical orphan rows while preserving other projects and foreign-key checks.
  1. Maintenance
  • Replaced the remaining joined default scopes on SLA levels, terms, project-tracker assignments and caches with explicit reference scopes.
  • Preserved permission joins in visibility scopes.
  • Removed a duplicate project-tracker query scope and unused spent-cache filter-value code.

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

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 2 months ago

Feel free to use the fixtures to test the plugin !

  by Stefano Gensabella over 3 years ago

shoould provide template data to be able to test it.