---
title: Retrieve corporate officer exemptions for a policy
summary: Operation details for Retrieve corporate officer exemptions for a policy.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Affiliate
reference_type: package
operation_id: OP-010
trigger: A caller requests every corporate officer exemption attached to one policy.
---

# Retrieve corporate officer exemptions for a policy

This operation documents how `clsCorporateOfficerExemptionCollection.GetCorporateOfficerExemptionCollection` fulfills the policy-affiliate behavior described for `SAIF.Business.Policy.Affiliate`.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-010 |
| **Trigger** | A caller requests every corporate officer exemption attached to one policy. |
| **Inputs** | `IDataPortalInfo`, policy number |
| **Outputs** | `clsCorporateOfficerExemptionCollection` |
| **Primary components** | `clsCorporateOfficerExemptionCollection.GetCorporateOfficerExemptionCollection` |
| **Entry point** | `Business\SAIF.Business.Policy.Affiliate\clsCorporateOfficerExemptionCollection.vb` |

## Steps

1. Construct collection criteria from the policy number and delegate retrieval to the BOF data-access layer.
2. Assign [SQL-003](../sql/SQL-003-saif-business-policy-affiliate.md) and bind `:PolicyNumber` for [CORP_OFFICER_EXEMPTION](../database-tables.md#corp_officer_exemption).
3. Iterate each result-set row, create a child exemption object, load it from the row, and add it to the collection.
4. Return the populated collection.

## Process flow
The following diagram shows the policy-scoped result-set iteration used to hydrate each child exemption.

```mermaid
flowchart TD
  Start(["Caller supplies policy number"]) --> Criteria["Build collection Criteria"]
  Criteria --> Before["Assign SQL-003;<br>bind :PolicyNumber against CORP_OFFICER_EXEMPTION"]
  Before --> Iterate["Iterate result-set rows"]
  Iterate --> Child["Create child exemption object,<br>load it from the row, add to collection"]
  Child --> More{"More rows?"}
  More -->|Yes| Iterate
  More -->|No| Result(["Return populated collection"])
```

## Failure and edge-case behavior

- The collection page focuses on policy-level grouping; per-exemption classification happens on each child object.

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

## Sources
- `Business\SAIF.Business.Policy.Affiliate\clsCorporateOfficerExemptionCollection.vb`
