This page captures the rules enforced by SAIF.Business.Policy.Affiliate and the inherited BOF behavior it relies on.
BR-AFF-001: Missing-key retrieval returns a default object¶
Field
Value
Statement
Retrieval of a non-existent affiliate, interested party, preferred worker, or exemption returns a default-initialized object instead of raising an error.
Trigger
A keyed retrieve operation completes without a matching row.
Enforcement
AfterRetrieve checks for a row before calling Fill.
Outcome
Callers receive an object whose key and data fields remain at their initial values.
BR-AFF-005: Association windows use overlap semantics¶
Field
Value
Statement
Collection retrievals include an association when its effective date is before the requested end date and its cancel date is after the requested start date, treating null cancel dates as open-ended.
Trigger
An interested-party or preferred-worker collection is retrieved with a date window.
BR-AFF-008: Interested-party active filters honor effective and cancel dates¶
Field
Value
Statement
An interested party is active as of a date when its effective date is on or before that date and its cancel date is either null or later than that date.
Trigger
InterestdParyExtensions.Active is applied.
Enforcement
The extension filters by EffectiveDate and CancelDate.
Outcome
Consumers can derive the in-force interested-party subset for a date.
BR-AFF-010: Eligibility rows must cover both effective and cancel dates¶
Field
Value
Statement
A preferred-worker eligibility row qualifies only when its window contains the association effective date and also contains the association cancel date, defaulting a missing cancel date to 12/31/9999.
Trigger
Lazy eligibility loading executes for a preferred worker.
Enforcement
GetPreferredWorkerData filters on both dates with nvl and Oracle date literals.
Outcome
Only a fully covering eligibility row can populate preferred-worker details.
When no preferred-worker eligibility row matches, the preferred-worker identifier and contract type become empty strings and both eligibility dates become Date.MinValue.
Trigger
The lazy eligibility query returns no rows.
Enforcement
GetPreferredWorkerData assigns sentinel values before returning.
Outcome
Later property reads see a stable empty eligibility state without repeating the query.
INH-AFF-001: BOF base classes surface broken-rule state¶
Field
Value
Statement
BOF business objects surface broken-rule state through the framework rules manager and IDataErrorInfo. This behavior is inherited from clsBusinessBase in SAIF.Framework.Core.
Trigger
A BOF-derived business object evaluates or exposes its validation state.
Enforcement
clsBusinessBase owns a clsRulesManager that tracks failed rules as clsBrokenRule entries, and implements the IDataErrorInfoError/Item members to expose that broken-rule state to data-binding consumers.
Outcome
UI and service consumers can read validation errors through IDataErrorInfo without re-implementing rule plumbing or querying the rules engine directly.
Confidence
Verified — confirmed against the SAIF.Framework.Core business-rules documentation via the Legends CLI.
Origin
SAIF.Framework.Core — clsBusinessBase
Source
SAIF.Framework.Core business-rules documentation, BR-002 "Broken-rule tracking and surfacing" (citing SAIF.Framework.Core\V1\BusinessRules\clsRulesManager.vb and SAIF.Framework.Core\V1\BaseItems\clsBusinessBase.vb), retrieved via the Legends CLI.
From clsBusinessCollectionBase (SAIF.Framework.Core)¶
INH-AFF-002: BOF collections expose traversal and validation surfaces¶
Field
Value
Statement
BOF collections expose a collection-level IDataErrorInfo validation surface through the shared framework base class, and are inferred to provide current-item traversal following the same BOF collection conventions.* This behavior is inherited from clsBusinessCollectionBase in SAIF.Framework.Core.
Trigger
A collection consumer traverses items or reads collection-level validation state.
Enforcement
clsBusinessCollectionBase implements the IDataErrorInfoError/Item members, surfacing broken-rule state to derived collections; current-item traversal members are assumed present based on standard BOF collection conventions.*
Outcome
Interested-party and preferred-worker collections inherit consistent IDataErrorInfo validation semantics, and are inferred to inherit consistent current-item traversal semantics.*
Confidence
Partially verified — the IDataErrorInfo validation surface is confirmed against the SAIF.Framework.Core business-rules documentation via the Legends CLI; current-item traversal behavior is inferred from BOF naming conventions and was not directly confirmed in that documentation.
Origin
SAIF.Framework.Core — clsBusinessCollectionBase
Source
SAIF.Framework.Core business-rules documentation, BR-002 "Broken-rule tracking and surfacing" (citing SAIF.Framework.Core\V1\BusinessRules\clsRulesManager.vb and SAIF.Framework.Core\V1\BaseItems\clsBusinessBase.vb), retrieved 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.