Service · Web development

Replace your Microsoft Access database with a modern web platform.

An Access application that worked well for years eventually grinds to a halt: nobody dares touch it anymore, only one colleague understands the macros, it doesn't work on mobile, and the GDPR position is weak. We migrate your .mdb or .accdb to a scalable web application with multi-user access, an audit trail and a proper back end.

Data exportForms to web UIReports to BIGDPR-compliantAudit trail

Access was once the smartest choice. Until it wasn't.

For decades, Microsoft Access has been the pragmatic answer for SMEs, accountancy firms, local government, small care practices, laboratory environments and production tracking. Someone with domain knowledge could build a working application without a developer, with tables, forms, queries, reports and a few macros, all in one file. In many organisations that Access application is still running, because it simply "works".

The problem is that "simply works" is deceptive. A .mdb or .accdb sits on a network drive, sometimes via a file share dating back to the Windows Server 2008 era. With one user it's fine; with two you get record-locking issues; with five you get a corrupt file that has to be backed up in the evening and restored in the morning. No mobile app, no audit trail, no role management beyond a password-on-file, and logic buried in VBA macros that exactly one person can still decipher.

Replacing an Access database is rarely a purely technical exercise. It is usually a combination of risk management (GDPR, audits, single points of knowledge), scalability (more users, mobile access) and further development (your working process has outgrown what Access can handle). Our approach fits within our broader practice in web development and is closely linked to the wider context of platform migration. An Access replacement is, at its core, a platform migration with Access-specific pitfalls.

Three approaches to replacement.

Not every Access database calls for the same approach. Sometimes the existing logic is so specific to your business that custom development is the only sensible route. Sometimes the working process has become generic enough that a low-code platform will do. Often it is a hybrid: the core custom-built, the edges low-code.

Compact project · fixed sprint budget

Low-code replacement (PowerApps or AppSheet)

For relatively generic administrative applications, such as a membership register, a small customer database, stock tracking or a simple form-based workflow, we rebuild your Access database on Microsoft PowerApps, AppSheet or a comparable low-code environment. The data moves to Dataverse, SQL Server or Google Cloud SQL, the Access forms are rebuilt in the low-code editor, and reports go to Power BI or Looker Studio. This is the right choice when your organisation needs to be able to adjust the solution itself without a developer.

PowerApps / AppSheetDataverse / SQL ServerPower BISharePoint integration
Mid-sized project · fixed sprint budget

Custom web app (Postgres + React)

For Access databases where your business logic lives (specific calculations, your own workflow, integrations with other systems), we build a custom web application. Data moves to Postgres, MySQL or SQL Server; forms are rebuilt in React, Vue or Astro as a single page application; queries are available as REST or GraphQL APIs; macros are translated into clear backend logic. Includes multi-user access, an audit trail and role-based permissions.

Postgres / SQL ServerReact / Vue / AstroREST / GraphQLAudit log
Larger project · fixed sprint budget

Hybrid platform with data layer and BI

For situations where several Access files exist side by side, often having grown over years with overlapping data and logic, we first consolidate the data layer (see also our page on data engineering platforms) and then build a digital platform on top that takes over and extends the Access functionality. This suits organisations that want to use the migration to get their reporting and BI in order straight away.

Data warehouseETL / dbtPower BI / MetabaseSSO & role management

What you get at the end.

No more .accdb files on a network drive, no VBA macros that only Jan understands, and no pop-up saying "this file is being used by someone else". Instead, an environment that you can manage yourself or have managed for you, with your data and logic entirely in your own hands.

  • The new environment, liveProduction and staging environments in your own cloud (Azure, GCP, AWS) or hosted by us. Including daily backups, monitoring and a tested recovery procedure.
  • Full data migrationAll records from your .mdb or .accdb transferred and validated against record counts, foreign keys restored where Access handled them implicitly, and a mapping document so it is clear which column ended up where.
  • Rebuilt forms and workflowsYour existing input, edit and lookup screens rebuilt as a web UI, tested by your own end users in pilot sessions before the old environment is switched off.
  • Reports and BIYour Access reports converted to Power BI, Metabase or Looker Studio, running on live data from the new database. No more manual Excel exports for the monthly report.
  • API and integrationsQueries and data available through a clean REST or GraphQL API, with documentation. Ready for integrations with your accounting package, CRM or other systems through smart API integrations.
  • Complete codebase and documentationSource code, build instructions, database schema, architecture overview, incident runbook. No vendor lock-in: another team can take over.
  • Training and ongoing managementSessions for key users plus short videos for end users. Optional management contract covering monitoring, backups, security patches and further development for a fixed monthly fee per tier.

When replacing Access is the right choice.

Five patterns in which organisations approach us to replace their Access environment. If you recognise one of them, a conversation is usually worthwhile, even if we ultimately conclude that a light upgrade will suffice rather than a full replacement.

Single-user lock

Only one colleague at a time can get in

The Access application is meant to be multi-user, but in practice the second user gets blocked. Records become locked, the file occasionally corrupts, and the ICT team restores backups before the day can begin. Once the team grows, this doesn't hold up.

No mobile access

Not usable outside the office

Your staff in the field, on site or on a production floor have no access to the Access environment. They note everything on paper or in Excel and type it up in the evening. A web environment solves this at once: tablet, phone, laptop, all showing the same screen.

GDPR risk

Personal data stored locally

Your Access database contains personal data (customers, patients, employees, members) and sits as an .accdb file on a network drive with unclear access. Who has copies? Who changed what? In the event of a data breach or an investigation by the Dutch Data Protection Authority, you are poorly placed. GDPR requires demonstrable access control and logging.

Audit trail requirement

NEN 7510, Wkkgz or compliance requires logging

If you work in healthcare, NEN 7510 requires demonstrable logging of who viewed and changed what. In accountancy and financial services, the Wkkgz (Wet keuring kwaliteit gezondheidszorg is not applicable here; rather the Wet op het financieel toezicht and Wta) carries comparable requirements. Access doesn't provide this; a modern web app does as standard, with an immutable audit log for every record mutation.

Single point of knowledge

One person knows the macros

The Access application was built up over the years by one colleague: VBA macros, complex queries, many form events. If that colleague retires, resigns or falls seriously ill, nobody knows how the system works. This is an operational risk that only becomes apparent when it is already too late.

Further development stalled

New requirements no longer fit

You want to connect a customer portal, add a mobile scanner flow, integrate with your accounting or support multiple branches. Access can technically still do some of this, but every extension becomes a workaround, and nobody can guarantee the existing flows will keep working. Over the years the setup has become too heavy for the platform.

How an Access migration project works.

1

Introduction and quick scan of your .accdb

A first conversation in which we understand what the Access database does within your work process, how many users there are, what the pain points are and what you would like. We then carry out a short technical scan of the file itself: number of tables, relationships, forms, queries, reports and VBA macros. At the end you receive an initial outline of the migration scope and an idea of the right target platform.

2

Discovery with your end users

A workshop with your team plus interviews with a few daily users: what do you currently do in Access, what would you actually like, and which flows are business-critical? At the same time we carry out a thorough analysis of the Access file: reading out macros, working through queries, mapping data relationships. At the end: scope, planning, screen flows, and the target platform for each component.

3

Data export and schema design

We export the data from your .mdb or .accdb into Postgres, MySQL or SQL Server. Foreign keys that Access left implicit are made explicit, column types are harmonised, and data quality is checked with a report of discrepancies. For running in parallel, we set up a synchronisation script so your team can keep working in Access while the new environment is being built.

4

Building the web app in sprints

A working build every two weeks. We start with the most used flow, usually one main form with its associated lookup queries, and in later sprints expand to the other forms, reports, the audit trail and the API integrations. Your key users test along the way. The macros are not translated one-to-one but reviewed and turned into clear backend logic with tests.

5

Pilot, training and go-live

A pilot group works in the old Access and the new environment in parallel for two weeks. Differences are identified and resolved, and screens are refined based on feedback. This is followed by training sessions for key users, short videos for end users, and go-live with a clear rollback procedure as a fallback. Access remains available on a temporary read-only basis for historical reference.

6

Further development and maintenance

An optional management contract covering monitoring, backups, security patches and further development of requests that fell outside the scope during discovery. The environment grows along with your way of working.

The migration approach in detail.

Replacing an Access database breaks down into six tracks. First, the data export: tables from the Access file are transferred to the target database (Postgres, MySQL or SQL Server, depending on what your IT environment already runs). Access-specific column types (AutoNumber, Yes/No, OLE Object, Hyperlink, Memo) are mapped to serial, boolean, bytea and text. Foreign keys that existed implicitly in Access (via lookups in forms) are recorded explicitly in the schema with the corresponding constraints.

Next, the forms. Access forms are often a mix of input fields, lookup combo boxes, subforms and VBA events. We rebuild them as a web UI in React, Vue or Astro, with the same fields and validation rules but in a design that works across multiple screen sizes. Subforms become tabs or accordions, lookup combo boxes become search fields with autocomplete, and validation happens in the browser as well as again on the server side.

The reports move to a BI environment: Power BI if you are Microsoft-oriented, Metabase for self-hosted setups, or Looker Studio for Google environments. The advantage: reports are now live, shareable via link and interactively filterable rather than compiled at a fixed point in time. The monthly report that used to take an hour of Excel work becomes a dashboard that is always up to date.

The macros are the delicate part. VBA code can range from trivial ("clear this field when a new record is created") to complex ("generate an invoice PDF using several queries and email it to the customer"). We document every macro, decide with you which ones are still relevant to the new way of working, and rebuild those as backend logic in TypeScript or Python with tests, so that a later change does not quietly break a calculation. The rest we deliberately drop.

The queries, especially the saved queries used in forms and reports, become API endpoints. A REST or GraphQL API returns the data that used to sit in a query result. That immediately opens the door to integrations with other systems: your accounting, CRM or a mobile scanner app. Or another team can build its own customer portal on that API without ever touching the database directly.

Finally, the cut-over. Nobody likes to switch over all at once without a safety net. We work in parallel: Access remains as a reference, and a synchronisation layer mirrors changes between old and new. At go-live, the write direction switches; Access remains available for historical reference.

Sectors where Access is still often used.

Microsoft Access is still going strong in six types of organisations we increasingly see as clients. SME administration: small businesses with their own customer or order database, often built by a single employee with a knack for IT. It works well for the first hundred customers but starts to struggle at the thousandth.

Small healthcare practices: dental practices, physiotherapists, small mental health clinics. Patient records, appointments and treatment history kept in an Access file, a setup that now clashes with NEN 7510 and GDPR. Replacement is often no longer optional here; auditors ask for demonstrable access control and an audit trail.

Accountancy and bookkeeping firms: small practices with their own Access database for hours, clients, files and invoice status, alongside their accounting package. The Wta requirements around file documentation and audit trails have become stricter, and Access generally does not meet them without a lot of manual work.

Local government and public services: municipal departments, water boards and small implementing bodies, often with a register, permits database or internal enforcement tool in Access. This is where GDPR, Freedom of Information requests and inter-governmental information sharing come together.

Research, labs and R&D: university research groups, clinical labs and smaller R&D departments tracking experiments, samples and measurements in Access. These often start with a PhD candidate; two years later the organisation is left with a knowledge gap. A web app with an API has the added advantage here that data can flow directly into a data pipeline.

Production tracking and small-scale manufacturing: SMEs in manufacturing that keep their work orders, stock and quality checks in Access. The main pain points are mobile access (shop-floor operators have no access) and integration (accounting, ERP and Access are not in sync). Replacement often goes hand in hand with a first integration layer towards integrations with other systems.

Technology choices we make along the way.

The target platform depends on two questions: how specific is your business logic, and how much self-service adaptability does your organisation want to keep? For generic administrative flows, a low-code route such as PowerApps with Dataverse or AppSheet with Google Workspace makes sense. Your own staff can make small changes later without a developer. The downside: the ecosystem sets the rules, and vendor lock-in is a real risk.

For applications where your own logic lives, we opt for custom development. Postgres is our default database: open source, robust and widely supported. SQL Server if your IT team already works with it, MySQL in shared-hosting scenarios. Front end in React, Vue or Astro; back end on Node.js, Python (Django or FastAPI) or .NET, depending on what your current or future maintenance partner knows.

For the migration itself, we use ODBC connections to the Access file, a Python script with pandas or a tool such as mdbtools to extract the data, and dbt or custom SQL scripts for the transformations to the new schema. For BI: Power BI (Microsoft-oriented), Metabase (self-hosted) or Looker Studio (Google). Authentication via SSO on Azure AD, Okta or Google Workspace; magic links or MFA for external users. And always an immutable audit log, which is the feature difference that is worth the most.

Frequently asked questions.

What clients usually want to know before we start.

Can you export all the data from our .accdb file, including the images and attachments?
Yes. Tables, relationships, indexes and records are exported one-to-one via ODBC or an open-source tool. OLE objects and attachments (Access «Attachment» columns) are extracted separately and moved to a file store (S3, Azure Blob or GCS), with a reference in the new database. We deliver a mapping document showing, for each table, which Access column ends up where, plus a data quality report listing irregularities that were quietly present in Access (empty required fields, broken foreign keys, duplicate primary keys).
What happens to our VBA macros and form events?
We document every macro — what it does, when it is triggered, which data it touches — and discuss with you which ones are still relevant to the new workflow. The relevant macros are rebuilt as backend logic in TypeScript or Python, with tests, so that a later change cannot quietly break a calculation. Macros that have become obsolete over the years or were a workaround for an Access bug are deliberately dropped. At the end you receive a note for every original macro with the decision (kept, revised or dropped — and why).
What if we need to keep working in Access during the migration?
That is the starting point. We run in parallel: Access remains your operational environment while we build the new web app in staging. During the cut-over phase, a synchronisation layer replicates changes made in Access to the new environment every few minutes. Your pilot group already tests there, and everyone else carries on in Access. At go-live the write direction switches; Access remains available read-only for reference. A formal roll-back procedure is in place.
What does this cost?
That depends on the size of your .accdb, the number of forms, the complexity of the macros and the target platform. A compact replacement of a smaller administration database with PowerApps or a simple web app is a fixed sprint budget spread over a few sprints. A larger migration with multiple Access files, integrations with your accounting system and a BI layer takes several sprints in succession, delivered in phases per module. We work with a fixed sprint budget so you can adjust the scope each sprint, and we give an indicative figure for the total in the quote — never an empty number before we have seen your Access file ourselves.
How long does a project like this take?
This depends too much on your situation to name a figure without having seen your .accdb. For a simple replacement we are talking about a programme of a few sprints; for a more complex migration with several files and integrations, a multi-sprint programme. Every sprint we deliver a working partial release so you see value early and can steer priorities. In the quick scan of your file we can give a realistic picture of what is needed for your specific environment.
Can we choose low-code (PowerApps, AppSheet) instead of custom development?
Yes, and in a minority of cases that is the right choice. For relatively generic administration applications without much custom logic, and for organisations that want to be able to adapt the solution themselves later without a developer, PowerApps with Dataverse or AppSheet with Google Workspace is a sensible route. We then build the PowerApps environment, migrate the data to Dataverse or SQL Server, and set up Power BI for the reporting. The drawback: you are tied to that ecosystem. For applications where your own logic lives, or where the scale goes beyond low-code limits, we choose custom development.
How do we arrange GDPR, audit trail and healthcare or accountancy compliance?
GDPR is the baseline: encryption in transit (TLS 1.3) and at rest, role-based access following the principle of least privilege, processor agreements where needed, and an immutable audit log for every record mutation as standard. For healthcare environments we work towards NEN 7510 compliance, with explicit logging of access to and changes made to patient records, and session time-outs set per your office policy. For accountancy and financial services we meet the Wta requirements around file formation and audit. We carry out a DPIA where the scope warrants it, and build penetration tests into the final sprint before go-live on request.
Do you work alongside our current IT provider or managed service team?
More often than not, yes. We deliver the codebase, build instructions, an architecture overview and an incident runbook so that an external managed service provider can take over. That is a deliberate design choice to avoid vendor lock-in. We carry out knowledge transfer during the final sprint. Sometimes we stay on under a managed service or ongoing development contract; sometimes an external party is the more sensible choice for maintenance. We always advise on what fits best, even if that means another team carries on from here.
Our Access setup consists of several files that refer to each other. Can you handle that?
Yes. Often it's a front-end .accdb with linked tables pointing to a back-end .mdb, or several business units that each have their own Access environment with overlapping data. During discovery we map out all the files, identify overlaps and conflicts (the same client under different client numbers), and propose a common schema. An Access migration is often a good moment to tidy up that organically grown mess, as it needs to happen during the migration anyway.
What if we first only want to modernise the data layer and keep the Access front end for a while longer?
Yes. We set up Postgres or SQL Server as the new back end and connect your existing Access front end via ODBC linked tables. Access then becomes a thin presentation layer on a modern database: several users can work at once, backups go through professional tooling, and you can build a web app on the same data in parallel. For organisations that do not want to overhaul everything at once, this is often a good first step. Our page on platform migration describes this phased route in detail.

Talk to us about your Access environment.

A no-obligation introductory call of half an hour. We listen to your current Access workflow and the needs behind it, ask targeted questions, and give you direction you can act on, even if we ultimately conclude that a light upgrade will do instead of a full replacement.

Share LinkedIn Email

Edit content