Sample excerpt: from findings to a decided plan

AI-Accelerated X++ Codebase Audit

You buy a decided plan, not a findings PDF: a decision sheet (every finding verdicted fix now / fix at upgrade / deliberately accept), the CI gate installed in your Azure DevOps pipeline, and a decision meeting where your team agrees the sequenced program.

Bluewizarding Consulting LLC · Shawn Lenker, 11 years in Dynamics AX and D365 F&O codebases, most recently Senior D365 Developer at Patagonia. Target: a 3-package, 20-model customization layer (454 elements, 1,738 methods). Turnaround: under one day (manual reviews scope this at 2+ weeks).

Three of the report's twelve sections, run against a real, publicly licensed X++ codebase (TrudAX XppTools, MIT). Client reports follow the identical method under NDA.

Section 1

Executive heatmap

Red cells are where remediation budget should go first.

Model risk heatmap: finding counts by audit dimension
Model (top 8 of 20 by risk)Raw SQLLegacy patternsLocalization debtSecurity / I/O surfaceOverlayering
DEVExternalIntegration52346290
DEVExternalIntegrationSamples922860
DEVSQLExecute53230
DEVSQLReports24030
DEVDocuExpImp07830
DEVCommon03990
DEVTutorial17720
DEVCallStackInfolog22100

Cell = finding count; color = worst severity. Full 20 x 6 matrix in the complete report.

Totals

258 findings · 8 high · 159 medium · 91 low.

Headline positive

Zero overlayering, zero name collisions against stock. All 454 elements are net-new (428) or proper extensions (26).

Section 2

Findings detail (sample: 3 of 258)

F-001HIGH

Raw SQL update path bypasses the kernel

Where
DEVSQLQueryExecute.doExecuteUpdate (model DEVSQLExecute)
What / why
Executes caller-supplied SQL directly against the database, bypassing X++ record-level security, database logging, and change tracking.
Verdict: FIX NOW.
Confine to a locked-down admin role; use SysDa for business logic. Effort: 2-3 days.
F-002MEDIUM

29 classes on RunBase/RunBaseBatch lineage

Where
e.g. DEVLicenseReportCalc, 28 others (Appendix B).
What / why
Legacy batch framework; Microsoft's investment targets SysOperation, so each class is a small upgrade tax that compounds.
Verdict: FIX AT UPGRADE.
Migrate opportunistically, not as a project. Effort: about half a day per class.
F-003MEDIUM

109 hardcoded English error literals

Where
e.g. DEV.getColumnIdByName: throw error("Header should be read").
What / why
Blocks localization entirely; the largest single debt bucket in the layer.
Verdict: FIX NOW (mechanized).
Our tooling generates the label file and substitution diff automatically. Effort: 1-2 days.

Section 3

The Remediation Program (excerpt)

Remediation roadmap phases with scope, risk retired, and indicative effort
PhaseScopeRisk retiredIndicative effort
1. Contain8 high raw-SQL findings + privilege auditSecurity, data integrity2-3 days
2. ModernizeTop 10 RunBase migrationsUpgrade tax, batch reliability5-8 days
3. MechanizeLabel extraction across 109 literalsLocalization, UX consistency1-2 days
4. GuardAudit rule set installed as a CI gateRegression of all the above1 day

Phase 4 is the differentiator: the rule set that produced this audit is installed in YOUR pipeline as a CI gate, tuned to the accepted-risk decisions from the decision meeting.

Provenance

No finding is AI-generated.

Every finding comes from a deterministic AST scan by an open-source rule set, cited to an exact element, method, and source line; re-run the scan and you get identical numbers. The rule set is published at github.com/BlueWizarding/xpp-debt-scan: run it on your own code before you spend a dollar. What you pay for is the judgment layer: the verdicts, the sequencing, and the gate.

Book the audit: $9,500 fixed, one week, remote.