The database is only one part of the system

A mature Access application often combines tables, linked data, saved queries, VBA modules, macros, forms, reports, exports, and conventions that live only in users' routines. A team that inventories only tables and screens will miss behavior that determines whether the replacement is usable.

Start by tracing real business scenarios from input through calculation, decision, output, and correction. That reveals which components are incidental and which carry business meaning.

  • Linked tables and external files
  • VBA event handlers and utility modules
  • Queries reused by forms and reports
  • Manual reconciliation and correction steps

Undocumented behavior accumulates over time

Access applications survive because people adapt them. A rounding exception may have been added after a financial discrepancy. A report filter may embody an agreement with operations. A field that appears unused may feed an export downstream.

Rewriting from a feature list can erase those decisions. The safer approach is to turn current behavior into explicit examples and acceptance criteria before implementation begins.

Establish evidence before choosing the target

C# and SQL Server may be an appropriate destination, but technology selection should follow an understanding of workload, concurrency, deployment, reporting, integration, and support constraints.

Representative datasets, known-good outputs, edge cases, and dependency maps create a baseline the future system can be tested against.

  • Inventory forms, queries, reports, code, and integrations
  • Identify authoritative outputs and representative cases
  • Document unsafe or inconsistent historical data
  • Separate required behavior from accidental implementation detail

Modernize in reviewable stages

A controlled migration creates boundaries around durable rules, data access, reporting, and user workflows. Each stage should produce evidence that stakeholders can review before more of the old system is retired.

The goal is not to preserve every limitation of Access. It is to preserve the outcomes the business trusts while replacing the architecture responsibly.