tc-phenix-cancellation
Tiny shared NuGet library (TC.Phenix.Cancellation) defining cancellation-charge interfaces and a static CancellationChargeManager that selects the applicable supplier/sales cancellation charge for a booking date.
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.6.2, .NET 8, .NET 10 |
| Tests / CI | some / CI in place |
| Last commit | 2026-07-22 |
| Owner | Owner unknown (mapping to be curated) |
| Domain | Bookings and fulfilment (system generated; curate in repo-owners.json to override) |
| Product area | Phenix |
| Hosted | No signal No hosting signal in its pipelines (typical for libraries and contract packages) |
| Releases | 1 release pipeline(s): TC.Phenix.Cancellation 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
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
Replatform tc-phenix-cancellation to modern .NET
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).
Impact: Unblocks 1 dependent system(s)
proposedAssessment notes
tc-phenix-cancellation
Purpose
Five source files publishing the TC.Phenix.Cancellation package: ISalesCancellationCharge/ISupplierCancellationCharge/ISalesCancellationPolicy interfaces, a ChargeType enum, and a static CancellationChargeManager that picks the applicable cancellation charge from date-range or days-before-arrival rules (including a 2017-era fix for open-ended DateTo charges). Consumed by Phenix booking/product services that need consistent cancellation-charge calculation.
Tech stack
Modern SDK-style repo (.slnx solution, central package management, Directory.Build.props, StyleCop/Sonar/SecurityCodeScan analysers, Nerdbank GitVersioning). The library multi-targets net462, net8.0 and net10.0; tests target net10.0 with MSTest 4, Moq and AwesomeAssertions.
Deployment
Included as prod_application with 1 release: release pipeline TC.Phenix.Cancellation Release from build TC.Phenix.Cancellation (a second [DEPRECATED] TC.Phenix.Cancellation build definition still exists). YAML CI via the shared InternalOSS/azure-pipelines-templates (SDK 10.x) packs the package to the internal feed.
Dependencies
One internal package: TC.Phenix.Markup (sellable product/markup abstractions; no matching source repo in the included list, so treated as an unmapped internal package). No third-party dependencies and no external services.
Data stores
None — pure in-process calculation over caller-supplied charge collections.
Integration points
None; it is a pure library with no network, messaging or storage integrations.
Code health
One MSTest project with 16 tests exercising CancellationChargeManager — reasonable coverage for the small surface. Actively maintained (last commit 2026-07-22) and recently modernised to .NET 10 tooling with a full analyser suite. README is untouched boilerplate.
Modernisation risks
Low — already multi-targeted to modern runtimes with the net462 target retained only for legacy Phenix consumers. Residual items: the business rules encode long-standing data quirks (null DateTo handling) that should be documented, the README says nothing, and the deprecated classic build definition should be deleted to avoid confusion.