Skip to content

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

python scripts/generate-solution-objects.py --output solution-objects.csv project.xml

Columns: Object Type, Name, Target Entity, Namespace, Custom Fields, Event Handlers, Dependencies, Risk Level, Description

2. Solution Objects JSON (ISV Format)

python scripts/generate-solution-objects.py --format isv --output solution-objects.json project.xml

Includes project metadata, object counts by type, risk assessment summary, and detailed object listing with field types and dependencies.

3. Certification Checklist Report

python scripts/certification-checklist.py --format json --output isv-checklist.json project.xml

Machine-readable pass/fail status for every certification requirement.

4. Deploy Intelligence Report

python scripts/validate-project.py --intelligence project.xml

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.py checks 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 EXISTS guards
  • [ ] All extensions implement IsActive() method
  • [ ] No hardcoded credentials in CDATA blocks
  • [ ] product-version and level attributes set on <Customization> root
  • [ ] Project description attribute present
  • [ ] Deploy Intelligence prediction shows acceptable success probability
  • [ ] Tested against target Acumatica version (see COMPATIBILITY.md)