Skip to content

SAIF.Business.Policy business rules

This page records the local and inherited business rules enforced or depended on by SAIF.Business.Policy.

BR-POL-001: Latest policy period date comes from the maximum effective date

Field Value
Statement Latest policy period date comes from the maximum effective date
Trigger A caller invokes PolicyInformation.MaxPolicyEffectiveDate for a policy number.
Enforcement PolicyInformation.vb executes the SQL.PolicyEffectiveDate correlated subquery, which selects MAX(POLICY_PERIOD.POLICY_PERIOD_EFF_DATE) for the policy.
Outcome A single Date value is returned representing the policy's most recent period effective date.
Confidence Verified
Source Business\SAIF.Business.Policy\PolicyInformation.vb

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.
Confidence Verified
Source Business\SAIF.Business.Policy\PolicyInformation.vb

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.vb Select 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.vb Case 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.
Confidence Verified
Source Business\SAIF.Business.Policy\PolicyInformation.vb

BR-POL-006: Missing premium-history rows return zero

Field Value
Statement Missing premium-history rows return zero
Trigger The MaxPremiumHistorySetId query result is DBNull.
Enforcement PolicyInformation.vb guards the scalar result with If Not IsDBNull(...) before casting it.
Outcome The method returns 0 instead of raising a cast exception when no eligible premium history set exists.
Confidence Verified
Source Business\SAIF.Business.Policy\PolicyInformation.vb

BR-POL-007: Database failures are swallowed for minimum-premium retrieval*

Field Value
Statement Database failures are swallowed for minimum-premium retrieval*
Trigger An exception occurs during ProcessPortalRequest while PolicyInformation.PolicyMinimumPremium calls the rating procedure.
Enforcement PolicyInformation.vb wraps the call in a Try...Catch whose Catch block is empty, so the exception is discarded rather than re-thrown or logged.
Outcome The exception is swallowed and the method returns 0 instead of surfacing the failure to the caller.*
Confidence Inferred
Source Business\SAIF.Business.Policy\PolicyInformation.vb

BR-POL-008: Missing procedure results return zero

Field Value
Statement Missing procedure results return zero
Trigger PolicyMinimumPremium's DataRequest(0).Result is Nothing after the rating procedure call returns.
Enforcement PolicyInformation.vb checks the result reference before casting the returned value.
Outcome The method returns 0 when the procedure produced no result.
Confidence Verified
Source Business\SAIF.Business.Policy\PolicyInformation.vb

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.
Confidence Inferred
Source Business\SAIF.Business.Policy\PolicyInformation.vb

BR-POL-010: Ownership comes from the Oracle submission-ownership function

Field Value
Statement Ownership comes from the Oracle submission-ownership function
Trigger A caller invokes PolicyInformation.GetPolicyOwnershipSystem for a policy number.
Enforcement PolicyInformation.vb converts the Y/N result of pk73102_policy.does_wcis_own_submission into the PolicyOwnershipSystems enum.
Outcome The method returns PolicyOwnershipSystems.WCIS when the function returns Y, otherwise PolicyOwnershipSystems.SAIFQuote.
Confidence Verified
Source Business\SAIF.Business.Policy\PolicyInformation.vb

BR-POL-011: Hazard-group data is read-only

Field Value
Statement Hazard-group data is read-only
Trigger 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.
Confidence Verified
Source Business\SAIF.Business.Policy\clsHazardGroupCollection.vb

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.*
Confidence Inferred
Source Business\SAIF.Business.Policy\CodeMaps\clsBenefitJurisdictionCodeMap.vb

BR-POL-014: Only recognized database codes are admitted into a map

Field Value
Statement Only recognized database codes are admitted into a map
Trigger A code map is constructed from BENEFIT_JURISDICTION_CODE or MANUAL_CLASS_TYPE_CODE rows.
Enforcement clsBenefitJurisdictionCodeMap and clsManualClassTypeCodeMap use Select Case blocks that enumerate only the recognized code values.
Outcome Any database code outside the enumerated set is silently excluded from the resulting map.
Confidence Verified
Source Business\SAIF.Business.Policy\CodeMaps\clsManualClassTypeCodeMap.vb

BR-POL-015: Period-rating equality requires all eight rating attributes to match

Field Value
Statement Period-rating equality requires all eight rating attributes to match
Trigger PeriodRatingInfoExtensions.BaseEquals is called to compare two period rating infos.
Enforcement BaseEquals compares anniversary rating date, rating effective date, ARD-extended flag, RED-extended flag, effective date, expiration date, rate tier code, and market type.
Outcome The two instances are considered equal only when all eight attributes match; otherwise the comparison returns False.
Confidence Verified
Source Business\SAIF.Business.Policy\iPeriodRatingInfo.vb

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.
Confidence Verified
Source Business\SAIF.Business.Policy\CodeMaps\iAdjustedRateFactor.vb

BR-POL-018: Translation results expose graded confidence values

Field Value
Statement Translation results expose graded confidence values
Trigger Any translation operation produces a clsTranslationResult.
Enforcement clsTranslationResult.Accuracies defines fixed grades: exact match (100), most likely (75), default (10), failure (0).
Outcome Consumers can rank how confident a translation is by comparing the returned accuracy grade.
Confidence Verified
Source Business\SAIF.Business.Policy\clsTranslationResult.vb

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.*
Confidence Inferred
Source Business\SAIF.Business.Policy\IPolicyHeaderDataProvider.vb

Inherited business rules

From clsBusinessBase (SAIF.Framework.Core)

INH-POL-001: Broken-rule tracking is surfaced through the BOF base class

Field Value
Statement Broken-rule state is exposed through IDataErrorInfo and the BOF rules manager*
Trigger A BOF business object or collection evaluates its registered rules*
Enforcement clsBusinessBase and clsBusinessCollectionBase expose rule failures through the framework validation surface*
Outcome UI and binding consumers can display validation failures without duplicating rule logic*
Confidence Dependency documentation
Source Retrieved from dependency library documentation via Legends CLI

BR-POL-020: Procedure dispatches by market type

Field Value
Statement Procedure dispatches by market type
Trigger 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.
Confidence Verified
Stored procedure Procedure details
Source Oracle DBA_SOURCE: WCIS_DBA.pk73069_rating_procs

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.
Confidence Verified
Stored procedure Procedure details
Source Oracle DBA_SOURCE: WCIS_DBA.pk73069_rating_procs

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.
Confidence Verified
Stored procedure Procedure details
Source Oracle DBA_SOURCE: WCIS_DBA.pk73069_rating_procs

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.
Confidence Verified
Stored procedure Procedure details
Source Oracle DBA_SOURCE: WCIS_DBA.pk73069_rating_procs

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.
Confidence Verified
Stored procedure Procedure details
Source Oracle DBA_SOURCE: WCIS_DBA.pk73069_rating_procs

BR-POL-025: Submission ownership comes from the submission-status flag

Field Value
Statement Submission ownership comes from the submission-status flag
Trigger PolicyInformation.GetPolicyOwnershipSystem calls pk73102_policy.does_wcis_own_submission(policy_num).
Enforcement The function selects wcis_owns_flag from submission_status_code joined to sub_policy on submission_status_code, keyed by the policy number.
Outcome The returned 'Y'/'N' flag determines whether ownership resolves to WCIS or SAIF Quote.
Confidence Verified
Stored procedure Procedure details
Source Oracle DBA_SOURCE: WCIS_DBA.pk73102_policy

BR-POL-026: Missing or failed submission lookups default to WCIS ownership

Field Value
Statement Missing or failed submission lookups default to WCIS ownership
Trigger does_wcis_own_submission raises NO_DATA_FOUND (no matching sub_policy row) or any other exception.
Enforcement Both the WHEN NO_DATA_FOUND and WHEN OTHERS exception handlers in the function return 'Y'.
Outcome The policy defaults to WCIS ownership whenever the submission lookup fails or finds no row, rather than raising an error.
Confidence Verified
Stored procedure Procedure details
Source Oracle DBA_SOURCE: WCIS_DBA.pk73102_policy

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.*
Confidence Inferred
Stored procedure Procedure details
Source Business\SAIF.Business.Policy\PolicyInformation.vb

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\IPolicyHeaderDataProvider.vb
  • Business\SAIF.Business.Policy\CodeMaps\clsBenefitJurisdictionCodeMap.vb
  • Business\SAIF.Business.Policy\CodeMaps\clsManualClassTypeCodeMap.vb
  • Business\SAIF.Business.Policy\CodeMaps\iAdjustedRateFactor.vb
  • Business\SAIF.Business.Policy\clsTranslationResult.vb
  • Oracle DBA_SOURCE: WCIS_DBA.pk73069_rating_procs
  • Oracle DBA_SOURCE: WCIS_DBA.pk73102_policy