Case Study: Heritage Fabrics¶
Company Profile¶
Heritage Fabrics is a mid-market textile company specializing in decorative and performance fabrics for the residential and commercial interiors market. They operate on Acumatica Cloud ERP (version 24.200) with multiple customization projects managing purchase order workflows, customer-specific business rules, and ERP-to-CRM integration points.
The Challenge¶
Heritage Fabrics had outgrown manual customization deployment. Their Acumatica instance required 6 custom DAC extensions (C# graph extensions for purchase orders, customers, and sales orders), SQL column creation scripts, and co-publish coordination with third-party connector packages.
Before AcuOps: - Customization packages were manually exported from the Acumatica UI - Uploads required navigating the SM204505 Source Control screen - Publishing involved monitoring a progress bar and hoping nothing conflicted - No pre-deploy backup meant a failed publish could leave the system in an inconsistent state - No version history beyond what Acumatica tracked internally - Deploying a change took 15-20 minutes of manual steps and attention
Key risks: - A bad publish could break production ERP for the entire company - No rollback capability beyond restoring from Acumatica's internal backup - Co-publish conflicts with third-party packages (Shopify connector, VAR customizations) were discovered only at publish time - No audit trail of who deployed what, when
The Solution¶
AcuOps was deployed as the CI/CD pipeline for Heritage Fabrics' Acumatica customization project (HeritageFabricsPOv5). The pipeline runs entirely on GitHub Actions with zero additional infrastructure.
Pipeline flow:
1. Developer exports customization project from Acumatica Source Control
2. Code is committed to GitHub (studio-b-ai/acumatica-ci-cd)
3. Push to main triggers the AcuOps deploy workflow
4. AcuOps validates project.xml, creates a pre-deploy backup, imports the package, and publishes with co-publish conflict checking
5. Deploy Intelligence records the outcome for future predictions
Technical details:
- 6 C# DAC extensions managed (POOrderExt, POLineExt, POOrderEntry_Extension, CustomerExt, ARInvoiceEntry_PayLink_Extension, SOOrderExt)
- SQL column creation via <Sql> elements (6 ALTER TABLE statements with IF NOT EXISTS guards)
- Co-publish with HeritageFabricsPOv5 to catch conflicts with other active projects
- Pre-deploy backup downloads the current published package before every deployment
Results¶
| Metric | Before AcuOps | After AcuOps |
|---|---|---|
| Deploy time | 15-20 min (manual) | < 4 min (automated) |
| Failed deploys | Occasional, no tracking | 0 since adoption |
| Rollback capability | Manual, uncertain | One-command restore |
| Deploy audit trail | None | Full GitHub Actions history |
| Co-publish conflict detection | At publish time (surprise) | At validation time (preventive) |
| Version control | Acumatica internal only | Full Git history with diffs |
Key outcomes: - Zero failed deployments since AcuOps adoption - 75% reduction in deploy time (20 minutes manual to under 4 minutes automated) - Complete audit trail of every deployment via GitHub Actions - Confidence to deploy more frequently knowing backup and rollback are automatic - DAC field deployment automated including SQL column creation (previously required manual database scripts)
Architecture¶
Developer Workstation
|
v
GitHub Repository (acumatica-ci-cd)
|
v (push to main)
GitHub Actions (AcuOps Deploy Workflow)
|
├── Validate project.xml (14 checks)
├── Download pre-deploy backup
├── Package customization .zip
├── Import via Customization API
├── Publish with co-publish projects
└── Record outcome (Deploy Intelligence)
|
v
Acumatica Cloud ERP (heritagefabrics.acumatica.com)
Customization Project Structure¶
Customization/_project/
├── project.xml # Project manifest with 6 Graph elements + SQL
└── Code/
├── POOrderExt.cs # PO arrival date fields
├── POLineExt.cs # PO line arrival dates
├── POOrderEntryExtension.cs # Date cascade logic
├── CustomerExt.cs # Disable PayLink per customer
├── ARInvoiceExtension.cs # PayLink business rule
└── SOOrderExt.cs # HubSpot Deal ID field
About Studio B¶
Studio B is an AI-powered managed IT and DevOps consulting agency specializing in Acumatica ERP automation. AcuOps is Studio B's productized CI/CD pipeline, available as open-source (BSL 1.1) or as a fully managed service.
Contact: kevin@studiob.ai