Start with the modernization driver
| Driver | Likely first move | Do not assume |
|---|---|---|
| Fails on newer Windows | Compatibility and dependency diagnosis | That a full rewrite is required |
| Cannot make business changes safely | Source, build and behavior assessment | That converted code will become maintainable |
| Obsolete database or device | Isolate the integration boundary | That the user interface must change too |
| Security or deployment constraints | Map trust boundaries, data flows and installer behavior | That virtualization resolves application-level risk |
Four viable paths
Stabilize
Repair deployment, remove machine-specific assumptions and establish a reproducible build. Best when the application still meets its purpose.
Encapsulate
Keep stable VB6 logic but place a controlled API, service or adapter around a database or hardware boundary.
Incrementally replace
Move one workflow or integration at a time while characterization tests compare new and old behavior.
Rewrite
Appropriate when requirements are understood, replacement value is clear and parallel validation is possible. It has the highest discovery burden.
Evidence needed before choosing
- A complete project inventory, including source outside the obvious project directory.
- A build dependency list: controls, COM servers, type libraries, SDKs and installer projects.
- Database schemas, stored procedures, file formats and data-quality constraints.
- Critical workflows with representative inputs and expected outputs.
- Device protocols, timing behavior and test access to real or simulated equipment.
- Operational constraints: downtime, rollback, security isolation and support horizon.
A safer sequence
- Preserve a known working system and its data.
- Restore a reproducible build.
- Instrument and characterize important behavior.
- Remove or wrap the highest-risk dependency.
- Release in reversible increments.
- Retire old components only after operational evidence confirms the replacement.
The VB6 hub explains the wider dependency landscape. If immediate continuity is the priority, begin with legacy application support. Database migration should be planned with the data layer, and undocumented interfaces may need reverse engineering.