---
title: Retrieve a corporate officer exemption
summary: Operation details for Retrieve a corporate officer exemption.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Affiliate
reference_type: package
operation_id: OP-009
trigger: A caller needs one corporate officer exemption by sequence number.
---

# Retrieve a corporate officer exemption

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

| Field | Value |
| --- | --- |
| **Operation ID** | OP-009 |
| **Trigger** | A caller needs one corporate officer exemption by sequence number. |
| **Inputs** | `IDataPortalInfo`, exemption sequence number |
| **Outputs** | `clsCorporateOfficerExemption` |
| **Primary components** | `clsCorporateOfficerExemption.GetCorporateOfficerExemption` |
| **Entry point** | `Business\SAIF.Business.Policy.Affiliate\clsCorporateOfficerExemption.vb` |

## Steps

1. Construct the exemption criteria from the supplied sequence number and delegate retrieval to the BOF data-access layer.
2. Assign [SQL-002](../sql/SQL-002-saif-business-policy-affiliate.md) and bind `:CorporateOfficerExempSeqNum` for [CORP_OFFICER_EXEMPTION](../database-tables.md#corp_officer_exemption).
3. Read the first result-set row if present and map exemption identity, policy linkage, reason code, affiliate SSN, dates, and audit values; otherwise leave the object at defaults ([BR-AFF-001](../business-rules.md#br-aff-001-missing-key-retrieval-returns-a-default-object)).
4. Mark the object old and return it to the caller.

## Process flow
The following diagram shows the sequence-keyed exemption retrieval and its default-object fallback.

```mermaid
flowchart TD
  Start(["Caller supplies exemption sequence number"]) --> Criteria["Build exemption Criteria"]
  Criteria --> Before["Assign SQL-002;<br>bind :CorporateOfficerExempSeqNum against CORP_OFFICER_EXEMPTION"]
  Before --> Query{"Row returned?"}
  Query -->|Yes| Map["Map identity, policy linkage, reason code,<br>affiliate SSN, dates, and audit values"]
  Query -->|No| Default["Leave object at default values"]
  Map --> MarkOld["Mark object old"]
  Default --> MarkOld
  MarkOld --> Result(["Return clsCorporateOfficerExemption"])
```

## Failure and edge-case behavior

- Corporate-officer details are not loaded automatically; they are resolved lazily only when requested.

## 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\clsCorporateOfficerExemption.vb`
