mailtemplate-service
WCF service that generates emails from a large catalogue of predefined, localised HTML templates and either returns them or forwards them to the mail service for sending.
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 | WCF, ASP.NET (IIS host) |
| Runtimes | .NET Framework 4.7.2, .NET Framework 4.6.2, .NET Standard 2.0 |
| Tests / CI | good / CI in place |
| Last commit | 2026-07-22 |
| Owner | Owner unknown (mapping to be curated) |
| Domain | Customer communications (system generated; curate in repo-owners.json to override) |
| Product area | Shared platform |
| Hosted | On-prem Deployed to our own machines
|
| Releases | 2 release pipeline(s): \ops\mailtemplate\mailtemplate-service CI; \ops\mailtemplate\mailtemplate-service stealth |
| Integration | wcf, rest |
| Source | Open in Azure DevOps |
Dependencies in context
Entanglement
kernel Bound into the core by 2 mechanism(s).
- Pinning dependency: mailtemplate-service, mail-service
- Speaks WCF (host)
Detaches when its pinning dependencies are cut or multi-targeted (mail-service); and when it is itself a binding point: unpinning it releases its consumers; and when its WCF surface gains a modern interface or its WCF calls move to one.
This repo is itself a binding point: see what cutting it unlocks.
Depends on / used by
Capability duplication
Part of the Mail sending family (retire): Legacy WCF templating pair of mail-service; 18 dependents
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
Not applicableNo SQL Server dependency is recorded for this repo. Nothing to migrate.
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 mailtemplate-service
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
proposedComplete the notifications migration and retire mailtemplate-service
18 dependents; the WCF template half of the legacy mail pair.
Impact: Highest leverage in the programme: releases consumers without touching them
proposedAssessment notes
mailtemplate-service
Purpose
Central email templating service. Callers send typed requests (dozens of template classes: invoices, receipts, flight alerts, VCC notifications, visa enquiries, supplier remittances, etc.) and the service renders localised HTML emails using resx resources and base templates for multiple brands (TC and TTAND) and cultures, then optionally passes the result to the mail service for delivery.
Tech stack
Core service and IIS-hosted WCF host are old-style .NET Framework 4.7.2 projects; the TC.Mail.Template.ServiceContract and TC.Mail.Template.ServiceClient NuGet packages multi-target net462 and netstandard2.0. Heavy use of resx localisation (en-GB, en-AU, en-IE, nl, fr-CA, etc.) and embedded HTML/PDF resources. A .NET 8 test console tool exists for manual testing.
Deployment
Included with 2 releases: build pipeline mailtemplate-service plus release pipelines \ops\mailtemplate\mailtemplate-service CI and stealth. YAML CI (build.yml) via shared InternalOSS/azure-pipelines-templates, packing the contract/client NuGet packages and building the host with Visual Studio. README badges show releases to QA, Staging, Live, Azure, Training and DR environments.
Dependencies
Internal: mail-service (sends rendered mail via TC.Mail.ServiceClient) and tc-connectionbroker (endpoint resolution). Also consumes internal packages TC.Phenix.ApplicationFramework, TC.Phenix.CompanyInfo, TC.Payments.Models.PaymentConstants and TC.Exceptions.* whose source repos are not confidently mappable. TcWebDetailsApi calls an internal web-details HTTP API through the broker.
Data stores
None; templates and resources are compiled into the service.
Integration points
Inbound WCF (SOAP) service host; outbound WCF to the mail service and brokered REST/HTTP calls for web details.
Code health
Good: 34 test files in TC.Mail.Template.Service.Tests, StyleCop configuration, an actively maintained README, and very recent commits (2026-07-22). CI/CD is fully wired.
Modernisation risks
Same pattern as mail-service: WCF host pinned to .NET Framework 4.7.2 on IIS/Windows. Template logic is embedded in compiled resx/C# classes, so any brand or copy change needs a full build and release. High priority given it is actively changed (recent TTAND branding work) yet stuck on a legacy hosting model.