---
title: Link a policy period to a group
summary: Create, retrieve, update, or delete a policy-period group-membership row.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Group
reference_type: package
operation_id: OP-010
trigger: A policy period is enrolled in, changed within, or terminated from a group
---

# Link a policy period to a group

Maintains the effective-dated link between a policy period and its group membership details.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-010 |
| **Trigger** | A policy period is enrolled in, changed within, or terminated from a group |
| **Inputs** | — |
| **Outputs** | A persisted or retrieved `clsPolicyPeriodGroupAssociation`. |
| **Primary components** | `clsPolicyPeriodGroupAssociation` factory and persistence members |
| **Entry point** | `Business\SAIF.Business.Policy.Group\clsPolicyPeriodGroupAssociation.vb` |

## Steps

1. Create or retrieve the link row keyed by `:PolicyNumber` + `:PolicyPeriodEffectiveDate` against `POLICY_PERIOD_GROUP_ASSOC`.
2. Set `GroupAssociationCode`, `GroupMembershipEffectiveDate`, optional `GroupMembershipExpirationDate`, optional `GroupTerminationDate`, optional `ChapterCode` and optional `GroupMembershipTypeCode`. ([BR-022](../business-rules.md#br-022-policy-period-group-membership-uses-a-composite-key))
3. `GroupAssociation` lazily resolves the full `clsGroupAssociation` for the stored code.\*
4. Save runs the standard `Before*`/`After*` insert/update/delete cycle with row-count contention checks ([BR-009](../business-rules.md#br-009-insert-must-affect-exactly-one-row), [BR-010](../business-rules.md#br-010-update-must-affect-exactly-one-row), [BR-011](../business-rules.md#br-011-delete-must-affect-exactly-one-row)).
5. Database statements executed or relied on by this operation: [SQL-006](../sql/SQL-006-saif-business-policy-group.md), [SQL-014](../sql/SQL-014-saif-business-policy-group.md), [SQL-026](../sql/SQL-026-saif-business-policy-group.md), [SQL-034](../sql/SQL-034-saif-business-policy-group.md), [SQL-042](../sql/SQL-042-saif-business-policy-group.md); affected tables: [DUAL](../database-tables.md#dual), [POLICY_PERIOD_GROUP_ASSOC](../database-tables.md#policy_period_group_assoc).
6. Inherited BOF save behavior validates the object or collection, executes the configured criteria SQL, and surfaces row-count failures back on the business object before the caller continues.†

## 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-path sequence read [SQL-006](../sql/SQL-006-saif-business-policy-group.md) still uses a placeholder token rather than executable Oracle sequence syntax.**

## 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.
> Statements marked with `†` were retrieved from dependency library documentation via the Legends CLI RAG service.

## Sources
- `Business\SAIF.Business.Policy.Group\clsPolicyPeriodGroupAssociation.vb`
