Bottomline | Multi-Tenant Treasury Management SaaS.
The platform was a treasury management product running on Azure for hundreds of enterprise customers, each on their own deployment with their own configuration. The work that mattered most was making that fleet operable at scale.
I led the migration from Azure App Services and Azure SQL into Azure Kubernetes Service with Helm and PostgreSQL Flexible Server. Each tenant runs on the same versioned image but with its own configuration, secrets, and database. The CI/CD lives in Azure DevOps and handles both cloud and on-prem clients from the same pipeline. The hotfix workflow ships tags and per-client deploys through automated scripts, so a critical patch reaches one tenant without sweeping the whole fleet.
On the multi-tenant side, I shipped patterns for both approaches the product needed: multi-database with a single web app, and shared-database multi-schema with a single web app. I wrote a tool that provisions and deploys multiple client schemas into one database, and ran the database CI/CD flow on dacpac and the Microsoft Database Project so every schema change is reviewable and reversible.
I also built a custom Azure Bot that technical managers used to deploy to specific clients without going through the pipeline themselves, on top of Azure Bot Service, Azure Functions, and a stack of internal Azure services for messaging, storage, and configuration. The same automation watches health and performance of client web apps and databases and pings the team over Teams webhooks when something drifts. SonarQube runs static analysis across the applications, Veracode runs static and dynamic security scans, and the results land as pull request gates rather than reports nobody reads.
The migration off old TFS into git inside Azure DevOps was the foundation under all of it, with branch policies, pull request reviews, and pre-merge build gates. That move alone changed how the team reasoned about delivery.
- NET
- Azure DevOps
- Azure Kubernetes Service
- Helm
- Azure SQL
- PostgreSQL Flexible Server
- Azure Functions
- Azure Bot Service
- dacpac
- SonarQube
- Veracode