Blog

Asset Maintenance Workflow: how to automate it

In week 14, SwarmCraft completed and browser-tested a 65-task asset maintenance operation that replaces MaintainX inside a defined record boundary, connects machine evidence to governed work, and proves migration down to quantities, currencies, files, and history.

Asset Maintenance Workflow: how to automate it

An asset maintenance workflow can fail before anyone picks up a tool.

A vibration event arrives twice after a delivery retry. A preventive inspection is already open on the same conveyor drive. The first reading breaches the threshold that was effective when the event occurred. An older reading then arrives after the repair has been completed. If the software treats every message as a new fact, it can create duplicate work, apply today's rule to yesterday's evidence, or silently reopen a machine that has already passed through completion and return-to-service decisions.

That is not a reminder problem. It is an authority problem.

In week 14 of our case-study series, SwarmCraft structured and completed a 65-task customer-owned asset maintenance operation for Harbourline Foods, a fictional three-site food manufacturer. The application replaces MaintainX as the maintenance system of record inside the agreed boundary: canonical assets, observations, anomaly evaluation, preventive and corrective work, parts coordination, downtime, technician evidence, completion, return to service, migration evidence, access decisions, and append-only history.

The project goes beyond wrapping another computerized maintenance management system (CMMS) with forms and notifications. It takes ownership of the records that make the maintenance operation coherent.

If you want the category landscape first, start with Best asset management software. For the cost and duplication problem around the category, read Why asset software sprawl hides in requests, reminders, and maintenance. The MaintainX alternatives article approaches the same decision from the switching side.

The case for replacing the maintenance record

The replacement case is not based on a hypothetical dislike of SaaS. Maintenance practitioners describe concrete friction.

In one Industrial Maintenance discussion about replacing MaintainX, the original poster reports weak parts search, inaccessible asset history on iPads, and limited control over work-order forms. Other participants describe preventive-maintenance configuration and asset ordering problems. A recent MaintainX review on G2 raises a closely related operational issue: requester visibility can lead to duplicate work orders, while reporting and consolidated exports still require work.

Those accounts are anecdotes, not a statistical verdict. They are useful because they expose the same boundary we tested: parts, asset history, work relationships, requester visibility, and reporting are not isolated features when they all shape one maintenance decision.

MaintainX itself documents a capable REST API, signed webhooks, and separate data exports for requests, work orders, assets, locations, parts, meters, costs, and other record types in its export guidance. That breadth makes migration possible, but it also shows why replacement is not a single CSV import. The objects, relationships, files, quantities, currencies, timestamps, decisions, and open states have to arrive as one trustworthy operation.

The operation boundary we chose

The application owns the maintenance record. Adjacent specialist systems exchange bounded facts without gaining authority over it.

Owned by the asset maintenance operationAdjacent authority
Canonical asset identity, hierarchy, lifecycle history, source identifiers, and migration provenanceFinance retains fixed-asset, depreciation, tax, payment, and ledger authority
Raw telemetry deliveries, governed observations, deduplication, source-time ordering, threshold versions, and anomaly recordsPLC, SCADA, gateways, and sensors retain machine-signal and control responsibilities
Preventive inspections, corrective work, versioned relationships, assignments, and status historyProduction planning retains schedule authority and supplies bounded downtime context
Parts reservations, transfer movements, installed and returned quantities, and operational cost provenanceProcurement and enterprise inventory retain purchasing, supplier, receipt, valuation, and enterprise stock authority
Technician readings, photographs, procedure evidence, deviations, labour, completion review, and return-to-service decisionsExternal isolation, permit, lockout, competent-person, and physical safety procedures remain mandatory
Migration batches, mappings, validation, reconciliation, exceptions, cutover evidence, and rollback evidenceIdentity providers authenticate people; HR retains employment and competency records
Organisation-, site-, asset-, work-, cost-, migration-, export-, and audit-scoped access decisionsNo browser role or AI output grants authority in an adjacent domain

This is a MaintainX replacement with a disciplined perimeter. The boundary follows the complete maintenance operation rather than the incumbent's product catalogue.

Project stats

MeasureWeek 14 evidence
SwarmCraft projectAsset Maintenance
Planned implementation scope65 tasks
Final board state65 Done; zero Todo, Doing, Checking, Reviewing, blocked, or manual-review tasks
Build runnerOpenAI Codex CLI
Agent executions65
Build-lane runtime9h 52m 7.6s
Target repository515 tracked files and 52,060 tracked text lines after evidence and design-system recovery
Repository history65 task commits plus two reviewed evidence and design-system commits after the baseline
DatabasePostgreSQL 17 with 14 versioned Flyway migrations
Unit and component verification167 API tests and 35 web tests passing
Service-boundary verification52 PostgreSQL integration tests passing
Browser verification24 Playwright scenarios passing, including six axe-tagged accessibility checks
Maintained product evidence17 deterministic screenshots
Delivery targetCustomer-managed cloud environment

The initial driver completed every selected task in 65 agent requests. A later human-directed recovery fixed one ambiguous database trigger, repaired brittle browser assertions, established a repository-native design system, regenerated all screenshot evidence, and brought every recorded test tier to green on 6 September 2026.

The initial 65-task SwarmCraft Asset Maintenance project board

This is a substantial production-shaped foundation, not evidence of a completed customer cutover. The target has no live MaintainX account, customer mappings, production identity configuration, industrial connector, model provider, object store, or rehearsed production recovery environment. Those are named adoption tasks on top of an implemented and tested operational boundary.

The asset maintenance workflow we built

The story follows one Packaging Line 3 conveyor drive from evidence to repair and then through a late-event reconciliation.

Eight actors have distinct responsibilities.

RoleResponsibility in the owned operation
Production line operator or maintenance requesterReports permitted symptoms and follows related work without seeing restricted cost or audit data
Maintenance technicianExecutes assigned work, records readings and procedure evidence, and submits completion without approving downtime or return to service
Reliability engineerInterprets observations, relates preventive and corrective work, dispositions AI advice, and decides how late evidence should be reconciled
Maintenance plannerCoordinates scope, skill, parts readiness, procedure version, and the requested downtime window
Production supervisor and downtime approverApproves, rejects, reschedules, delegates, or lets a downtime decision expire
Storeroom and inter-site parts coordinatorReserves, dispatches, receives, installs, returns, releases, and reconciles exact quantities
Maintenance manager and return-to-service approverReviews technical completion and records the separate maintenance return-to-service disposition
Organisation administrator, migration operator, or auditorGoverns access, migration evidence, cutover readiness, exports, and append-only decision history

Asset maintenance workflow steps

The implemented asset maintenance process follows this sequence:

  1. Establish the canonical conveyor-drive identity, hierarchy, criticality, lifecycle, external references, effective maintenance plan, threshold versions, and procedure versions.
  2. Admit each telemetry delivery as immutable raw evidence with a source identifier, sequence, observed time, unit, value, quality, and delivery identity.
  3. Preserve both deliveries when a retry occurs, but create only one governed observation for the same source event.
  4. Evaluate that observation under the threshold and suppression versions effective at its original observedAt time.
  5. Open one anomaly and surface the already-open preventive inspection without merging its lifecycle into corrective work.
  6. Let bounded AI summarise cited readings, history, procedure context, likely fault, missing evidence, and candidate parts.
  7. Require the reliability engineer to consider or dismiss that advice and separately create governed corrective work with a reason, priority, required skill, procedure version, and evidence contract.
  8. Reserve the bearing at its source site, dispatch and receive the cross-site transfer, and preserve quantity, decimal scale, operational unit cost, currency, valuation date, and source provenance.
  9. Request a downtime window with asset criticality, current condition, scope, parts readiness, duration estimate, and consequence.
  10. Allow the assigned technician to start only after the part, procedure, evidence requirements, and approved window are visible.
  11. Capture readings, procedure steps, photographs, findings, failure code, labour, downtime, installed and returned parts, notes, and deviations.
  12. Reject incomplete completion submissions without changing authoritative work state.
  13. Record maintenance approval of technical completion and a distinct authorised return-to-service decision.
  14. Consume the installed bearing transactionally, release unused quantity, and retain operational cost provenance.
  15. Accept the late vibration observation after repair, evaluate it under historical rules, and route it to reconciliation without silently reopening the asset or creating another work order.
  16. Append the reconciliation decision and preserve the complete source-time-ordered asset history.

These asset maintenance workflow steps form a practical asset maintenance workflow template: delivery is not observation, observation is not anomaly, anomaly is not work, AI advice is not diagnosis, completion is not return to service, and a late event is not permission to rewrite history.

One event arrived twice, but work happened once

The first browser journey retains the original vibration delivery, a second delivery of the same source event, and an exact replay. It then shows the one governed observation and the threshold evaluation that produced one anomaly.

Conveyor-drive incident showing duplicate vibration evidence, one governed observation, the effective threshold, and one anomaly

The distinction matters for connected maintenance. MaintainX's own webhook guidance tells integrators to acknowledge quickly, process asynchronously, implement retries, and make handlers idempotent. The owned API goes further by preserving the raw delivery attempts while suppressing duplicate consequences. It can explain both what arrived and why only one item of governed work followed.

The preventive inspection remains related but separate. A reliability engineer can decide that it supplies enough scope, link it to corrective work, or record why new corrective work is required. A shared asset does not collapse two different purposes into one generic work order.

AI assists diagnosis without acquiring authority

The AI surface receives an allow-listed evidence packet. Each output section must cite the supplied evidence identifiers and carry explicit uncertainty, provider, model version, and prompt version. Unknown citations, unexpected fields, missing uncertainty, and language that claims approval or machine-control authority are rejected.

Bounded maintenance AI showing cited evidence, recommendation-only output, uncertainty, and a separate human disposition

The reliability engineer can record that the advice was considered or dismissed. That disposition does not approve a bearing diagnosis, create work, reserve a part, approve downtime, complete a repair, or return the conveyor drive to service. Deterministic code and accountable people retain those powers.

That is the useful AI distinction for this asset management workflow. AI compresses the reading work across telemetry, history, procedures, related work, and parts context. It does not become the maintenance system of record.

The repair is a governed chain, not a green status

The corrective path joins several records without allowing one to impersonate another:

  • the bearing reservation and cross-site transfer retain exact movement and provenance;
  • production approves a bounded downtime window;
  • only the assigned technician can start and submit the work;
  • completion eligibility is recalculated by the API from persisted evidence;
  • maintenance reviews technical completion; and
  • return to service is requested and decided separately.

Governed repair showing parts transfer, downtime approval, technician evidence, completion review, and return to service

The browser also proves the failure path. A missing photograph, wrong reading unit, incomplete procedure step, absent parts evidence, or missing reason produces a deterministic completion_ineligible response. The rejected attempt remains visible and work stays in progress. A browser button cannot manufacture eligibility.

Return to service is deliberately narrow. It is the maintenance operation's recorded disposition after approved completion and acknowledged external prerequisites. It does not start the conveyor, override isolation, or claim physical safety.

Late evidence does not rewrite a completed repair

The final twist is an older source observation that arrives after completion. The API accepts the distinct observation, marks it late and out of order, evaluates it against the versions effective at the time it occurred, and appends a review-required reconciliation with automaticAssetAction: none.

Late vibration evidence routed to reconciliation while the completed work and prior state remain unchanged

The reliability engineer can record that it was already covered, new evidence, a sensor fault, or a separate anomaly. Until that governed decision occurs, the system does not reopen the asset, duplicate the repair, or revise an earlier decision.

This is where an owned equipment maintenance workflow earns its value. The current state remains readable, while the full append-only history can still answer what happened, when the source says it happened, when the application learned about it, which rules applied, and whose decision changed the operation.

Migrating amounts is part of migrating authority

The migration workspace is one of the strongest parts of the build because it refuses to reduce the MaintainX replacement to record counts.

The inventory covers sites, locations, hierarchy, identifiers, criticality, procedures and versions, preventive maintenance, meters and readings, requests, work relationships, parts, files, users, roles, integrations, open exceptions, and audit references. Each export records its identity and time, schema version, file hashes, row and attachment counts, currencies, decimal scales, relationships, unsupported fields, and known limitations.

MaintainX migration overview showing bounded inventory, mapping provenance, coverage, and validation results

The parallel comparison then places retained source values beside proposed canonical records. It samples status history, hierarchy, file integrity, exact quantities, amounts with currencies, and open relationships. An unresolved parent mapping or amount mismatch stays visible instead of being coerced into a plausible-looking destination.

MaintainX parallel comparison showing history, files, exact quantities, amounts, currencies, and relationship differences

The tested presentation carries amount migration explicitly:

  • quantities use decimal rather than binary floating-point semantics;
  • unit, scale, and source authority travel with every quantity;
  • money retains currency, precision, valuation date, and source provenance;
  • reconciliation compares amount totals by currency rather than inventing a converted grand total; and
  • operational maintenance cost never pretends to be an accounting-ledger balance.

The cutover surface remains blocked until required comparisons, exception dispositions, and governing decisions exist. Its disabled action is not decorative; Playwright asserts that missing authority cannot be supplied by the browser.

MaintainX cutover readiness showing passed and blocked gates, the missing decision, and a disabled activation control

The designed transition uses one writer at every moment: inventory, dry runs, correction, repeatable reruns, parallel comparison, a source-side write freeze, final delta import, reconciliation, explicit activation, integration redirect, monitored operation, and retained rollback evidence. The current target implements the read-only migration and comparison contract plus the browser proof. Live extraction, customer mapping, canonical migration writes, durable activation records, and production execution still require customer-specific implementation and rehearsal.

What the custom asset maintenance operation includes

CapabilityWeek 14 implementationNext responsible work for live operation
Canonical assetsStable asset identity, lifecycle history, external identifiers, and effective-dated same-site hierarchyLoad and verify the customer's agreed asset population, criticality, lifecycle, and hierarchy rules
Observation intakeImmutable raw deliveries, governed observations, duplicate and replay disposition, source-time ordering, and reconciliationConnect and certify real telemetry contracts, field limits, units, service levels, and replay retention
Anomaly evaluationVersioned thresholds and suppression windows selected at observed timeApprove customer thresholds, sensor quality rules, suppression policy, and accountable owners
Preventive and corrective workSeparate lifecycles, versioned relationships, governed assignment, and append-only status historyConfigure customer plans, priorities, skills, escalation, and service expectations
AI advisoryDurable provider boundary, allow-listed cited evidence, structured output validation, uncertainty, provenance, and human dispositionSelect a provider, configure secrets, evaluate models, define freshness policy, and monitor quality
Parts coordinationExact reservations, releases, transfers, installed and returned quantities, decimal cost provenance, and retry-safe commandsIntegrate approved catalogue, stock, procurement, and finance-reference contracts
Downtime and executionHuman downtime decisions, technician-only execution, evidence-gated completion, completion review, and return-to-service dispositionEncode local procedures, delegation, competency, isolation, permit, safety, and production prerequisites
MigrationInventory, deterministic source adapter, mapping and validation evidence, parallel comparison, exceptions, cutover and rollback presentationImplement customer extraction, mappings, writes, activation controls, rehearsals, reconciliation thresholds, and retirement
Security and auditOpaque sessions, server-side permissions, safe denials, immutable audit evidence, and organisation/site/record scopingConfigure production OIDC, access reviews, retention, threat modelling, penetration testing, and audit export
OperationsHealth and readiness separation, durable recovery contracts, CI gates, containers, Kubernetes reference, and runbooksSelect cloud services, compose durable repositories and adapters, load test, deploy, restore-test, and operate

Technology implemented

LayerWeek 14 implementation
Browser applicationReact 19, TypeScript 5.9, and Vite 6 with responsive maintenance, migration, role-preview, decision-history, and failure-state surfaces
Design systemRepository-native typed foundations, semantic status language, reusable components, accessibility guidance, and a standalone review workbench
APINative Node.js modular application with server-authoritative workflow and provider-neutral ports
PersistencePostgreSQL 17 and 14 versioned Flyway migrations, including database-enforced immutable and append-only rules
ReliabilityStable source identities, idempotent commands and consumers, transactional-outbox boundaries, retry, timeout, dead-letter, health, and recovery states
AI boundaryStructured cited outputs, field-level context control, provider and prompt provenance, schema checks, authority-language rejection, and retained disposition history
SecurityOIDC-ready and local authentication composition, opaque sessions, server-side authorisation, scoped audit events, and safe structured logging
Deliverypnpm monorepo, separate non-root production images, Docker Compose, customer-managed Kubernetes reference, CI evidence gates, and operational runbooks
VerificationNode test runner, Vitest, PostgreSQL integration fixtures, Playwright, axe-core, deterministic screenshots, and design-system build

What the browser evidence proves

The maintained browser and API-backed system evidence covers:

  • duplicate and replay deliveries producing one governed observation;
  • source-time threshold selection and one anomaly;
  • separate preventive and corrective work lifecycles;
  • cited AI advice with no authoritative side effect;
  • exact parts reservation and cross-site transfer;
  • downtime, technician evidence, completion, and return-to-service gates;
  • rejected incomplete completion with unchanged work state;
  • a late observation routed to reconciliation with no silent reopen;
  • server-side access denial with unchanged protected records;
  • degraded telemetry intake followed by exactly-once recovery;
  • migration inventory, exception ownership, parallel comparison, amounts, quantities, files, cutover readiness, and rollback evidence;
  • responsive layout at 390 pixels; and
  • six representative axe-tagged accessibility checks.

The screenshots use deterministic fictional data. They prove what the target implements and what the tests assert. They do not prove a Harbourline Foods deployment, a live MaintainX migration, legal compliance, physical machine safety, or achieved production recovery objectives.

How SwarmCraft structured the build

SwarmCraft created the 65-task Asset Maintenance project before implementation. The plan moved from living discovery records and repository foundations through identity, permissions, PostgreSQL, canonical assets, observations, anomaly rules, preventive and corrective work, parts, governed execution, migration, browser evidence, accessibility, production packaging, CI, observability, cutover, and recovery.

That sequence matters. The design did not begin with a dashboard and add authority later. Stable identity, record classification, history, permissions, amounts, and failure semantics were established before the user-facing maintenance and migration surfaces that depend on them.

The post-build design-system pass corrected an equally important weakness. The initial interface had grown feature by feature without one visual consumer contract. The recovered target now declares a single design-system entry point, typed exports, semantic colours, status language, spacing and typography foundations, accessibility rules, an inventory, adoption guidance, and a runnable workbench. The refreshed screenshots therefore show one calm industrial operating language rather than a pile of locally styled AI-generated panels.

What this says about AI-built workflow software

AI contributed in two different places, and they should not be confused.

First, an AI build agent turned a detailed operational scenario into 65 independently completed tasks across product code, database migrations, tests, infrastructure, and runbooks. The output became credible only when repository evidence, database constraints, browser assertions, and human review exposed and repaired its gaps.

Second, the product contains a bounded AI advisory surface. It can retrieve approved context and prepare a cited diagnostic briefing. It cannot change a canonical asset, set a threshold, approve its own diagnosis, create authoritative work without a governed rule or human decision, approve downtime, consume stock, close work, return equipment to service, or issue an industrial-control command.

That separation is the opportunity. AI can make a specialised owned API and interface economically practical, then assist inside the operation without becoming its authority.

Replace the record, then own the responsibility

The Week 14 result is not a nicer request form around MaintainX. It is an owned maintenance operation with one canonical asset identity and one reproducible path from machine evidence to accountable work.

The replacement becomes credible when the organisation can answer these questions from its own records:

  1. Which asset did the evidence belong to?
  2. Which source event arrived, how many delivery attempts occurred, and which observation became governed?
  3. Which rule versions were effective at the event's source time?
  4. Why did preventive and corrective work remain related but separate?
  5. What did AI suggest, which evidence did it cite, and what did a person decide?
  6. Which part quantity moved, at what operational unit cost and currency, and with what provenance?
  7. Who approved downtime, completion, and return to service for their separate purposes?
  8. What changed when late evidence arrived—and what deliberately did not?
  9. Did every migrated record, relationship, file, quantity, amount, currency, open state, and sampled history reconcile?
  10. At the activation instant, which system was the sole writer and what evidence supports recovery if cutover fails?

Owning those answers is what turns asset maintenance automation into an asset maintenance system of record.

Use Deep Discovery to plan the MaintainX replacement

A MaintainX replacement crosses source inventory, asset identity, history, telemetry, work, parts, amounts, access, integrations, cutover, continuity, and operational responsibility. Deep Discovery is the route for mapping those records and controls into a coherent owned operation. It is currently available through a limited account-enabled rollout.

The goal is not another maintenance dashboard. It is a complete asset maintenance workflow that the organisation can operate, explain, recover, and improve on its own terms.

Keep reading

Best asset management software
7 September 202627 min read

Best asset management software

Compare 15 asset management systems by buyer lane, record ownership, maintenance depth, AI use, connected-asset capability, API openness, and modelled one-, three-, and five-year subscription cost.

Open article