Promantia ERP system audit · SOW AS-SOW-19 · Agilitas Confidential

SportsYard ERPNext Audit Review

A plain-language guide to the security, data, integration, performance and code findings for the live system erp-sy.agilitas.digital. Audit date 12 Nov 2026 · Frappe 15.118.0 · ERPNext 15.119.1 · custom app erp_sportsyard (main, 29 Sep 2026).

How to use this page

  • Each tab covers one audit area. The number on each tab is how many findings it holds. Every finding appears in exactly one tab; other places link to it by its ID (SY-xx).
  • Each finding card follows the same order: Issue, Why it matters, Evidence and code, Suggested solution, Status or dependency.
  • Severity is how serious the effect would be. Confidence is how sure the audit is: Confirmed means seen in the code or in production; Likely means strong evidence that still needs a check in production.
  • Use All findings to search by ID or keyword and filter by severity, area, phase or quick wins.

Source files: audit_report.md, security_alerts.md, technical_audit_report.md, code_and_integration_assessment.md, integration_assessment.md, risk_register.csv, recommendations_roadmap.md, evidence_index.md, customisation_inventory.md, functional_flow_guide.md, business_questions.md, data_request_list.md, handoff_inputs.md. All are Agilitas Confidential.

The short version

SportsYard's ERPNext keeps the retail books: about 4,000 store sales a month arrive from ADP, and purchasing runs through a detailed approval process. The audit found three access problems that let outsiders, or any staff user, reach much more than they should (SY-01, SY-02, SY-03). All three can be contained this week through settings, without new code.

The second theme is stock values. ERPNext is constantly recalculating them because store sales arrive on average 1.9 days late. This is standard ERPNext behaviour, but the SportsYard set-up makes it heavier: 28,382 recalculations, 5,150 of them failed (SY-05).

The audit records 68 findings, of which 49 are quick wins. The counts below are counts of findings, documents and events. No financial loss has been measured.

Findings by severity and confidence
SeverityConfirmedLikelyPotentialTotal
Critical3––3
High132–15
Medium254332
Low121–13
Info5––5
Total587368

Findings by area

Ten things to know

  1. A no-login web address prints any document as Administrator (SY-01). The same weakness exists on the Distribution system.
  2. The AI assistant lets every user run their own code on the server, and it has been used 552 times (SY-02). Anyone can also register an app against it (SY-37).
  3. Guests can attach files to any record, and a customisation then disables the supplier or overwrites product photos (SY-03).
  4. ADP creates 99% of all invoices through the general-purpose API, with no duplicate check, no date check and no reconciliation (SY-08, SY-30, SY-46).
  5. Late store sales drive 28k stock revaluations; a database script and a customisation make it worse (SY-05, SY-06, SY-07).
  6. Three customisations save half-finished work (SY-09, SY-10, SY-11).
  7. The PO grand total is replaced by the cash-discount amount; Finance should confirm whether that is intended (SY-12).
  8. The invoice CSV e-mail fails for almost every store sale: 1,234 errors in 15 days (SY-04).
  9. No deadlocks were found in the retained error log, and no SQL injection was found in the code.
  10. About 840 custom fields and 300 form settings exist only in the live database, and every push to the main branch deploys straight to production (SY-27, SY-26).

What the audit covered

The SportsYard custom app (erp_sportsyard, the only custom software), its integrations, and the settings and customisations stored in production. The code was read at the version on the main branch (29 Sep 2026) on a workstation matching production exactly (Frappe 15.118.0, ERPNext 15.119.1). Production was examined read-only on 12 Nov 2026: counts, settings and error summaries. Nothing was changed, and no customer or business records were exported. Business process, hosting, disaster recovery and cost of ownership are covered by other workstreams.