---
title: SAIF.Business.Policy.Audit.Premium operations and processes
summary: Business and technical operations supported by the premium audit library.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Audit.Premium
reference_type: package
---

# SAIF.Business.Policy.Audit.Premium operations and processes

This page is the operation catalog and cross-operation hub for the premium-audit library. Detailed step-by-step behavior lives in `operations/` detail pages.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [Select policies for premium audit (batch/expiring)](operations/select-policies-for-premium-audit-batch-expiring.md) | Premium-audit workflow | Monthly batch selection run | IDataPortalInfo, expiration date, maximum cyclical count, optional policy filter | Candidate periods, selected audits, overrides, and counters | [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-030](business-rules.md#br-030-selection-override-instructions-are-one-time-use), [BR-031](business-rules.md#br-031-selection-override-reviewer-is-one-time-use), [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-071](business-rules.md#br-071-selection-override-select-date-and-exclude-date-must-each-be-a-valid-policy-period-expiration-date-and-may-not-be-the-same-date) | — | [SQL-014](sql/SQL-014-saif-business-policy-audit-premium.md), [SQL-015](sql/SQL-015-saif-business-policy-audit-premium.md), [SQL-027](sql/SQL-027-saif-business-policy-audit-premium.md), [SQL-028](sql/SQL-028-saif-business-policy-audit-premium.md), [SQL-029](sql/SQL-029-saif-business-policy-audit-premium.md), [SQL-051](sql/SQL-051-saif-business-policy-audit-premium.md), [SQL-059](sql/SQL-059-saif-business-policy-audit-premium.md), [SQL-060](sql/SQL-060-saif-business-policy-audit-premium.md), [SQL-061](sql/SQL-061-saif-business-policy-audit-premium.md), [SQL-085](sql/SQL-085-saif-business-policy-audit-premium.md), [SQL-086](sql/SQL-086-saif-business-policy-audit-premium.md), [SQL-093](sql/SQL-093-saif-business-policy-audit-premium.md) |
| [Run audit selection tests](operations/run-audit-selection-tests.md) | Premium-audit workflow | Selection manager has candidate audits for a category | Selection category, candidate audits, tester rules and values | Audits marked selected or deselected with test-result evidence | [BR-001](business-rules.md#br-001-deselection-category-suppresses-audit), [BR-002](business-rules.md#br-002-disqualifying-selection-test-blocks-selection), [BR-003](business-rules.md#br-003-qualifying-tests-select-audit), [BR-054](business-rules.md#br-054-validselectioncategorygroupcode), [BR-072](business-rules.md#br-072-a-selection-test-result-requires-a-selection-rule-id-present-in-the-pa_selection_rule-table) | — | [SQL-016](sql/SQL-016-saif-business-policy-audit-premium.md), [SQL-055](sql/SQL-055-saif-business-policy-audit-premium.md), [SQL-056](sql/SQL-056-saif-business-policy-audit-premium.md), [SQL-057](sql/SQL-057-saif-business-policy-audit-premium.md), [SQL-062](sql/SQL-062-saif-business-policy-audit-premium.md), [SQL-063](sql/SQL-063-saif-business-policy-audit-premium.md), [SQL-064](sql/SQL-064-saif-business-policy-audit-premium.md), [SQL-065](sql/SQL-065-saif-business-policy-audit-premium.md), [SQL-066](sql/SQL-066-saif-business-policy-audit-premium.md), [SQL-073](sql/SQL-073-saif-business-policy-audit-premium.md), [SQL-094](sql/SQL-094-saif-business-policy-audit-premium.md) |
| [Select policies for premium audit (off-cycle/daily)](operations/select-policies-for-premium-audit-off-cycle-daily.md) | Premium-audit workflow | Daily off-cycle selection run | IDataPortalInfo, last run date, current run date, optional policy filter | Off-cycle candidate periods and selected audits | [BR-020](business-rules.md#br-020-ineligible-policy-types-cannot-be-audited), [BR-021](business-rules.md#br-021-duplicate-audits-are-blocked) | — | [SQL-027](sql/SQL-027-saif-business-policy-audit-premium.md), [SQL-028](sql/SQL-028-saif-business-policy-audit-premium.md), [SQL-029](sql/SQL-029-saif-business-policy-audit-premium.md), [SQL-060](sql/SQL-060-saif-business-policy-audit-premium.md), [SQL-061](sql/SQL-061-saif-business-policy-audit-premium.md) |
| [Drop excess cyclical audits](operations/drop-excess-cyclical-audits.md) | Premium-audit workflow | Batch selection quota enforcement | End date and maximum cyclical count | Trimmed cyclical audit collection and dropped counter | — | — | — |
| [Assign renewal (batch) audits to auditors](operations/assign-renewal-batch-audits-to-auditors.md) | Premium-audit workflow | Monthly renewal assignment batch | IDataPortalInfo and assignment date | Assigned audits, staff tasks, policy notes, and counters | [BR-012](business-rules.md#br-012-assignment-requires-zip-code), [BR-014](business-rules.md#br-014-assignment-requires-matching-territory), [BR-015](business-rules.md#br-015-assignment-override-default-auditor-wins), [BR-018](business-rules.md#br-018-monthly-max-blocks-renewal-assignments), [BR-019](business-rules.md#br-019-do-not-assign-override-creates-staff-task), [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-055](business-rules.md#br-055-validauditor), [BR-064](business-rules.md#br-064-leasing-client-state-agency-hcw-policies-may-not-have-an-assignment-override), [BR-065](business-rules.md#br-065-the-same-auditor-may-not-be-both-the-do-not-assign-to-and-the-default-assignment-auditor), [BR-066](business-rules.md#br-066-default-auditor-and-do-not-assign-auditor-must-each-be-valid-auditors), [BR-068](business-rules.md#br-068-an-auditor-zip-row-requires-an-existing-auditor-an-assignable-auditor-and-an-existing-zip-code) | — | [SQL-003](sql/SQL-003-saif-business-policy-audit-premium.md), [SQL-005](sql/SQL-005-saif-business-policy-audit-premium.md), [SQL-008](sql/SQL-008-saif-business-policy-audit-premium.md), [SQL-009](sql/SQL-009-saif-business-policy-audit-premium.md), [SQL-026](sql/SQL-026-saif-business-policy-audit-premium.md), [SQL-027](sql/SQL-027-saif-business-policy-audit-premium.md), [SQL-028](sql/SQL-028-saif-business-policy-audit-premium.md), [SQL-029](sql/SQL-029-saif-business-policy-audit-premium.md), [SQL-032](sql/SQL-032-saif-business-policy-audit-premium.md), [SQL-033](sql/SQL-033-saif-business-policy-audit-premium.md), [SQL-034](sql/SQL-034-saif-business-policy-audit-premium.md), [SQL-058](sql/SQL-058-saif-business-policy-audit-premium.md), [SQL-074](sql/SQL-074-saif-business-policy-audit-premium.md), [SQL-075](sql/SQL-075-saif-business-policy-audit-premium.md), [SQL-077](sql/SQL-077-saif-business-policy-audit-premium.md), [SQL-079](sql/SQL-079-saif-business-policy-audit-premium.md), [SQL-080](sql/SQL-080-saif-business-policy-audit-premium.md), [SQL-090](sql/SQL-090-saif-business-policy-audit-premium.md) |
| [Assign off-cycle audits to auditors](operations/assign-off-cycle-audits-to-auditors.md) | Premium-audit workflow | Off-cycle assignment batch | IDataPortalInfo and assignment date | Assigned off-cycle audits, tasks, and counters | [BR-012](business-rules.md#br-012-assignment-requires-zip-code), [BR-014](business-rules.md#br-014-assignment-requires-matching-territory), [BR-015](business-rules.md#br-015-assignment-override-default-auditor-wins), [BR-018](business-rules.md#br-018-monthly-max-blocks-renewal-assignments), [BR-019](business-rules.md#br-019-do-not-assign-override-creates-staff-task), [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-055](business-rules.md#br-055-validauditor), [BR-064](business-rules.md#br-064-leasing-client-state-agency-hcw-policies-may-not-have-an-assignment-override), [BR-065](business-rules.md#br-065-the-same-auditor-may-not-be-both-the-do-not-assign-to-and-the-default-assignment-auditor), [BR-066](business-rules.md#br-066-default-auditor-and-do-not-assign-auditor-must-each-be-valid-auditors), [BR-068](business-rules.md#br-068-an-auditor-zip-row-requires-an-existing-auditor-an-assignable-auditor-and-an-existing-zip-code) | — | [SQL-003](sql/SQL-003-saif-business-policy-audit-premium.md), [SQL-005](sql/SQL-005-saif-business-policy-audit-premium.md), [SQL-008](sql/SQL-008-saif-business-policy-audit-premium.md), [SQL-009](sql/SQL-009-saif-business-policy-audit-premium.md), [SQL-026](sql/SQL-026-saif-business-policy-audit-premium.md), [SQL-027](sql/SQL-027-saif-business-policy-audit-premium.md), [SQL-028](sql/SQL-028-saif-business-policy-audit-premium.md), [SQL-029](sql/SQL-029-saif-business-policy-audit-premium.md), [SQL-032](sql/SQL-032-saif-business-policy-audit-premium.md), [SQL-033](sql/SQL-033-saif-business-policy-audit-premium.md), [SQL-034](sql/SQL-034-saif-business-policy-audit-premium.md), [SQL-058](sql/SQL-058-saif-business-policy-audit-premium.md), [SQL-074](sql/SQL-074-saif-business-policy-audit-premium.md), [SQL-075](sql/SQL-075-saif-business-policy-audit-premium.md), [SQL-077](sql/SQL-077-saif-business-policy-audit-premium.md), [SQL-079](sql/SQL-079-saif-business-policy-audit-premium.md), [SQL-080](sql/SQL-080-saif-business-policy-audit-premium.md), [SQL-090](sql/SQL-090-saif-business-policy-audit-premium.md) |
| [Assign an audit to an auditor](operations/assign-an-audit-to-an-auditor.md) | Premium-audit workflow | Assignment manager or caller chooses a specific auditor | Audit, auditor, optional explicit assignment date | Audit updated with auditor, office, assignment date, and assignment weight | [BR-014](business-rules.md#br-014-assignment-requires-matching-territory), [BR-015](business-rules.md#br-015-assignment-override-default-auditor-wins), [BR-018](business-rules.md#br-018-monthly-max-blocks-renewal-assignments), [BR-019](business-rules.md#br-019-do-not-assign-override-creates-staff-task), [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-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-055](business-rules.md#br-055-validauditor), [BR-057](business-rules.md#br-057-validupdatableaudit), [BR-064](business-rules.md#br-064-leasing-client-state-agency-hcw-policies-may-not-have-an-assignment-override), [BR-065](business-rules.md#br-065-the-same-auditor-may-not-be-both-the-do-not-assign-to-and-the-default-assignment-auditor), [BR-066](business-rules.md#br-066-default-auditor-and-do-not-assign-auditor-must-each-be-valid-auditors) | — | [SQL-001](sql/SQL-001-saif-business-policy-audit-premium.md), [SQL-003](sql/SQL-003-saif-business-policy-audit-premium.md), [SQL-004](sql/SQL-004-saif-business-policy-audit-premium.md), [SQL-005](sql/SQL-005-saif-business-policy-audit-premium.md), [SQL-008](sql/SQL-008-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-026](sql/SQL-026-saif-business-policy-audit-premium.md), [SQL-032](sql/SQL-032-saif-business-policy-audit-premium.md), [SQL-076](sql/SQL-076-saif-business-policy-audit-premium.md), [SQL-077](sql/SQL-077-saif-business-policy-audit-premium.md), [SQL-079](sql/SQL-079-saif-business-policy-audit-premium.md), [SQL-088](sql/SQL-088-saif-business-policy-audit-premium.md) |
| [Synchronize an audit with WCIS policy-period changes](operations/synchronize-an-audit-with-wcis-policy-period-changes.md) | Premium-audit workflow | WCIS synchronization batch inspects an existing audit | Audit and synchronization task accumulator | Mutated audit plus follow-up tasks for staff | [BR-017](business-rules.md#br-017-combined-policies-stay-with-same-auditor), [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-024](business-rules.md#br-024-no-auditable-period-cancels-audit), [BR-026](business-rules.md#br-026-no-coverage-cancels-audit), [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-032](business-rules.md#br-032-rows-affected-must-equal-one), [BR-034](business-rules.md#br-034-child-policy-processing-skips-cancelled-audits), [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-057](business-rules.md#br-057-validupdatableaudit) | — | [SQL-001](sql/SQL-001-saif-business-policy-audit-premium.md), [SQL-004](sql/SQL-004-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-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-025](sql/SQL-025-saif-business-policy-audit-premium.md), [SQL-035](sql/SQL-035-saif-business-policy-audit-premium.md), [SQL-036](sql/SQL-036-saif-business-policy-audit-premium.md), [SQL-037](sql/SQL-037-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-076](sql/SQL-076-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-088](sql/SQL-088-saif-business-policy-audit-premium.md), [SQL-091](sql/SQL-091-saif-business-policy-audit-premium.md) |
| [Save a premium audit](operations/save-a-premium-audit.md) | Premium-audit workflow | Caller invokes `clsAudit.Save()` or `SaveChild()` | Dirty audit aggregate, child collections, optional WCIS result payload | Persisted audit aggregate or failed save with broken 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-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) |
| [Audit lifecycle status transitions](operations/audit-lifecycle-status-transitions.md) | Premium-audit workflow | Callers cancel, revise, complete, or derive audit status | Audit state, result payloads, cancel reasons, and prior-audit context | Updated status, result state, and duplicate-audit checks | [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-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-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) | — | [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-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-070](sql/SQL-070-saif-business-policy-audit-premium.md), [SQL-071](sql/SQL-071-saif-business-policy-audit-premium.md), [SQL-072](sql/SQL-072-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-088](sql/SQL-088-saif-business-policy-audit-premium.md), [SQL-089](sql/SQL-089-saif-business-policy-audit-premium.md) |

## Process flow diagram
The following diagram visualizes the main operational flow across selection, assignment, synchronization, and save operations.

```mermaid
flowchart TD
 Start([Selection trigger]) --> Select[Select policy periods]
 Select --> Test[Run selection tests]
 Test --> Assign[Assign audits]
 Assign --> Sync[Synchronize coverage changes]
 Sync --> Save[Save premium audit]
 Save --> Status[Derive lifecycle status]
```

## Inherited operations and processes

### From `clsBusinessBase` (`SAIF.Framework.Core`)

| Operation | Intent | Provided by | Origin | Embedded in |
| --- | --- | --- | --- | --- |
| Evaluate business object rules | Execute registered rules and refresh broken-rule state.* | `clsRulesManager` | `SAIF.Framework.Core` | [Save a premium audit](operations/save-a-premium-audit.md) |
| Save business object graph | Validate and persist the root or child object through the BOF data portal.* | `clsBusinessBase` | `SAIF.Framework.Core` | [Save a premium audit](operations/save-a-premium-audit.md) |
| Save managed collection | Persist child collections in sequence and stop on the first failure.* | `clsBusinessCollectionBase` | `SAIF.Framework.Core` | [Save a premium audit](operations/save-a-premium-audit.md) |

> **Origin:** These operations are provided by framework base classes and are embedded where the local library invokes BOF lifecycle behavior.*

## Database interactions
- See the operation catalog and the linked SQL documents for database touchpoints.

## Failure and edge-case behavior
- The dynamic audit-collection retrieval SQL contains an unclosed `JOIN BUSINESS` parenthesis defect and two direct-interpolation risk points (`PolicyNumberList`, `RowLimit`).
- Three Oracle references are unresolved from repository evidence and are documented as not found instead of reverse-engineered from .NET callers.**
- SQL IDs `SQL-047`, `SQL-048`, and `SQL-073` come from uncompiled source files and therefore represent dead code, not runtime behavior.
- Remote-wrapper Oracle calls forward critical payroll-audit and document-generation work to `@POLDB`, outside the code shipped in this repository.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [API reference](api/index.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\clsAuditSelectionManager.vb`
- `Business\SAIF.Business.Policy.Audit.Premium\clsAuditAssignmentManager.vb`
- `Business\SAIF.Business.Policy.Audit.Premium\clsAudit.vb`
- `Business\SAIF.Business.Policy.Audit.Premium\clsAuditSynchronization.vb`
- `Business\SAIF.Business.Policy.Audit.Premium\clsAuditCollection.vb`

## Stored procedure operations

| Operation | Description | Source | Link |
| --- | --- | --- | --- |
| Retrieve expiring policy periods for audit selection | Opens a ref cursor of policy periods expiring on a given date, tagged `'EXP'`, excluding cancelled and pending periods | `pk73211_premium_audit.GetExpiringPolicies` | [Details](procedures/pk73211-premium-audit-getexpiringpolicies.md#operations) |
| Retrieve off-cycle policy periods for audit selection | Unions four candidate populations — new-business `P401` endorsements, batch payroll audits, leasing-parent payroll audits and 15-day-delayed mid-term cancellations — into one ref cursor | `pk73211_premium_audit.GetOffCyclePolicies` | [Details](procedures/pk73211-premium-audit-getoffcyclepolicies.md#operations) |
| Determine the audit address location | Picks the single best visitable location for an audit — AUD, then PAY, then POL, then primary BUS — rejecting expired locations and post-office boxes | `pk73211_premium_audit.GetAuditLocationSeqNum` | [Details](procedures/pk73211-premium-audit-getauditlocationseqnum.md#operations) |
| Get the ending experience-modification factor | Returns the ERP rating-plan factor in force on the last day of audited coverage, or the neutral `1.0` | `pk73211_premium_audit.get_ending_er_mod_for_pol_per` | [Details](procedures/pk73211-premium-audit-get-ending-er-mod-for-pol-per.md#operations) |
| Get the current annual premium | Nets `NEAP` base amounts against `DCBS` difference amounts over the newest premium-history set | `pk73211_premium_audit.get_current_premium` | [Details](procedures/pk73211-premium-audit-get-current-premium.md#operations) |
| Get the policy period's payroll classes | Opens a ref cursor of distinct four-digit manual class numbers and their rates from the newest premium-history set | `pk73211_premium_audit.get_payroll_classes` | [Details](procedures/pk73211-premium-audit-get-payroll-classes.md#operations) |
| Create a payroll audit on the policy system | Remote-only wrapper: forwards policy number, period effective date, last date of coverage, revision flag and due date to the policy database and returns the new payroll sequence number | `pk73211_premium_audit.insert_pol_per_payroll_audit` | [Details](procedures/pk73211-premium-audit-insert-pol-per-payroll-audit.md#operations) |
| Cancel a payroll audit on the policy system | Remote-only wrapper: forwards the payroll sequence number to the policy database | `pk73211_premium_audit.cancel_pol_per_payroll_audit` | [Details](procedures/pk73211-premium-audit-cancel-pol-per-payroll-audit.md#operations) |
| Generate WCIS audit documents | Remote-only wrapper: forwards the audit sequence number and revision indicator to the policy database, which produces the audit endorsement/document set | `pk73211_premium_audit.generate_wcis_audit_documents` | [Details](procedures/pk73211-premium-audit-generate-wcis-audit-documents.md#operations) |
| Get the WCIS standard premium | Resolves the newest premium-history set for the policy period and returns its standard premium | `pk72846_view_policy.sp73111_get_wcis_std_premium` | [Details](procedures/pk72846-view-policy-sp73111-get-wcis-std-premium.md#operations) |
| Determine whether a policy period bills in arrears | Walks billing master → billing defaults → payment plan type and reports `'Y'` unless the plan generates instalment or pre-pay billing | `pk73057_billing_master.is_on_arrears_plan` | [Details](procedures/pk73057-billing-master-is-on-arrears-plan.md#operations) |
