AAuditPro Suite· User Manual
Manual home Phase 13 · Sign + Issue + Lock + Archive
ISA 230 — Audit Documentation Oman OAAA · 7-year retention

The 4 closing acts

1. SIGN Partner + EQCR Wet-ink or e-signature 2. ISSUE Send to client Email + signed PDF 3. LOCK Engagement file Read-only forever 4. ARCHIVE SHA-256 ZIP 7-year retention

Step 1 — Sign the audit report

  1. Partner clicks "Sign final report"

    From the Audit Report page → Sign & finalise. The system requires re-authentication (password + optional 2FA). Stamps: signer name, role, ISO timestamp, IP, user-agent.

  2. Partner's signature image renders

    The PNG signature stored against the partner's profile (Settings → Signatures) is rendered into the PDF at the correct position. Firm letterhead, firm stamp, partner block all populate.

  3. EQCR signs (if required)

    Independent EQCR partner reviews + signs final. Two signatures appear on the PDF — partner + EQCR.

  4. "DRAFT" watermark removed

    The signed final has no watermark. The system flips the document type from draft_audit_report to signed_audit_report. The draft is preserved in the file but marked superseded.

Step 2 — Issue to the client

  1. Compose issuance email

    From Communications → Issue audit report. Auto-template: branded HTML, signed PDF attached, FS notes attached, courtesy cover letter. Partner reviews wording.

  2. Send

    System sends via firm SMTP. Client's primary contact + finance head + (optional) regulator. Each recipient logged with delivery status (sent / delivered / opened).

  3. Activity stamp

    Job timeline records: "Audit report issued by [Partner] on [timestamp] to [N recipients]". Becomes part of the audit trail.

Step 3 — Lock the engagement file

  1. Click "Lock engagement"

    From the job dashboard → Close engagement. The system runs final completeness checks: are all workpapers EQCR-signed? Is the audit report signed? Is the issuance email sent? If yes, lock proceeds.

  2. What "locked" means

    Workpapers, AJEs, FS, notes, disclosures — all read-only. No edits possible. Status flags: jobs.status = 'archived', workpapers.status = 'locked'. Audit-log records the lock with user + timestamp.

  3. Unlock procedure (rare)

    Only super_admin / partner can unlock. Requires written reason > 50 characters. Captured in audit log. Used for: subsequent-event amendments, regulator-mandated re-issuance.

Step 4 — Archive (the 7-year vault)

This is the part most other systems miss. The audit-evidence file must be retained, intact, for 7 years per ISA 230 + Oman OAAA. AuditPro builds a self-contained archive ZIP:

Engagement-AlBahja-FY2025-{JOB-ID}.zip   ·   sha256: a3f8...e201
├── 01-engagement/
│   ├── engagement-letter-signed.pdf
│   ├── independence-confirmation.pdf
│   └── client-acceptance-memo.pdf
├── 02-trial-balance/
│   ├── tb-original-uploaded.csv  (sha256: ...)
│   ├── tb-adjusted.csv
│   └── ajes-register.pdf
├── 03-workpapers/
│   ├── A-100-Planning.pdf
│   ├── B-100-Cash.pdf
│   ├── ... (12 workpapers, all EQCR-signed)
│   └── _signoffs-matrix.csv
├── 04-fs-pack/
│   ├── SFP.pdf · SPL.pdf · SCF.pdf · SOCIE.pdf
│   ├── notes-1-to-24.pdf
│   └── disclosure-checklist.pdf
├── 05-audit-report/
│   └── Audit-Report-AlBahja-FY2025-SIGNED.pdf
├── 06-completion/
│   ├── completion-summary.pdf
│   └── readiness-pdf.pdf
├── 07-audit-trail/
│   └── audit-log-{JOB-ID}.csv  (every action, timestamped)
└── _manifest.json   (sha256 + size per file)

SHA-256 integrity

Every file in the archive has its SHA-256 hash recorded in _manifest.json. The ZIP itself has a top-level SHA-256. If anyone tampers with even one byte, the hash mismatch is detected on next integrity check. The hash is logged in the database, in the audit trail, and (if configured) in an off-site log so it cannot be quietly overwritten.

The retention promise

AspectHow it's enforced
7 yearsretention_until = report_date + 7 years stamped on the engagement
SHA-256Manifest + top-level ZIP hash; mismatch alerts ops
Off-site copyNightly rclone to Backblaze B2 / S3 / Wasabi (configurable)
3-2-1 backup3 copies, 2 media, 1 off-site
Restore drillQuarterly: pick a random archive, restore, verify hash, log
Auto-purgeAfter 7 years + grace period, system flags for purge — partner reviews + approves
Legal holdAny engagement under regulatory inquiry can be marked legal-hold — never auto-purges

Step-by-step archive

  1. Trigger the build

    From the locked job → Build archive. Service walks every related table, exports each artefact as PDF, packages the folder structure shown above, computes hashes, builds ZIP.

  2. Verify integrity

    System recomputes hashes from ZIP contents and compares to manifest. Match = good. Mismatch = abort + alert ops.

  3. Off-site sync

    Nightly cron (`bin/cron-offsite-backup.sh`) syncs new archives to remote object storage. Logs success / failure. Email alert if 2 nights in a row fail.

  4. Issue to client

    Optional: client gets a copy of the archive (PDF set only — workpapers stay internal). Most firms send only the FS pack + audit report.

  5. Done

    Engagement is closed, file is locked, archive is hashed, off-site copy lives in 2 datacentres. The audit firm's professional liability is now properly evidenced for 7 years.

Try this

On a fully-completed audit job → Build archive. Watch the progress dialog: 32 PDFs generated, manifest hashed, ZIP packed in ~6 seconds. Download the archive, open it in your file manager — every artefact is there, every hash matches.

Watch out

Don't let off-site backup go silent. The cron sends a nightly success log; configure the alerting so a failed sync pages someone within 24h. Audit firms have lost their licence to practice over evidence-file destruction. Backup is non-negotiable.

Tip — restore drills

Pick a random closed engagement every quarter, restore from off-site, verify hash, open the audit report PDF. Log the result. Document this drill — peer reviewers and regulators love seeing it. Backup that hasn't been tested is hope, not preparedness.

You're done

From "client TB imported" to "signed audit report locked in 7-year SHA-256-verified archive" — the entire IFRS / ISA-compliant audit lifecycle, walked end-to-end. The next engagement starts at Phase 0. The system has made the work easier, but the professional judgement remains the auditor's.

What you'll find in the archive 7 years later

Open the ZIP → manifest.json → 32 hashed PDFs → audit-log.csv showing every click, every sign-off, every AJE posting from day 1 to day 80 of the engagement. Reproducible audit evidence — exactly what ISA 230 demands.