ADR-0002. Resolve SVC-00110 service-code collision with outreach
| Field | Value |
|---|---|
| Status | Accepted |
| Date | 2026-04-21 |
| Deciders | licensing-team, platform-team |
| Supersedes | — |
Context
- Licensing ships with
APP_ENV_APPLICATION_CODE = SVC-00110-LICENSING(seeapp-info.jsondescription andapplication.ts). @nx/outreachalready owns theSVC-00110prefix — the numeric portion collides.SVC-00110-LICENSINGis not yet registered in core'sServiceCodesenum.- Service codes feed log correlation, Kafka client IDs, and operational dashboards; a collision risks cross-attributing telemetry between two services.
Decision
Licensing is reassigned to SVC-00140-LICENSING and registered in core's ServiceCodes enum. Outreach keeps SVC-00110. The originally-floated SVC-00120 was taken instead by helpdesk (which already declared SVC-00120-HELPDESK in its app-info.json), so licensing landed on the next free slot, SVC-00140 (SVC-00130 belongs to taxation).
Consequences
| Pros | Cons |
|---|---|
| Removes telemetry cross-attribution risk | Requires touching app-info.json + core ServiceCodes + env in all environments |
| Single source of truth for the code (the enum) | Any dashboards / alerts keyed on SVC-00110-LICENSING must be updated |
Alternatives Considered
| Option | Pros | Cons | Why rejected |
|---|---|---|---|
Keep SVC-00110, renumber outreach | Licensing unchanged | Outreach is older/more established; more downstream churn | Higher blast radius |
Leave both on SVC-00110 | No work | Permanent telemetry ambiguity | Defeats the purpose of a service code |
Append a suffix only (SVC-00110-LICENSING vs SVC-00110-OUTREACH) | Minimal change | Numeric prefix still collides in code-prefix groupings | Doesn't fix the root collision |
References
licensing/src/resources/app-info.json—SVC-00140-LICENSINGlicensing/AGENTS.md— Quick Reference collision warningcore/src/common/service-codes.ts—ServiceCodesenum (licensing now registered asSVC-00140-LICENSING)