Skip to content

SAIF.Business.Policy operations and processes

This page is the operation catalog and cross-operation hub for SAIF.Business.Policy. Most operations are read-only BOF retrievals or scalar lookups; the two Oracle package calls documented here also carry stored-procedure business rules BR-POL-002 through BR-POL-008.

Operation catalog

| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |

| --- | --- | --- | --- | --- | --- | --- | --- |

| Retrieve hazard groups effective on a date | Load hazard-group classification records active on a given date | Caller invokes clsHazardGroupCollection.GetHazardGroups | Data portal, effective date | clsHazardGroupCollection populated with clsHazardGroup items | None | HAZARD_GROUP | SQL-002 |

| Determine maximum policy effective date | Find the latest policy-period effective date for a policy | Caller reads PolicyInformation.MaxPolicyEffectiveDate | Data portal, policy number | Date | None | POLICY_PERIOD | SQL-008 |

| Determine policy-period expiration date | Find the expiration date of a policy period | Caller reads PolicyInformation.PolicyPeriodExpirationDate | Data portal, policy number, period effective date | Date | None | POLICY_PERIOD, POLICY_PERIOD_NON_WCIS | SQL-011 |

| Determine anniversary rate date | Find the anniversary rate date of a policy period | Caller reads PolicyInformation.AnniversaryRateDate | Data portal, policy number, period effective date | Date | None | POLICY_PERIOD, POLICY_PERIOD_NON_WCIS | SQL-004 |

| Determine market type | Resolve the market type for a policy | Caller reads PolicyInformation.MarketType | Data portal, policy number | Enums.MarketTypes | None | POLICY | SQL-005 |

| Determine maximum premium-history set ID | Find the current premium-history set ID for a policy period | Caller reads PolicyInformation.MaxPremiumHistorySetId | Data portal, policy number, period effective date | Decimal (0 if none) | None | PREM_HIST_SUMMARY | SQL-009 |

| Determine policy minimum premium | Retrieve the minimum premium amount for a premium-history set | Caller reads PolicyInformation.PolicyMinimumPremium | Data portal, premium-history set ID | Decimal (0 on failure) | BR-POL-002, BR-POL-003, BR-POL-004, BR-POL-005 | N/A (stored procedure) | SQL-010 |

| Determine whether the information page was printed | Check whether the P401 information page endorsement was printed | Caller reads PolicyInformation.IsInformationPagePrinted | Data portal, policy number, period effective date | Boolean | None | ENDORSEMENT | SQL-007 |

| Determine policy ownership system | Determine which system owns a policy submission (WCIS vs SAIFQuote) | Caller reads PolicyInformation.GetPolicyOwnershipSystem | Data portal, policy number | Enums.PolicyOwnershipSystems | BR-POL-006, BR-POL-007, BR-POL-008 | N/A (PL/SQL function) | SQL-006 |

| Resolve or cache benefit-jurisdiction code table | Load and cache the benefit-jurisdiction code map | Caller invokes CodeMaps.GetBenefitJurisdictionCodeMap | Data portal, refresh flag | Cached clsBenefitJurisdictionCodeMap | None | BENEFIT_JURISDICTION_CODE | SQL-001 |

| Resolve or cache manual-class-type code table | Load and cache the manual-class-type code map | Caller invokes CodeMaps.GetManualClassTypeCodeMap | Data portal, refresh flag | Cached clsManualClassTypeCodeMap | None | MANUAL_CLASS_TYPE_CODE | SQL-003 |

Process flow diagram

The following diagram visualizes the primary operational flow across this library's two main call patterns: standard BOF retrieve (hazard groups) and ad hoc scalar lookups (PolicyInformation).


flowchart TD

    Start([Caller request]) --> Decision{Which pattern?}

    Decision -->|BOF collection retrieve| HG[clsHazardGroupCollection.GetHazardGroups]

    HG --> BeforeRetrieve[BeforeRetrieve builds Criteria.RetrieveSQL]

    BeforeRetrieve --> Portal[Data portal executes SQL-002]

    Portal --> AfterRetrieve[AfterRetrieve constructs clsHazardGroup rows]

    AfterRetrieve --> EndHG([Return clsHazardGroupCollection])

    Decision -->|Ad hoc scalar lookup| PI[PolicyInformation.* property]

    PI --> ScalarSQL[Build scalar SQL/stored-proc request]

    ScalarSQL --> ScalarPortal[DAL.ProcessPortalRequest executes]

    ScalarPortal --> Cast[Cast/convert result]

    Cast --> EndPI([Return scalar value])

Inherited operations and processes

Operations in this section originate from base classes provided by dependency framework libraries. They are inherited or delegated, not implemented in this library.

From clsBusinessCollection (SAIF.Framework.Core)

| Operation | Intent | Provided by | Origin | Embedded in |

| --- | --- | --- | --- | --- |

| Framework lifecycle dispatch (creation, retrieval, persistence, validation, editing, data-portal dispatch) | Supports the object lifecycle that clsHazardGroupCollection runs through when retrieving objects† | clsBusinessCollection | SAIF.Framework.Core | Retrieve hazard groups effective on a date |

Origin: These operations are defined in SAIF.Framework.Core / clsBusinessCollection and inherited or delegated by this component. Detailed retrieve/before-retrieve/after-retrieve step logic for clsHazardGroupCollection itself is implemented locally in this library (see the embedded operation's own steps) and is not a framework-inherited detail.

Database interactions

The following table summarizes which operations read from the database. Per-step SQL and table citations live in each operation's detail page under operations/.

| Operation | SQL | Tables | Type |

| --- | --- | --- | --- |

| Retrieve hazard groups effective on a date | SQL-002 | HAZARD_GROUP | Read |

| Determine maximum policy effective date | SQL-008 | POLICY_PERIOD | Read |

| Determine policy-period expiration date | SQL-011 | POLICY_PERIOD, POLICY_PERIOD_NON_WCIS | Read |

| Determine anniversary rate date | SQL-004 | POLICY_PERIOD, POLICY_PERIOD_NON_WCIS | Read |

| Determine market type | SQL-005 | POLICY | Read |

| Determine maximum premium-history set ID | SQL-009 | PREM_HIST_SUMMARY | Read |

| Determine policy minimum premium | SQL-010 | N/A (stored procedure) | Read |

| Determine whether the information page was printed | SQL-007 | ENDORSEMENT | Read |

| Determine policy ownership system | SQL-006 | N/A (PL/SQL function) | Read |

| Resolve or cache benefit-jurisdiction code table | SQL-001 | BENEFIT_JURISDICTION_CODE | Read |

| Resolve or cache manual-class-type code table | SQL-003 | MANUAL_CLASS_TYPE_CODE | Read |

Failure and edge-case behavior

  • MaxPolicyEffectiveDate and PolicyPeriodExpirationDate cast the scalar result directly to Date without a null/DBNull guard; behavior when no matching row exists is unconfirmed.**

  • PolicyMinimumPremium wraps its stored-procedure call in Try...Catch with an empty Catch block, silently swallowing any provider/database exception and returning 0.**

Stored procedure operations

Operations implemented in Oracle stored procedures referenced by this library.

| Operation | Description | Source | Link |

| --- | --- | --- | --- |

| Determine policy minimum premium and expense constant | Resolves policy context and returns the minimum premium result for a premium-history set, using voluntary or ARP logic as needed | pk73069_rating_procs.get_minimum_expense_constant | Details |

| Determine voluntary combination minimum premium | Iterates all premium-history sets in a combined voluntary policy and returns the highest applicable minimum | pk73069_rating_procs.get_comb_vol_policy_minimum | Details |

| Determine ARP minimum premium and expense constant | Uses ARP-specific rate-file and expense-constant logic for non-voluntary policies | pk73069_rating_procs.sp72759_get_arp_min_ec | Details |

| Determine submission ownership | Returns the status-driven WCIS ownership flag and defaults to WCIS ownership on missing/error conditions | pk73102_policy.does_wcis_own_submission | Details |

| Proxy submission status transitions to POLDB | Forwards reject, unreject, pending, quoted, and app-received-date requests to the remote @POLDB package | pk73102_policy.reject_submission, unreject_submission, set_submission_to_pending, set_submission_to_quoted, set_app_received_date | Details |

| Insert dividend notepad memo | Writes a DVD / Dividend memo entry through SP72155_INSERT_MEMO_ENTRY | pk73102_policy.insert_dividend_notepad | Details |

Note: Statements marked with † are derived from dependency library

documentation via the Legends CLI. Statements marked with * were inferred

from code structure or contextual evidence. Statements marked with ** could

not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Business.Policy\clsHazardGroupCollection.vb

  • SAIF.Business.Policy\PolicyInformation.vb

  • SAIF.Business.Policy\CodeMaps\clsBenefitJurisdictionCodeMap.vb

  • SAIF.Business.Policy\CodeMaps\clsManualClassTypeCodeMap.vb

  • Oracle retrieval JSON: C:\Users\chrfre\AppData\Local\Temp\oracle-sources\pk73069_rating_procs.json

  • Oracle retrieval JSON: C:\Users\chrfre\AppData\Local\Temp\oracle-sources\pk73102_policy.json