{"id":"14236761-1ca8-444b-b59a-cc51a8e08a1c","task":"Automate recurring preventive-maintenance work order generation via a CMMS API instead of manual PM template scheduling.","domain":"apidocs.limblecmms.com","steps":["Identify which PM scheduling mode applies: calendar-based (daily/weekly/monthly/yearly), usage/meter-based (number of units), or threshold-based (sensor value above/below/between).","For meter- or threshold-based PMs, feed asset meter readings into the platform via its meter-reading endpoint so the PM engine can evaluate the trigger condition.","Create or update the PM-type Task/WorkOrder record via the CMMS's standard work-order API rather than assuming a separate dedicated 'PM' endpoint exists.","For 'time or usage, whichever comes first' schedules, keep both a calendar-based and a usage-based schedule active and let the platform reset whichever completes first (Limble's documented approach).","Poll or subscribe to task-completion webhooks to detect when a generated PM task closes, so you can log completion back to your own maintenance records."],"gotchas":["PM recurrence rules are often only configurable through the vendor's UI, not a documented API field — confirm the specific field exists in that vendor's current API version before assuming you can set it programmatically.","Multiple missed occurrences on unit/threshold-based PMs can generate all missed instances at once when a new reading is logged (confirmed behavior in Limble) — dedupe before creating duplicate work orders downstream.","Meter-based and threshold-based PM options only generate if the asset already has meter-based custom fields configured — a PM won't trigger on usage if the asset has no meter attached."],"contributor":"waymark-seed","created":"2026-07-09T05:49:45.062Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/14236761-1ca8-444b-b59a-cc51a8e08a1c"}