phenix-contact-centre-api
Small ASP.NET Core 2.2 API exposing emergency-contact data for Phenix contacts, with command/query handlers, validation rules and auditing over the contact database.
Health score
0 to 100 across seven weighted factors; nothing is hidden. Green is 75 and above, amber 50 to 74, red below 50. How scoring works.
Facts
| Languages | csharp |
| Frameworks | ASP.NET Core 2.2 |
| Runtimes | .NET Framework 4.6.2 |
| Tests / CI | some / CI in place |
| Last commit | 2024-08-22 |
| Owner | Owner unknown (mapping to be curated) |
| Domain | Contact centre and CRM (system generated; curate in repo-owners.json to override) |
| Product area | Phenix |
| Hosted | On-prem Deployed to our own machines
|
| Releases | 3 release pipeline(s): \marketing\contact-centre\phenix-contact-centre-api Stealth; \marketing\contact-centre\phenix-contact-centre-api master; \marketing\contact-centre\phenix-contact-centre-api release |
| Integration | rest |
| Source | Open in Azure DevOps |
Risk flags
Each flag links to its glossary definition.
Dependencies in context
Entanglement
loosely attached Bound into the core by 1 mechanism(s).
- Shares core database sqlserver:ContactCentre
Detaches when the shared database group it belongs to gains an owned API or completes schema separation (sqlserver:ContactCentre).
Capability duplication
Part of the Contact centre family (consolidate): Second generation, dormant since 2024
Migration playbooks
Generated from this repo's assessment data: what is feasible, what blocks it, and the steps in order. Ratings: green means actionable now, amber means sequence other work first, red means blocked, grey means not applicable.
ZDD adoption
Not applicableNot a deployed service (libraries, database definitions, desktop apps) or a retirement candidate not worth the investment. Retirement or consolidation candidate; do not invest in ZDD adoption.
SQL Server exit
Retire insteadThis repo is a retirement or consolidation candidate. Do not invest in a database migration; execute the retirement and the SQL Server dependency disappears with it.
Containerisation
Retire insteadThis repo is a retirement or consolidation candidate; containerising it would be investment in something we intend to switch off.
Recommended actions
Consolidate phenix-contact-centre-api into the surviving contact centre path
Second generation, dormant since 2024. Converge on the generation 2 pair, give the ContactCentre database a named owner (stage 4), and retire the earlier generations as their remaining traffic moves.
Impact: Removes a duplicated capability
proposedAssessment notes
phenix-contact-centre-api
Purpose
The original ("v1") contact-centre API, now reduced to a single EmergencyContactsController. A domain library implements command/query handlers, validation rules (required field, regex, single-preferred), access checks and audit logging for emergency-contact records.
Tech stack
C# ASP.NET Core 2.2 MVC hosted on .NET Framework 4.6.2 (netstandard2.0 domain library), with Swashbuckle 1.0 Swagger, API versioning, PhenixAuthLib authentication, Application Insights telemetry, and raw System.Data.SqlClient data access through TC.ConnectionBroker.
Deployment
Included as prod_application with 3 releases. Build pipelines: phenix-contact-centre-api, ... develop, ... release (classic — no YAML in repo). Release pipelines under \marketing\contact-centre\: Stealth, master, release. Deploys to IIS via PowerShell scripts in deployment/ (app pool + website configuration, Slack webhook notification).
Dependencies
Internal packages: TC.ConnectionBroker.* (tc-connectionbroker, old 1.11.x line) and TC.Exceptions.* (tc-exceptions). External: Azure Application Insights, Slack incoming webhook used by deployment scripts.
Data stores
SQL Server via ConnectionBroker connection ContactApi1 — the shared ContactCentre contact database (stored-procedure style repositories for emergency contacts, auth and audit).
Integration points
REST only (versioned controllers with Swagger). No message bus, no WCF.
Code health
One test project with reasonable unit coverage of the domain layer (rules, handlers, commands, auditing). README is boilerplate. Dormant: last commit 2024-08-22, and dependencies (ConnectionBroker 1.11, Swashbuckle 1.0) are far behind the rest of the estate.
Modernisation risks
ASP.NET Core 2.2 is long end-of-life and it runs on full .NET Framework 4.6.2, so both the framework and runtime are unsupported. Functionality is narrow (emergency contacts) and overlaps the contact-centre domain now served by phenix-contact-api / phenix-contact-centre-2-api — a strong candidate to fold into one of those .NET 8 services and retire.