Major Non-Admitted Insurance Carrier -- Core System (VB6)

Overview

A major non-admitted insurance carrier maintains and runs a comprehensive Insurance Information Management System (IIMS).  IIMS is a business-critical desktop application supporting non-admitted insurance operations -- Policies, Claims, Agents, and Accounts -- for several hundred users across eight departments.   The IIMS application has been in active use and ongoing maintenance since the late 1990s. 

Project Highlights

System Metrics

Metric

Comments

CODE

315K LOC Logic and 64K LOC GUI in 1,035 Files:
213 Forms, 1 MDIForm, 707 Classes, 4 UserControls, and 92 Modules organized into 17 VBPs.

BINARIES

4 EXEs, 13 DLLs

MEMBERS

24,224 unique subprograms:
2,543 subroutines, 2,574 functions, 14,751 properties, 506 externs, 3,821 handlers, and 29 events. 

UI

216 unique UI containers containing 6,737 instances of 55 different kinds of controls.

COM

85,714 calls to external COM components. The diversity of COM members is 1,554 unique members of 117 classes from 30 COM components.

WIN32

256 calls to 98 unique entry-point APIs from 14 libraries. API Calls are made from 119 different user procedures.


GM assisted with the following four phases of the project:

  • An Assessment, Definition, and Planning engagement
  • A Standard Upgrade Phase resulting in an integrated, build-complete code of the entire system using a direct C# translation generated from the VB6 code and a C# stub framework generated for the external COM platform dependencies
  • Two Proof-Of-Concept experiments demonstrating how the Standard Upgrade process can be improved to produce a runnable application with limited functionality
  • A Custom Upgrade Phase implementing over 60 custom upgrade features and providing a clean, runnable .NET system ready for functional testing and transition to production


All four phases were completed in one year with a staffing level of one full-time GM resource, one full-time external .NET technical consultant from HMB, and one part-time developer from the client staff as well as PM support from the client's IT managers.  In a parallel effort, our consulting partner, worked closely with the client to confirm functional scope, develop an automated UI testing process, and prepare for the transition to production. 

Custom Upgrade Features

The collection of features integrated and delivered by the Custom Upgrade Solution are summarized below:

COM API/Control Upgrades

  • ADODB: upgrade to System.Data and SqlClient [+]
  • fpSpread: upgrade to WinForms.DataGridView [+]
  • In-House .NET Interop Code: upgrade to direct Assembly References
  • MSComCtl2.DTPicker: upgrade to WinForms.DateTimePicker
  • ListView: upgrade to WinForms.ListView
  • StatusBar: upgrade to WinForms.StatusBar [+]
  • ToolBar: upgrade to WinForms. ToolBar
  • TreeView: upgrade to WinForms.TreeView
  • MSComDlg: upgrade to WinForms CommonDialog classes
  • MSMAPI: upgrade to Microsoft.Office.Interop.Outlook
  • MSMask: upgrade to WinForms.MaskedTextBox [+]
  • MSXML: upgrade to System.Xml
  • Outlook: upgrade to Microsoft.Office.Interop.Outlook
  • RichTextBox: upgrade to WinForms.RichTextBox
  • Scripting: upgrade to System.IO; Dictionary upgrade to strongly-typed Generic Dictionary<K,T>
  • SysInfo: upgrade to .NET Framework calls
  • TabControl: upgrade to Winforms.TabControl [+]
  • Microsoft Word: remove

[+] .NET classes and controls were extended for better application compatibility and cleaner application code

Language Upgrades

  • Class_Terminate: simplify
  • VB6 Collections and Scripting.Dictionary: upgrade to strongly typed List<T>, Dictionary<K,T>, OrderedDictionary<K,T>
  • Conditional Compilation: simplify
  • Custom Data Binding: rework
  • Error handling: upgrade to Try/Catch with new logging component
  • Null/IsNull: upgrade to null or DBNull
  • Variant/Object Type Inference: optimize

Structural Matters

  • Remove unused content: 75 whole files and 3,700 functions were removed
  • Integrate hand-coded content: 13 whole files were replaced and 55 functions were re-authored
  • Generate a VS2017 Solution integrating the full application stack: 14 generated projects and more than 60 preexisting, in-house .NET projects were integrated

Win32

  • Replace Win32 wrapper functions with functionally-equivalent hand-coded functions using .NET APIs 

Value Added Features

  • Integrate gmStudio batch upgrade processing with a TFS DevOps Continuous Integration Pipeline
  • Rework or remove various cases of technical debt
  • Accept updates of the VB6/COM code corresponding to four (4) maintenance releases
  • Create and maintain a Source Metrics Database in SQL Server for ongoing optimization of the work plan

At the end of the Custom Upgrade Phase, which was completed in six months, the gmStudio Upgrade Solution could be used to automatically rewrite the entire IIMS codebase to C# applying all of the custom upgrade features listed above.  On a typical Windows 10 development machine, the entire process (of upgrading the full set of VBPs to an integrated Visual Studio Solution) runs, from start to finish, in under 2 minutes. 






Newly responsible for a critical system written in VB6 that contains multiple core functions within a growing excess and surplus insurance company, I needed to elevate that system to a platform that was supported, extendable, and secure.  Rewriting the system was not an option because the time investment, additional staff cost, and risk of lost business rules were heavy.  Purchasing a new system was not viable - the cost, business disruption, and time investment were all too great.      

I had worked with Great Migrations in the past, knew what their technologies and organization were capable of, and asked them to help us move this VB6 system to the .NET platform.  They worked with our management, our vendors, and our staff to create a detailed plan, perform a POC conversion, and deliver the final converted codebase.  Great Migrations improved the system during this process – they identified dead code and unused modules as well as COM and API usage that were no longer needed.  They trained our staff in using their tools and helped us understand the complexity of the effort and mindset needed to successfully perform the conversion.

Having Great Migrations help our organization re-platform this critical VB6 system to .NET was the right decision. It was less disruptive to the business, assured full business rule retention, required fewer staff, and cost much less.  I can now find and  hire staff to maintain and extend the system with confidence whereas before it was a serious challenge. This system can now be part of our digital transformation efforts where before it was being left behind.

-- IT Solutions Architecture Manager