Skip to content

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

BR-006: Ownership information is required for all entity types

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

Field Value
Statement A cancellation reason override must carry a valid cancellation sequence number
Trigger Save/validate override
Enforcement clsCancelReasonOverride rule clsCancelReasonOverride.CancellationSeqNum
Outcome Error "Error: Invalid CancellationSeqNum."
Confidence Verified
Tables CANCEL_REASON_OVERRIDE, CANCELLATION, CANCEL_REASON_CODE, CARRIER_CHANGE_REASON_CODE, CARRIER_CODE
SQL SQL-026, SQL-049, SQL-050, SQL-051, SQL-052, SQL-053
Source Business\SAIF.Business.Policy.Core\clsCancelReasonOverride.vb:307-314

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

BR-020: When masking is requested, policyholder names, contact identity/contact-method

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