---
title: clsGroupUnderwritingCriteria
summary: API reference for clsGroupUnderwritingCriteria.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Group
reference_type: package
---

# clsGroupUnderwritingCriteria

Represents the threshold and flag inputs used to decide group underwriting eligibility.

## Purpose
- Represents the threshold and flag inputs used to decide group underwriting eligibility.
- Expose `IsExperienceRatingEarned` and `IsSwingLimited` as typed views over persisted flags ([BR-016](../../../../../business-rules.md#br-016-underwriting-flags-derive-from-stored-yn-values)).

## Context
- Namespace: `SAIF.Business.Policy.Group`
- Assembly/package: `SAIF.Business.Policy.Group`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| CreateDate | `Public ReadOnly Property CreateDate() As Date` | Audit timestamp recorded when the row is created. |
| CreateUser | `Public ReadOnly Property CreateUser() As String` | Audit user recorded when the row is created. |
| UpdateDate | `Public ReadOnly Property UpdateDate() As Date` | Audit timestamp recorded when the row is updated. |
| UpdateUser | `Public ReadOnly Property UpdateUser() As String` | Audit user recorded when the row is updated. |
| GroupAssociationCode | `Public Property GroupAssociationCode() As String` | Owning group association code used to locate related rows. |
| EffectiveDate | `Public Property EffectiveDate() As Date` | Effective date that starts the row's validity period. |
| PremiumThresholdAmount | `Public Property PremiumThresholdAmount() As Decimal` | Premium threshold used in group-eligibility evaluation. |
| ExperienceRatingFactor | `Public Property ExperienceRatingFactor() As Decimal` | Experience-rating factor applied during eligibility evaluation. |
| IsExperienceRatingEarned | `Public Property IsExperienceRatingEarned() As Boolean` | Boolean interpretation of the stored experience-rating-earned flag. |
| ExperienceRatingEarnedFlag | `Public Property ExperienceRatingEarnedFlag() As String` | Stored flag backing `IsExperienceRatingEarned`. |
| LossRatioFactor | `Public Property LossRatioFactor() As Decimal` | Loss-ratio factor used by eligibility evaluation. |
| NewBusinessFrequencyFactor | `Public Property NewBusinessFrequencyFactor() As Decimal` | Frequency factor used for new-business evaluation. |
| RenewalFrequencyFactor | `Public Property RenewalFrequencyFactor() As Decimal` | Frequency factor used for renewal evaluation. |
| SwingLimitedFlag | `Public Property SwingLimitedFlag() As String` | Stored flag backing `IsSwingLimited`. |
| IsSwingLimited | `Public Property IsSwingLimited() As Boolean` | Boolean interpretation of the stored swing-limited flag. |
| ExpirationDate | `Public Property ExpirationDate() As Date` | Optional date that ends the row's validity period.* |
| SignificantClasses | `Public ReadOnly Property SignificantClasses() As clsSignificantClassCollection` | Lazy-loaded collection of significant manual classes for the criteria row. |
| IsValid | `Public Overrides ReadOnly Property IsValid() As Boolean` | Reports whether the underwriting-criteria row currently satisfies BOF validation rules.* |
| IsDirty | `Public Overrides ReadOnly Property IsDirty() As Boolean` | Reports whether the underwriting-criteria row has unsaved edits pending in BOF state tracking.* |
| SetExpDateNull | `Public Sub SetExpDateNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| IsExpDateNull | `Public Function IsExpDateNull() As Boolean` | Reports whether the criteria expiration date is currently unset or database-null.* |
| Equals | `Public Overloads Shared Function Equals(ByVal objA As Object, ByVal objB As Object) As Boolean` | Compares another value with this underwriting-criteria row for business-object equality.* |
| Equals | `Public Overloads Overrides Function Equals(ByVal inObject As Object) As Boolean` | Compares another value with this underwriting-criteria row for business-object equality.* |
| Equals | `Public Overloads Function Equals(ByVal inObject As clsGroupUnderwritingCriteria) As Boolean` | Compares another value with this underwriting-criteria row for business-object equality.* |
| GetHashCode | `Public Overrides Function GetHashCode() As Integer` | Returns a hash code aligned with the underwriting-criteria row's business identity for collection lookups.* |
| ToString | `Public Overrides Function ToString() As String` | Returns a textual representation of the underwriting-criteria row for diagnostics or display.* |
| NewGroupUnderwritingCriteria | `Public Shared Function NewGroupUnderwritingCriteria(ByVal inDataportal As IDataPortalInfo, ByVal inGroupAssociationCode As String, ByVal inEffectiveDate As Date) As clsGroupUnderwritingCriteria` | Creates a new underwriting-criteria row seeded with the group code and effective date for later maintenance.* |
| GetGroupUnderwritingCriteria | `Public Shared Function GetGroupUnderwritingCriteria(ByVal inDataportal As IDataPortalInfo, ByVal inGroupAssociationCode As String, ByVal inEffectiveDate As Date) As clsGroupUnderwritingCriteria` | Loads the effective-dated underwriting-criteria row for the supplied group code. |
| IsValidGroupCode | `Public Function IsValidGroupCode(ByVal inTarget As Object, ByVal e As clsRuleArgs) As Boolean` | Enforces the rule that underwriting criteria must reference a non-blank group code ([BR-017](../../../../../business-rules.md#br-017-underwriting-criteria-requires-a-group-code)). |
| GroupAssociationCode | `Public Property GroupAssociationCode() As String` | Owning group association code used to locate related rows. |
| EffectiveDate | `Public Property EffectiveDate() As Date` | Effective date that starts the row's validity period. |
| New | `Public Sub New(ByVal inDataPortalInfo As IDataPortalInfo)` | Creates a new BOF-backed underwriting-criteria row instance, optionally seeded with its key values for create or retrieve flows.* |
| New | `Public Sub New(ByVal inDataPortalInfo As IDataPortalInfo, ByVal inGroupAssociationCode As String, ByVal inEffectiveDate As Date)` | Creates a new BOF-backed underwriting-criteria row instance, optionally seeded with its key values for create or retrieve flows.* |

## Inherited public members

| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| Rules | `Property Rules As clsRulesManager` | Inherited rules manager that executes registered BOF validation handlers.† | `SAIF.Framework.Core — clsBusinessBase` |
| BeginEdit | `Sub BeginEdit()` | Starts the inherited BOF edit session for the object graph.† | `SAIF.Framework.Core — clsBusinessBase` |
| CancelEdit | `Sub CancelEdit()` | Rolls back the inherited BOF edit session for the object graph.† | `SAIF.Framework.Core — clsBusinessBase` |
| ApplyEdit | `Sub ApplyEdit()` | Commits the inherited BOF edit session for the object graph.† | `SAIF.Framework.Core — clsBusinessBase` |
| SetPreviousLink | `Sub SetPreviousLink(item As ILinkItem)` | Maintains inherited linked-list navigation between BOF objects.† | `SAIF.Framework.Core — clsBusinessBase` |
| SetNextLink | `Sub SetNextLink(item As ILinkItem)` | Maintains inherited linked-list navigation between BOF objects.† | `SAIF.Framework.Core — clsBusinessBase` |
| InsertLinkAfter | `Sub InsertLinkAfter(item As ILinkItem)` | Inserts an inherited link after the current BOF object.† | `SAIF.Framework.Core — clsBusinessBase` |
| InsertLinkBefore | `Sub InsertLinkBefore(item As ILinkItem)` | Inserts an inherited link before the current BOF object.† | `SAIF.Framework.Core — clsBusinessBase` |
| RemoveLinks | `Sub RemoveLinks()` | Clears inherited object links in the BOF graph.† | `SAIF.Framework.Core — clsBusinessBase` |
| Error | `ReadOnly Property Error As String` | Surfaces inherited aggregate broken-rule text through `IDataErrorInfo`.† | `SAIF.Framework.Core — clsBusinessBase` |
| Item | `ReadOnly Property Item(columnName As String) As String` | Surfaces inherited per-member broken-rule text through `IDataErrorInfo`.† | `SAIF.Framework.Core — clsBusinessBase` |
| DumpState | `Public Sub DumpState()` | Emits inherited diagnostic state for the BOF object.† | `SAIF.Framework.Core — clsBusinessBase` |
| AllowCache | `Public Property AllowCache() As Boolean` | Controls whether the inherited BOF object may be cached.† | `SAIF.Framework.Core — clsBusinessBase` |

## Behavioral notes
- Significant classes are resolved lazily through the `SignificantClasses` property.
- Stored flags are exposed as typed booleans ([BR-016](../../../../../business-rules.md#br-016-underwriting-flags-derive-from-stored-yn-values)).

## Constraints and usage notes
- Most create, retrieve, and save flows rely on BOF criteria and data-portal behavior inherited from the framework base layer.†

> **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\\clsGroupUnderwritingCriteria.vb`
