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: |
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¶
Installation notes
- Download plugin and copy plugin folder
redmine_slato Redmine's plugins folder. - Go to Redmine root folder to install necessary gems with
bundle install. - Launch the plugin migration to create tables, functions and views :
rake redmine:plugins:migrate NAME=redmine_sla. - 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 HTTP 500 errors when a block column was displayed in the plugin lists; block rows now span the whole row.
- Formatted description tooltips are reused within a page.
- Changing only the description of a calendar or level no longer invalidates the SLA calculation caches.
- 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.
- Back up the database, update the plugin files, run
bundle exec rake redmine:plugins:migrate NAME=redmine_sla RAILS_ENV=productionand 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.
- 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.
- Maintenance
- Added the SLA logo to the README.
- Updated root dotfile ignore rules while preserving .github and .gitignore.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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_slapermission. - Restricted the SLA level custom-field filter to visible fields referenced by authorized SLA levels.
Removed¶
- Removed the unused
SlaViewJournalmodel 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_slaormanage_slapermission. - 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.positionmigration 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_slaon every affected project. - Users with
view_slaretain 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
positionbecomes 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.positioncolumn 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/typeslist. - 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
SlaLogsubsystem and its database objects. - Removed the unused
sla_cache_ttlsetting.
Documentation¶
- Removed documentation for the deleted settings.
- Updated the project roadmap and SLA export status.
- Removed obsolete
sla_logsreferences 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 ofadmin?). - Fix SQL injection via
sanitize_sqlin SLA cache models.
Bug Fixes¶
- Removed duplicate uniqueness validation in SLA schedules.
- Improved error handling in the
refreshaction 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_columnto remove duplication inavailable_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
SUITEenvironment 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