tc-features
Small shared NuGet library (TC.Features) providing a feature-toggle abstraction with hardcoded feature classes and an appSettings-based toggle provider.
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 | - |
| Runtimes | .NET Framework 4.5.2 |
| Tests / CI | none / CI in place |
| Last commit | 2019-03-15 |
| Owner | Owner unknown (mapping to be curated) |
| Domain | Platform services (system generated; curate in repo-owners.json to override) |
| Product area | Shared platform |
| Hosted | No signal No hosting signal in its pipelines (typical for libraries and contract packages) |
| Releases | 1 release pipeline(s): tc-features release |
| Integration | - |
| Source | Open in Azure DevOps |
Dependencies in context
Entanglement
loose No binding mechanisms apply: this system needs no untangling work.
Depends on / used by
Capability duplication
Part of the Feature flags family (retire): Dormant since 2019
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. Ships as a package; ZDD applies to the services that consume it.
SQL Server exit
Not applicableNo SQL Server dependency is recorded for this repo. Nothing to migrate.
Containerisation
Not applicableLibraries ship as packages, not as running services. There is nothing to containerise.
Recommended actions
Retire tc-features
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
proposedAssessment notes
tc-features
Purpose
Publishes the TC.Features NuGet package: an IFeature/IToggleProvider abstraction plus an AppSettingsToggleProvider that reads FeatureToggle.<FeatureName> keys from ConfigurationManager.AppSettings. Concrete feature classes are hardcoded in the library itself (SalesTax, EmailCreditCardReceipt, CardHashFraudCheck, VNettAtol, VNettRetailLeisure, EnableMultiUseVanManagement), so adding a toggle means shipping a new package version.
Tech stack
Single C# class library on .NET Framework 4.5.2 in the old non-SDK csproj format, packaged via a nuspec with token replacement. Eleven source files total; no third-party packages beyond framework references.
Deployment
Included as prod_application with 1 release (tc-features release release pipeline from the tc-features release classic build). No pipeline YAML in the repo. It ships as a NuGet package to the internal feed rather than a deployed service.
Dependencies
None — no internal estate packages and no third-party packages. The nuspec declares framework assemblies only (System.ServiceModel, System.ComponentModel.DataAnnotations).
Data stores
None. Toggle state lives in the consuming application's app/web.config appSettings.
Integration points
None; it is a pure in-process library.
Code health
Dormant since 2019-03-15 with no test project, no README, and TFS-era source-control bindings (SccProjectName=SAK) still in the csproj. CI exists only as a classic build pipeline.
Modernisation risks
The ConfigurationManager-based provider ties consumers to .NET Framework config files, and hardcoding feature classes in a shared package is the opposite of how the estate now handles flags (phenix-feature-service). The pragmatic path is to migrate the handful of remaining toggles to the central feature service and retire this package; retargeting it to .NET Standard would preserve an outdated pattern.