# CMP-139 — Each declared sub-use case needs its own sample message

> A campaign declaring sub-use cases must carry at least one sample message for each of them.

- **Rule ID:** CMP-139
- **Layer:** Campaign (`CAMPAIGN`)
- **Checks:** `campaign.sample[] + campaign.sub_use_cases[]`
- **Severity:** BLOCKING — Breaking this rule gets the submission rejected outright.
- **When it bites:** Gates approval — get this wrong and registration is refused
- **How it is detected:** Deterministic (settled in code from the submitted values)
- **Fix type:** Fix the field — a better value in the form clears it
- **Required by:** Bandwidth, Telnyx, AWS, Sinch, Bird, Vonage
- **Applies:** Applies to every 10DLC registration.
- **Canonical URL:** https://ekas.io/rules/10dlc/campaign/cmp-139/

## Why this rule exists

A MIXED campaign is several programmes sharing one registration, and a reviewer approves each of them on the strength of a sample. Declaring five sub-use cases and supplying two samples asks them to approve three programmes they have not seen, so they refuse — and the rejection names the sample count, which sends the submitter to add generic samples rather than to the sub-use case that had nothing behind it.

## How to fix it

Write one sample per declared sub-use case, each showing that sub-use case and nothing else. Done when you can point at the sample that justifies every sub-use case you ticked — and if you cannot write one, untick it.

## Example of a compliant value

```text
Sub-use cases MARKETING + DELIVERY_NOTIFICATION → sample1 "Acme Coffee: 20% off all beans this weekend. Reply STOP to opt out." and sample2 "Acme Coffee: your order #4471 ships today. Reply STOP to opt out."
```

## Common mistakes

- Reusing one promotional sample for two promotional sub-use cases does not satisfy this — the reviewer is counting distinct programmes, not distinct wordings.

## Provider rejection codes

| Provider | Code | Resubmission allowed |
| --- | --- | --- |
| TCR | `8102` | yes |
