Mass change and operations
When a departure is cancelled, an itinerary changes or a service becomes unavailable, many trips change at once. The order engine handles this as a disruption and one or more mass changes, with a plan you review before anything is applied, a commit token, per-trip results, retries and rollback.
The flow
| Step | Call | Result |
|---|---|---|
| Record the disruption | POST /oms-ops/disruptions | Kind (itinerary_change, service_unavailable, departure_cancelled, transport_change, other), reason, description and scope (departures, products, product kinds, trips, line statuses). |
| See the impact | GET /oms-ops/disruptions/{id}/impact | Affected trips, guests, orders, lines and revenue by market, channel and category. |
| Plan | POST /oms-ops/disruptions/{id}/mass-changes | A planned change with a preview item per trip, the population, and a commitToken. Nothing is applied. |
| Dry-run | POST /oms-ops/mass-changes/{id}/dry-run | What a commit would do to the pending items: will apply, needs a person, will fail, skipped. Writes nothing. |
| Commit | POST /oms-ops/mass-changes/{id}/commit with the commitToken | Applied trip by trip, in batches. Each item ends applied, failed, needs_person or skipped. |
| Follow up | GET /oms-ops/mass-changes/{id}/items | Per-trip outcome with filters and facets (status, outcome, market, channel). |
| Retry | POST /oms-ops/mass-changes/{id}/retry | Re-runs failed items. |
| Roll back | POST /oms-ops/mass-changes/{id}/rollback with a reason | Reverses the applied items. A line changed since the change was applied is reported as rollback_conflict rather than overwritten. |
| Close the disruption | POST /oms-ops/disruptions/{id}/status | resolved or superseded. |
Kinds of mass change
| Kind | Does |
|---|---|
line_update | Sets status, departure, attributes, or adjusts prices by a percentage on every affected line. |
re_accommodation | Moves affected trips to another departure or product, maps categories, and prices the new booking under a price-protection rule. |
Price-protection rules (tenant configuration, listed with GET /oms-ops/protection-rules):
| Rule | Price on the new departure |
|---|---|
same_price | The guest keeps the original price. |
new_price_with_discount | The new price less a percentage or amount, optionally capped at the original. |
new_price_with_upgrade | The new price, with an upgrade along the category ladder. |
A re-accommodation can offer the guest a choice: accept the alternative or take a refund (POST /oms-ops/mass-changes/{id}/items/{tripId}/guest-choice), within a choice window.
Safety
- Plan before commit. The plan records each affected line's version. If a line changes between plan and commit, its item fails as drifted instead of overwriting the newer change.
- Commit token. A commit must present the plan's token, so a change cannot be committed twice or by mistake.
- Exceptions go to people. The tenant's operations policy can route trips that match exception rules to a team (
needs_person) instead of applying them; they appear as work items. - Every step is an event.
oms.disruption.recorded,oms.mass_change.planned,oms.mass_change.completed,oms.mass_change.rolled_back,oms.order.changedper trip andoms.notification.requestedfor customer communications.
Operations work
| Read or act | Call |
|---|---|
| Work items (exceptions to handle) by team, status, reason or change | GET /oms-ops/work-items |
| Queues and their counts | GET /oms-ops/work-queues |
| Assign, resolve or reopen a work item | POST /oms-ops/mass-changes/{id}/items/{tripId}/work-item |
| Trips carrying a mark (for example re-accommodated) | GET /oms-ops/reports/marks?mark= and GET /oms-ops/trips/{tripId}/marks |
The disruption list, impact, dry-run, mass-change list, work items and protection rules require the tenant's operations policy (otherwise 404 order_operations_not_enabled).
See the mass change guide and the reference for Disruption and mass change and Operations.