Skip to content

SAIF.Business.Policy business rules

This page captures business rules enforced by SAIF.Business.Policy. The library itself still exposes no local AddBusinessRules registrations, but the documentation set now also includes business rules implemented inside the Oracle packages called by PolicyInformation.

Stored procedure business rules

| Rule ID | Rule | Source | Link |

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

| BR-POL-002 | No qualifying class minimum falls back to default manual class 8810 | pk73069_rating_procs.get_variable_min_exp_constant | Procedure details |

| BR-POL-003 | Voluntary policies before 01-apr-2010 use a fixed 500 minimum premium | pk73069_rating_procs.get_vol_policy_minimum, pk73069_rating_procs.get_comb_vol_policy_minimum | Procedure details |

| BR-POL-004 | Combined voluntary minimums prefer the highest explicit class minimum | pk73069_rating_procs.get_comb_vol_policy_minimum | Procedure details |

| BR-POL-005 | ARP minimums use ARP-specific expense-constant logic | pk73069_rating_procs.get_minimum_expense_constant, pk73069_rating_procs.sp72759_get_arp_min_ec | Procedure details |

| BR-POL-006 | Submission ownership comes from the status-code ownership flag | pk73102_policy.does_wcis_own_submission | Procedure details |

| BR-POL-007 | Missing or failed ownership lookups default to WCIS | pk73102_policy.does_wcis_own_submission | Procedure details |

| BR-POL-008 | PMS status is limited to PA, PC, and PP | pk73102_policy.is_pms_status, pk73102_policy.is_pms_status_yn | Procedure details |

BR-POL-001 Neutral value for non-applicable rate factors

| Field | Value |

| --- | --- |

| Statement | An iAdjustedRateFactor implementation must return 1 (not 0) when a given rate factor does not apply to the iAdjustedRateProvider passed to it, so the value does not alter a cumulative multiplicative factor.* |

| Trigger | Any caller iterating iAdjustedRateFactor implementations to compute a cumulative rate adjustment.* |

| Enforcement | None in this library — the rule is documented only in a source comment on CodeMaps\iAdjustedRateFactor.vb; conformance is left to each implementing class (not present in this library).** |

| Outcome | Non-applicable factors are neutral in a multiplicative chain, per the AdjustedRates.NonApplicableAdjustedRateFactor = 1 constant.* |

| Source | SAIF.Business.Policy\CodeMaps\iAdjustedRateFactor.vb |


BR-POL-002 No qualifying class minimum falls back to default manual class 8810

| Field | Value |

| --- | --- |

| Statement | If get_variable_min_exp_constant does not find a qualifying manual-class minimum, it falls back to the default minimum premium from manual_class_base where manual_class_num LIKE '8810%'. |

| Trigger | The procedure finishes scanning the prem_hist_class_coverage rows for a premium-history set without assigning v_min_manual_class_num. |

| Enforcement | The procedure sets out_default_minimum_flag = 'Y', fetches the 8810% row through dflt_min_csr, and assigns that min_premium as the return minimum. |

| Outcome | Callers receive a default minimum premium even when no class-specific minimum qualifies. |

| Source | Oracle retrieval JSON pk73069_rating_procs.json — get_variable_min_exp_constant |


BR-POL-003 Voluntary policies before April 1 2010 use a fixed 500 minimum premium

| Field | Value |

| --- | --- |

| Statement | Voluntary policies effective before 01-apr-2010 return the fixed minimum premium constant 500. |

| Trigger | get_vol_policy_minimum or get_comb_vol_policy_minimum receives an effective date earlier than c_vol_variable_min_eff_date. |

| Enforcement | The package bypasses variable-minimum evaluation and assigns c_vol_fixed_min_amount. |

| Outcome | Older voluntary policies always return 500 as the annual minimum premium. |

| Source | Oracle retrieval JSON pk73069_rating_procs.json — get_vol_policy_minimum, get_comb_vol_policy_minimum |


BR-POL-004 Combined voluntary minimums prefer the highest explicit class minimum

| Field | Value |

| --- | --- |

| Statement | For combined voluntary policies using variable minimum logic, the package returns the highest non-default minimum across related premium-history sets; if no explicit class minimum exists, it returns the highest default minimum. |

| Trigger | get_comb_vol_policy_minimum iterates the premium-history sets for a combination effective on or after 01-apr-2010. |

| Enforcement | The procedure tracks explicit minimums in v_max_minimum, default minimums in v_default_minimum, and returns NVL(v_max_minimum, v_default_minimum). |

| Outcome | Combination policies prefer a real class-specific minimum whenever one is available. |

| Source | Oracle retrieval JSON pk73069_rating_procs.json — get_comb_vol_policy_minimum |


BR-POL-005 ARP minimums use ARP-specific expense constant logic

| Field | Value |

| --- | --- |

| Statement | Non-voluntary policies are processed through ARP minimum logic, and ARP expense constants are selected from the rate file effective on the applicable ARP rate date. |

| Trigger | get_minimum_expense_constant receives policy context whose market_type_code is not VOL, or get_variable_min_exp_constant is evaluating an ARP request. |

| Enforcement | The package calls sp72759_get_arp_min_ec, optionally switches to nr_rate_file_seq_num when new_outstanding_code = 'O', then reads assigned_risk_expense_constant for the rate-file effective date. |

| Outcome | ARP requests return minimum-premium and expense-constant results from ARP rate data instead of voluntary-policy logic. |

| Source | Oracle retrieval JSON pk73069_rating_procs.json — get_minimum_expense_constant, get_variable_min_exp_constant, sp72759_get_arp_min_ec |


BR-POL-006 Submission ownership comes from the status code ownership flag

| Field | Value |

| --- | --- |

| Statement | does_wcis_own_submission determines ownership by returning submission_status_code.wcis_owns_flag for the current status of the matching submission. |

| Trigger | The function receives a policy number that resolves to a sub_policy row. |

| Enforcement | It joins sub_policy to submission_status_code on the submission status code and returns the retrieved wcis_owns_flag. |

| Outcome | Calling code receives the status-driven WCIS ownership indicator for that submission. |

| Source | Oracle retrieval JSON pk73102_policy.json — does_wcis_own_submission |


BR-POL-007 Missing or failed ownership lookups default to WCIS

| Field | Value |

| --- | --- |

| Statement | When the ownership lookup finds no matching submission or raises any unexpected exception, does_wcis_own_submission returns 'Y'. |

| Trigger | The function hits NO_DATA_FOUND or WHEN OTHERS. |

| Enforcement | Both exception handlers explicitly RETURN 'Y'. |

| Outcome | The .NET caller maps the response to Enums.PolicyOwnershipSystems.WCIS rather than treating the lookup as a failure. |

| Source | Oracle retrieval JSON pk73102_policy.json — does_wcis_own_submission, SAIF.Business.Policy\PolicyInformation.vb |


BR-POL-008 PMS status is limited to PA PC and PP

| Field | Value |

| --- | --- |

| Statement | Only policy status codes PP, PA, and PC are treated as PMS statuses, and the Y/N wrapper returns Y only for those codes. |

| Trigger | is_pms_status or is_pms_status_yn evaluates a policy status code. |

| Enforcement | is_pms_status checks membership in ('PP', 'PA', 'PC'); is_pms_status_yn converts the Boolean result into 'Y' or 'N'. |

| Outcome | PMS-aware callers receive a consistent Boolean or Y/N result from the same status-code rule. |

| Source | Oracle retrieval JSON pk73102_policy.json — is_pms_status, is_pms_status_yn |


Inherited business rules

Rules in this section originate from base classes provided by dependency framework libraries. They are enforced by inherited behavior, not by code in this library. The originating class and library are recorded in each rule's Origin field.

INH-POL-001 Registered business rules are checked and broken rules tracked

| Field | Value |

| --- | --- |

| Statement | Each clsBusinessBase-derived object owns a clsRulesManager; calling code invokes Rules.CheckRules("RuleName") to run registered rule handlers, and any rule that fails is recorded in the object's broken-rule collection.† |

| Trigger | A clsBusinessBase-derived object (clsHazardGroup) invokes rule checking during its lifecycle (e.g., validation before save).† |

| Enforcement | Framework-provided clsRulesManager mechanism in SAIF.Framework.Core; surfaced to data-binding consumers via IDataErrorInfo.Error/Item.† |

| Outcome | Broken rules are tracked and exposed for UI validation; clsHazardGroup's own #Region " BUSINESS RULES" block is empty (placeholder comment only), so no domain-specific rules are currently registered through this mechanism in this library.* |

| Origin | SAIF.Framework.Core — clsBusinessBase |

| Source | Retrieved from indexed documentation via Legends CLI |


Notes

  • No local AddBusinessRules/Rules registrations exist in clsHazardGroup/clsHazardGroupCollection; the new BR-POL-002 through BR-POL-008 rules are enforced inside Oracle packages called by PolicyInformation.

  • Mark inferred statements with * and unknown statements with **. Do not use bold inline confidence labels.

  • Statements marked with † were retrieved from dependency library documentation via the Legends CLI RAG service.

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. Statements marked with † are derived from dependency

library documentation via the Legends CLI. They describe inherited behavior from

the indicated origin library and should be verified if the dependency version changes.

Sources

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

  • SAIF.Business.Policy\clsHazardGroup.vb

  • SAIF.Business.Policy\clsHazardGroupCollection.vb

  • SAIF.Business.Policy\PolicyInformation.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