RSSAmplifier

Blog

lab5.ca blog

Notes on Acumatica configuration-as-code, CI/CD for ERP changes, cutover rehearsal, and production AI systems.

lab5.caRSS feed ↗13 posts

Latest posts

Acumatica business scenario validation: pass/fail process paths from a Git seed

Config looks complete until order, receipt, invoice, or payment fails. Named scenario legs on non-prod current config give pass/fail with the failing step named — complements click-through UAT and feeds major-release and integration checks.

Acumatica live company to rebuildable UAT: extract, config twin, scenario gate

Hand-built or stale UAT cannot prove readiness the same way twice. Extract live Acumatica configuration into Git, rebuild a virgin UAT as a config twin, run a scenario readiness gate, and prove with diff plus books — not a production database clone.

Acumatica major-release regression matrix: certify one versioned GitOps tenant seed across three major releases

Manual UAT does not scale across Acumatica major releases. Pin a lab host per major, run one cold lifecycle gate against the same versioned GitOps tenant seed, and verify financial books on Account Summary (GL401000). Multi-major proof that complements certified UAT.

QuickBooks and Xero to Acumatica: connect, export, and load a test tenant

Prospects outgrowing QuickBooks or Xero want their own books in Acumatica before they commit. Connect the source over OAuth (or the same shape for QuickBooks), export a cutover pack, map it into versioned YAML, and load a clickable test tenant — then rehearse cutover on the same tree.

Automated regression testing for Acumatica configuration-as-code (GitOps)

Acumatica configuration ships after manual click-through with no CI gate. With configuration-as-code in git, the GitOps gate is acu apply, acu run, and acu diff — three exit codes a pipeline can enforce.

Configuration-as-code for Acumatica: a tenant built from YAML in git

Acumatica configuration usually lives only in the web UI. YAML in git plus acu apply and acu diff turns a credit-terms edit into a pull request, an idempotent upsert, and a zero-drift proof with an exit code.

Scheduled ERP backups in two layers: database dumps and storage snapshots

Every self-hosted Acumatica instance is yours to back up, and the vendor guidance converges on scheduled SQL-native backups — but backups end up ad hoc. Two independent layers provisioned by Ansible, a SQL `.bak` per database and a nightly whole-VM ZFS snapshot, run on a schedule with no manual routine.

Automated DEV/TEST environments for Acumatica with Ansible

Most Acumatica customers run production on Acumatica's SaaS cloud, but customization and upgrade testing need self-hosted instances. One Ansible command builds one on a Linux KVM host — golden image to login page, unattended.

The 90/10 software rule small businesses can use

For decades only big companies could afford to build their differentiated software. AI collapsed the cost of that slice to where one developer can deliver it — which is exactly what a small business can now afford.

What one AI email actually costs

Most AI ROI talk is hand-waving. Here is a traced, per-email cost from a production agent — and the risk/reward math a CFO can check.

Troubleshooting application failures with Logfire

A repeatable workflow for using Logfire span trees, SQL-over-traces, and OpenTelemetry semantic conventions to turn opaque application failures into one-line diagnoses — walked through a real production bug.

Smoke-testing an LLM agent with Claude Code skills

Mocked pytest stays green while a live agent fabricates product specs. Lint and pytest cover the machinery; Claude Code skills drive real Gmail, real Drive, and the real model — with deterministic gates where possible and an LLM judge where natural language is the answer.

Code consistency is the casualty of agent velocity

Agents ship inconsistent code that tests still pass. One small SPEC.md re-read every turn, telegraph-encoded to a 41% token cut, is the defense — with backprop turning each under-specified failure into a permanent invariant.