---
title: Evaluate group underwriting eligibility inputs
summary: Retrieve underwriting criteria and significant-class inputs for group eligibility evaluation.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Group
reference_type: package
operation_id: OP-008
trigger: Underwriting evaluates whether a policy qualifies for a group
---

# Evaluate group underwriting eligibility inputs

Loads the underwriting thresholds for a group and the significant classes that callers evaluate for the applicable policy period.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-008 |
| **Trigger** | Underwriting evaluates whether a policy qualifies for a group |
| **Inputs** | — |
| **Outputs** | Criteria flags, threshold values, and filtered significant classes. |
| **Primary components** | `clsGroupUnderwritingCriteria.GetGroupUnderwritingCriteria`, `SignificantClasses` |
| **Entry point** | `Business\SAIF.Business.Policy.Group\clsGroupUnderwritingCriteria.vb` |

## Steps

1. Retrieve the criteria row (`GROUP_UNDERWRITING_CRITERIA`) for the group as of the effective date; `BeforeRetrieve` binds `:GroupAssociationCode` (max length 5) and the effective date.
2. `AfterRetrieve` fills premium threshold, experience-rating factor, experience-rating-earned flag, loss-ratio factor, new-business and renewal frequency factors, swing-limited flag and expiration date.
3. `IsExperienceRatingEarned` and `IsSwingLimited` translate the persisted Y/N flag columns to booleans. ([BR-016](../business-rules.md#br-016-underwriting-flags-derive-from-stored-yn-values))
4. `SignificantClasses` resolves the group's significant-class list via `clsSignificantClassCollection.GetSignificantClasses(dpi, groupAssociationCode)`.
5. Callers narrow the class list with `PerPolicyPeriod(policyPeriodEffectiveDate)`, `IncludedClasses()` and `ExcludedClasses()`. ([BR-017](../business-rules.md#br-017-underwriting-criteria-requires-a-group-code), [BR-018](../business-rules.md#br-018-significant-class-is-period-effective))
6. Database statements executed or relied on by this operation: [SQL-005](../sql/SQL-005-saif-business-policy-group.md), [SQL-013](../sql/SQL-013-saif-business-policy-group.md), [SQL-025](../sql/SQL-025-saif-business-policy-group.md), [SQL-033](../sql/SQL-033-saif-business-policy-group.md), [SQL-041](../sql/SQL-041-saif-business-policy-group.md); affected tables: [DUAL](../database-tables.md#dual), [GROUP_UNDERWRITING_CRITERIA](../database-tables.md#group_underwriting_criteria).

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
    Start([Trigger]) --> Step1[Build criteria / load state]
    Step1 --> Step2[Apply local business logic]
    Step2 --> Decision{Valid and complete?}
    Decision -->|Yes| Step3[Return data or persist rows]
    Decision -->|No| EndErr([Return BOF validation or SQL-state issues])
    Step3 --> EndOk([Operation completes])
```

## Failure and edge-case behavior

- The create/update/delete SQL for underwriting criteria ([SQL-005](../sql/SQL-005-saif-business-policy-group.md), [SQL-013](../sql/SQL-013-saif-business-policy-group.md), [SQL-033](../sql/SQL-033-saif-business-policy-group.md), [SQL-041](../sql/SQL-041-saif-business-policy-group.md)) exposes unresolved create-path tokens and truncated write/delete statements.**

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

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