Assessment run-2026-07-27-1 ยท 213 of 213 repos assessed
Recommendations
Opinionated actions generated from the assessment data, sequenced by the whitepaper's stages: rotate, shrink, cut the binding points, exit WCF and .NET Framework, own the shared databases, and raise the test floor where fan-in is high. Track each action from proposed to done; the dashboard reads progress from here.
Risk flags indicate credentials or keys in source (plaintext-credentials, secrets-in-repo). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to advent-challenger
Risk flags indicate credentials or keys in source (hardcoded-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to asset-management
Risk flags indicate credentials or keys in source (secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to backoffice-customerrelations-ui
Risk flags indicate credentials or keys in source (credentials-in-config). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to backoffice-documentation-ews
Risk flags indicate credentials or keys in source (hardcoded-secrets). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to backoffice-pure360-marketing-service-api
Risk flags indicate credentials or keys in source (hardcoded-secrets). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to backoffice-pure360-subscription-manager
Risk flags indicate credentials or keys in source (hardcoded-secrets). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to backoffice-pushnotifications-api
Risk flags indicate credentials or keys in source (secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to crm-reporting-api
Risk flags indicate credentials or keys in source (secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Risk flags indicate credentials or keys in source (secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to phenix-contact-centre-2-api
Risk flags indicate credentials or keys in source (hardcoded-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to phenix-contact-centre-wcf
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to phenix-content-ui-web
Risk flags indicate credentials or keys in source (hardcoded-secrets). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to phenix-database
Risk flags indicate credentials or keys in source (secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to phenix-destination-search
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to phenix-insurance
Risk flags indicate credentials or keys in source (secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to phenix-locationservice-api
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to phenix-reviews
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to phenix-task-reminder-wcf
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to phenix-task-reminder-web
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to provider-activator
Risk flags indicate credentials or keys in source (secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Risk flags indicate credentials or keys in source (plaintext-credentials, secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Risk flags indicate credentials or keys in source (hardcoded-secrets). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to task-trigger-service
Risk flags indicate credentials or keys in source (hardcoded-secrets). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to tc-communications
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Risk flags indicate credentials or keys in source (hardcoded-secrets). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to tc-documentation
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to tc-mail-composer
Risk flags indicate credentials or keys in source (secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to tc-mail-tracked
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to tc-useraccount-telephonecontracts-api
Risk flags indicate credentials or keys in source (plaintext-credentials, secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to tc-web-details-api
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to TC.CustomerPortalUsers.DupeImporter
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to TC.PublicWebsites.EmailQueue
Risk flags indicate credentials or keys in source (plaintext-credentials). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Rotate the credentials committed to vccprovider-conferma
Risk flags indicate credentials or keys in source (secrets-in-source). Rotate now and enable secret scanning in CI; this is independent of all other work.
Impact: Closes a live security exposure at near-zero cost
Legacy WCF mail path; 21 dependents still route through it. Part of the Mail sending consolidation: Complete the notifications migration so phenix-notifications-api delivers without the WCF pair, then retire mail-service and mailtemplate-service. This is one of the stage 2 binding-point cuts.
Impact: A migration never paid for, a pipeline decommissioned and an attack surface removed
Legacy WCF templating pair of mail-service; 18 dependents. Part of the Mail sending consolidation: Complete the notifications migration so phenix-notifications-api delivers without the WCF pair, then retire mail-service and mailtemplate-service. This is one of the stage 2 binding-point cuts.
Impact: A migration never paid for, a pipeline decommissioned and an attack surface removed
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.
First generation, WCF. 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
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
WCF-only on .NET Framework 4.7.2, no tests, 25 dependents; replace with a modern feature flag service. Part of the Feature flags consolidation: Introduce one modern feature flag service, migrate the 25 consumers of phenix-feature-service to it, retire tc-features, and remove the hardcoded toggle maps as their hosts are modernised.
Impact: A migration never paid for, a pipeline decommissioned and an attack surface removed
Dormant since 2021 with plaintext credentials. Part of the Location lookup consolidation: Confirm remaining consumers of phenix-locationservice-api, move them to phenix-place-repository, retire the legacy service and rotate its exposed credentials.
Impact: A migration never paid for, a pipeline decommissioned and an attack surface removed
Angular app duplicated inside the phenix-ui monorepo; dormant since 2023. Part of the Virtual credit cards consolidation: Route all eNett calls through vccprovider-enett, retire the duplicated phenix-vcc app, and route the providers' direct database writes through an API owned by vcc-service (stage 4).
Impact: A pipeline decommissioned and an attack surface removed
Dormant since 2019. Part of the Feature flags consolidation: Introduce one modern feature flag service, migrate the 25 consumers of phenix-feature-service to it, retire tc-features, and remove the hardcoded toggle maps as their hosts are modernised.
Impact: A migration never paid for, a pipeline decommissioned and an attack surface removed
Consolidate webapi-exceptions into the surviving exceptions packaging path
Publishes overlapping TC.Exceptions.* packages. Consolidate publishing into tc-exceptions, and put real tests around it before further change: it is a stage 2 chokepoint with 71 dependents and one placeholder test.
Replatform backoffice-documentation-booking to modern .NET
Runs on .NET Framework 4.8, .NET Standard 2.1, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Replatform backoffice-pure360-marketing-service-api to modern .NET
Runs on .NET Framework 4.6.2, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers). Shares sqlserver:EventLog, so batch it with its database group (stage 4).
Replatform backoffice-pure360-subscription-manager to modern .NET
Runs on .NET Framework 4.6.2, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers). Shares sqlserver:EventLog, so batch it with its database group (stage 4).
Replatform backoffice-repository-service to modern .NET
Runs on .NET Framework 4.7.2, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers). Shares sqlserver:Phenix, so batch it with its database group (stage 4).
Replatform backoffice-useraccount-legacy to modern .NET
Runs on .NET Framework 4.8, .NET Standard 2.0 (libraries), out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Replatform backoffice-useraccount-service to modern .NET
Runs on .NET Framework 4.7.2, .NET Standard 2.0 (libraries), out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Runs on .NET 10, .NET Framework 4.7.2 (contract packages), out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Runs on .NET 10, .NET Framework 4.6.2 (client packages), out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Runs on .NET Framework 4.6.2, .NET Framework 4.8.1, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Runs on .NET Framework 4.6.2, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers). Shares sqlserver:ContactCentre, so batch it with its database group (stage 4).
Runs on .NET 10, .NET Framework 4.8.1, .NET Framework 4.7.2, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers). Shares sqlserver:Phenix, so batch it with its database group (stage 4).
Runs on .NET 8, .NET Framework 4.6.2, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers). Shares sqlserver:Phenix, so batch it with its database group (stage 4).
Runs on .NET Framework 4.6.2, out of mainstream support. Blocked until stage 2 cuts: application-framework. Shares sqlserver:Phenix, so batch it with its database group (stage 4).
Replatform phenix-contact-centre-2-api to modern .NET
Runs on .NET Framework 4.6.2, out of mainstream support. Blocked until stage 2 cuts: application-framework, phenix-feature-service. Shares sqlserver:ContactCentre, so batch it with its database group (stage 4).
Runs on .NET Framework 4.8.1, .NET 10, out of mainstream support. Blocked until stage 2 cuts: application-framework, phenix-feature-service, mail-service, mailtemplate-service.
Runs on .NET Framework 4.7.2, .NET Framework 4.5.2, out of mainstream support. Blocked until stage 2 cuts: application-framework, phenix-feature-service, mail-service. Shares sqlserver:EventLog, so batch it with its database group (stage 4).
Replatform phenix-destination-management to modern .NET
Runs on .NET 10, .NET 8, .NET Framework 4.8.1, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Runs on .NET 10, .NET Framework 4.7.2, Node.js, out of mainstream support. Blocked until stage 2 cuts: application-framework, phenix-feature-service, mail-service, mailtemplate-service. Shares sqlserver:EventLog, so batch it with its database group (stage 4).
Runs on .NET Framework 4.6.2, .NET Standard 2.0, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers). Shares sqlserver:EventLog, so batch it with its database group (stage 4).
Runs on .NET 8, .NET 10, .NET Framework 4.7.2, .NET Framework 4.8.1, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers). Shares sqlserver:Phenix, so batch it with its database group (stage 4).
Runs on .NET 8, .NET 10, .NET Framework 4.6.2, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers). Shares sqlserver:Phenix, so batch it with its database group (stage 4).
Runs on .NET Framework 4.6.2, .NET Framework 4.7.2, .NET Framework 4.8.1, .NET 8, out of mainstream support. Blocked until stage 2 cuts: phenix-feature-service, phenix-passenger-configuration-service-contract, mail-service, mailtemplate-service. Shares sqlserver:EventLog, so batch it with its database group (stage 4).
Runs on .NET Framework 4.7.2, out of mainstream support. Blocked until stage 2 cuts: application-framework, phenix-feature-service, phenix-passenger-configuration-service-contract, mail-service, mailtemplate-service.
Runs on .NET 8, .NET Framework 4.7.2, .NET Framework 4.6.2, out of mainstream support. Blocked until stage 2 cuts: application-framework, phenix-feature-service. Shares sqlserver:EventLog, so batch it with its database group (stage 4).
Runs on .NET Framework 4.7.2, .NET Standard 2.0, out of mainstream support. Blocked until stage 2 cuts: application-framework, mail-service. Shares sqlserver:Phenix, sqlserver:EventLog, so batch it with its database group (stage 4).
Replatform phenix-sales-agent-markup to modern .NET
Runs on .NET Framework 4.8.1, .NET Framework 4.6.2, out of mainstream support. Blocked until stage 2 cuts: application-framework. Shares sqlserver:Phenix, so batch it with its database group (stage 4).
Replatform phenix-service-management to modern .NET
Runs on .NET Standard 2.0, .NET Framework 4.6.2, .NET Framework 4.7.2, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Replatform phenix-task-reminder-wcf to modern .NET
Runs on .NET Framework 4.7.2, out of mainstream support. Blocked until stage 2 cuts: application-framework, phenix-feature-service, mail-service. Shares sqlserver:Phenix, so batch it with its database group (stage 4).
Replatform phenix-task-reminder-web to modern .NET
Runs on .NET Framework 4.5.2, out of mainstream support. Blocked until stage 2 cuts: application-framework, phenix-feature-service, mail-service. Shares sqlserver:Phenix, sqlserver:EventLog, so batch it with its database group (stage 4).
Runs on .NET Framework 4.7.2, out of mainstream support. Blocked until stage 2 cuts: application-framework, phenix-feature-service. Shares sqlserver:Phenix, sqlserver:EventLog, so batch it with its database group (stage 4).
Runs on .NET Standard 2.0, .NET Framework 4.6.2, .NET Framework 4.8.1, .NET 8, .NET 10, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Runs on .NET Framework 4.6.2, .NET 8, .NET 10, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Runs on .NET Standard 2.0, .NET Framework 4.6.1, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Replatform tc-useraccount-telephonecontracts-servicecontract to modern .NET
Runs on .NET Standard 2.0, .NET Framework 4.6, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Runs on .NET 8, .NET Framework 4.7.2, out of mainstream support. Blocked until stage 2 cuts: application-framework, mail-service, mailtemplate-service.
21 systems share it and its schema is only reconstructable by replaying an append-only change ledger. Reconstruct a declarative schema and give it a named owner.
Impact: Service-level modernisation inside this group is unsafe until this exists