Information Management.

Data outlives code. I design for who owns each record, how it changes, and how it is protected.

One database per service.

Each service owns its own schema. Other services reach that data through the owner's API or the events it publishes, never by querying its tables directly.

SQL Server and Azure SQL.

SQL Server on-premises for the core services, and Azure SQL for the cloud-hosted identity service, which signs in with a managed identity instead of a stored password.

Schema management.

Schemas live in source control as Entity Framework Core migrations or versioned SQL scripts, so every environment can be rebuilt from the repository.

Personal data.

Records use random GUIDs, not sequential numbers, so one user can't guess another's IDs. Ownership comes from the signed-in identity and is checked on every request.

Migration and retirement.

Moving users from a legacy platform to a new one, then archiving what's left so the old system can be switched off cleanly.