How integrations work

VMS Agent connects to 71+ downstream systems through one adapter pattern. You author intent once in the Common Workforce Model; the adapter handles each platform's auth, object model, required fields and back-sync. This page explains that universal flow before you dive into a specific platform.

The pattern
Intent → Plan → Preflight → Publish → Reconcile

Every system — VMS, procurement, HRIS, ATS, ERP or ITSM — is reached through the same five stages. Only the final adapter step differs per platform.

1 · Intent

A canonical IntentRecord is created (keyed by intent_id) carrying diagnostics, routing and admin payloads in neutral field names.

2 · Plan

The Channel Map resolves the intent to one or more destinations (e.g. a contingent requisition to your VMS, an SOW to a sourcing tool).

3 · Preflight

The intent is validated against the destination's required + tenant-specific fields. Gaps emit an enrichment_request back to intake.

4 · Publish

The adapter maps canonical fields to the platform dialect and writes the record idempotently, recording external IDs + a receipt.

5 · Reconcile

Webhooks or polling detect changes humans make inside the platform; drift is flagged against the canonical intent.

Passthrough

An escape hatch (POST /passthrough) sends raw JSON to any platform endpoint, still anchored to intent_id for audit.

Connecting
Auth strategies we normalise

The adapter abstracts each platform's authentication behind one connected-destination credential model. The common shapes:

StrategyUsed by (examples)How VMS Agent handles it
OAuth 2.0 client-credentialsCoupa, Globality (Auth0), Workday ISU, SAP BTP (XSUAA), GEPToken minted + cached per destination; refreshed before expiry.
OAuth token + per-API app keySAP Ariba (apiKey + Bearer)Two-secret model; one application registered per API + realm.
SOAP / WS-Security via service userWorkday (Integration System User), SAP Ariba SOAPCredential bound to an ISU in an integration security group.
Document exchangeSAP Ariba cXML over Ariba NetworkTransactional PO/invoice docs pushed/received over the Network.
The translation
Canonical model → platform dialect

A MappingProfile is the per-tenant template that translates Common Workforce Model paths to a platform's field names, with transforms and required-by-platform flags. The same canonical start_date becomes WorkStartDate in Fieldglass, a requisition field in Coupa, or a Staffing business-process input in Workday.

Canonical (you write this)

routing.channel = "contingent" routing.role_title admin.start_date admin.end_date admin.cost_center admin.worker_type publishing.defence_file_ref

Adapter resolves (per platform)

MappingProfile (tenant-scoped) Required-field + picklist rules Idempotency key External IDs + publish receipt Webhook / poll back-sync Audit spine (defence_file_ref)
VMS Agent API
The endpoints you call

These are VMS Agent's own endpoints (base https://api.vmsagent.dev) — the same regardless of which downstream platform you target. See the API Reference for full schemas.

MethodPathSummary
POST/intentCreate an intent record (returns intent_id).
PATCH/intent/{intent_id}Patch diagnostics/routing/admin fields.
POST/planGenerate destination plan from Channel Map + intent.
POST/preflightValidate intent against platform requirements.
POST/publishIdempotent publish to target platform via adapter.
GET/intent/{intent_id}Fetch the canonical intent record.
GET/intent/{intent_id}/timelineFetch timeline events for audit.
GET/platformsList platforms and doc availability.
GET/destinationsList connected destinations and capabilities.
GET/destinations/{id}/capabilitiesCapability matrix + required fields per object/op.
POST/passthroughSend raw JSON to a platform endpoint.
POST/reconcileDetect drift between VMS state and canonical intent.
POST/enrichment-requestEmit missing fields back to Triage/Intake.
Staying in sync
Back-sync: webhooks or polling

Platforms differ: some push events (Globality, SAP Event Mesh, Coupa Events API), most are poll-first (Workday RaaS, Ariba, GEP). VMS Agent normalises both into one WebhookEvent envelope and reconciles against the canonical intent.

EventMeaning
vms.requisition.updatedA requisition changed in the VMS.
vms.assignment.updatedAn assignment changed.
vms.timesheet.updatedTimesheet changed.
vms.connection.revokedTenant auth revoked.
Next
Pick a platform

Each platform page shows its real API facts, minimum viable mapping and tenant-specific notes.