---
title: Resolve a contact's type and carbon-copy name
summary: Translate policy-document contacts into service recipient codes and CC display text.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Audit.ApiCalls
reference_type: package
operation_id: OP-008
trigger: A caller or serializer reads `ContactType`, `CCName`, or `IsValidContactType` on the contact model.
---

# Resolve a contact's type and carbon-copy name

Translate policy-document contacts into service recipient codes and CC display text.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-008 |
| **Trigger** | A caller or serializer reads `ContactType`, `CCName`, or `IsValidContactType` on the contact model. |
| **Inputs** | `Contact` state or a caller-supplied contact-type code. |
| **Outputs** | Recipient code validation or formatted CC text. |
| **Primary components** | `Contact`, `PolicyHolderContact`, `AgentContact`, `ThirdPartyContact` |
| **Entry point** | `Business\SAIF.Business.Policy.Audit.ApiCalls\PolicyDocumentConfig.cs` |

## Steps

1. Resolve recipient types through the `ValidContactTypes` dictionary so policy holders map to `PH`, agents to `AG`, and third parties to `3P` ([BR-AAC-019](../business-rules.md#br-aac-019-contacts-serialize-to-three-allowed-recipient-codes)).
2. Validate caller-supplied contact-type codes by checking whether the provided value appears in `ValidContactTypes.Values` ([BR-AAC-020](../business-rules.md#br-aac-020-only-configured-recipient-codes-are-valid)).
3. Format carbon-copy names according to contact role: empty for policy holders, formatted name or `name, agency` for agents, and formatted name for third parties ([BR-AAC-021](../business-rules.md#br-aac-021-carbon-copy-names-depend-on-contact-role)).

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
  Start([Read contact metadata]) --> Role[Resolve contact role]
  Role --> Validate[Check valid code when requested]
  Validate --> Name[Build CC display text]
  Name --> Done([Return metadata])
```

## Failure and edge-case behavior

- Unknown codes fail validation instead of being normalized.
- Agent CC formatting depends on whether `AgencyName` is empty.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [Configuration](../configuration.md)

## Sources
- `Business\SAIF.Business.Policy.Audit.ApiCalls\PolicyDocumentConfig.cs`
