---
title: Create a new correspondence or endorsement
summary: Create an unsaved correspondence or endorsement and seed audit fields and keys.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Correspondence
reference_type: package
operation_id: OP-001
trigger: Caller invokes `NewCorrespondence(...)` or `NewEndoresment(...)`.
---

# Create a new correspondence or endorsement

Create an unsaved correspondence or endorsement and seed audit fields and keys.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-001 |
| **Trigger** | Caller invokes `NewCorrespondence(...)` or `NewEndoresment(...)`. |
| **Inputs** | `IDataPortalInfo`, policy number, correspondence code, effective date, optional policy-period effective date. |
| **Outputs** | A new `clsCorrespondence` or `clsEndorsement` instance marked new. |
| **Primary components** | `clsCorrespondence.Create`, `clsCorrespondence.NewCorrespondence`, `clsEndorsement.NewEndoresment` |
| **Entry point** | `Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb`; `Business\SAIF.Business.Policy.Correspondence\clsEndorsement.vb` |

## Steps

1. Call the BOF create path with a fresh criteria object so the framework can instantiate the business object and execute the inherited create lifecycle† ([BR-006](../business-rules.md#br-006-new-correspondence-uses-the-endorsement_seq-sequence)).
2. `clsCorrespondence.Create()` requests the next `Endorsement_Seq` value through the data portal and assigns it to `CorrespondenceSequenceNumber` ([SQL-001](../sql/SQL-001-saif-business-policy-correspondence.md), [BR-006](../business-rules.md#br-006-new-correspondence-uses-the-endorsement_seq-sequence)).
3. The same create method stamps `CreateUser`, `CreateDate`, and `CorrespondenceDate` from `IDataPortalInfo` rather than from the client clock ([BR-007](../business-rules.md#br-007-create-stamps-audit-fields-from-the-data-portal)).
4. The factory method assigns the caller-supplied policy number, effective date, and correspondence code to the in-memory object.
5. The endorsement factory also stores the policy-period effective date and registers the endorsement-specific validation rule ([BR-004](../business-rules.md#br-004-endorsements-require-a-policy-period-effective-date)).

## Process flow

The following diagram summarizes the control flow for this operation.

```mermaid
flowchart TD
    Start([Factory called]) --> Create[BOF create path] --> Seq[Get Endorsement_Seq] --> Stamp[Stamp audit fields] --> Return([Return new 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``
