Autologue -- PartsWatch Auto Parts Inventory and Distribution System (VB6)

Overview

Autologue is a leading provider of automotive aftermarket software solutions. Autologue's PartsWatch product offers advanced auto parts inventory and distribution management features.

Project Highlights

Phase 1: Standard Upgrade and Training

  • Main objective: to accelerate the incremental migration of PartsWatch to the C#.NET platform reducing cost and risk without requiring a code freeze or sacrificing quality.
  • 77 inter-related vb6 projects
  • 1.6M source code lines
  • 34 external COM components and controls
  • Effort: 30 person-days for solution development, 5 days for customer training

Great Migrations provided development, training, and support for using gmSudio to implement an automated, repeatable upgrade solution. This solution generates an integrated, build-complete set of C# application projects from the PartsWatch VB6 code.  It also generates set of C# projects providing a stub class framework to replace the COM dependencies found in that code. All of the projects are organized in a VS2015 solution to facilitate a full-stack build and further analysis and development. Great Migrations also provided an on-sight gmStudio training workshop to hand-off the upgrade solution and ensure that the the Autologue team would be able to advance and use the solution as part a broader, long-term upgrade strategy.

Phase 2: Custom Upgrade Support

The PartsWatch team put the project on hold for several years and operated in a hybrid mode designing and developing a framework that allowed running .NET UI elements under their VB6 host.  In 2022, Autologue re-engaged Great Migrations to help them migrate to a pure .NET architecture and we assisted with Custom Upgrade Solution design and development to implement numerous custom upgrade features:

COM Replacements

Mshflxgd.ocx

Replace MSHierarchicalFlexGridLib with In-House Grid Control

msado15.dll

Replace ADODB with In-House Data Access API

mscomm32.ocx

Replace new In-House Serial Communication API

ieframe.dll

Replace WebBrowser with In-House WebBrowser Control

richtx32.ocx

Replace RichTextLib with Winforms.RichtextBox

comdlg32.ocx

Repalce MSComDlg with Winforms CommonDialog components

SYSINFO.OCX

Replace SysInfo with .NET API calls

Msflxgrd.ocx

Replace MSFlexGrid with In-House Grid Control

mscomctl.ocx

Replace MSComCtlLib controls with WinForms controls and extensions

mscomct2.ocx

Replace MSComCtl2 controls with WinForms controls and extensions

tapi3.dll

Replace tapi3.dll (Telephony) with Interop assembly

msxml3.dll

Replace MSXML2 with System.Xml

Scrrun.dll

Replace Scripting File/IO with System.IO

In-House
Control Framework
Replace an extensive custom control library to its .NET replacement
In-House
Technical Framework
Replace an extensive collection of in-house technical APIs to .NET replacements

Structural

  • Consolidate over 90 Shared files changing shared code file references to common assembly references
  • Remove dozens of unused files and methods
  • Integrate hand-coded methods and files

Architecture

  • Migrate rich VB6-based composite application framework to .NET-based composite application framework
  • Migrate extensive collection of user-defined controls to .NET 
  • Migrate hundreds of UserControls to custom Forms
  • Migrate Multi-Language support to new design

Language

  • Optimized Type Inference
  • Migrate 1000s of VB.Collections and Scripting.Dictionaries to strongly typed Generic Lists and Dictionaries
  • Migrate using Optional Arguments
  • Migrating Twips to Pixels as needed

Win32

  • Rework over 100 methods to use .NET framework services rather than Win32 API calls

Value Added

  • Integrate nuget packages
  • Batch upgrade pipeline including all translations, solution generation, and .NET builds
  • Implement custom upgrade engine using gmAPI