---
title: Save a premium audit
summary: Premium-audit workflow detail.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Audit.Premium
reference_type: package
operation_id: OP-009
trigger: Caller invokes `clsAudit.Save()` or `SaveChild()`
---

# Save a premium audit

Premium-audit workflow detail.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-009 |
| **Trigger** | Caller invokes `clsAudit.Save()` or `SaveChild()` |
| **Inputs** | Dirty audit aggregate, child collections, optional WCIS result payload |
| **Outputs** | Persisted audit aggregate or failed save with broken rules |
| **Primary components** | `clsAudit.Save`, `SaveChild`, `SaveObject` |
| **Entry point** | `Business\SAIF.Business.Policy.Audit.Premium\clsAudit.vb` |

## Steps

1. Remove an empty in-memory premium-audit-result child before save processing begins.
2. Stop the save when the audit aggregate is invalid and return `False` instead of throwing for broken rules.
3. Save the parent before children on non-delete flows, but save children before the parent on delete flows.
4. Persist child collections and optional child objects in fixed order, short-circuiting on the first failure.*
5. Translate rows-affected values other than one into save errors so optimistic-concurrency problems surface back to the caller.
6. > **Origin:** The edit/session validation and child-save cascade rely on inherited BOF behavior from `clsBusinessBase` and `clsBusinessCollectionBase` in `SAIF.Framework.Core`.*
7. Traceability summary. Primary rules: [BR-020](../business-rules.md#br-020-ineligible-policy-types-cannot-be-audited), [BR-021](../business-rules.md#br-021-duplicate-audits-are-blocked), [BR-027](../business-rules.md#br-027-shortened-coverage-cancels-or-resyncs-audit), [BR-028](../business-rules.md#br-028-lengthened-coverage-adjusts-audit), [BR-029](../business-rules.md#br-029-coverage-reinstatement-with-gap-triggers-special-handling), [BR-031](../business-rules.md#br-031-selection-override-reviewer-is-one-time-use), [BR-032](../business-rules.md#br-032-rows-affected-must-equal-one), [BR-035](../business-rules.md#br-035-nonzerodecimalrequired-auditseqnum), [BR-036](../business-rules.md#br-036-nonzerodecimalrequired-policynumber), [BR-037](../business-rules.md#br-037-textrequired), [BR-041](../business-rules.md#br-041-validauditreasoncode), [BR-051](../business-rules.md#br-051-validreviewstatuscode), [BR-057](../business-rules.md#br-057-validupdatableaudit), [BR-058](../business-rules.md#br-058-validtestaudittype-validtestauditdifference-validtestauditresult), [BR-067](../business-rules.md#br-067-audit-event-code-must-be-valid), [BR-069](../business-rules.md#br-069-an-audit-result-requires-an-existing-result-code), [BR-070](../business-rules.md#br-070-a-review-result-requires-an-existing-reason-code-result-code-and-reviewer-id-a-new-review-result-requires-a-reviewer-valid-for-new-results), [BR-072](../business-rules.md#br-072-a-selection-test-result-requires-a-selection-rule-id-present-in-the-pa_selection_rule-table). SQL and Oracle calls: [SQL-001](../sql/SQL-001-saif-business-policy-audit-premium.md), [SQL-002](../sql/SQL-002-saif-business-policy-audit-premium.md), [SQL-004](../sql/SQL-004-saif-business-policy-audit-premium.md), [SQL-006](../sql/SQL-006-saif-business-policy-audit-premium.md), [SQL-007](../sql/SQL-007-saif-business-policy-audit-premium.md), [SQL-010](../sql/SQL-010-saif-business-policy-audit-premium.md), [SQL-011](../sql/SQL-011-saif-business-policy-audit-premium.md), [SQL-012](../sql/SQL-012-saif-business-policy-audit-premium.md), [SQL-013](../sql/SQL-013-saif-business-policy-audit-premium.md), [SQL-014](../sql/SQL-014-saif-business-policy-audit-premium.md), [SQL-016](../sql/SQL-016-saif-business-policy-audit-premium.md), [SQL-017](../sql/SQL-017-saif-business-policy-audit-premium.md), [SQL-018](../sql/SQL-018-saif-business-policy-audit-premium.md), [SQL-019](../sql/SQL-019-saif-business-policy-audit-premium.md), [SQL-020](../sql/SQL-020-saif-business-policy-audit-premium.md), [SQL-021](../sql/SQL-021-saif-business-policy-audit-premium.md), [SQL-022](../sql/SQL-022-saif-business-policy-audit-premium.md), [SQL-023](../sql/SQL-023-saif-business-policy-audit-premium.md), [SQL-024](../sql/SQL-024-saif-business-policy-audit-premium.md), [SQL-030](../sql/SQL-030-saif-business-policy-audit-premium.md), [SQL-031](../sql/SQL-031-saif-business-policy-audit-premium.md), [SQL-038](../sql/SQL-038-saif-business-policy-audit-premium.md), [SQL-039](../sql/SQL-039-saif-business-policy-audit-premium.md), [SQL-040](../sql/SQL-040-saif-business-policy-audit-premium.md), [SQL-041](../sql/SQL-041-saif-business-policy-audit-premium.md), [SQL-042](../sql/SQL-042-saif-business-policy-audit-premium.md), [SQL-043](../sql/SQL-043-saif-business-policy-audit-premium.md), [SQL-044](../sql/SQL-044-saif-business-policy-audit-premium.md), [SQL-045](../sql/SQL-045-saif-business-policy-audit-premium.md), [SQL-046](../sql/SQL-046-saif-business-policy-audit-premium.md), [SQL-047](../sql/SQL-047-saif-business-policy-audit-premium.md), [SQL-048](../sql/SQL-048-saif-business-policy-audit-premium.md), [SQL-049](../sql/SQL-049-saif-business-policy-audit-premium.md), [SQL-050](../sql/SQL-050-saif-business-policy-audit-premium.md), [SQL-051](../sql/SQL-051-saif-business-policy-audit-premium.md), [SQL-052](../sql/SQL-052-saif-business-policy-audit-premium.md), [SQL-053](../sql/SQL-053-saif-business-policy-audit-premium.md), [SQL-054](../sql/SQL-054-saif-business-policy-audit-premium.md), [SQL-066](../sql/SQL-066-saif-business-policy-audit-premium.md), [SQL-067](../sql/SQL-067-saif-business-policy-audit-premium.md), [SQL-068](../sql/SQL-068-saif-business-policy-audit-premium.md), [SQL-069](../sql/SQL-069-saif-business-policy-audit-premium.md), [SQL-070](../sql/SQL-070-saif-business-policy-audit-premium.md), [SQL-071](../sql/SQL-071-saif-business-policy-audit-premium.md), [SQL-076](../sql/SQL-076-saif-business-policy-audit-premium.md), [SQL-078](../sql/SQL-078-saif-business-policy-audit-premium.md), [SQL-081](../sql/SQL-081-saif-business-policy-audit-premium.md), [SQL-082](../sql/SQL-082-saif-business-policy-audit-premium.md), [SQL-083](../sql/SQL-083-saif-business-policy-audit-premium.md), [SQL-084](../sql/SQL-084-saif-business-policy-audit-premium.md), [SQL-085](../sql/SQL-085-saif-business-policy-audit-premium.md), [SQL-087](../sql/SQL-087-saif-business-policy-audit-premium.md), [SQL-088](../sql/SQL-088-saif-business-policy-audit-premium.md), [SQL-089](../sql/SQL-089-saif-business-policy-audit-premium.md), [SQL-091](../sql/SQL-091-saif-business-policy-audit-premium.md), [SQL-092](../sql/SQL-092-saif-business-policy-audit-premium.md), [SQL-093](../sql/SQL-093-saif-business-policy-audit-premium.md), [SQL-094](../sql/SQL-094-saif-business-policy-audit-premium.md), [SQL-095](../sql/SQL-095-saif-business-policy-audit-premium.md).

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
 Start([Trigger]) --> S1[Load context]
 S1 --> S2[Run core logic]
 S2 --> EndOk([Outcome])
```

## Failure and edge-case behavior

- Review the linked rule and SQL documents for operation-specific validation failures and persistence behavior.
- Remote-wrapper SQL and not-found Oracle references are documented in the linked SQL and procedure pages where applicable.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)



> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `Business\SAIF.Business.Policy.Audit.Premium\clsAudit.vb`
