phenix-contact-centre-web
Legacy ASP.NET MVC 5 Contact Centre website on .NET Framework 4.6.2 for browsing and managing contacts, marketing functions and templates over the shared ContactCentre 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, javascript |
| Frameworks | ASP.NET MVC 5, Autofac, Razor |
| Runtimes | .NET Framework 4.6.2 |
| Tests / CI | some / CI in place |
| Last commit | 2026-03-27 |
| 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 | 2 release pipeline(s): \marketing\contact-centre\phenix-contact-centre-web; \marketing\contact-centre\phenix-contact-centre-web stealth |
| Integration | rest, wcf, soap, redis |
| Source | Open in Azure DevOps |
Risk flags
Each flag links to its glossary definition.
Dependencies in context
Entanglement
kernel Bound into the core by 3 mechanism(s).
- Pinning dependency: application-framework, phenix-feature-service, mailtemplate-service
- Speaks WCF (client)
- Shares core database sqlserver:ContactCentre
Detaches when its pinning dependencies are cut or multi-targeted (application-framework, phenix-feature-service, mailtemplate-service); and when its WCF surface gains a modern interface or its WCF calls move to one; and when the shared database group it belongs to gains an owned API or completes schema separation (sqlserver:ContactCentre).
Depends on / used by
Capability duplication
Part of the Contact centre family (retire): First generation web
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
Retire phenix-contact-centre-web
First generation web. Part of the Contact centre consolidation: 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: A migration never paid for, a pipeline decommissioned and an attack surface removed
proposedAssessment notes
phenix-contact-centre-web
Purpose
The legacy Contact Centre website ("v1" UI): MVC controllers and Razor views for contact browsing/editing, marketing functions, a template engine for marketing content, flights data lookups and Phenix feature toggles. It sits alongside the newer phenix-contact-centre-2-web and still contains a local ContactCentre.asmx plus a WebForms Default.aspx entry page.
Tech stack
C# on .NET Framework 4.6.2 across seven legacy-format projects with packages.config (one netstandard2.0 utils library). ASP.NET MVC 5 with Razor, Autofac + Autofac.Mvc5 DI, PhenixAuth authentication, TC.Cache multi-level caching with Redis storage, RestEase and Polly for HTTP calls, log4net. Checked-in binary DLLs in binaries/ (HtmlAgilityPack, mshtml, Microsoft.Web.Mvc, New Relic agent).
Deployment
prod_application with 2 releases. Build pipeline phenix-contact-centre-web (classic — the only YAML in the repo is azure-pipelines-packages.yml for NuGet packages); release pipelines \marketing\contact-centre\phenix-contact-centre-web and stealth. Nine per-environment Web.*.config transforms, deployed to IIS.
Dependencies
Very wide internal package surface: TC.ConnectionBroker.* (tc-connectionbroker), TC.Exceptions.* (tc-exceptions), TC.Phenix.ApplicationFramework (application-framework), TC.ContactCentre.ServiceClient and TC.Phenix.ContactCentre.* (phenix-contact-centre-wcf), TC.AddressLookup.ServiceContract (backoffice-address-lookup-service), TC.Phenix.CompanyInfo (company-info-api), TC.Phenix.Feature* (phenix-feature-service), TC.UserAccount.ServiceContract (backoffice-useraccount-service), TC.Pure360.MarketingService.Shared (backoffice-pure360-marketing-service-api), TC.Mail.Template.ServiceContract (mailtemplate-service), TC.FlightsConfiguration.* (phenix-flights), TC.TaskReminder.ServiceContract (phenix-task-reminder-wcf). TC.CustomerPortal*.ServiceContracts and MediaServer.Library have no mappable source repo. External: New Relic APM agent.
Data stores
SQL Server ContactCentre database via ConnectionBroker connection ContactApi1 (direct ADO.NET data access in DataAccess/), plus a MediaServer database connection wired up in Global.asax. Redis is the configured cache storage.
Integration points
Server-rendered MVC UI. Outbound REST via ConnectionBroker HTTP clients, WCF/SOAP service-contract clients to the contact-centre WCF service, address lookup, task reminder and mail-template services; Redis for caching.
Code health
One MSTest project (TC.ContactCentreTests) covering data access, marketing functions and customer logic — some coverage but far smaller than the app. Boilerplate two-line README. Legacy csproj + packages.config throughout, binaries checked into source. Still receiving occasional changes (last commit 2026-03-27).
Modernisation risks
High: .NET Framework 4.6.2 is out of support and the MVC 5 + WebForms + ASMX mix has no in-place path to modern .NET. It reads the shared ContactCentre database directly with raw SQL as well as through the WCF service, duplicating the contact-centre domain already being rebuilt in phenix-contact-centre-2-web/-2-api — consolidation there and retirement of this app looks like the sensible route.