Alexander Forbes -- Insurance Administration System (VB6)


Alexander Forbes offers integrated retirement, investment, life and insurance solutions to create, grow and protect wealth and assets.

Great Migrations worked with Alexander Forbes to design and implement and end-to-end upgrade solution producing an integrated build-complete C# system with a specific set of custom upgrade features.

In addition to developing the upgrade solution to help automate the rewriting process, Great Migrations developed an automated UI testing tool and test scripts to help automated the functional testing process.

Project Highlights

System Metrics

FILES187K LOC Logic and 89K LOC GUI in 327 Files: 259 Forms, 2 MDIForm, 35 Classes, and 16 Modules organized into 15 VBPs.
BINARIES5 EXEs, 10 DLLs, 0 Controls, 0 OLE EXEs,       
MEMBERS8,079 unique subprograms: 2052 subroutines, 1276 functions, 404 properties , 148 externs , 4199 event handlers.   
UI240 unique UI containers containing 9612 instances of 45 different kinds of controls.    
COM242,613 calls to external COM components. The diversity of COM members is 759 unique members from 159 types in 17 COM components. 
WIN32225 calls to 66 unique entry-point APIs from 10 libraries. API Calls are made from 24 different user procedures.  

Upgrade Features

COM to .NET replacements:

  • ADODB: upgraded to MigrationSupport.DataLib (an ADODB emulation based on System.Data and delivered as C# source)
  • CDO: upgraded to System.Net.Mail
  • Excel: upgraded to Microsoft.Office.Interop.Excel
  • Ieframe: upgraded to WinForms.WebBrowser
  • MSACAL: upgraded to System.Windows.Forms.MonthCalendar
  • MSComCtlLib: upgraded to System.Windows.Forms controls (StatusBar, ListView, TabStrip, ProgressBar, ImageList)
  • MSComCtl2: upgraded DTPicker, MonthView, UpdownControl to Winforms Controls (DateTimePicker, MonthCalender, NumericUpDown)
  • MSHierarchicalFlexGridLib: upgraded to MigrationSupport.UI.Grid (a Grid control derived from WinForms.DataGridView and delivered as C# source)
  • MSFlexGridLib: upgraded to MigrationSupport.UI.Grid using MSHFlxGrid rules
  • MSMask: upgraded MaskEdBox to WinForms.MaskedTextBox
  • TabDlg: upgraded to MigrationSupport.UI.TabControl (a TabDlg emulation delivered as C# source)
  • RichTextLib: upgraded to RichTextBox to WinForms RichTextBox
  • Scrrun: upgraded to System.IO
  • ShdocVw: upgraded Migrate ShDocvwCtl.WebBrowser to WinForms.WebBrowser
  • Word: upgraded to Microsoft.Office.Interop.Word
  • In-house .NET: upgraded to use .NET directly instead of Interop

Trace Logging

The upgrade solution used out Trace Logging feature. This feature instruments the VB6 code such that a record to a log file is written whenever execution enters or exits a method. Translating the instrumented VB6 code produces an instrumented .NET code as well. This technique, along with careful side-by-side testing, helps us analyze behind-the-scenes differences between the VB6 and .NET code.

Extension Methods

The upgrade solution used our Lightweight Object-Oriented C# coding standard that uses various extension methods to more accurately emulate VB6 semantics.

Automated UI Testing

A significant deliverable from the project was automated UI testing procedures for the test cases provided by the client.  GM developed an automated testing framework based on Microsoft Test and the Coded UI Testing framework distributed with Microsoft Visual Studio 2013 Premium Edition. We refer to this as gmTest. gmTest employs a high-level scripting language called GM Testing Language (gmTL) to describe the steps of each test case. Because of the dynamic nature of gmTest, gmTL scripts are much easier to write and maintain than those written in any other test automation language.

In 2013 I was tasked with finding modernization solutions for some of our core line-of-business systems. One of those systems was a short-term insurance administration system based on Microsoft Visual Basic 6 (VB6). It’s important to highlight that before I came across GM, I had already spent a significant amount of effort evaluating service providers who at the time were regarded as the VB6 migration “usual suspects”—leaving me disappointed at what I regarded as being a surprisingly low standard of offering.

Upon making their acquaintance, I realised that George and Mark maintained the high standards necessary for the sort of fundamental change to a core system which we were considering taking on. A key requirement from our side was that the architecture of the migration solution be inherently automated, end-to-end. The need for automation was in anticipation of the unavoidable requirement for the painless rolling of ongoing BAU-related system changes into the migrated product. GM’s scientific approach and suite of tools are specifically designed to accommodate this reality of any migration effort—a breath of fresh air compared to the difficult-to-scale “software sweat shop” style proposed by other solution providers.

Through the duration of the migration project, GM demonstrated a consistently high standard of product and service, and towards the end of 2014, the migration was completed and signed-off against an agreed-upon suite of acceptance tests.

Around the middle of 2015, in an attempt to revive the migration of another legacy core system, I reached out to GM to assist us with a COBOL to C# migration effort. George and his colleagues rallied to help us with the very challenging prospect of migrating a decades-old pension administration system running in a niche operating environment (HP OpenVMS) to Windows, .NET and C#. Unsurprisingly, GM delivered in record time—producing, as a proof of concept, an entirely C#, Windows-console-based equivalent of one of our terminal-driven HP COBOL programs within three months! Unfortunately, we were unable to convert this effort into a full-scale project due to changes in priority brought on by, amongst other things, an unavoidable internal restructuring initiative.

I am happy to recommend Great Migrations to anyone seeking to modernize an existing legacy system with a view to doing so in a considered, low-risk and sustainable manner. GM’s comprehensive approach, informed by years of academic and professional experience, together with a philosophy of no compromise when it comes to quality has made me completely confident in their ability to deliver, irrespective of the complexities involved.

Eric Smith
Solutions Architect, Alexander Forbes Group and Technology Services