---
title: Proper-case conversion
summary: Converts a caller-supplied string to proper case by delegating to the CorrectAddress vendor service.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-07-30
library: SAIF.Services.CleanAddress
reference_type: package
operation_id: OP-CA-03
trigger: Caller invokes clsCleanAddress.ConvertToProperCase(inString)
---

# Proper-case conversion

Proper-case conversion is a thin wrapper around the CorrectAddress vendor's proper-case operation. It exists so consuming applications can standardize the casing of free-text fields (for example, addresses assembled outside the main [Address cleanse](address-cleanse.md) flow) without depending on the vendor proxy directly.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-CA-03 |
| **Trigger** | Caller invokes `clsCleanAddress.ConvertToProperCase(inString)` |
| **Inputs** | `inString` — the string to convert |
| **Outputs** | Trimmed proper-case `String` |
| **Primary components** | `clsCleanAddress.ConvertToProperCase`, `CleanAddressSvc.clsCAServices` |
| **Entry point** | `Services\SAIF.Services.CleanAddress\clsCleanAddress.vb` |

## Steps

1. Create a new `CleanAddressSvc.clsCAServices` proxy instance and set `AllowAutoRedirect = True` and `UseDefaultCredentials = True`.
2. Call `ConvertToProperCase(inString)` on the proxy.
3. Trim the returned value and return it to the caller.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start([Caller invokes ConvertToProperCase<br>with inString]) --> Proxy[Create clsCAServices proxy]
	Proxy --> Call[Call vendor ConvertToProperCase]
	Call --> Trim[Trim returned string]
	Trim --> Return([Return normalized string])
```

## Failure and edge-case behavior

- The vendor call is not wrapped in a `Try/Catch`; a SOAP fault or transport error propagates to the caller unhandled, unlike [Address cleanse](address-cleanse.md).*
- No null or empty-string guard is applied to `inString` before the call; behavior for null input depends entirely on the vendor service.**

> **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.

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

## Sources
- `Services\SAIF.Services.CleanAddress\clsCleanAddress.vb`
- `Services\SAIF.Services.CleanAddress\Web References\CleanAddressSvc\Reference.vb`
