From 6a2c6b586f94c09a83d8220647781a13c120676a Mon Sep 17 00:00:00 2001 From: Marshall Massengill Date: Thu, 21 May 2026 16:58:05 -0400 Subject: [PATCH 1/2] docs(rest): Document Quartz cron-schedule on cm/provisiond/default The Provisiond configuration moved into the Configuration Manager database in 30.0, so the cron-schedule field on each requisition-def is now set through the REST endpoint at /cm/provisiond/default (or the web UI). Add a section to the Config Management REST page covering the Quartz CronTrigger grammar, three worked expressions, the missed-fires-not-backfilled caveat, a pointer to the UI surface under Info -> External Requisitions, and a worked cURL example. Links to the Quartz CronTrigger tutorial for the full grammar. --- .../pages/rest/config_management.adoc | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/docs/modules/development/pages/rest/config_management.adoc b/docs/modules/development/pages/rest/config_management.adoc index 3ba5be3aec1a..433a273f4c88 100644 --- a/docs/modules/development/pages/rest/config_management.adoc +++ b/docs/modules/development/pages/rest/config_management.adoc @@ -115,6 +115,33 @@ You can also target a single element using a cURL command: [source] curl -X PUT -u 'admin:admin' https://opennms.example.com/opennms/rest/cm/provisiond/default -H 'Content-type: application/json' --data '{ "rescanThreads": 150 }' +==== Scheduled requisition imports + +Each entry in the `requisition-def` array may carry a `cron-schedule` value that tells Provisiond when to pull and import that requisition. +The value is parsed as a Quartz `CronTrigger` expression, not a standard Unix crontab expression. + +* The expression has *six* required fields (`seconds minutes hours day-of-month month day-of-week`) and an optional seventh `year` field, instead of the five Unix `crontab(5)` fields. +* Either `day-of-month` or `day-of-week` must be `?` -- the two cannot both be specific values in the same expression. +* Provisiond's scheduler does not back-fill missed fires. +If {page-component-title} is down when a scheduled import would have run, the run is skipped and the next scheduled run picks up normally. + +Example expressions: + +[source] +---- +0 0 0 * * ? # every day at midnight +0 0/30 * * * ? # every 30 minutes +0 0 2 ? * MON # 02:00 every Monday +---- + +See the link:https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html[Quartz `CronTrigger` tutorial] for the full grammar, including the `L`, `W`, and `#` modifiers. +The same schedule field is also editable from the web UI under menu:Info[External Requisitions], which exposes preset Daily, Weekly, and Monthly options plus an advanced field for raw expressions. + +Example cURL command that PUTs a single weekly-scheduled requisition definition: + +[source] +curl -X PUT -u 'admin:admin' https://opennms.example.com/opennms/rest/cm/provisiond/default -H 'Content-type: application/json' --data '{ "requisition-def": [ { "import-name": "weekly-inventory", "import-url-resource": "requisition://customer1", "cron-schedule": "0 0 2 ? * MON" } ] }' + == DELETEs (removing data) [caption=] From 3f2e28f4847aa0ca66bcaacb4c0a8c08ad94fcc0 Mon Sep 17 00:00:00 2001 From: Marshall Massengill Date: Thu, 21 May 2026 17:01:00 -0400 Subject: [PATCH 2/2] docs(rest): Drop UI pointer from cron-schedule section --- docs/modules/development/pages/rest/config_management.adoc | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/modules/development/pages/rest/config_management.adoc b/docs/modules/development/pages/rest/config_management.adoc index 433a273f4c88..fec9de081a1d 100644 --- a/docs/modules/development/pages/rest/config_management.adoc +++ b/docs/modules/development/pages/rest/config_management.adoc @@ -135,7 +135,6 @@ Example expressions: ---- See the link:https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html[Quartz `CronTrigger` tutorial] for the full grammar, including the `L`, `W`, and `#` modifiers. -The same schedule field is also editable from the web UI under menu:Info[External Requisitions], which exposes preset Daily, Weekly, and Monthly options plus an advanced field for raw expressions. Example cURL command that PUTs a single weekly-scheduled requisition definition: