Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


Polygon Software is a worldwide provider of software solutions for the sewn-goods and textile industries. Its PolyPM product is a client/server application that includes both Product Lifecycle Management (PLM) and Enterprise Resource Planning (ERP) products.

The PLM product includes global sourcing, data vault, bill of materials, costing, product configurator, event messaging, workflows, document tracking, measurement specs, style graphics and document publishing.

The ERP product is fully integrated with the PLM product and includes order processing, EDI, sales analysis, forecasting, inventory management, purchasing, receiving, production planning, cut planning, manufacturing, WIP tracking, quality control, shipping and invoicing.

Great Migrations worked with PolyPM to scope, estimate, and plan an upgrade effort then implemented the initial solution to produce an integrated build-complete C# system with a specific set of custom upgrade features. Great Migrations then installed the solution on a machine at the PolyPM site and provided training and support so that the PolyPM team could continue development and optimization of the upgrade solution in-house.

Project Highlights

System Metrics

CODE254K LOC Logic and 20K LOC GUI in 1,120 Files: 134 Forms, 1 MDIForm, 778 Classes, 18 UserControls, 134 Modules, 2 PropertyPages, 4 Designers organized into 47 VBPs.
BINARIES11 EXEs, 32 DLLs, 4 Controls, 0 OLE EXEs
MEMBERS17,408 unique subprograms: 6,882 subroutines, 4,644 functions, 2,387 properties , 594 externs , 2,901 event handlers. 
UI119 unique UI containers containing 2,259 instances of 74 different kinds of controls.
COM254,197 calls to external COM components. The diversity of COM members is 1,468 unique members from 317 classes in 40 COM components.
WIN321,069 calls to 244 unique entry-point APIs from 24 libraries. API Calls are made from 375 different user procedures.

COM Upgrades

  • ADODB: upgrade ADODB to System.Data, System.Data.SqlClient and MigrationSupport.DataLib
  • COMAdmin: upgrade COMAdmin to COMAdmin stub API with stronger typing
  • CommonDialog: upgrade CommonDialog to MigrationSupport.UI.CommonDialog
  • COMSVCSLib: upgrade to COMSVCSLib stub API with changes to reduce ref args
  • EasyLabel: upgrade to EasyLabel ELabelInfo control to interop wrapper and AxHost wrapper
  • Excel: upgrade Excel to Office Excel primary interop assembly
  • FlowChartLib: upgrade to FlowChartLib control to interop wrapper and AxHost wrapper
  • MSComCt2: upgrade MSComCt2 controls to WinForms (FlatScrollBar)
  • MSComCtl: upgrade MSComCtl controls to Winforms Controls (ListView, TreeView, ProgressBar, ToolBar, ImageList)
  • Outlook: upgrade to Outlook to Outlook primary interop wrapper
  • MSXML2: Upgrade MSXML to System.Xml
  • Quickbook: upgrade Quickbook to interop wrapper
  • Richtextlib: upgrade Richtextlib control to System.Windows.Forms.RichTextBox
  • Scripting: upgrade Scripting filesystem to System.IO; upgrade Scripting.Dictionary to PpmUtilities.PpmDictionary
  • SQLDMO: Upgrade SQLDMO to custom Microsoft.SqlServer.Smo wrapper
  • TabDlg: upgrade TabDlg Control to MigrationSupport.UI.TabControl
  • VszLib: upgrade VszLib to custom System.IO.Compression wrapper
  • ZRush_ShipRush: upgrade ZRush_ShipRush to control interop wrapper class
  • PpmToolbar: upgrade PpmToolbar to stub API
  • IHCs: in-house .NET assemblies were change from interop to native linkage

Custom Upgrades

  • Upgrade Custom collections and Scripting.Dictionary to strongly typed generic custom collections and dictionaries
  • Upgrade several technical classes to hand-coded replacements
  • Determine Dictionary types based on string literal field names found in the code
  • Restructure global multi-use classes into static classes
  • Eliminate unnecessary temporary arguments passed by ref
  • Upgrade specific method parameters to be optional
  • Upgrade error handling to use try-catch and MigrationSupport.Utils.ResumeNext
  • Eliminate unnecessary weak typing

pageNamePolygon Testimonial
Excerpt Include
Polygon Testimonial
Polygon Testimonial