← Back to case studies
Project
ACTOR (Aladon) - Enterprise Platform Modernization
Modernized a multi-tenant Blazor platform through runtime upgrade, identity flow hardening, and cloud-cost reduction.
CTO, Claer & Volker (subcontract engagement supporting Aladon platform work)
Azure spend reduced from approximately $7,800/month to approximately $2,400/month. Removed SQLite tenant file management as a recurring source of setup and release failures. Resolved long-standing stay-logged-in behavior by fixing auth/licensing order.
Context
- The codebase was a legacy ~700k LOC .NET Framework 4 system.
- The product was a multi-tenant Blazor Server app.
- Each tenant included multiple sites, and each site had its own SQL database.
- Tenant and site metadata were stored in SQLite files bundled with the distribution.
- NetLicensing checks were in the login/session path.
- The Azure footprint had high monthly spend.
Challenge
- The legacy runtime and dependencies were slowing maintenance work.
- The file-based tenancy flow caused frequent setup and state issues.
- Unsafe locking and async/sync race patterns caused instability.
- Licensing checks before authentication broke session persistence.
- The Azure setup was overprovisioned for the actual workload.
Key Decisions
- Migrate to .NET 8. Why: Required modern runtime support and a safer long-term upgrade path.
- Replace SQLite tenancy metadata with Keycloak tenant management. Why: Required centralized tenant lifecycle management without fragile local files.
- Remove unsafe locking and race patterns in critical flows. Why: Required predictable behavior under concurrent load.
- Move licensing gate to post-authentication. Why: Needed a corrected session lifecycle to restore stay-logged-in behavior.
- Rationalize Azure topology around Azure SQL + Web Apps; retain VM only for SSRS and WireGuard. Why: Required lower cost without removing reporting and secure networking services.
Implementation Changes
- Migrated the platform from .NET 4 to .NET 8.
- Integrated Keycloak for tenant/site lifecycle and removed SQLite tenancy files.
- Refactored concurrency paths to remove lock contention and async/sync race hazards.
- Changed auth and licensing order to restore stable sessions.
- Right-sized Azure around Azure SQL, Web Apps, and a scoped VM role.
Results
- Azure spend reduced from approximately $7,800/month to approximately $2,400/month.
- Removed SQLite tenant file management as a recurring source of setup and release failures.
- Resolved long-standing stay-logged-in behavior by fixing auth/licensing order.
- Reduced platform instability linked to locking and race-condition paths (qualitative).
Tech Stack
.NET 8 Blazor Server EF Core Keycloak NetLicensing Azure SQL Azure Web Apps Azure VM SSRS WireGuard Syncfusion
Confidentiality Note
Some implementation details are omitted due to client confidentiality.