---
title: Retrieve endorsement collections for a policy or policy period
summary: Load all endorsements for a policy, optionally constrained to one policy period.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Correspondence
reference_type: package
operation_id: OP-003
trigger: Caller invokes one of the `GetEndorsements(...)` overloads.
---

# Retrieve endorsement collections for a policy or policy period

Load all endorsements for a policy, optionally constrained to one policy period.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-003 |
| **Trigger** | Caller invokes one of the `GetEndorsements(...)` overloads. |
| **Inputs** | Policy number, with optional period effective and expiration dates. |
| **Outputs** | A populated `clsEndorsementCollection`. |
| **Primary components** | `clsEndorsementCollection.BeforeRetrieve`, `clsEndorsementCollection.AfterRetrieve`, `clsEndorsementCollection.Criteria.RetrieveSQL` |
| **Entry point** | `Business\SAIF.Business.Policy.Correspondence\clsEndorsementCollection.vb` |

## Steps

1. Choose the collection overload that matches the caller scope: policy-wide retrieval uses only the policy number, while period-scoped retrieval stores effective and expiration dates in the criteria object.
2. `BeforeRetrieve` always binds `:PolicyNumber` and binds the period parameters only when `RetrievalType = ByPolicyPeriod` ([BR-002](../business-rules.md#br-002-policy-period-filters-bind-only-for-period-scoped-retrieval)).
3. The criteria SQL always filters to endorsement rows by requiring a matching `ENDORSE_CODE` row with `CORRESPOND_TYPE_CODE = E` ([SQL-014](../sql/SQL-014-saif-business-policy-correspondence.md), [BR-001](../business-rules.md#br-001-only-endorsement-coded-correspondence-is-returned)).
4. In period-scoped mode the SQL left-joins [POLICY_PERIOD](../database-tables.md#policy_period) and applies the source-system-specific overlap rules ([SQL-015](../sql/SQL-015-saif-business-policy-correspondence.md), [BR-003](../business-rules.md#br-003-policy-period-membership-depends-on-source-system-rules)).
5. `AfterRetrieve` hydrates each row into a `clsEndorsement` and can reuse a pre-fetched correspondence-code catalog when a transaction is pending ([SQL-009](../sql/SQL-009-saif-business-policy-correspondence.md), [BR-010](../business-rules.md#br-010-transaction-pending-endorsement-loads-reuse-a-pre-fetched-code-collection)).

## Process flow

The following diagram summarizes the control flow for this operation.

```mermaid
flowchart TD
    Start([Collection request]) --> Bind[Bind policy inputs] --> Query[Run endorsement collection SQL] --> Load[Load endorsements] --> Return([Return collection])
```

## 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)

## Sources
- ``Business\SAIF.Business.Policy.Correspondence\clsEndorsementCollection.vb``
