ibs-errata-api
REST API for creating, modifying, browsing and deleting hotel errata (property notices/corrections) for the IBS accommodation content, stored in MongoDB.
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 | ASP.NET Core 6 (minimal API), MediatR 12, FluentValidation 11 |
| Runtimes | .NET 6 |
| Tests / CI | good / CI in place |
| Last commit | 2024-03-01 |
| Owner | Owner unknown (mapping to be curated) |
| Domain | Selling and quoting (system generated; curate in repo-owners.json to override) |
| Product area | Phenix |
| Hosted | On-prem Deployed to our own machines
|
| Releases | 1 release pipeline(s): \commercial\ibs\ibs-errata-api [DEPRECATED] |
| Integration | rest |
| Source | Open in Azure DevOps |
Risk flags
Each flag links to its glossary definition.
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
Needs workFeasible through the Workflow Engine's rolling drain, but real preparation is needed: dual-version discipline, better tests, or schema care before at-will release is sensible. Legacy runtime: the rolling drain works (stealth releases prove it) but relies on fix-forward risk rather than dual-version safety.
- Adopt the four-stage discipline from the ZDD engineering standard: pre-deployment compatibility, deployment, feature activation behind a flag, post-release cleanup.
- Make every change dual-version safe: backwards-compatible APIs (new major version for breaking wire changes), expand and contract for any schema change, and consumers tolerant of unknown fields.
- Audit serialized data: anything in Redis, queues or shared caches must deserialize cleanly across adjacent versions.
- Wrap behaviour changes in feature flags so code deploys dark and release becomes a business decision, not a deployment event.
- Route deployments through the Workflow Engine's automated drain, deploy, health-check, return cycle (the path proven by the first automated production run in mid-2026).
- Verify with area-scoped regression rather than the whole-platform cycle, and watch error rates after rollout with automated rollback on alert.
SQL Server exit
Not applicableNo SQL Server dependency is recorded for this repo. Nothing to migrate.
Containerisation
Ready to containeriseModern runtime, no hosted legacy transport: this service can follow the estate's proven container path (Dockerfile, shared pipeline template, ECS via Terraform).
- Add a Dockerfile and make the app read all configuration from environment variables and the secrets manager, never from machine-local files.
- Log to stdout and expose a health check endpoint so ECS can supervise it.
- Adopt the shared ci.yml pipeline template with the container parameters (awsRegion, containerAfterBuild, ecsTerraformRepo), which is exactly how the estate's existing AWS services deploy.
- Define the service in the Terraform repo, deploy to a non-production environment, then shift traffic and disarm the deployment-group release pipeline.
Recommended actions
Replatform ibs-errata-api to modern .NET
Runs on .NET 6, out of mainstream support. No pinning dependency blocks it; sequence by fan-in (providers before consumers).
Impact: Reduces the end-of-life runtime count
proposedAssessment notes
ibs-errata-api
Purpose
Commercial/IBS-domain API exposing CRUD endpoints for hotel errata keyed by hotel code (create, modify, delete, list-all, get-by-hotel-code). Served under /Api/IbsErrataApi behind Phenix authentication.
Tech stack
C# on .NET 6, ASP.NET Core minimal API with MediatR command/query handlers, FluentValidation, AutoMapper, Swashbuckle. Layered into API / App / Core projects. TC ConnectionBroker (SQL, Mongo, Redis, WCF, API flavours referenced) resolves connections; PhenixAuth libraries provide auth schemes and claims.
Deployment
One build pipeline (ibs-errata-api, azure-pipelines.yml on shared templates v1.0) and one release pipeline \commercial\ibs\ibs-errata-api [DEPRECATED] — the deprecation marker suggests deployment has moved or the service is being retired.
Dependencies
Internal NuGet: TC.ConnectionBroker suite (tc-connectionbroker), TravelCounsellors.ApiTools (tc-api-tools), plus TC.Phenix.ClientApiLibrary, TC.FluentResults, WebApi.Logger (source repos not confirmed). External: New Relic APM (app name configured).
Data stores
MongoDB Accommodation database for errata documents — a database shared with the wider accommodation domain rather than owned solely by this API — and MongoDB ibs_api for request/response logging.
Integration points
Inbound REST/JSON with Swagger. WCF and API connection brokers are referenced but no outbound service calls were found in the handlers.
Code health
Good test coverage for its size: unit tests plus integration tests covering each endpoint. CI in place. README is untouched boilerplate. Last commit 2024-03-01.
Modernisation risks
.NET 6 reached end of support in late 2024, so the runtime needs an upgrade to a supported LTS. The [DEPRECATED] release pipeline needs clarifying — if the API is still serving traffic its deployment path is unclear; if not, it is a decommission candidate. Writing into the shared Accommodation Mongo database couples it to the accommodation domain's schema.