Contact Us
The real work

Where VB6 migrations actually get hard

Syntax conversion is the easy 20%. These 4 problems are where upgrade wizards give up and rewrites go over budget.

Forms and the VB6 runtime

VB6 forms lean on runtime libraries that don't exist in .NET. We rebuild equivalent UIs on modern foundations, as native desktop screens or HTML5 web forms, and can merge cluttered forms into better screens along the way.

GOTO tangles

Decades of patches leave control-flow knots that a line-by-line converter copies straight across. DMS restructures them into clean if-then-else and loop logic, so the .NET code is actually maintainable.

Modules without objects

Classes and forms hint at target objects. Plain .BAS modules don't. We infer sensible object structure for them instead of dumping everything into static helper classes.

Legacy data access

Ad hoc files, indexed schemes and denormalized structures get converted to a proper relational model, and the data content itself is migrated with generated conversion programs. Legacy ADO and DAO get converted to ADO.NET, Entity Framework Core or Dapper.

Targets

Pick the .NET future that fits your stack

C# on .NET

The default choice. Largest talent pool, first-class tooling and the cleanest fit for object-oriented restructuring.

VB.NET

Keeps syntax familiar for teams with deep VB history, while moving to a supported runtime and modern libraries.

Java

For organizations standardizing off Microsoft platforms entirely. The same conversion machinery targets Java on Windows or Linux.

Process

How the project runs

Phase 01

Assess

We inventory forms, modules, controls and data access across your VB6 estate and map the risk areas.

Phase 02

Configure

Translation rules are tuned on your code. UI and database conversion designs are agreed with your team.

Phase 03

Convert

The full application converts in an automated pass. Your team keeps working in VB6 until the final snapshot.

Phase 04

Verify

Side-by-side testing compares legacy and converted behaviour before cutover. Deterministic rules make fixes stick.

FAQ

VB6 migration FAQ

General questions

No. Mainstream support ended in 2008 and extended support ended in 2013. What survives is the VB6 runtime, which Microsoft still ships with Windows, so applications keep launching while the development toolchain behind them has been unsupported for over a decade.

C# is the default recommendation: the largest talent pool, first-class tooling and the cleanest fit for object-oriented restructuring. VB.NET makes sense when your team has deep VB history and you want the syntax to stay familiar while the runtime and libraries move forward.

Wizards do syntax conversion, which is the easy 20%. They copy GOTO tangles across line by line, leave runtime dependencies that do not exist in .NET, and dump .BAS modules into static helper classes. What comes out compiles but is no easier to maintain than the VB6 was.

VB6 forms lean on runtime libraries with no .NET equivalent, so we rebuild equivalent UIs on modern foundations, either as native desktop screens or HTML5 web forms. Cluttered forms can be merged into better screens as part of the conversion.

Yes. Ad hoc files, indexed schemes and denormalized structures get converted to a proper relational model, and the data content itself is migrated with generated conversion programs. Legacy ADO and DAO calls convert to ADO.NET, Entity Framework Core or Dapper.

The logic is extracted from the source rather than reinterpreted. DMS restructures control flow into clean if-then-else and loop logic while preserving behaviour, and side-by-side testing against the legacy application is what confirms it.

No. Your team keeps working in VB6 while rules are tuned, and the full application converts in one automated pass on the final snapshot, so changes made during the project come across.

Third-party controls are inventoried during the assessment. Each one is either mapped to a modern equivalent, replaced with a rebuilt control, or kept via interop where the vendor component still has a supported path. The assessment tells you which case each control falls into before any work starts.

It depends on form count, control inventory and how much data access has to be redesigned. The assessment inventories forms, modules, controls and data access across your estate, maps the risk areas and gives you a phased schedule rather than an estimate.

No. Conversion is rule-driven and deterministic through DMS using symbolic AI, which is what makes fixes stick and the final automated pass safe. Gen AI is used around the edges, for documentation and comprehension of undocumented code.

Your VB6 app earned a real
successor

Get a free assessment: inventory, risk map and a migration plan for your application.