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

# SAIF.Business.Policy operations and processes

This page catalogs the reusable policy-domain operations implemented or orchestrated by `SAIF.Business.Policy`. Detailed step-by-step logic lives in the individual operation pages under `operations/`.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [Retrieve latest policy period effective date](operations/retrieve-latest-policy-period-effective-date.md) | Return the latest effective date for a policy period. | Most recent period requested | `IDataPortalInfo`, policy number | Latest period effective date | [BR-POL-001](business-rules.md#br-pol-001-latest-policy-period-date-comes-from-the-maximum-effective-date) | [POLICY_PERIOD](database-tables.md#policy_period) | [SQL-008](sql/SQL-008-saif-business-policy.md) |
| [Retrieve policy period expiration date](operations/retrieve-policy-period-expiration-date.md) | Return the expiration date for a specific policy period. | Policy number and effective date supplied | `IDataPortalInfo`, policy number, effective date | Period expiration date | [BR-POL-002](business-rules.md#br-pol-002-expiration-and-anniversary-lookups-search-both-wcis-and-non-wcis-period-tables) | [POLICY_PERIOD](database-tables.md#policy_period), [POLICY_PERIOD_NON_WCIS](database-tables.md#policy_period_non_wcis) | [SQL-011](sql/SQL-011-saif-business-policy.md) |
| [Retrieve anniversary rate date](operations/retrieve-anniversary-rate-date.md) | Return the anniversary rate date for a policy period. | Anniversary-rate-date metadata requested | `IDataPortalInfo`, policy number, effective date | Anniversary rate date | [BR-POL-002](business-rules.md#br-pol-002-expiration-and-anniversary-lookups-search-both-wcis-and-non-wcis-period-tables) | [POLICY_PERIOD](database-tables.md#policy_period), [POLICY_PERIOD_NON_WCIS](database-tables.md#policy_period_non_wcis) | [SQL-004](sql/SQL-004-saif-business-policy.md) |
| [Determine policy market type](operations/determine-policy-market-type.md) | Translate the persisted market-type code into a domain enum. | Market type requested | `IDataPortalInfo`, policy number | `Enums.MarketTypes` | [BR-POL-003](business-rules.md#br-pol-003-persisted-policy-codes-map-to-fixed-domain-enums), [BR-POL-004](business-rules.md#br-pol-004-unrecognized-codes-translate-to-safe-defaults) | [POLICY](database-tables.md#policy) | [SQL-007](sql/SQL-007-saif-business-policy.md) |
| [Retrieve maximum premium history set id](operations/retrieve-maximum-premium-history-set-id.md) | Find the latest eligible premium-history set for a policy period. | Current set id requested | `IDataPortalInfo`, policy number, effective date | Premium-history set id or `0` | [BR-POL-005](business-rules.md#br-pol-005-only-eligible-premium-history-types-contribute-to-the-max-set-id), [BR-POL-006](business-rules.md#br-pol-006-missing-premium-history-rows-return-zero) | [PREM_HIST_SUMMARY](database-tables.md#prem_hist_summary) | [SQL-009](sql/SQL-009-saif-business-policy.md) |
| [Retrieve policy minimum premium](operations/retrieve-policy-minimum-premium.md) | Call the Oracle rating package to calculate minimum premium. | Premium-history set id supplied | `IDataPortalInfo`, premium-history set id | Minimum premium amount | [BR-POL-007](business-rules.md#br-pol-007-database-failures-are-swallowed-for-minimum-premium-retrieval), [BR-POL-020](business-rules.md#br-pol-020-procedure-dispatches-by-market-type) | [PREM_HIST_SUMMARY](database-tables.md#prem_hist_summary), [POLICY_PERIOD](database-tables.md#policy_period) | [SQL-010](sql/SQL-010-saif-business-policy.md) |
| [Determine whether the information page was printed](operations/determine-whether-the-information-page-was-printed.md) | Check whether a P401 endorsement was printed for the period. | Issued-state check requested | `IDataPortalInfo`, policy number, effective date | Boolean flag | [BR-POL-009](business-rules.md#br-pol-009-only-printed-p401-endorsements-count-as-issued-information-pages) | [ENDORSEMENT](database-tables.md#endorsement) | [SQL-006](sql/SQL-006-saif-business-policy.md) |
| [Determine policy ownership system](operations/determine-policy-ownership-system.md) | Classify a policy as WCIS-owned or SAIF Quote-owned. | Ownership requested | `IDataPortalInfo`, policy number | `Enums.PolicyOwnershipSystems` | [BR-POL-010](business-rules.md#br-pol-010-ownership-comes-from-the-oracle-submission-ownership-function), [BR-POL-025](business-rules.md#br-pol-025-submission-ownership-comes-from-the-submission-status-flag) | [DUAL](database-tables.md#dual) | [SQL-005](sql/SQL-005-saif-business-policy.md) |
| [Retrieve hazard groups effective on a date](operations/retrieve-hazard-groups-effective-on-a-date.md) | Load read-only hazard-group rows active for a given date. | Effective-dated hazard-group list requested | `IDataPortalInfo`, effective date | `clsHazardGroupCollection` | [BR-POL-011](business-rules.md#br-pol-011-hazard-group-data-is-read-only), [BR-POL-012](business-rules.md#br-pol-012-hazard-groups-are-filtered-by-effective-date-window) | [HAZARD_GROUP](database-tables.md#hazard_group) | [SQL-002](sql/SQL-002-saif-business-policy.md) |
| [Load code maps](operations/load-code-maps.md) | Load and cache policy code tables. | Code-map instance requested | `IDataPortalInfo`, optional refresh | Code-map instance | [BR-POL-013](business-rules.md#br-pol-013-code-maps-are-cached-until-refresh-is-requested), [BR-POL-014](business-rules.md#br-pol-014-only-recognized-database-codes-are-admitted-into-a-map) | [BENEFIT_JURISDICTION_CODE](database-tables.md#benefit_jurisdiction_code), [MANUAL_CLASS_TYPE_CODE](database-tables.md#manual_class_type_code) | [SQL-001](sql/SQL-001-saif-business-policy.md), [SQL-003](sql/SQL-003-saif-business-policy.md) |
| [Translate domain codes to and from enums](operations/translate-domain-codes-to-and-from-enums.md) | Provide shared conversion logic between persisted codes and domain enums. | Code or enum provided | Policy code or enum | Converted enum or code | [BR-POL-003](business-rules.md#br-pol-003-persisted-policy-codes-map-to-fixed-domain-enums), [BR-POL-004](business-rules.md#br-pol-004-unrecognized-codes-translate-to-safe-defaults) | [POLICY](database-tables.md#policy) | [SQL-007](sql/SQL-007-saif-business-policy.md) |
| [Compare and hash period rating information](operations/compare-and-hash-period-rating-information.md) | Evaluate equivalence and hash identity for period-rating contracts. | Comparison or helper requested | `iPeriodRatingInfo` instances | Boolean result or hash | [BR-POL-015](business-rules.md#br-pol-015-period-rating-equality-requires-all-eight-rating-attributes-to-match) | N/A | N/A |
| [Compare and locate hazard groups](operations/compare-and-locate-hazard-groups.md) | Use hazard-group identity to compare objects and scan collections. | Equality, key lookup, or removal requested | Hazard-group object or id | Match, located item, or removal | [BR-POL-016](business-rules.md#br-pol-016-hazard-group-identity-is-the-hazard-group-id-only) | [HAZARD_GROUP](database-tables.md#hazard_group) | [SQL-002](sql/SQL-002-saif-business-policy.md) |

## Process flow diagram
The following diagram shows how callers move from domain lookup requests to direct SQL, BOF retrieval, or Oracle package execution.

```mermaid
flowchart TD
  Caller[Caller] --> Choice[What is needed?]
  Choice --> Dates[Policy dates and status]
  Choice --> Hazard[Hazard groups]
  Choice --> Codes[Enum and code maps]
  Choice --> Proc[Oracle package logic]
  Dates --> SQL[Inline SQL reads]
  Hazard --> BOF[BOF retrieve lifecycle]
  Codes --> Cache[Cached code maps]
  Proc --> Oracle[Stored procedures and scalar functions]
```

## Inherited operations and processes

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

| Operation | Intent | Provided by | Origin | Embedded in |
| --- | --- | --- | --- | --- |
| Edit lifecycle * | Supplies begin-edit, cancel-edit, and apply-edit behavior for mutable BOF business objects. | `clsBusinessBase` | `SAIF.Framework.Core` | [Retrieve hazard groups effective on a date](operations/retrieve-hazard-groups-effective-on-a-date.md) |
| Rule evaluation * | Runs registered rule handlers and exposes broken-rule state to UI/data-binding consumers. | `clsBusinessBase` | `SAIF.Framework.Core` | [Compare and locate hazard groups](operations/compare-and-locate-hazard-groups.md) |

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

| Operation | Intent | Provided by | Origin | Embedded in |
| --- | --- | --- | --- | --- |
| Collection traversal * | Supports traversal and current-item management across BOF collections. | `clsBusinessCollectionBase` | `SAIF.Framework.Core` | [Retrieve hazard groups effective on a date](operations/retrieve-hazard-groups-effective-on-a-date.md) |
| Cascading save * | Provides framework save orchestration for collection items, even though this library keeps hazard groups read-only.* | `clsBusinessCollectionBase` | `SAIF.Framework.Core` | [Compare and locate hazard groups](operations/compare-and-locate-hazard-groups.md) |

## Database interactions

| Operation | SQL | Tables | Type |
| --- | --- | --- | --- |
| [Retrieve latest policy period effective date](operations/retrieve-latest-policy-period-effective-date.md) | [SQL-008](sql/SQL-008-saif-business-policy.md) | [POLICY_PERIOD](database-tables.md#policy_period) | Read |
| [Retrieve policy period expiration date](operations/retrieve-policy-period-expiration-date.md) | [SQL-011](sql/SQL-011-saif-business-policy.md) | [POLICY_PERIOD](database-tables.md#policy_period), [POLICY_PERIOD_NON_WCIS](database-tables.md#policy_period_non_wcis) | Read |
| [Retrieve anniversary rate date](operations/retrieve-anniversary-rate-date.md) | [SQL-004](sql/SQL-004-saif-business-policy.md) | [POLICY_PERIOD](database-tables.md#policy_period), [POLICY_PERIOD_NON_WCIS](database-tables.md#policy_period_non_wcis) | Read |
| [Determine policy market type](operations/determine-policy-market-type.md) | [SQL-007](sql/SQL-007-saif-business-policy.md) | [POLICY](database-tables.md#policy) | Read |
| [Retrieve maximum premium history set id](operations/retrieve-maximum-premium-history-set-id.md) | [SQL-009](sql/SQL-009-saif-business-policy.md) | [PREM_HIST_SUMMARY](database-tables.md#prem_hist_summary) | Read |
| [Retrieve policy minimum premium](operations/retrieve-policy-minimum-premium.md) | [SQL-010](sql/SQL-010-saif-business-policy.md) | [PREM_HIST_SUMMARY](database-tables.md#prem_hist_summary), [POLICY_PERIOD](database-tables.md#policy_period) | Read |
| [Determine whether the information page was printed](operations/determine-whether-the-information-page-was-printed.md) | [SQL-006](sql/SQL-006-saif-business-policy.md) | [ENDORSEMENT](database-tables.md#endorsement) | Read |
| [Determine policy ownership system](operations/determine-policy-ownership-system.md) | [SQL-005](sql/SQL-005-saif-business-policy.md) | [DUAL](database-tables.md#dual) | Read |
| [Retrieve hazard groups effective on a date](operations/retrieve-hazard-groups-effective-on-a-date.md) | [SQL-002](sql/SQL-002-saif-business-policy.md) | [HAZARD_GROUP](database-tables.md#hazard_group) | Read |
| [Load code maps](operations/load-code-maps.md) | [SQL-001](sql/SQL-001-saif-business-policy.md), [SQL-003](sql/SQL-003-saif-business-policy.md) | [BENEFIT_JURISDICTION_CODE](database-tables.md#benefit_jurisdiction_code), [MANUAL_CLASS_TYPE_CODE](database-tables.md#manual_class_type_code) | Read |

## Stored procedure operations

| Operation | Description | Source | Link |
| --- | --- | --- | --- |
| Policy minimum premium calculation | Computes minimum premium and expense-constant outputs for a premium-history set. | `pk73069_rating_procs.get_minimum_expense_constant` | [Details](procedures/pk73069-rating-procs.md#operations) |
| Policy ownership determination | Resolves submission ownership and defaults missing rows to WCIS ownership. | `pk73102_policy.does_wcis_own_submission` | [Details](procedures/pk73102-policy.md#operations) |

## Failure and edge-case behavior
- `PolicyMinimumPremium` suppresses Oracle exceptions and returns a defaulted value.*
- Unknown translation codes return unassigned/default enum values instead of raising.
- Hazard-group retrieval is intentionally read-only and exposes no persistence path.

## 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)
- [Configuration](configuration.md)
- [Procedures](procedures/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\PolicyInformation.vb`
- `Business\SAIF.Business.Policy\clsHazardGroup.vb`
- `Business\SAIF.Business.Policy\clsHazardGroupCollection.vb`
- `Business\SAIF.Business.Policy\Enums.vb`
- `Business\SAIF.Business.Policy\iPeriodRatingInfo.vb`
- `Business\SAIF.Business.Policy\CodeMaps\clsBenefitJurisdictionCodeMap.vb`
- `Business\SAIF.Business.Policy\CodeMaps\clsManualClassTypeCodeMap.vb`
- `Oracle DBA_SOURCE: WCIS_DBA.pk73069_rating_procs`
- `Oracle DBA_SOURCE: WCIS_DBA.pk73102_policy`
