Skip to content

Latest commit

 

History

118 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LAB5 Electronics Inc. — Acumatica demo tenant seed

Git-versioned Acumatica configuration for LAB5 Electronics Inc., an electronics manufacturer demo company used for the lab5.ca Demo Tenant Factory sales pitch.

Requires the acu CLI (PyPI: acumatica-cli) at least 0.24.0.

What it does

Rebuilds an empty Acumatica tenant into LAB5 Electronics Inc. from this Git tree. Not a production ERP.

acu apply writes company, chart of accounts, warehouse, stock items, vendors, customers, and module preferences.

acu run then posts linked documents so the books show a manufacturer cash cycle: owner capital, buy parts, assemble kits, sell, invoice, collect.

Watch the process: empty tenant to company, masters, and linked history.

Demo Tenant Factory

Major scenarios

acu run with no path runs every file under scenario/ in order.

Each file is one manufacturing leg. Documents chain vendor or customer to order to receipt or shipment to bill or invoice to payment.

File What it posts
10-seed-capital.yaml $50,000 owner capital (debit 10100, credit 30000). CLI skips when already present.
20-buy.yaml Component purchase order, receipt, bill, then wire from four vendors. Cash out $4,037 into WH01.
30-build.yaml Assembles 10 GW-EDGE, 5 GW-CELL, 5 GW-RAIL. Cash does not move.
40-sell.yaml Sales order, shipment, invoice to ACMEMFG, NORTHGRID, AGRISENSE. Revenue $4,138; invoices stay Open.
45-collect.yaml ACMEMFG full $1,196; NORTHGRID partial $1,000; AGRISENSE Open. After this pack: cash $48,159, AR $1,942.
46-collect.yaml Pays leftover NORTHGRID and AGRISENSE. Skip when AR 11000 is 0; full run ends cash $50,101, AR 0.

Pitch films often stop after 45 so mixed Open accounts receivable stays on screen.

Layout

Path Role
matrix.yaml Multi-host pin+where: cells id+erp+default_api+base_url (V27); --cell selects
config/bootstrap/ Company, features, credit terms (Bootstrap REST package is CLI SoT 1.4.0+)
config/baseline/ GL foundation (COA, ledger, subaccounts, UOMs)
config/setup/ Financial year, master calendar, open periods
config/master/ Inventory, warehouse, items, vendors, customers, module prefs, roles, users
config/views/ Observation defs for acu state (trial balance); not seed
scenario/10-seed-capital.yaml Once-class owner capital JE (CLI skip-if-present when present)
scenario/20-buy.yaml Additive component PO to receipt to bill to AP pay (four vendors)
scenario/30-build.yaml Additive kit assembly (parts to GW-EDGE / CELL / RAIL)
scenario/40-sell.yaml Additive SO to ship to invoice (three customers; no AR pay)
scenario/45-collect.yaml Additive mixed AR collect: ACMEMFG full, NORTHGRID partial, AGRISENSE open
scenario/46-collect.yaml Close remaining Open AR after 45; skip when AR 11000 is already 0
state/ Local derived observations (acu state from config/views/; gitignored)
overlays/ Optional Default-half rewrites (default-<default_api>/); bare apply/run/diff auto-compose
reports/ Multi-host matrix evidence templates and run notes

Quick rebuild

Start from a brand-new empty tenant. Do not apply onto a half-configured company.

# 1. Credentials (local .env): ACU_TENANT, ACU_USER, ACU_PASSWORD
#    Default API pin + REST where = matrix.yaml cell (default_api + base_url)
#    Optional ACU_BASE_URL overrides active cell where (ad-hoc probes)
#    ACU_SSH optional (defaults to Administrator@<host> when unset;
#    set blank ACU_SSH= for hosted / no-SSH)
#    First cell is default; --cell id selects another

acu config check
# acu --cell 25r1 config check

# 2. Empty tenant + bootstrap (SSH control plane)
# create also publishes AcuBootstrap — ready for apply
acu tenant create --login TENANT
# Hosted / tenant already exists: acu bootstrap
# Offline UI fallback: acu bootstrap --export AcuBootstrap.zip

# 3. Seed configuration (config/ umbrella; order = bootstrap → baseline → setup → master)
# bare apply/run/diff auto-compose overlays/default-<default_api>/ when present
acu apply

# 4. Linked history for the pitch (once capital, then buy/build/sell/collect)
acu run

# 5. Prove no drift on seeded config
acu diff

# 6. Capture derived state (trial balance → state/)
acu state

Once vs additive scenarios

File Class Warm re-run
10-seed-capital.yaml once CLI skips when capital JE already present; Owner Capital stays 50k (not stacked)
20-buy.yaml additive New component PO/receipt/bill/pay each run; part and cash deltas hold
30-build.yaml additive New kit assemblies each run; parts to kits deltas hold
40-sell.yaml additive New SO/ship/invoice pack each run; AR +4138, cash 0; deltas hold
45-collect.yaml additive Mixed AR: ACMEMFG full 1196, NORTHGRID partial 1000, AGRISENSE open; cash +2196. Re-run only after a fresh sell pack and 46 has closed leftover Open NORTHGRID
46-collect.yaml once when AR 0 Pays remaining Open NORTHGRID + AGRISENSE (live Balance); skip when AR 11000 is 0. After one 45 pack: cash +1942, AR 0

Primary compose: acu apply config/ then acu run scenario/.

Warm capital-only gate (state must not move):

acu run scenario/10-seed-capital.yaml && acu state --assert-unchanged

Other useful commands

Command Role
acu tenant list List tenants on the instance (SSH)
acu tenant delete --login TENANT --yes Delete tenant + recycle app pool
acu tenant recycle --yes Restart site app pool (free API slots / reload tenant map)
acu extract Inverse of apply: live tenant to config/** seed YAML
acu schema Dump endpoint OpenAPI into schemas/
acu inventory ARTIFACT Offline: SM203520 Settings XML ZIP / ac.exe export xml into inventory/
acu reconcile Offline: inventory/ vs optional config/ into findings/
acu check --all --yes Cold lifecycle every matrix.yaml cell (delete, create, apply, run, diff); leaves tenant (no final delete); drift fails cell as exit 1
make check Same as acu check --all for lab matrix (tenant CHECK by default; CHECK_TENANT= override)
make check HOST=25r1 Same E2E for one matrix cell only (acu --cell 25r1 check)

Overlay compose

Overlays live under overlays/default-<default_api>/.

With host-true matrix cells, bare commands auto-compose the pin overlay (acu-cli at least 0.24.0). Explicit path args disable auto.

# Cell 25r1 default_api: 24.200.001 → overlays/default-24.200.001/
acu --cell 25r1 apply
acu --cell 25r1 run
acu --cell 25r1 diff

# Explicit (no auto) — later path wins same keys
acu apply config/ overlays/default-24.200.001/

# Cold lifecycle every cell (SSH + tenant required)
acu check --all --yes --tenant LAB5

About

Acumatica ERP GitOps seed — LAB5 Electronics Inc. (manufacturer demo tenant)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages