uTPro.Feature.JobMonitor
1.0.1
dotnet add package uTPro.Feature.JobMonitor --version 1.0.1
NuGet\Install-Package uTPro.Feature.JobMonitor -Version 1.0.1
<PackageReference Include="uTPro.Feature.JobMonitor" Version="1.0.1" />
<PackageVersion Include="uTPro.Feature.JobMonitor" Version="1.0.1" />
<PackageReference Include="uTPro.Feature.JobMonitor" />
paket add uTPro.Feature.JobMonitor --version 1.0.1
#r "nuget: uTPro.Feature.JobMonitor, 1.0.1"
#:package uTPro.Feature.JobMonitor@1.0.1
#addin nuget:?package=uTPro.Feature.JobMonitor&version=1.0.1
#tool nuget:?package=uTPro.Feature.JobMonitor&version=1.0.1
uTPro Background Jobs Monitor for Umbraco
A read-and-trigger management UI for Umbraco recurring background jobs. Surfaces every recurring job registered in your site under a Settings dashboard — with timing parameters, execution telemetry the CMS does not persist natively, an estimated next run, server-role awareness, and an authorized on-demand Run now action.
Works with Umbraco 16, 17 and 18 (multi-targeted net9.0 / net10.0).
Optional durable telemetry runs on SQL Server, SQLite and PostgreSQL.

Features
- Auto-discovery of every recurring background job — no per-job wiring.
- Modern jobs implementing
IRecurringBackgroundJob(full support). - Legacy jobs deriving from
RecurringHostedServiceBase(listed with limited support). - Plain
IHostedServiceregistrations are excluded.
- Modern jobs implementing
- Timing parameters per job: period, delay and server roles (human-readable durations).
- Execution telemetry the CMS does not persist natively: last run start, duration and outcome.
- Estimated next run = most recent run start + period (clearly labelled as an estimate).
- Manual trigger ("Run now") for modern jobs — runs off the request thread, guards against overlap, honours the node's server role, and records the initiating backoffice user.
- Load-balancing aware — shows the current node's server role and warns when scheduled jobs do not run on the node, or when history is in-memory / per-node only.
- Configurable storage — in-memory ring buffer (default) or a durable database table that survives restarts and is shared across nodes.
- Secure by default — every endpoint requires access to the Settings section.
Quick Start
dotnet add package uTPro.Feature.JobMonitor
Start Umbraco and open Settings → Background Jobs Monitor. Your recurring jobs appear automatically — no configuration or per-job registration required.
| Umbraco | .NET | Target |
|---|---|---|
| 16 | .NET 9 | net9.0 |
| 17 & 18 | .NET 10 | net10.0 |
Configuration
All settings are optional, under uTPro:Feature:JobMonitor in appsettings.json:
{
"uTPro": {
"Feature": {
"JobMonitor": {
"Storage": "InMemory",
"HistoryCapacity": 50,
"DiscoveryCacheSeconds": 30
}
}
}
}
| Key | Default | Description |
|---|---|---|
Storage |
InMemory |
InMemory = per-process ring buffer (resets on restart, per-node). Durable = persisted to the Umbraco database (survives restarts, shared across load-balanced nodes). |
HistoryCapacity |
50 |
Max execution records retained per job. |
DiscoveryCacheSeconds |
30 |
How long a discovery result is cached before re-enumeration. 0 disables caching. |
See Configuration and Telemetry & Storage.
Database support (durable storage)
When Storage is Durable, a state-keyed migration creates the uTProJobExecution table on
startup (once per database). Data access uses NPoco strongly-typed queries with provider-quoted
identifiers, so it runs on SQL Server, SQLite and PostgreSQL — the same cross-database approach
used by uTPro.Feature.AuditLog and uTPro.Feature.SimpleFormBuilder. When durable storage is
disabled (the default) the package touches no schema.
Documentation
| Guide | What's inside |
|---|---|
| Getting Started | Install, compatibility, backoffice location, what each column means |
| Configuration | All appsettings keys and their effects |
| Telemetry & Storage | In-memory vs durable, the uTProJobExecution table, PostgreSQL, load-balancing |
| Manual Trigger (Run now) | How Run now works, overlap/role guards, idempotency caution |
| Security & Permissions | Authorization model, what is read-only, accountability |
| Reference | Project structure, API endpoints, discovery internals, database schema |
| Publishing | Release checklist for NuGet and the Umbraco Marketplace |
Building from source
dotnet build uTPro.Feature.JobMonitor.sln
src/uTPro.Feature.JobMonitor.TestSite is a runnable Umbraco 18 site (SQLite, unattended install)
that registers example modern / legacy / plain services to exercise the dashboard.
Produce a NuGet package deterministically:
pwsh ./pack.ps1
License & Author
MIT © T4VN. Issues and contributions welcome on the GitHub repository.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Umbraco.Cms.Api.Management (>= 17.0.0 && < 19.0.0)
-
net9.0
- Umbraco.Cms.Api.Management (>= 16.0.0 && < 17.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v1.0.1: Fixed the backoffice package manifest display name (removed stray zero-width characters) so it lists correctly as "uTPro Background Jobs Monitor" in the Installed packages view. No code or API changes. v1.0.0: Initial release. Background Jobs Monitor dashboard for Umbraco 16/17/18 (multi-target net9.0/net10.0). Discovers modern IRecurringBackgroundJob implementations and legacy RecurringHostedServiceBase jobs, displays timing parameters and server-role behaviour, captures per-job execution telemetry, estimates the next run, and provides an authorized, overlap-safe manual trigger. Read-only by default; the only write is the manual "Run now" action. Telemetry storage is configurable via uTPro:Feature:JobMonitor: in-memory ring buffer (default) or a durable database table (uTProJobExecution) that survives restarts and is shared across load-balanced nodes, working on SQL Server, SQLite and PostgreSQL. Also configurable: history capacity and discovery cache duration.