← 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.