BR-POL-002: Expiration and anniversary lookups search both WCIS and non-WCIS period tables¶
Field
Value
Statement
Expiration and anniversary lookups search both WCIS and non-WCIS period tables
Trigger
A caller requests PolicyInformation.PolicyPeriodExpirationDate or PolicyInformation.AnniversaryRateDate.
Enforcement
PolicyInformation.vb's SQL.PolicyPeriodExpirationDate and SQL.PolicyPeriodARD queries UNION matching rows from POLICY_PERIOD (WCIS) and POLICY_PERIOD_NON_WCIS.
Outcome
The matching date is found regardless of which source system holds the policy period.
BR-POL-003: Persisted policy codes map to fixed domain enums¶
Field
Value
Statement
Persisted policy codes map to fixed domain enums
Trigger
A caller invokes any Enums.Convert* method (e.g. original user type, financial system, payroll report frequency, sales plan, policy issuance system, policy relationship, renewal track, cancellation track, waiver type, rating plan).
Enforcement
Enums.vbSelect Case blocks translate persisted codes such as ARP to Assigned Risk and VOL to Voluntary, and the equivalent sets for the other code families.
Outcome
Callers receive a strongly typed enum or normalized code string instead of the raw persisted code.
Confidence
Verified
Source
Business\SAIF.Business.Policy\Enums.vb
BR-POL-004: Unrecognized codes translate to safe defaults¶
Field
Value
Statement
Unrecognized codes translate to safe defaults
Trigger
An Enums.Convert* method receives a code value it does not recognize.
Enforcement
Enums.vbCase Else branches return the enum's unassigned/default member, or an empty string when converting an unmapped enum back to a code.
Outcome
The caller receives a safe default value; translation never raises an exception.
Confidence
Verified
Source
Business\SAIF.Business.Policy\Enums.vb
BR-POL-005: Only eligible premium-history types contribute to the max set id¶
Field
Value
Statement
Only eligible premium-history types contribute to the max set id
Trigger
A caller invokes PolicyInformation.MaxPremiumHistorySetId.
Enforcement
The inline SQL predicate in PolicyInformation.vb restricts candidate rows to PREM_HIST_SUMMARY rows where prem_hist_type_code is '1' or '3'.
Outcome
Only the restricted candidate set is considered when determining the current premium history set.
BR-POL-009: Only printed P401 endorsements count as issued information pages¶
Field
Value
Statement
Only printed P401 endorsements count as issued information pages
Trigger
A caller invokes PolicyInformation.IsInformationPagePrinted for a policy number and period effective date.
Enforcement
The inline SQL predicate selects policy_num from ENDORSEMENT where endorse_code = 'P401' and printed_date IS NOT NULL for the matching policy and period.
Outcome
The method returns True only when the matching printed P401 endorsement's policy_num equals the input policy number. Whether an empty (no-row) result also yields False is unknown**: the code calls CDec(PortalRequest.DataRequest(0).Result) directly with no guard for a no-result/Nothing case, so the actual behavior when no row matches depends on the untyped IPortalRequest contract, not on code visible in this method.
Any attempt to create, update, or delete a hazard group or hazard-group collection.
Enforcement
clsHazardGroupCollection.vb's constructor and Criteria implementation, and clsHazardGroup.vb's Criteria implementation, throw for every SQL property except RetrieveSQL; the collection always reports IsSavable = False.
Outcome
Attempted mutation raises ApplicationException(clsConstants.Messages.InvalidSQLProperty) and no persistence occurs.
Confidence
Verified
Source
Business\SAIF.Business.Policy\clsHazardGroup.vb
BR-POL-012: Hazard groups are filtered by effective-date window¶
Field
Value
Statement
Hazard groups are filtered by effective-date window
Trigger
A caller retrieves hazard groups for a specific date.
Enforcement
clsHazardGroupCollection.Criteria.BuildWhere requires EFFECTIVE_DATE <= date and date < NVL(EXPIRATION_DATE, date + 1), so a null expiration date is treated as open-ended.
Outcome
Only rows in effect for the requested date are loaded into the collection.
BR-POL-013: Code maps are cached until refresh is requested*¶
Field
Value
Statement
Code maps are cached until refresh is requested*
Trigger
A caller invokes CodeMaps.Get*CodeMap.
Enforcement
The CodeMaps partial classes hold a Static cache populated on first use and reused on subsequent calls unless the caller explicitly requests a refresh.*
Outcome
Repeated calls return the cached map without re-querying the database.*
BR-POL-016: Hazard-group identity is the hazard-group id only¶
Field
Value
Statement
Hazard-group identity is the hazard-group id only
Trigger
clsHazardGroup.Equals, GetHashCode, or a collection lookup is invoked.
Enforcement
clsHazardGroup.vb overrides equality and hashing to key solely on HAZARD_GROUP_ID, ignoring other properties.
Outcome
Two hazard-group instances with the same id compare equal and hash identically regardless of other field values.
Confidence
Verified
Source
Business\SAIF.Business.Policy\clsHazardGroup.vb
BR-POL-017: Non-applicable adjusted-rate factors contribute the neutral value one¶
Field
Value
Statement
Non-applicable adjusted-rate factors contribute the neutral value one
Trigger
An implementation of iAdjustedRateFactor.Factor is evaluated for a provider the factor does not apply to.
Enforcement
The contract documented in CodeMaps/iAdjustedRateFactor.vb requires returning the constant AdjustedRates.NonApplicableAdjustedRateFactor = 1 rather than 0.
Outcome
The cumulative rate factor is left unchanged when a factor does not apply, instead of being zeroed out.
BR-POL-019: Policy-association visibility is governed by a security-group contract*¶
Field
Value
Statement
Policy-association visibility is governed by a security-group contract*
Trigger
A consumer resolves IPolicyAssociationType.SecurityGroupName before displaying an association type.
Enforcement
The contract is declared in IPolicyHeaderDataProvider.vb; the actual Active Directory group membership check is enforced by the implementing library, not by this contract itself.*
Outcome
The association type is shown or hidden depending on the consumer's membership in the named security group.*
PolicyInformation.PolicyMinimumPremium calls pk73069_rating_procs.get_minimum_expense_constant for a premium-history set.
Enforcement
The procedure first resolves policy-period data via get_pp_info, then branches on v_pp_info.market_type_code: 'VOL' routes to voluntary/combination-voluntary logic, any other value routes to assigned-risk logic.
Outcome
The correct minimum-premium calculation path is selected for the policy's market type.
BR-POL-021: Voluntary combination policies use combination-wide minimum logic¶
Field
Value
Statement
Voluntary combination policies use combination-wide minimum logic
Trigger
get_minimum_expense_constant finds v_pp_info.market_type_code = 'VOL' and v_pp_info.combo_period_prem_set_seq_num is not null.
Enforcement
The procedure calls get_comb_vol_policy_minimum, which loops over every prem_hist_summary row sharing the same combo_period_prem_set_seq_num rather than evaluating a single period in isolation.
Outcome
The minimum premium is computed across the whole voluntary combination, not per individual period.
BR-POL-022: Voluntary periods before the cut-over date use a fixed minimum¶
Field
Value
Statement
Voluntary periods before the cut-over date use a fixed minimum
Trigger
get_vol_policy_minimum or get_comb_vol_policy_minimum evaluates a policy/combination period effective date earlier than the c_vol_variable_min_eff_date constant (01-APR-2010).
Enforcement
Both procedures short-circuit with out_minimum := c_vol_fixed_min_amount (the constant 500) before reaching the variable-rate calculation.
Outcome
Pre-cutover voluntary periods receive the fixed $500 minimum instead of a rate-derived minimum.
BR-POL-023: Assessment handling changes at the alignment date¶
Field
Value
Statement
Assessment handling changes at the alignment date
Trigger
get_vol_policy_minimum evaluates a policy period effective date against the c_vol_assess_min_same_eff_date constant (01-JAN-2014).
Enforcement
When the period effective date is before the alignment date, the procedure calls get_variable_min_exp_constant with a premium-history-type mapping (via a CASE on in_prem_hist_type_code) that differs from the mapping used on or after the alignment date.
Outcome
The variable minimum-expense-constant calculation uses the pre-alignment or post-alignment premium-history-type mapping depending on the period's effective date.
BR-POL-024: Combination voluntary minimums prefer the highest non-default minimum¶
Field
Value
Statement
Combination voluntary minimums prefer the highest non-default minimum
Trigger
get_comb_vol_policy_minimum loops through all prem_hist_summary rows tied to a combination premium-set sequence number.
Enforcement
For each row, when v_default_minimum_flag = 'Y' the procedure tracks the highest value in v_default_minimum; when 'N' it tracks the highest in v_max_minimum. The final result is out_minimum := NVL(v_max_minimum, v_default_minimum).
Outcome
A non-default (explicitly computed) minimum wins over the default minimum whenever one exists in the combination.
BR-POL-027: Procedure failures are raised inside Oracle but suppressed by the .NET caller*¶
Field
Value
Statement
Procedure failures are raised inside Oracle but suppressed by the .NET caller*
Trigger
pk73069_rating_procs raises an exception (e.g. via its OTHERS handlers) while computing the minimum premium for PolicyMinimumPremium.
Enforcement
The Oracle package's own exception handlers log or re-raise internally, but PolicyInformation.vb's empty Catch around the ProcessPortalRequest call discards the propagated error.*
Outcome
The caller observes a 0 minimum premium with no visible error, even though the procedure encountered a failure.*
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.