---
title: Retrieve a correspondence item
summary: Load a correspondence or endorsement by sequence number or by policy-period/code key.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Correspondence
reference_type: package
operation_id: OP-002
trigger: Caller invokes `GetCorrespondence`, `GetInformationPage`, or `GetEndorsement`.
---

# Retrieve a correspondence item

Load a correspondence or endorsement by sequence number or by policy-period/code key.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-002 |
| **Trigger** | Caller invokes `GetCorrespondence`, `GetInformationPage`, or `GetEndorsement`. |
| **Inputs** | Sequence number, or policy number + policy-period effective date + correspondence code. |
| **Outputs** | A populated `clsCorrespondence` or `clsEndorsement`. |
| **Primary components** | `clsCorrespondence.BeforeRetrieve`, `clsCorrespondence.AfterRetrieve`, `clsEndorsement.BeforeRetrieve` |
| **Entry point** | `Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb`; `Business\SAIF.Business.Policy.Correspondence\clsEndorsement.vb` |

## Steps

1. Build the appropriate criteria object and send it through the framework retrieve path† so the data portal can issue a single-row query ([BR-008](../business-rules.md#br-008-correspondence-retrieval-switches-between-two-key-shapes)).
2. `clsCorrespondence.BeforeRetrieve` binds either `:CorrespondenceSequenceNumber` or the policy/period/code tuple, producing either [SQL-005](../sql/SQL-005-saif-business-policy-correspondence.md) or [SQL-006](../sql/SQL-006-saif-business-policy-correspondence.md) ([BR-008](../business-rules.md#br-008-correspondence-retrieval-switches-between-two-key-shapes)).
3. `GetInformationPage` is the same path, but it hard-codes `P401` as the correspondence code ([BR-009](../business-rules.md#br-009-information-page-retrieval-always-uses-code-p401)).
4. Endorsement retrieval swaps in the endorsement-specific criteria, which adds the endorsement filter before binding `:EndorsementSequenceNumber` ([SQL-013](../sql/SQL-013-saif-business-policy-correspondence.md), [BR-001](../business-rules.md#br-001-only-endorsement-coded-correspondence-is-returned)).
5. `AfterRetrieve` reads the first returned row, fills the business object from `ENDORSEMENT` and correlated `OUTPUT_LOG`, then marks the object old ([ENDORSEMENT](../database-tables.md#endorsement), [OUTPUT_LOG](../database-tables.md#output_log)).

## Process flow

The following diagram summarizes the control flow for this operation.

```mermaid
flowchart TD
    Start([Lookup request]) --> Criteria[Build criteria] --> Query[Run retrieve SQL] --> Fill[Fill business object] --> Return([Return loaded object])
```

## Failure and edge-case behavior

- Validation and framework state errors surface through the BOF error collection unless the called dependency throws directly.
- Database-dependent operations rely on the caller-supplied data portal context and Oracle connectivity.
- Imaging reconciliation and stored-procedure wrappers defer cross-system behavior to their external collaborators.

## 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 † are derived from dependency library documentation via the Legends CLI.

## Sources
- ``Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb``
- ``Business\SAIF.Business.Policy.Correspondence\clsEndorsement.vb``
