---
title: SimpleCertifiedMail overview
summary: Which service this proxy calls, who consumes it, and what it is used for.
status: draft
owner: SAIF.Core documentation
last_reviewed: 2026-09-24
---

# SimpleCertifiedMail overview

`SimpleCertifiedMail` calls the third-party SimpleCertifiedMail ADS API† to generate certified-mail shipping labels for legal subpoena documents, through the authored `SimpleCertifiedMailServiceProxy` wrapper carried in `SAIF.Services.Web.Proxies`.

## Purpose
- Generate a certified-mail label image (and optionally save it as a `.gif` file) for a subpoena recipient or opposing-counsel mailing, by calling the third-party `getCertifiedLabel` operation.

## Business context

The called service is a third-party certified-mail vendor. This repository's legal subpoena workflow depends on it to produce mailable labels; when the call fails, the affected recipient's label is skipped and an "invalid address" notification email is sent to support, rather than the whole batch failing.

| Attribute | Value |
| --- | --- |
| Business capability | Certified-mail label generation for legal subpoena mailings |
| Owning team of the called service | Not determined from source — a third-party vendor (SimpleCertifiedMail) |
| Criticality to the consumer | Not determined from source; the calling `SubpoenaLabelService` treats a labeling failure as per-recipient, not batch-fatal |
| Fallback when unavailable | None — the affected label is skipped and an "invalid address" email is sent to support; transport-level failures propagate uncaught in most call paths (see [Tech debt](tech-debt.md)) |

## Consumers

| Consumer | Call site | Operations used | Notes |
| --- | --- | --- | --- |
| `SubpoenaLabelService.GenerateRecipientLabels` | `Services/SAIF.Services/Legal/Subpoenas/SubpoenaLabelService.cs:106` | [`getCertifiedLabel`](reference.md#getcertifiedlabel) | Calls `SaveLabelAsGif` once per subpoena recipient; catches only `SimpleCertifiedException` |
| `SubpoenaLabelService.GenerateOpposingCounselLabel` | `SubpoenaLabelService.cs:135` | [`getCertifiedLabel`](reference.md#getcertifiedlabel) | Calls `SaveLabelAsGif`; still returns the computed label size even when the in-band call fails |
| `SubpoenaLabelService.InitializeLabel` (via `GetDefaultLabelData`) | `SubpoenaLabelService.cs:355` | *(no SOAP call — local only)* | Selects a label size by page count; does not call the remote service |
| `DocumentDeferredService.GetCertifiedLabel` (via `GetDefaultLabelData`) | `Services/SAIF.Services/Documents/DocumentDeferredService.cs:88` | *(no SOAP call — local only)* | Same local sizing helper; no SOAP call |

## Capability summary

| Capability | Operations | Description |
| --- | --- | --- |
| Certified label generation | [`getCertifiedLabel`](reference.md#getcertifiedlabel) | Builds a `CertifiedLabelRequest` from sender/recipient data and credentials, and returns a base64-encoded label image plus an in-band status code |

## Generation provenance

| Aspect | Finding |
| --- | --- |
| Generated by | `svcutil` (Service Reference) |
| Generated from | `Services/SAIF.Services.Web.Proxies/Service References/SimpleCertifiedMail/ADS.wsdl` |
| Discovery document | `Services/SAIF.Services.Web.Proxies/Service References/SimpleCertifiedMail/ADS.disco` |
| Generated namespace | `SAIF.Services.Web.Proxies.SimpleCertifiedMail` |
| Namespace matches the consuming project | Yes — rooted in `SAIF.Services.Web.Proxies`, the project that carries the file |
| Regeneration risk | `Reference.svcmap` sets `GenerateInternalTypes=false`, so a refresh would still generate `public` types; the wrapper's public API (`ISimpleCertifiedMailServiceProxy.GetModeOption`) already depends on the generated `ModeOptions` enum being public, so this is a load-bearing (if undocumented) choice, not an accident to "fix" on refresh |

**Uniform-pattern deviation.** Unlike `PDFService`, `SMTP`, and `WorkCalendar` in the same library, whose generated proxy types are all `internal` (`GenerateInternalTypes=true`), this proxy's generated types are `public` (`GenerateInternalTypes=false`, `Reference.svcmap:8`). This is a deliberate departure from the otherwise-uniform pattern across the library's four SOAP client proxies, and it means the generated `ADSAPISoapClient`, its contract `ADSAPISoap`, and supporting types are part of this library's public API surface.

## Non-documented artifacts

- `Reference.cs`, its serialization attributes, and any `…Async`/`…Completed` event scaffolding are svcutil tool output and are not narrated in this document set; the contract is documented from `ADS.wsdl` and the wrapper's call sites instead.

## Related documentation
- [Client index](index.md)
- [Architecture](architecture.md)
- [Contract](contract.md)
- [Operation map](operation-map.md)
- [Client reference](reference.md)
- [Consumption](consumption.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [Tech debt](tech-debt.md)

## Sources
- `Services/SAIF.Services.Web.Proxies/SimpleCertifiedMailServiceProxy.cs`
- `Services/SAIF.Services.Web.Proxies/Service References/SimpleCertifiedMail/Reference.svcmap`
- `Services/SAIF.Services/Legal/Subpoenas/SubpoenaLabelService.cs`
- `Services/SAIF.Services/Documents/DocumentDeferredService.cs`
