AcuOps Usage Guide¶
Developer Workflow¶
Daily Development¶
-
Create a feature branch:
-
Edit your customization in
Customization/_project/project.xml -
Validate locally:
-
Push and create a PR:
-
The PR check runs validation against staging (import + compilation, no publish).
-
After review, merge to
main— automatic production deploy.
Manual Deploy¶
Trigger from GitHub Actions UI: 1. Go to Actions → "AcuOps Deploy" 2. Click "Run workflow" 3. Select environment (staging/production) 4. Optionally enable "Validate only"
Or use the script directly:
# Deploy to production
scripts/deploy.sh \
--project MyCustomization \
--package dist/MyCustomization.zip
# Validate only (no publish)
scripts/deploy.sh \
--project MyCustomization \
--package dist/MyCustomization.zip \
--validate-only
# Deploy with backup
scripts/deploy.sh \
--project MyCustomization \
--package dist/MyCustomization.zip \
--backup
Python Deployer¶
The Python script supports additional features:
# With YAML config
python scripts/deploy.py --config acuops.yaml --package dist/MyProject.zip
# Download existing package (backup)
python scripts/deploy.py --download --project MyProject --output backups/
# Co-publish for conflict detection
python scripts/deploy.py \
--project MyProject \
--package dist/MyProject.zip \
--also-publish VARPackage ShopifyConnector
Rollback¶
From GitHub Artifacts¶
- Go to Actions → find the deployment run
- Download the
backup-packageartifact - Run restore:
Manual Backup¶
Co-Publish (Conflict Detection)¶
When multiple customization projects are active, publish them together to catch conflicts:
Or via CLI:
scripts/deploy.sh \
--project MyCustomization \
--package dist/MyCustomization.zip \
--also-publish "VARPackage,ShopifyConnector"
Acumatica compiles all listed projects together and reports any type conflicts, duplicate field names, or compilation errors.
Validation¶
Local Validation¶
# Basic validation
python scripts/validate-project.py Customization/_project/project.xml
# Strict mode (additional warnings)
python scripts/validate-project.py --strict Customization/_project/project.xml
# ISV prefix enforcement
python scripts/validate-project.py --isv-prefix AO Customization/_project/project.xml
What the Validator Checks¶
- XML well-formedness
<Customization>root elementlevelandproduct-versionattributes<Sql>elements — ALTER TABLE guards<Table>elements — NullReferenceException warning<Graph>elements — C# code validation<SqlScript>rejection warning- ISV prefix enforcement
- Duplicate
Usr*field detection - Security scan (hardcoded credentials in CDATA)
Solution Objects (ISV Certification)¶
Generate the certification artifact:
python scripts/generate-solution-objects.py Customization/_project/project.xml
# Outputs: solution-objects.csv
Environment-Specific Deploys¶
| Trigger | Environment | Behavior |
|---|---|---|
Push to main |
Production | Full deploy (backup + import + publish) |
Push to staging |
Staging | Full deploy |
| Pull request | Staging | Validate only (import + compile, no publish) |
| Manual dispatch | Your choice | Full deploy or validate-only |