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 | Replace an extensive custom control library to its .NET replacement |
In-House | 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