Skip to content

acu run: declarative transaction scenario runner #11

Description

@kborovik

Problem: apply/diff cover configuration (keyed idempotent upserts), but the first lab5.ca service needs transaction scenarios: build tenant -> apply config -> run a consistent transaction set -> compare actual vs expected. Transactions are not keyed upserts (server assigns document numbers), so they need a runner, not apply.

Proposed: acu run <files|dirs> executing scenario YAML (scenario/ dir in the data repo):

  • steps: put (recursive wrap, Detail lists native), action (invoke + 202 poll), wait (poll a record until field values match, with timeout)
  • capture: {OrderNbr: po_1} lifts server-assigned keys into variables; ${po_1} interpolates into later steps
  • expect: get (key-URL record field assertions, e.g. Status) and inquire (contract inquiry PUT-with-parameters, e.g. InventorySummaryInquiry, AccountSummaryInquiry — both confirmed present in Default/25.200.001) with delta assertions: runner snapshots every expect probe before step 1, re-probes after the last step, compares the delta — scenario re-runs safely on a warm tenant
  • exit 0 all expectations hold / 1 any step error or miss; step + expectation report table; --dry-run parses and lists steps without HTTP

Reuses AcumaticaClient session/tenant guard/wrap/invoke-poll machinery. Scenario YAML is data and stays in the data repo (V2 split). The scenario format is the contract for the future AI scenario generator.

First consumer: acumatica-devops scenario/buy-build-sell.yaml (4 POs -> receipts -> bills -> 3 kit assemblies -> 3 SOs -> shipments -> invoices -> payment), exercising the Lab5 Gateway Works config end to end.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions