The starting point.

The ERP supported daily retail operations. That made reliability a product requirement, not a maintenance footnote. Changes had to improve the system while preserving the work people already depended on.

Performance, integrations and interface behaviour were connected. Treating one layer in isolation would only move a problem somewhere else in the request path.

What the work had to respect.

An operational ERP leaves little room for careless change:

  1. Existing workflows had to keep serving day-to-day retail work.
  2. Database, backend and frontend behaviour needed to change together when the contract changed.
  3. Integrations had to remain understandable at the system boundary.
  4. Performance work had to address the real path through the application, not one isolated symptom.

The diagnosis.

In a layered ERP, the visible delay or failure is often only the last link in the chain. A screen can be slow because of its request shape, backend work or a database access pattern. An integration issue can surface as a frontend inconsistency.

I worked through that full path. SQL Server, .NET services and the browser interface were treated as parts of one behaviour, with the integration boundary included in the same reasoning.

The working system view.

The useful unit of change was the end-to-end request: an operator action in the frontend, application rules in .NET, data work in SQL Server and any exchange at the integration boundary.

The working system view. Follow the behaviour across layers instead of optimising a layer in isolation.SYSTEM VIEW / ERPOPERATORFRONTEND.NETSQL SERVERINTEGRATIONS
Follow the behaviour across layers instead of optimising a layer in isolation.

Decisions that mattered.

The work favoured controlled evolution over a dramatic rewrite.

D01

Trace the whole request path

Performance and reliability work starts at the user-visible behaviour and follows it through the backend to the database.

This takes more investigation than patching the first slow component, but it avoids shifting the bottleneck.

D02

Change contracts deliberately

When data or backend behaviour changes, the frontend and integrations need an explicit, compatible contract.

Compatibility work can make a change less dramatic, but it protects the operations already running on the system.

D03

Improve in releasable slices

Focused changes are easier to reason about in a business-critical system and make the effect of each release clearer.

Incremental delivery demands patience and careful boundaries; it also keeps risk visible.

Delivery and verification.

Each change can be checked at the layer where it is made and again through the user-visible workflow it supports. Database behaviour, backend rules, integration responses and frontend state need to agree.

That end-to-end check matters most around everyday paths. A technically correct change is not finished if it makes routine work harder to understand or less dependable.

The qualitative result.

Performance, integrations and daily reliability improved together because the work crossed the boundaries where those concerns met.

The system continued to evolve without pretending that a business-critical ERP could be paused and replaced in one clean move. The practical route was to understand it, improve it and keep it useful throughout.