SAIF.Business.Policy.Group business rules
This page captures business rules enforced by SAIF.Business.Policy.Group.
BR-001: Group association code is required
Field
Value
Statement
A group association must have a non-empty group code.
Trigger
Validation of clsGroupAssociation
Enforcement
ValidGroupAssociation (clsGroupAssociation.vb:1144-1150), <RuleData("ValidGroupAssociation", "Error: Invalid group.")>
Outcome
"Error: Invalid group."
Confidence
Verified
Source
Business\SAIF.Business.Policy.Group\clsGroupAssociation.vb:1147-1149
BR-002: Group expiration is date-effective
Field
Value
Statement
A group is considered expired as of a date when it has an expiration date and that date is on or before the as-of date; a group with no expiration date is never expired.
Trigger
IsExpired / NotExpired filter
Enforcement
clsGroupAssociation.IsExpired (:589), GroupAssociationExtensions.NotExpired (clsGroupAssociationCollection.vb:560)
Outcome
Group included in / excluded from the active set
Confidence
Verified
Source
Business\SAIF.Business.Policy.Group\clsGroupAssociation.vb:589-593
BR-003: Group type derives from stored code
Field
Value
Statement
Group type is derived from the stored code: SERV=Service, OGSER=OGSERP, LGMAP=LargeGroupMemberAlliance, PARNT=Parent, ENDOR=Endorsing, INQUR=Inquiry; anything else is Unknown/empty.
Trigger
GroupType read or write
Enforcement
clsGroupAssociation.ConvertGroupType (:102,121)
Outcome
Typed classification
Confidence
Verified
Source
Business\SAIF.Business.Policy.Group\clsGroupAssociation.vb:102-132
BR-004: SalesPlan excludes listed plan codes
Field
Value
Statement
The SalesPlan filter returns groups whose plan code is not in the supplied sales-plan code list.
Trigger
Collection filtering
Enforcement
GroupAssociationExtensions.SalesPlan (clsGroupAssociationCollection.vb:565,570)
Outcome
Filtered enumerable (note the negation — the name reads as an inclusion filter but the predicate is Not ... IsIn(...))*
Confidence
Inferred
Source
Business\SAIF.Business.Policy.Group\clsGroupAssociationCollection.vb:565-571
BR-005: Group exposes a placeholder chapter when none exist
Field
Value
Statement
A group must always expose at least one chapter; when a group has no chapter rows, a placeholder chapter with a blank code is created in memory.
Trigger
First access to clsGroupAssociation.Chapters
Enforcement
clsGroupAssociation.vb:601-611
Outcome
Placeholder clsChapter added
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsGroupAssociation.vb
BR-006: Chapter activity is bounded by effective dates
Field
Value
Statement
A chapter is active on a date when the date is on or after its effective date and strictly before its expiration date.
Trigger
ActiveChapters filter
Enforcement
ChapterExtensions.ActiveChapters (clsChapterCollection.vb:292)
Outcome
Chapter included / excluded
Confidence
Verified
Source
Business\SAIF.Business.Policy.Group\clsChapterCollection.vb:288-290
BR-007: New chapter seeds key values and starts clean
Field
Value
Statement
A newly created chapter inherits the group association code and chapter code from its criteria and starts in the clean state.
Trigger
clsChapter.Create()
Enforcement
clsChapter.vb:144-150
Outcome
MarkClean() — new chapter is not dirty until edited
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsChapter.vb
BR-008: Chapter retrieval is as-of-date effective
Field
Value
Statement
A chapter is retrieved as of a select date, so only the chapter row effective on that date is returned.
Trigger
GetChapter
Enforcement
clsChapter.vb:269, Criteria.New(..., inSelectDate) (:396)
Outcome
Date-effective row selection
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsChapter.vb
BR-009: Insert must affect exactly one row
Field
Value
Statement
An insert that affects a row count other than 1 is a failure.
Trigger
AfterInsert
Enforcement
clsGroupAssociation.vb:781, clsClassSignificance.vb:302, clsGroupUnderwritingCriteria.vb:383, clsPolicyPeriodGroupAssociation.vb:328, clsSignificantClass.vb:290, clsGroupAssociationCollection.vb:199, clsSignificantClassCollection.vb:200
Outcome
AddErrorMessage("InsertError", "Insert Failed"); object not marked old
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsGroupAssociation.vb
BR-010: Update must affect exactly one row
Field
Value
Statement
An update that affects a row count other than 1 indicates database contention.
Trigger
AfterUpdate
Enforcement
clsGroupAssociation.vb:869, clsClassSignificance.vb:365, clsGroupUnderwritingCriteria.vb:452, clsPolicyPeriodGroupAssociation.vb:395, clsSignificantClass.vb:348
Outcome
AddErrorMessage("UpdateError", Messages.DBContentionError)
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsGroupAssociation.vb
BR-011: Delete must affect exactly one row
Field
Value
Statement
A delete that affects a row count other than 1 indicates database contention; a successful delete returns the in-memory object to the new state.
Trigger
AfterDelete
Enforcement
clsGroupAssociation.vb:719, clsClassSignificance.vb:266, clsGroupUnderwritingCriteria.vb:341, clsPolicyPeriodGroupAssociation.vb:288, clsSignificantClass.vb:257
Outcome
AddErrorMessage("DeleteError", Messages.DBContentionError) or MarkNew()
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsGroupAssociation.vb
BR-012: Collection persistence reports generic failure messages
Field
Value
Statement
Collection-level persistence failures report generic messages rather than the framework contention message.
Trigger
Collection AfterInsert/AfterUpdate/AfterDelete
Enforcement
clsGroupAssociationCollection.vb:179,199,251; clsSignificantClassCollection.vb:178,200,265
Outcome
"Insert Failed" / "Update Failed" / "Delete Failed"
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsGroupAssociationCollection.vb
BR-013: Group discount code is required
Field
Value
Statement
A group discount must reference a non-empty group association code.
Trigger
Validation of clsGroupAssociationDiscount
Enforcement
ValidGroupDiscount (clsGroupAssociationDiscount.vb:495-501), <RuleData("ValidGroupDiscount", "Error: Invalid group discount.")>
Outcome
"Error: Invalid group discount."
Confidence
Verified
Source
Business\SAIF.Business.Policy.Group\clsGroupAssociationDiscount.vb:498-500
BR-014: Discount factor returns non-applicable when invalid
Field
Value
Statement
The adjusted rate factor contributed by a group discount is the stored group discount only when the discount object is valid; otherwise the non-applicable factor is returned.
Trigger
Rating engine reads Factor
Enforcement
clsGroupAssociationDiscount.Factor (:133-145)
Outcome
GroupDiscount or NonApplicableAdjustedRateFactor
Confidence
Verified
Source
Business\SAIF.Business.Policy.Group\clsGroupAssociationDiscount.vb:133-141
BR-015: Pending flag marks a tentative discount
Field
Value
Statement
A group discount is tentative when its pending flag is set.
Trigger
IsTentative read
Enforcement
clsGroupAssociationDiscount.vb:126-130 (PENDING_FLAG column)
Outcome
Boolean classification
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsGroupAssociationDiscount.vb
BR-016: Underwriting flags derive from stored Y/N values
Field
Value
Statement
Experience-rating-earned and swing-limited status are derived from their persisted flag columns.
Trigger
IsExperienceRatingEarned / IsSwingLimited read
Enforcement
clsGroupUnderwritingCriteria.vb (ExperienceRatingEarnedFlag, SwingLimitedFlag)
Outcome
Boolean classification
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsGroupUnderwritingCriteria.vb
BR-017: Underwriting criteria requires a group code
Field
Value
Statement
A group underwriting criteria record must reference a group code with at least one non-blank character.
Trigger
Validation of clsGroupUnderwritingCriteria
Enforcement
IsValidGroupCode (clsGroupUnderwritingCriteria.vb:577-583), <RuleData("clsGroupUnderwritingCriteria.IsValidGroupCode", "Error: Group Code is required.")>
Outcome
"Error: Group Code is required."
Confidence
Verified
Source
Business\SAIF.Business.Policy.Group\clsGroupUnderwritingCriteria.vb:580-583
BR-018: Significant class is period-effective
Field
Value
Statement
A significant class applies to a policy period when the period effective date is on or after the class-significance effective date and strictly before its expiration date.
Trigger
PerPolicyPeriod filter
Enforcement
SignificantClassExtensions.PerPolicyPeriod (clsSignificantClassCollection.vb:512)
Outcome
Class included / excluded from the period's evaluation
Confidence
Verified
Source
Business\SAIF.Business.Policy.Group\clsSignificantClassCollection.vb:508-510
BR-019: Include/exclude flag drives significance
Field
Value
Statement
A class-significance record is an inclusion when its include/exclude flag is I; every other value is treated as an exclusion.
Trigger
Significance read
Enforcement
clsClassSignificance.Significance property
Outcome
Significances.Included / Significances.Excluded
Confidence
Verified
Source
Business\SAIF.Business.Policy.Group\clsClassSignificance.vb:91-97
BR-020: Significant-class filters follow significance
Field
Value
Statement
A significant class is an included class when its class significance is Included, and an excluded class when it is Excluded.
Trigger
IncludedClasses / ExcludedClasses filters
Enforcement
clsSignificantClass.vb:138-148; clsSignificantClassCollection.vb:513,518
Outcome
Filtered enumerables
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsSignificantClass.vb
BR-021: Writes stamp update date and user
Field
Value
Statement
Every update and delete of group eligibility, underwriting, significant-class, group and policy-period-group rows stamps the update date and update user (max 30 characters) from the object state.
Trigger
BeforeUpdate / BeforeDelete
Enforcement
clsClassSignificance.vb:287,350; clsGroupUnderwritingCriteria.vb:369,438; clsSignificantClass.vb:278,336; clsPolicyPeriodGroupAssociation.vb:314,381; clsGroupAssociation.vb:744,832
Outcome
Audit columns written
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsClassSignificance.vb
BR-022: Policy period group membership uses a composite key
Field
Value
Statement
A policy period's group membership is keyed by policy number plus policy period effective date, and carries the group code, membership effective date, and optional expiration date, termination date, chapter code and membership type code.
Trigger
Policy-period group link create/retrieve
Enforcement
clsPolicyPeriodGroupAssociation.vb:518-540,608-680
Outcome
POLICY_PERIOD_GROUP_ASSOC row
Confidence
Verified
Source
Business\\SAIF.Business.Policy.Group\\clsPolicyPeriodGroupAssociation.vb
Field
Value
Statement
A group's chapters, and a chapter's contact, are loaded on demand rather than eagerly with the parent object.
Trigger
First property access
Enforcement
clsGroupAssociation.Chapters (:601), clsChapter.Contact
Outcome
Deferred database read
Confidence
Verified
Source
Business\SAIF.Business.Policy.Group\clsGroupAssociation.vb:601-609
Inherited business rules
Rules in this section originate from shared BOF framework behavior and are enforced through inherited base-class logic.
From clsBusinessBase (SAIF.Framework.Core)
INH-001: Framework rule execution
Field
Value
Statement
Inherited BOF business objects execute registered rule handlers through a shared rules manager before callers rely on IsValid.†
Trigger
Property updates, explicit rule checks, and save validation paths.†
Enforcement
Inherited clsBusinessBase / clsRulesManager flow.†
Outcome
Broken-rule state is captured and surfaced back to callers through the BOF validation interfaces.†
Confidence
Verified
Origin
SAIF.Framework.Core — clsBusinessBase
Source
Retrieved from indexed documentation via Legends CLI
From clsBusinessCollectionBase (SAIF.Framework.Core)
INH-002: Broken-rule tracking and surfacing
Field
Value
Statement
Inherited BOF collections surface broken-rule state through IDataErrorInfo without requiring callers to inspect each child directly.†
Trigger
Collection validation or child-save failures.†
Enforcement
Inherited clsBusinessCollectionBase validation behavior.†
Outcome
Collection-level error text reflects the first failing child or collection validation state.†
Confidence
Verified
Origin
SAIF.Framework.Core — clsBusinessCollectionBase
Source
Retrieved from indexed documentation via Legends CLI
Notes
Rule identifiers in this document are documentation identifiers for this library set.
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 † were retrieved from dependency library documentation via the Legends CLI RAG service.
Sources
Business\SAIF.Business.Policy.Group\clsChapter.vb
Business\SAIF.Business.Policy.Group\clsChapterCollection.vb
Business\SAIF.Business.Policy.Group\clsClassSignificance.vb
Business\SAIF.Business.Policy.Group\clsContact.vb
Business\SAIF.Business.Policy.Group\clsGroupAssociation.vb
Business\SAIF.Business.Policy.Group\clsGroupAssociationCollection.vb
Business\SAIF.Business.Policy.Group\clsGroupAssociationDiscount.vb
Business\SAIF.Business.Policy.Group\clsGroupAssociationDiscountCollection.vb
Business\SAIF.Business.Policy.Group\clsGroupUnderwritingCriteria.vb
Business\SAIF.Business.Policy.Group\clsPolicyPeriodGroupAssociation.vb
Business\SAIF.Business.Policy.Group\clsSignificantClass.vb
Business\SAIF.Business.Policy.Group\clsSignificantClassCollection.vb