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 engage 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