• Tags
  • About
  • Archive

Szołkowski's Blog

Blog about Optimizely CMS development, .NET, and technical content

13 April 2026

OptiPowerTools.Hangfire 2.0.0: CMS 13 Support and Sample Jobs

by Stanisław Szołkowski
Tags: .NET (6) OptiPowerTools (2) OptiPowerTools.Hangfire (2) background jobs (4) episerver (14) hangfire (4) nuget (2) open-source (2) optimizely (14) scheduled jobs (7)

When I released OptiPowerTools.Hangfire back in March, it targeted Optimizely CMS 12. With CMS 13 now out and running on .NET 10, it was time to bring the package along. Version 2.0.0 adds full CMS 13 support, and I also shipped 1.0.1 on the CMS 12 line with sample jobs to help people get started faster.

What’s new in 2.0.0

The headline change is Optimizely CMS 13 support. The package now targets .NET 10 exclusively and works with the updated CMS 13 shell and UI.

Beyond the framework bump, there’s one notable change: the default dashboard path moved from /episerver/backoffice/Plugins/hangfire to /optimizely/backoffice/Plugins/hangfire to align with the CMS 13 URL structure. If you’re migrating from 1.x, update any bookmarks or documentation that reference the old path. The path is still fully configurable via DashboardPath in the options if you need a custom location.

Everything else — the two-line setup, the job filters, the CMS menu integration, configurable roles — works the same as in 1.x. If you’re already running OptiPowerTools.Hangfire on CMS 12, upgrading to 2.0.0 on CMS 13 should be straightforward.

A follow-up patch 2.0.1 was released shortly after with minor fixes to the Hangfire route mapping for improved compatibility.

Version 1.0.1: Sample Jobs

On the CMS 12 side, version 1.0.1 adds a set of sample jobs to the repository’s dev site. These are practical examples that demonstrate common Hangfire patterns within Optimizely — useful as a reference when building your own jobs.

  • ConsoleShowcaseJob — demonstrates Hangfire.Console features: colored text output, progress bars, and structured multi-phase processing with a simulated product catalog sync
  • OrderPipelineJob — shows job continuations by chaining a four-step workflow (Validate → Payment → Ship → Notify) using ContinueJobWith
  • ScheduledCleanupJob — demonstrates delayed/scheduled job execution by planning cleanup tasks with varying delays using Schedule
  • CancellableExportJob — demonstrates cancellation token support for long-running operations with graceful shutdown and cleanup when a job is deleted from the dashboard

You can find all four samples in the Samples directory of the repository.

Version compatibility

Package Version Optimizely CMS .NET
2.x CMS 13 .NET 10
1.x CMS 12 6.0, 8.0, 9.0, 10.0

The 1.x line continues to receive maintenance updates on the releases/v1-release branch.

Where to get it

The source is on GitHub: szolkowski/OptiPowerTools.Hangfire

Install via NuGet from the Optimizely feed or nuget.org:

dotnet add package OptiPowerTools.Hangfire

If you have questions, run into issues, or want to request a feature — open an issue on GitHub. Let me know in the comments how the upgrade goes!

  • Share on Facebook
  • Tweet
  • Submit to Reddit
  • Share on LinkedIn
  • Send email

Tags

.NET (6) OptiPowerTools (2) OptiPowerTools.Hangfire (2) apple silicon (3) application insights (1) arm (3) background jobs (4) catalog (3) ci (2) commerce (3) database (3) devops (2) docker (1) dxp (1) episerver (14) github (2) hangfire (4) indexes (1) m1 (3) maintenance (2) memory-optimization (1) nuget (2) open-source (2) optimizely (14) patterns (2) performance (2) pipeline (2) scheduled jobs (7) sonarcloud (1) sonarqube (1) sql server (4) workflow (2)

Read more articles | subscribe via RSS