Skip to content

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

BR-023: Chapters and contacts load lazily

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