CUSTOM DEVELOPMENT & MODERNIZATION

Custom .NET development for new and existing business systems.

A new business application, an extension of the product you already sell, or a modernization of the system you run today. .NET is the target stack; the system you start from can come from any technology, and the work begins with understanding it. Web, Android and iOS, integrations and practical AI features are part of the toolbox, used where the project needs them, not by default.

Scope, phases, timeline and pricing are agreed per project, after discovery or an assessment.

// three starting points

Where you are today decides what comes first.

The same person does the work in all three cases. The first step is different.

01 / new

We need a new business solution

Discovery comes first: who uses it, which process it runs, what has to exist on day one and what can wait. From that comes a scope with phases, a timeline and a price. If the first version fits a fixed functional scope for web, iOS and Android, the 14-business-day MVP may be the better offer; if it does not, this is the right one.

02 / extend

We need to extend an existing product

A new module, a mobile app on top of a web product, an integration with a system you cannot replace. The existing code and data stay the starting point. New parts are built behind clear interfaces, with tests, so they can be released without touching what already works.

03 / modernize

We need to modernize or replace a system we run

An assessment comes first: inventory, risks, the order of work and the behaviours that must not change. Then the system moves to .NET in increments that keep it running, with the database kept where it works. The source technology can be anything; it is analysed, not assumed.

// what the work can include

The toolbox. We pick what the product needs.

The scope determines which capabilities your project needs, and the plan says which of these it gets and why.

  • Modernization of existing systems from any technology to .NET, after an assessment of the system
  • New business applications and modules in .NET
  • Business processes analysed and simplified, with reusable and configurable components where real variation exists
  • Integrations with existing databases, services and business systems
  • Web, Android and iOS applications where the project needs them
  • Custom AI features where they solve a concrete business problem
  • Architecture, implementation, testing, deployment and observability in your environment
  • Documentation and knowledge handed to your team as the work goes

Two things I do not promise: that every source stack is one I know as well as .NET, and that every idea fits the first phase. The existing system is analysed and the approach planned around its constraints; the scope is agreed before the work, and new ideas go on the list for the next phase.

// variation without copies

Reusable business workflows and configurable components.

Most business systems grew by copying. A second customer needed a slightly different approval flow, so the flow was copied. A new document layout was needed, so the generator was copied. Each copy then drifted on its own, and a rule change became a search across the codebase.

Where real variation exists across processes, entities or customers, the variation goes into configuration or metadata and the logic exists once. A workflow is a definition with steps, conditions and roles. A document is a template with data sources. The code that runs them is small, tested and shared. This applies to new systems as much as to modernized ones; in a new system it is cheaper, because nothing has to be untangled first.

what that buys you
  • One place to change a rule, and it changes everywhere it applies.
  • Consistent behaviour across modules, because they run the same component.
  • A new variant inside the supported model is a configuration change, reviewed and versioned, not a development project.
where the limit is
  • New business behaviour that the model does not cover still needs code, and that is normal.
  • Shared components are introduced where rules have the same meaning and a clear owner. Implementations that only look similar stay separate.
  • Abstractions are introduced when real cases and expected changes justify their complexity, not ahead of them.

// the process

How the work runs.

  1. 01
    Discovery or assessment first

    For a new system: who uses it, which process it runs, what has to exist on day one. For an existing one: an inventory of modules, integrations and data flows, the risks ranked, the order of work, and the list of behaviours that must not change. Its scope and length are agreed with you, because they depend on the size of the system and how much of its behaviour is written down. The result is a plan with phases and an estimate for the first increments.

  2. 02
    Then increments

    Each one is small enough to verify on its own, has tests that pin the behaviour, and is ready for the release schedule we agree. Feature work continues in parallel, planned against your team's capacity and the dependencies between the two streams. A fixed date, where you have one, is assessed against the scope and the dependencies before it is promised.

  3. 03
    Interruptions are assessed, not assumed away

    For each step that touches a running system the assessment says whether users are affected. Where a cutover needs a pause, it gets an agreed maintenance window, a rehearsal and a recovery plan.

An illustrative modernization step. Today: users and integrations call a legacy system with the modules Orders, Pricing, Invoicing and Reports on an existing database. Next step: Pricing gets a new implementation outside the legacy system behind an interface, with the same behaviour and tests around it; the other modules and the database stay as they are. Which module goes first, and how, is decided in the assessment.
An illustrative modernization step: one module at a time behind an interface, the database stays. Which module goes first, and how, is decided in the assessment.
behaviour and data

Existing behaviour is preserved unless a change is explicitly agreed.

Process improvements are decisions written down before the work, not side effects of a migration. Tests check both: parity where nothing should change, and the agreed new behaviour where it should. Data integrity is kept throughout. Transaction boundaries are kept as they are, or redesigned against consistency requirements we define together.

// measurable targets, not guarantees

What we aim for.

Before the work starts we agree which of these to measure, and how. The numbers come from your system, not from a brochure.

Area Today, typically >_ Target
Releases Manual, infrequent, after hours. Automated pipeline, routine, reversible.
Business rules Copied across modules and procedures. Shared, tested components where business rules have the same meaning.
Variants A code branch or a copy per customer, product or region. Configuration over shared logic.
Visibility Logs on a server nobody reads. Metrics, logs and alerts in your environment.
Platform Out of support, hard to hire for, growing bill. Supported .NET, predictable infrastructure.
Knowledge In two heads. In the repository, with the team.

// optional

Where AI fits.

Some business systems have a job for a language model: reading supplier documents into typed data, drafting replies, answering questions over your own records. It is added where it solves a concrete problem, after the domain is clean enough to check the model's output, and the model can only call the methods you expose. How that looks in practice is the subject of the series LLM Inside the Monolith, built on a demo system you can run.

// background

What this is built on.

Anonymised, from systems I have worked on. The source technology was different every time, and the approach was planned around each one.

financial platform / team member

Oracle PL/SQL logic moved to C#/.NET

Complex PL/SQL logic and data flows moved to C#/.NET with functional parity, under transaction and concurrency constraints, using reusable patterns so the same rule was not rewritten per module.

ERP system / Delphi to .NET

ERP processes carried into C#/.NET web functionality

Analysis of existing Delphi business logic, ERP processes and data, and development of the C#/.NET web functionality that took them over.

LIMS / architecture and team lead

Process redesign and knowledge transfer

Process analysis on site with the people running the lab, redesign of the laboratory workflows, the architecture that followed, and knowledge transfer to the team that maintains it.

document engine / design and build

Document engine for Dynamics 365

Configurable templates and data sources, metadata-driven processing and runtime type resolution, so the engine supported different document types and sources without a separate implementation for each.

manufacturing and ERP

Workflow modelling and integration

Business workflow modelling and integration with business and industrial systems.

demo / built in public

DotnetLeet.Trade

A back office for a hardware reseller with a local language model inside, built in public as the system behind the blog series. Source on GitHub. It is a demo, not a client project.

// not a fit if

When this is not the right fit.

  • You want a whole running system rewritten from scratch on a fixed date without an assessment. The assessment is where the date gets checked against the scope and the dependencies; there is no universal 14-day promise here.
  • Nobody in the business can confirm what the system is supposed to do. Weak documentation is normal and workable; no access to the people who know the process is not.
  • You need a large team on site from day one. This is one architect working directly with your engineers, from analysis and architecture to implementation and handover.
what I need from you
  • Access to the code, the database and the environments, where they exist.
  • The people who can confirm how a process should behave.
  • One person who can decide.

// straight answers

Questions engineering leads ask first.

Does the existing system have to be .NET?

No. .NET is the target. The system you run today can be Delphi, Java, PHP, Oracle Forms or anything else, and it is analysed first; the approach follows its constraints. I do not claim expertise in every source stack. I claim a method for understanding one, and I say so when a system needs a specialist I am not.

Can you build it from scratch?

Yes. A new business application or module starts with discovery instead of an assessment: who uses it, which process it runs, what has to exist on day one. Scope, phases and timeline follow from that, not from a fixed package.

Is this the 14-day MVP?

No. The MVP is a separate offer with a fixed functional scope for web, iOS and Android. Custom development has scope, phases, timeline and pricing agreed per project, and a new product can be either, depending on what it has to do on day one.

We have a fixed deadline. Can you commit to it?

Feasibility is assessed against the scope and the dependencies before anything is promised. If the date holds, it goes into the plan together with what it depends on. If it does not, you hear that before the work starts, with what would have to change.

Will users notice a modernization?

Each step is assessed for impact before it is scheduled. Where a cutover needs a pause, it is agreed in advance, rehearsed, and has a recovery plan.

Can we keep shipping features meanwhile?

Yes. The work is planned in increments around your roadmap and your team's capacity, and the pipelines it adds make feature releases safer too.

Do we have to leave our database or rewrite the stored procedures?

No. The database and the procedures stay unless there is a concrete reason to move a piece of logic: it is duplicated, cannot be tested, blocks a change, or has to run outside the database.

Who does the work?

I do, directly with your team: analysis, architecture, implementation and the handover of knowledge. Your developers work in the code with me, so the system stays theirs.

// start here

Tell me about the project.

A new system, an extension, or one you want to modernize: what it does, what hurts, and what has to keep working. You get a straight answer on how I would approach it and what comes first.

  1. 01
    Describe the project

    A few sentences are enough: what it runs or should run, what is painful, and what must not break.

  2. 02
    15-minute architecture call

    First questions, the risks I see, and whether discovery or an assessment comes first.

  3. 03
    Discovery or assessment, then a plan

    Scope, phases, timeline and pricing are agreed after it.

No sales reps. Direct talk with the lead architect.

new-project.brief
What do you need?

Your brief stays private. It is only used to prepare the call. Privacy