AcuOps ISV Certification Guide¶
This guide maps AcuOps automated validation checks to Acumatica ISV certification requirements. Use AcuOps tooling to prepare your customization project for ISV submission.
Quick Start¶
# Run full ISV certification check
python scripts/certification-checklist.py Customization/_project/project.xml
# Generate solution objects for ISV submission
python scripts/generate-solution-objects.py --format isv Customization/_project/project.xml
# Run via GitHub Actions
gh workflow run "ISV Certification Check"
Certification Checklist Mapping¶
1. Code Quality¶
| ISV Requirement | AcuOps Check | Tool |
|---|---|---|
All extensions must implement IsActive() |
validate-project.py checks every PXCacheExtension and PXGraphExtension |
Validator |
| C# code compiles without errors | Balanced braces check, problematic type detection | Validator |
| Consistent namespace across project | Namespace extraction and comparison | Checklist |
| No duplicate field definitions | Duplicate Usr* field detection within same class |
Validator |
2. Schema Safety¶
| ISV Requirement | AcuOps Check | Tool |
|---|---|---|
| No destructive SQL operations | Scans for DROP TABLE, DROP COLUMN, TRUNCATE TABLE, DELETE FROM |
Validator |
| Idempotent SQL scripts | Checks for IF NOT EXISTS guards on ALTER TABLE |
Validator |
No <Table> elements (cloud compatibility) |
Detects <Table> elements that cause NullReferenceException on cloud |
Checklist |
No <SqlScript> elements (SM204505 rejection) |
Detects legacy <SqlScript> tags rejected by import screen |
Validator |
3. Security¶
| ISV Requirement | AcuOps Check | Tool |
|---|---|---|
| No hardcoded credentials | Scans CDATA for password, connection string, API key, secret, token patterns | Validator |
| No embedded connection strings | Pattern matching in C# code blocks | Validator |
4. Compatibility¶
| ISV Requirement | AcuOps Check | Tool |
|---|---|---|
| Specify target Acumatica version | Checks product-version attribute on <Customization> root |
Checklist |
| Specify customization level | Checks level attribute (should be "0" for ISV packages) |
Checklist |
| Valid product version format | Regex validation of version string (e.g., 24.200) |
Checklist |
5. Best Practices¶
| ISV Requirement | AcuOps Check | Tool |
|---|---|---|
| ISV prefix on class names | --isv-prefix flag enforces prefix on all Graph ClassName attributes |
Validator |
| BQL field classes use lowercase prefix | Checks that public abstract class usrFieldName starts with lowercase usr |
Validator |
Custom fields use Usr prefix |
Validates all custom property fields start with Usr |
Validator |
6. Documentation¶
| ISV Requirement | AcuOps Check | Tool |
|---|---|---|
| Solution objects listing | Generates CSV/JSON with all customization objects, types, targets | Solution Objects |
| Project description | Checks description attribute on <Customization> root |
Checklist |
| Field documentation | Extracts [PXUIField(DisplayName = "...")] for each custom field |
Solution Objects |
ISV Submission Artifacts¶
AcuOps generates all artifacts required for ISV certification submission:
1. Solution Objects CSV¶
Columns: Object Type, Name, Target Entity, Namespace, Custom Fields, Event Handlers, Dependencies, Risk Level, Description
2. Solution Objects JSON (ISV Format)¶
Includes project metadata, object counts by type, risk assessment summary, and detailed object listing with field types and dependencies.
3. Certification Checklist Report¶
Machine-readable pass/fail status for every certification requirement.
4. Deploy Intelligence Report¶
Historical deploy success probability, risk factors, and estimated duration.
GitHub Actions Workflow¶
The acuops-isv-check.yml workflow runs all checks and produces downloadable artifacts:
# Run with ISV prefix enforcement
gh workflow run "ISV Certification Check" -f isv_prefix=AO -f strict=true
Artifacts produced:
- solution-objects.csv — Spreadsheet listing
- solution-objects.json — ISV format with metadata
- solution-objects.md — Documentation format
- isv-checklist.json — Certification readiness report
Pre-Submission Checklist¶
Before submitting to Acumatica for ISV certification:
- [ ] All
certification-checklist.pychecks pass (no FAIL results) - [ ] Solution objects CSV/JSON generated and reviewed
- [ ] ISV prefix enforced on all class names (if applicable)
- [ ] No
<Table>or<SqlScript>elements in project.xml - [ ] All SQL scripts have
IF NOT EXISTSguards - [ ] All extensions implement
IsActive()method - [ ] No hardcoded credentials in CDATA blocks
- [ ]
product-versionandlevelattributes set on<Customization>root - [ ] Project description attribute present
- [ ] Deploy Intelligence prediction shows acceptable success probability
- [ ] Tested against target Acumatica version (see COMPATIBILITY.md)