Oddity Knowledge Base Development guide

Planning the Future of a Visual Basic 6 Application

5 min read Practical knowledge from OddityRead the article

Visual Basic 6, usually shortened to VB6, is an older Microsoft development environment and language associated with Windows desktop applications. Some organizations still rely on programs built with it to manage records, produce reports or carry out specialized office work. The challenge is to preserve that useful behavior while planning a supported future for the application.

A sensible assessment distinguishes the program people run, the tools needed to change it and the components it depends on. An application opening successfully on a workstation answers only part of the maintenance question.

Distinguish runtime support from development support

Microsoft's Visual Basic 6 support policy distinguishes supported runtime files from the unsupported VB6 development environment. Runtime servicing for existing applications is limited and tied to supported Windows lifecycles. It does not provide blanket support for an entire application or every third-party control.

The policy also explains that VB6 runtime components remain 32-bit and use the Windows compatibility environment on supported 64-bit systems. Installing a newer operating system does not turn the application into a native 64-bit program.

Microsoft's lifecycle announcement recommends replacing VB6 applications with modern technology because VB6 development is no longer supported. For a business, that calls for a planned transition with evidence about its own application, rather than an assumption that it must stop working immediately.

Preserve a complete picture of the working system

Start by locating the source project, installers, required components and configuration. Record which machines run the application, where its data is stored and which tasks depend on it. Keep the original materials intact while assessing what can be rebuilt and tested.

Document component versions and installation requirements. A working executable does not establish that the source project is complete, and an old setup package does not establish that every dependency is still available. Identify gaps before promising a delivery date.

Observe normal work with the people who use the program. They may know about a special report, a keyboard shortcut or an exception that is absent from written instructions. Those details can become acceptance requirements for the replacement.

A practical example: a membership records application

Imagine an association using a VB6 program to maintain member details and prepare mailing lists. Staff can renew a membership, record an address change and select a group for an event invitation. This is a hypothetical example, not a description of a particular customer installation.

The replacement must do more than display a familiar-looking contact form. The association needs to understand which records are current, how groups are selected and why a person appears in one list but not another.

  • Identifiers: Keep stable member references that connect records and historical activity.
  • Status: Explain the difference between active, expired and inactive records.
  • Addresses: Determine which address is current and which information belongs to history.
  • Selection rules: Record how the application chooses recipients for each existing list.
  • Outputs: Retain representative reports and exports that staff can compare.

A short demonstration of each important task can reveal requirements that a source-code inventory alone would miss. Use appropriately protected test information when those demonstrations leave the production environment.

Investigate dependencies before choosing the destination

An application may rely on database drivers, reporting components, document automation or specialized controls. Identify their actual roles. Replacing a screen control is a different task from replacing a component that calculates or transforms information.

For a transition involving .NET, Microsoft's COM interoperability documentation describes mechanisms for working with COM components. That can be relevant to some existing dependencies, but it is not a promise that an arbitrary VB6 application can be moved unchanged.

Evaluate any proposed bridge with the exact component, target environment and deployment method. A temporary dependency retained to support a transition should have an owner and a clear reason to remain.

Visual Basic .NET is a separate destination to assess, not a version switch to apply to a VB6 project. Our Visual Basic .NET guide explains its current language strategy and maintenance considerations. A browser application or another desktop approach may also be appropriate, depending on the work and the people using it.

Choose a transition around business behavior

The right plan depends on the size of the application, the quality of its source and the number of special cases it contains. A small utility may be practical to replace directly. A larger system may need a staged approach with carefully defined boundaries.

For the association, one stage might reproduce a read-only membership report from a verified copy of the data. Staff could compare the result without changing the system they use for daily updates. A later stage could introduce editing once the record meanings and permissions are clear.

Give data one authoritative home during the transition

If old and new applications operate at the same time, decide which one may change each type of information. Two editable copies can diverge even when both programs appear to work normally.

Define how changes made during testing reach the eventual production system. Record the cutoff, the transfer process and how differences will be reconciled. A successful import should be supported by record-level comparisons and explained exceptions, not only a matching total count.

Automated conversion may assist a project, but generated code still needs review and workflow testing. Treat the result as something to verify. Do not assume that a program compiling successfully means its reports, dates, selections and error handling match the original.

Test the replacement before retiring the original

Agree on acceptance examples with staff. In the membership scenario, test a renewal, an address change, an expired member, a group selection and a historical record. Compare the actual output with the documented rule and explain any intended difference.

Test installation, permissions, backup restoration and normal use on the intended machines. Confirm who will investigate a problem after launch and how staff will continue working if the transition needs to pause.

Retain original evidence and a practical recovery plan through the agreed transition period. A replacement is ready when it preserves the required information, supports the real tasks and has an understood operating model. The goal is dependable continuity with maintainable software, not merely removing an old language from the inventory.

Oddity Data Updates

Know when fresh data arrives.

Receive occasional notices about new and substantially updated database releases. No third-party mailing list.

Oddity Software

Details