Leonardo Ferreti
Tech Lead · Software Architect

I modernise critical systems without taking them down.

15+ years on energy, banking, public sector, telecoms and mobility platforms. .NET, legacy modernisation, cloud and distributed systems.

The hard part is rarely writing new code — it's changing what is already there without breaking anything at three in the morning.

Leonardo Ferreti

when I can help

If any of these sound familiar, I can probably help.

  • An old .NET application that has to keep running?
  • A .NET Framework to .NET 8 migration with no appetite for a big bang?
  • A legacy system you inherited and nobody wants to touch?
  • Hard problems that only show up in production?
  • Old systems that need to talk to modern APIs and services?
  • A team that needs a Tech Lead to own the architecture decisions?
  • A critical platform that must be modernised without stopping operations?
  • Cloud or AI to bring into an existing system without rewriting it?

experience

15+ years
Software engineering, most of it on systems that were already in production.
.NET
Modernising .NET Framework, WebForms, DNN and monoliths to .NET 8.
Azure + AWS
Cloud, containers and distributed systems in regulated environments.
Production
Critical systems, high accountability, changes with no maintenance window.

Sectors: energy · banking · public sector · telecoms · mobility

cases

Three real problems, solved in production.

energy · payments · aws

Cards vanishing right after the customer set up an MB WAY mandate

Problem
The app confirmed the mandate, then showed no card at all. Intermittent, and only in production.
Diagnosis
Reading OpenSearch logs against the token documents in MongoDB showed the cause was not in our code. The follow-up inquiry went out roughly 750 ms after creation and caught the payment provider mid-sync, which answered 404. A race condition between two systems, invisible in test environments.
Solution
A pre-check on token insertion and a compound index that cleared the duplicates already stored. On .NET 8 Lambdas, ECS and DocumentDB, without changing the flow the customer sees.
Outcome
Cards stopped disappearing and duplicates were blocked at the source, with no rewrite of the integration and no downtime.

public sector · document management · dnn

Two decades of archive moved from cloud to on-prem without breaking a single link

Problem
A document library published since 2004 on a DNN portal, with public URLs built on filetickets derived from the FileId. The files had to leave blob storage and land on the internal fileserver.
Diagnosis
A different FileId meant a different ticket, so any link indexed over the years would die. And the source storage was shared with production, where nothing could be deleted. Moving was risky; copying while preserving identity was not.
Solution
Copy keeping the FileId instead of moving, and validate ticket by ticket in development before touching production.
Outcome
Twenty years of documents migrated with no broken links and no portal downtime.

energy · workflows · k2

Work authorisations getting stuck mid-process

Problem
K2 workflow instances stuck halfway, on a platform operations use every day and nobody wants to touch anymore.
Diagnosis
Blocks on variable initialisation and mappings reading the field off the wrong table. Unglamorous work that required understanding the platform before changing it.
Solution
Fixed the mappings and wrote idempotent SQL migrations with rollback to repair the tasks already created.
Outcome
Processes unblocked without replacing the platform or interrupting the people who depend on it.

Clients are under NDA, so I describe the sector and the scale rather than the name. On a call I can be more specific.

principles

Not everything needs a rewrite.

  • Not every legacy system needs replacing.
  • Not everything needs to become microservices.
  • Not every system needs Kubernetes.
  • Not every application needs AI.
  • First I identify the risk; then we decide what is worth changing.
  • Incremental modernisation is almost always safer than a big bang.

services

How I can help.

Architecture review

Review of the current architecture, risk identification and a realistic evolution plan.

Legacy modernisation

.NET Framework, WebForms, DNN and monoliths moving to .NET 8, containers and pipelines — running during the migration, not after it.

Technical leadership

Tech Lead for projects that need someone to own the architecture decisions and defend them to the team and the business.

Production investigation

Problems that are hard to reproduce or understand, and only appear with real data and real load.

Cloud migration

Progressive migration to Azure or AWS, piece by piece, with operations still running.

AI integration

AI inside existing systems, with attention to security, data boundaries and the company's context.

ai

AI applied to existing systems.

I use AI when it solves a real problem, not because it is fashionable. Local or cloud models, depending on what the data is allowed to leave the building. Integration with the systems already in place, automation, and agents or workflows when they make sense.

It is an extension of the systems work, not a career change.

about

Most of the world's critical software is legacy.

ERPs, government portals, banking cores, telecom platforms. Almost none of it will be rewritten from scratch — it will be maintained, patched and evolved by someone. That is the work I do.

I have done it in energy, public sector, banking, telecoms and mobility: workflows, integrations with SAP and ageing CMS platforms that became observable and maintainable, and more recently wiring them to language models.

Based in — Alcanena, Santarém · Portugal
Stack — C# · .NET 8 · ASP.NET · SQL Server
Cloud — Azure · AWS · Container Apps · Lambda
Data — RabbitMQ · MongoDB · ElasticSearch · OpenSearch
Also — DNN · K2 · n8n · Ollama

contact

Got a critical system that has to change without stopping?

I can help diagnose the problem, define the architecture and carry out the change. I answer in English or Portuguese, usually the same day.