SAIF.Business.Policy.Core business rules
This page captures business rules enforced by this library.
BR-001: Policy period status codes map to a fixed
Field
Value
Statement
Policy period status codes map to a fixed set of 13 named statuses (P, 0, E, F, FA, FC, FP, PPROS, PR, PF, RA, RF)
Trigger
Status conversion
Enforcement
clsPolicyPeriodStatus.ConvertStatus
Outcome
Typed Statuses value
Confidence
Verified
Tables
POLICY_PERIOD_STATUS_CODE
SQL
SQL-092 , SQL-093
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodStatus.vb:64-121
BR-002: An unrecognised status code yields Statuses.Unknown; an unrecognised
Field
Value
Statement
An unrecognised status code yields Statuses.Unknown; an unrecognised enum value yields an empty code string
Trigger
Status conversion
Enforcement
clsPolicyPeriodStatus.ConvertStatus
Outcome
Safe fallback, no exception
Confidence
Verified
Tables
POLICY_PERIOD_STATUS_CODE
SQL
SQL-092 , SQL-093
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodStatus.vb:64-121
BR-003: Statuses roll up into six status groups Application
Field
Value
Statement
Statuses roll up into six status groups (Application, Closed, NoCoverage, Open, Renewal, Unknown)
Trigger
Status-group conversion
Enforcement
clsPolicyPeriodStatus.ConvertStatusGroup
Outcome
Typed StatusGroups value
Confidence
Verified
Tables
POLICY_PERIOD_STATUS_CODE
SQL
SQL-092 , SQL-093
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodStatus.vb:137-162
BR-004: The current period is the first period flagged
Field
Value
Statement
The current period is the first period flagged IsCurrent; if none is flagged, the latest period by effective date is treated as current
Trigger
Period selection
Enforcement
iPolicyPeriodExtensions.CurrentPeriod
Outcome
A single period is always returned when the set is non-empty
Confidence
Verified
Tables
POLICY_PERIOD
SQL
SQL-088
Source
Business\SAIF.Business.Policy.Core\iPolicyPeriod.vb:74-82
BR-005: Experience-rating base periods are those whose begin date
Field
Value
Statement
Experience-rating base periods are those whose begin date falls in the window from 57 months before the anniversary rating date up to 3 years after it
Trigger
Base-period selection
Enforcement
iPolicyPeriodExtensions.BasePeriods
Outcome
Filtered period set
Confidence
Verified
Tables
POLICY_PERIOD
SQL
SQL-088
Source
Business\SAIF.Business.Policy.Core\iPolicyPeriod.vb:114-128
Field
Value
Statement
Ownership information is required for all entity types except political subdivisions, associations and labor unions
Trigger
Ownership validation
Enforcement
clsEntityType.IsOwnershipRequired
Outcome
Boolean requirement flag
Confidence
Verified
Tables
ENTITY_CODE
SQL
SQL-058 , SQL-059
Source
Business\SAIF.Business.Policy.Core\clsEntityType.vb:308-333
BR-007: Sole proprietors require exactly one owner; partnerships, limited
Field
Value
Statement
Sole proprietors require exactly one owner; partnerships, limited partnerships, LLPs, joint ventures and their construction/landscaping variants require two or more; all other ownership-requiring types require one or more
Trigger
Ownership validation
Enforcement
clsEntityType.OwnersRequired
Outcome
RequiredNumberOfOwners value
Confidence
Verified
Tables
ENTITY_CODE
SQL
SQL-058 , SQL-059
Source
Business\SAIF.Business.Policy.Core\clsEntityType.vb:336-352
BR-008: For the Guidewire path, joint ventures require one
Field
Value
Statement
For the Guidewire path, joint ventures require one or more owners rather than two or more
Trigger
Ownership validation (Guidewire)
Enforcement
clsEntityType.OwnersRequiredForGw
Outcome
RequiredNumberOfOwners value
Confidence
Verified
Tables
ENTITY_CODE
SQL
SQL-058 , SQL-059
Source
Business\SAIF.Business.Policy.Core\clsEntityType.vb:355-368
BR-009: A cancellation reason override must carry a valid
BR-010: A policy's period history is the union of
Field
Value
Statement
A policy's period history is the union of modern (WCIS) and legacy (non-WCIS) periods, ordered by effective date and linked into a chain
Trigger
Period retrieval
Enforcement
clsPolicyPeriodBaseCollection.GetPolicyPeriods
Outcome
Single unified, linked timeline
Confidence
Verified
Tables
DUAL , POLICY_PERIOD_MASTER , POLICY_PERIOD_NON_WCIS , POLICY_PERIOD
SQL
SQL-012 , SQL-033 , SQL-061 , SQL-062 , SQL-063 , SQL-078 , SQL-079 , SQL-080 , SQL-081 , SQL-082 , SQL-083 , SQL-088 , SQL-091 , SQL-134 , SQL-155
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodBaseCollection.vb:332-341
BR-011: Association-based period retrieval uses a different predicate per
Field
Value
Statement
Association-based period retrieval uses a different predicate per association type: relationship-policy match for leasing company / state agency / sub-account / wrapup; rate-account match for experience combination; a POLICY_RELATIONSHIP union for manual affiliation and manual wrapup
Trigger
Association-type retrieval
Enforcement
Criteria.ConfigureAssociationTypeRetrieval
Outcome
Association-appropriate result set
Confidence
Verified
Tables
POLICY_PERIOD
SQL
SQL-088
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodCollection.vb:392-420
BR-012: An association type outside the supported set is
Field
Value
Statement
An association type outside the supported set is rejected
Trigger
Association-type retrieval
Enforcement
Criteria.ConfigureAssociationTypeRetrieval
Outcome
ApplicationException "Unsupported association type encountered when retrieving policy periods"
Confidence
Verified
Tables
POLICY_PERIOD
SQL
SQL-088
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodCollection.vb:392-419
BR-013: Standard premium is sourced from WCIS for WCIS
Field
Value
Statement
Standard premium is sourced from WCIS for WCIS periods and from the AR/WINS query for AR and WINS periods; any other financial system yields zero
Trigger
Premium calculation
Enforcement
clsPolicyPeriodBase.GetStandardPremium
Outcome
Premium amount or 0
Confidence
Verified
Tables
NON_WCIS_STAT_TRANS
SQL
SQL-061 , SQL-062 , SQL-078 , SQL-079 , SQL-080 , SQL-081 , SQL-082 , SQL-083 , SQL-084 , SQL-085 , SQL-086 , SQL-087
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodBase.vb:568-581
BR-014: A modern policy period is considered issued when
Field
Value
Statement
A modern policy period is considered issued when the WCIS information page has been printed (flag "Y")
Trigger
Issuance check
Enforcement
clsPolicyPeriod.IsIssued → WCISInquiry.IsInformationPagePrinted
Outcome
Boolean
Confidence
Verified
SQL
SQL-078 , SQL-079 , SQL-080 , SQL-081 , SQL-082 , SQL-083
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriod.vb:344-351
BR-015: A legacy policy period is never reported as
Field
Value
Statement
A legacy policy period is never reported as issued
Trigger
Issuance check
Enforcement
clsLegacyPolicyPeriod.IsIssued
Outcome
Always False
Confidence
Verified
SQL
SQL-061 , SQL-062
Source
Business\SAIF.Business.Policy.Core\clsLegacyPolicyPeriod.vb:186-192
BR-016: Coverage-bound status is sourced from WCIS for modern
Field
Value
Statement
Coverage-bound status is sourced from WCIS for modern periods; period types that do not override it are not bound
Trigger
Coverage-bound check
Enforcement
clsPolicyPeriod.IsCoverageBound, clsPolicyPeriodBase.IsCoverageBound
Outcome
Boolean
Confidence
Verified
SQL
SQL-078 , SQL-079 , SQL-080 , SQL-081 , SQL-082 , SQL-083
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriod.vb:228-234
BR-017: A location is active as of a date
Field
Value
Statement
A location is active as of a date when its effective date is on or before that date and its expiration date is either unset or after that date
Trigger
Location filtering
Enforcement
clsPolicyLocationCollection.Active
Outcome
Filtered location set
Confidence
Verified
Tables
DUAL , LOCATION , CONTACT , LOCATION_VIEW
SQL
SQL-008 , SQL-009 , SQL-030 , SQL-064 , SQL-065 , SQL-075 , SQL-076 , SQL-077 , SQL-129 , SQL-130 , SQL-131 , SQL-152
Source
Business\SAIF.Business.Policy.Core\clsPolicyLocationCollection.vb:498-500
BR-018: Summary locations are active locations of type Business
Field
Value
Statement
Summary locations are active locations of type Business, Audit, Policy or Third-Party Manager
Trigger
Location filtering
Enforcement
clsPolicyLocationCollection.SummaryLocations
Outcome
Filtered location set
Confidence
Verified
Tables
CONTACT , LOCATION , LOCATION_VIEW
SQL
SQL-075 , SQL-076 , SQL-077 , SQL-131
Source
Business\SAIF.Business.Policy.Core\clsPolicyLocationCollection.vb:483-486
BR-019: Only location types flagged PolicyLocationFlag = "Y" are
Field
Value
Statement
Only location types flagged PolicyLocationFlag = "Y" are displayed as policy locations
Trigger
Location filtering
Enforcement
clsPolicyLocationCollection.DisplayPolicyLocations
Outcome
Filtered location set
Confidence
Verified
Tables
LOCATION_CODE , LOCATION
SQL
SQL-068 , SQL-069 , SQL-077
Source
Business\SAIF.Business.Policy.Core\clsPolicyLocationCollection.vb:508-510
Field
Value
Statement
When masking is requested, policyholder names, contact identity/contact-method fields and location address/contact fields are replaced with standard masking placeholders
Trigger
Retrieval with MaskData = True
Enforcement
Fill in clsPolicy, clsLocationContact, clsPolicyLocation criteria
Outcome
Masked values from clsConstants.DataMaskingConstants
Confidence
Verified
Tables
CONTACT , CANCELLATION , POLICY_PERIOD_MASTER , BUSINESS , POLICY , LOCATION , LOCATION_VIEW
SQL
SQL-066 , SQL-067 , SQL-070 , SQL-071 , SQL-072 , SQL-073 , SQL-074 , SQL-075 , SQL-076 , SQL-131
Source
Business\SAIF.Business.Policy.Core\clsPolicy.vb:1021-1028
BR-021: Employers-liability limits may be retrieved by statistical code
Field
Value
Statement
Employers-liability limits may be retrieved by statistical code, by explicit limit values, or by the standard-limits flag
Trigger
Limits retrieval
Enforcement
clsEmployerLiabilityLimits.Criteria.RetrieveSQL
Outcome
Predicate selected per RetrieveTypes
Confidence
Verified
Tables
EMPLOYERS_LIABILITY_LIMITS , EMPLOYERS_LIABILITY_FACTORS
SQL
SQL-056 , SQL-057
Source
Business\SAIF.Business.Policy.Core\clsEmployerLiabilityLimits.vb:598-612
BR-022: A policy period must have a non-zero policy
Field
Value
Statement
A policy period must have a non-zero policy number
Trigger
Validation on save
Enforcement
clsPolicyPeriodBase rule ValidPolicyNumber (PolicyNumber <> 0)
Outcome
Error "Error: Policy number is required."
Confidence
Verified
Tables
NON_WCIS_STAT_TRANS
SQL
SQL-084 , SQL-085 , SQL-086 , SQL-087
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodBase.vb:781-784
BR-023: A policy period must have an effective date
Field
Value
Statement
A policy period must have an effective date
Trigger
Validation on save
Enforcement
clsPolicyPeriodBase rule ValidEffectiveDate (EffectiveDate <> Date.MinValue)
Outcome
Error "Error: Effective date is required."
Confidence
Verified
Tables
NON_WCIS_STAT_TRANS
SQL
SQL-084 , SQL-085 , SQL-086 , SQL-087
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodBase.vb:786-789
BR-024: Employers-liability limits must carry a valid statistical code
Field
Value
Statement
Employers-liability limits must carry a valid statistical code
Trigger
Validation on save
Enforcement
clsEmployerLiabilityLimits rule clsEmployersLiabilityLimit01 (field StatCode)
Outcome
Error "Error: Invalid Employers Liability Limits"
Confidence
Verified
SQL
SQL-056
Source
Business\SAIF.Business.Policy.Core\clsEmployerLiabilityLimits.vb:387-397
BR-025: Per-period employers-liability limits must carry a valid statistical
Field
Value
Statement
Per-period employers-liability limits must carry a valid statistical code
Trigger
Validation on save
Enforcement
clsPolicyPeriodEmployerLiabilityLimits rule ValidStatCode
Outcome
Error "Error: Invalid Limits"
Confidence
Verified
Tables
DUAL , POLICY_PERIOD_EMP_LIAB
SQL
SQL-010 , SQL-011 , SQL-031 , SQL-032 , SQL-089 , SQL-090 , SQL-132 , SQL-133 , SQL-153 , SQL-154
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodEmployerLiabilityLimits.vb:474-483
BR-026: An entity type must have a valid code
Field
Value
Statement
An entity type must have a valid code
Trigger
Validation on save
Enforcement
clsEntityType rule clsEntityType01
Outcome
Error "Error: Invalid Code"
Confidence
Verified
Tables
ENTITY_CODE
SQL
SQL-058
Source
Business\SAIF.Business.Policy.Core\clsEntityType.vb:563-570
BR-027: A policy status code must be non-empty
Field
Value
Statement
A policy status code must be non-empty
Trigger
Validation on save
Enforcement
clsPolicyStatusCode rule clsPolicyStatusCode01 (Code.Trim.Length > 0)
Outcome
Error "Error: Policy status code not found."
Confidence
Verified
Tables
POLICY_STATUS_CODE
SQL
SQL-094 , SQL-095
Source
Business\SAIF.Business.Policy.Core\clsPolicyStatusCode.vb:300-303
BR-028: A policy in application status raises a warning
Field
Value
Statement
A policy in application status raises a warning rather than an error
Trigger
Validation on save
Enforcement
clsPolicyStatusCode rule clsPolicyStatusCode02 (RuleType.Warning, returns Not IsApplication)
Outcome
Warning "Warning: Is application status"
Confidence
Verified
Tables
POLICY_STATUS_CODE
SQL
SQL-094 , SQL-095
Source
Business\SAIF.Business.Policy.Core\clsPolicyStatusCode.vb:305-308
BR-029: SAIF's own carrier identity is represented by fixed
Field
Value
Statement
SAIF's own carrier identity is represented by fixed carrier codes: unknown "0", SAIF "1", SAIF ARP "2", SAIF quote "888"
Trigger
Carrier comparison
Enforcement
clsInsuranceCarrier constants
Outcome
Deterministic carrier classification
Confidence
Verified
Tables
DUAL , CARRIER_CODE
SQL
SQL-007 , SQL-029 , SQL-060 , SQL-128 , SQL-151
Source
Business\SAIF.Business.Policy.Core\clsInsuranceCarrier.vb:54-57
BR-030: The service centre office is identified by office
Field
Value
Statement
The service centre office is identified by office code "SERV"
Trigger
Office comparison
Enforcement
clsSAIFOffice.ServiceCenterOfficeCode
Outcome
Deterministic office classification
Confidence
Verified
Tables
DUAL , OFFICE_CODE
SQL
SQL-018 , SQL-019 , SQL-040 , SQL-041 , SQL-102 , SQL-103 , SQL-141 , SQL-142 , SQL-162 , SQL-163
Source
Business\SAIF.Business.Policy.Core\clsSAIFOffice.vb:54,154-157
BR-031: A policy period is flat-cancelled when its effective
Field
Value
Statement
A policy period is flat-cancelled when its effective date equals its cancel date, and a flat-cancelled period has no coverage
Trigger
Coverage determination
Enforcement
clsPolicyPeriodBase.IsFlatCancelled / HasCoverage
Outcome
Boolean coverage flag
Confidence
Verified
SQL
SQL-078 , SQL-079 , SQL-080 , SQL-081 , SQL-082 , SQL-083
Source
Business\SAIF.Business.Policy.Core\clsPolicyPeriodBase.vb:370-385
BR-032: Preliminary audit is required when the WCIS edit
Field
Value
Statement
Preliminary audit is required when the WCIS edit procedure returns flag "1"; regional-office and information-page checks treat "Y" as true
Trigger
WCIS flag inquiry
Enforcement
WCISInquiry.IsPreliminaryAuditRequired, IsRegionalOfficePolicy, IsInformationPagePrinted
Outcome
Boolean
Confidence
Verified
Tables
SUB_CONSTANTS , POLICY_PERIOD , POLICY , WCIS_CONSTANTS
SQL
SQL-078 , SQL-079 , SQL-080 , SQL-081 , SQL-082 , SQL-083 , SQL-106 , SQL-107 , SQL-108 , SQL-109 , SQL-110 , SQL-111 , SQL-112 , SQL-113 , SQL-114 , SQL-115 , SQL-116 , SQL-117 , SQL-118 , SQL-119 , SQL-120 , SQL-121
Source
Business\SAIF.Business.Policy.Core\WCISInquiry.vb:246-372
BR-033: New sequence values for writable entities are obtained
Field
Value
Statement
New sequence values for writable entities are obtained from Oracle sequences via a SELECT … FROM DUAL next-value query before insert
Trigger
Insert lifecycle
Enforcement
Criteria.CreateSQL in 21 criteria classes
Outcome
Assigned key value
Confidence
Verified
Tables
DUAL , CANCEL_REASON_CODE , CANCELLATION , CANCEL_REASON_OVERRIDE , COUNTY , CARRIER_CODE , POLICY_PERIOD_EMP_LIAB , TEAM_FUNCTION_CODE , POLICY_TEAM_FUNCTION , PRIOR_COVERAGE , OFFICE_CODE , WCIS_EMPLOYEE , CARRIER_CHANGE_REASON_CODE
SQL
SQL-001 , SQL-002 , SQL-003 , SQL-004 , SQL-005 , SQL-006 , SQL-007 , SQL-010 , SQL-011 , SQL-013 , SQL-014 , SQL-015 , SQL-016 , SQL-017 , SQL-018 , SQL-019 , SQL-020 , SQL-021 , SQL-022 , SQL-023 , SQL-024 , SQL-025 , SQL-026 , SQL-027 , SQL-028 , SQL-029 , SQL-031 , SQL-032 , SQL-034 , SQL-035 , SQL-036 , SQL-037 , SQL-038 , SQL-039 , SQL-040 , SQL-041 , SQL-042 , SQL-043 , SQL-045 , SQL-046 , SQL-047 , SQL-048 , SQL-049 , SQL-050 , SQL-051 , SQL-052 , SQL-053 , SQL-054 , SQL-055 , SQL-060 , SQL-089 , SQL-090 , SQL-096 , SQL-097 , SQL-098 , SQL-099 , SQL-100 , SQL-101 , SQL-102 , SQL-103 , SQL-104 , SQL-105 , SQL-122 , SQL-123 , SQL-124 , SQL-125 , SQL-126 , SQL-127 , SQL-128 , SQL-132 , SQL-133 , SQL-135 , SQL-136 , SQL-137 , SQL-138 , SQL-139 , SQL-140 , SQL-141 , SQL-142 , SQL-143 , SQL-144 , SQL-145 , SQL-146 , SQL-147 , SQL-148 , SQL-149 , SQL-150 , SQL-151 , SQL-153 , SQL-154 , SQL-156 , SQL-157 , SQL-158 , SQL-159 , SQL-160 , SQL-161 , SQL-162 , SQL-163 , SQL-164 , SQL-165
Source
Business\SAIF.Business.Policy.Core\clsCancellationReason.vb:877-880 (pattern repeated across 21 criteria classes' CreateSQL)
Inherited business rules
Rules in this section originate from BOF framework base classes or services provided by dependency framework libraries.
From clsBusinessBase (SAIF.Framework.Core)
INH-001: Framework rules manager evaluates named rules
Field
Value
Statement
Each clsBusinessBase-derived object owns a clsRulesManager that evaluates registered named rules and records broken-rule state.†
Trigger
Domain code calls Rules.CheckRules(...) or save-time validation runs.
Enforcement
SAIF.Framework.Core BOF base behavior.
Outcome
Broken rules are tracked and exposed back to callers and binding consumers.
Origin
SAIF.Framework.Core - clsBusinessBase
Source
Retrieved from indexed dependency documentation via Legends CLI
From clsBusinessCollectionBase (SAIF.Framework.Core)
INH-002: Collections surface broken-rule state through IDataErrorInfo
Field
Value
Statement
clsBusinessCollectionBase surfaces collection-level broken-rule state through IDataErrorInfo, allowing callers to observe child validation failures without bypassing the BOF rules engine.†
Trigger
Collection validation or save operations encounter one or more broken rules.
Enforcement
SAIF.Framework.Core collection base behavior.
Outcome
Collection save stops at the first failing child and propagates that child's broken rules.†
Origin
SAIF.Framework.Core - clsBusinessCollectionBase
Source
Retrieved from indexed dependency documentation via Legends CLI
Notes
Stored-procedure-specific rules are documented on the individual procedure pages under procedures/ because their logic resides in Oracle.
Note: Statements marked with † are derived from dependency library
documentation via the Legends CLI.
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.Core\clsPolicyPeriodStatus.vb
Business\SAIF.Business.Policy.Core\iPolicyPeriod.vb
Business\SAIF.Business.Policy.Core\clsEntityType.vb
Business\SAIF.Business.Policy.Core\clsPolicyLocationCollection.vb
Business\SAIF.Business.Policy.Core\clsCancelReasonOverride.vb
Business\SAIF.Business.Policy.Core\clsPolicyPeriodBase.vb
Business\SAIF.Business.Policy.Core\clsEmployerLiabilityLimits.vb
Business\SAIF.Business.Policy.Core\WCISInquiry.vb