PowerBuilder to .NET Migration


Visionet’s CodeMiner PowerBuilder Edition State of art PowerBuilder migration designed and developed on industry standard design & architectures

Visionet’s CodeMiner PowerBuilder to .Net migration program uses proprietary innovation in architectural transformations to create a seamless migration of PowerBuilder applications to .NET or Java platforms.

Using a combination of innovative parsing and compiler technologies in concert with automated architectural analysis and transformation, CodeMiner PowerBuilder Edition offers a seamless and automated way of converting 2-tiered client sever PowerBuilder applications to 3-tiered web based applications on the Microsoft .Net or Java platforms.

Addressing Your Challenges in PB Code Conversion

Trend suggests that legacy PowerBuilder applications lack the essential elements of software scalability and modernization in design and architecture which are now required to meet the demands of the current technology infrastructure. This lack of advancement poses a market competitive challenge and an opportunity for converting the PowerBuilder applications to a newer technology that helps to trim down on the cost, time and effort for future enhancements and maintenance.

CodeMiner PowerBuilder Edition helps to address these challenges by focusing on major aspects of the PowerBuilder to .Net application migration process and help you in your decision making for converting the PowerBuilder based applications:

  • Ability of the powerbuilder to .net conversion tool to utilize all possible controls, data types and API mapping between the legacy and target technologies for ease of readability of the code
  • Ability of the conversion tool to incorporate alternative open source solutions or allows implementation of class libraries in the target technology to cater to those PowerBuilder data types, controls and the APIs that cannot be mapped in the target technology. This helps to ensure completeness of PowerBuilder to .Net conversion
  • Ability of the migrated application to use the Object Relational Mapping (ORM) frameworks like Microsoft Entity Framework, NHibernate, Hibernate etc. on the data access layer
  • Ability of the migrated code to separate the business rules from the presentation layer by rendering the business logic and/or objects
  • Ability to migrate to the standard reference architecture of the target platform in such a manner that it can be easily maintained, does not require any refactoring post conversion and works without requiring any third party or custom libraries


PowerBuilder Migration Phases

Following figure illustrates the phases involved during the migration process:

PowerBuilder Migration Phases

Leveraging Visionet’s Conversion Framework (VCF)

Visionet’s PowerBuilder to .Net Conversion Framework includes services that are common to other related components during the migration process. The list of services includes but not limited to the following:

  • Project Estimator – Provides a high level estimation of effort for conversion
  • PowerBuilder Parser – Generated a CodeDOM model from the PowerBuilder application library (PBL)
  • Visual Reverse Engineer – Generates documentation and comprehension graphs on the existing application code
  • Architectural Analyzer (AA) – Analyzes the CodeDOM in order to facilitate paradigm shift or refactoring
  • Semantic Analyzer (SA) – Analyzes the CodeDOM in order to facilitate the translation to C# or Java
  • C# Translator – Works on the output of the AA and SA to generate the .Net code
  • Java Translator – Works on the output of the AA and SA to generate the Java code
  • Binder – Establishes the link between the CodeDOM and the generated code. This helps in identifying areas where manual editing is required and validating the converted code
  • HTML5 Generator – converts the PowerBuilder visual objects into HTML5 and packages them as HTML pages those are integrate with either ASP.NET MVC Views or Java Server Faces


Figure below helps to explain the internal architecture of CodeMiner:

Depending upon your need and requirements, any enhancements or modifications required in the converted application will be taken up and managed as a separate project after the migration is complete.

PowerBuilder Parser

CodeMiner PowerBuilder parser identifies the programming object types in the PowerBuilder Library (PBL) files, extracts the source code objects and uses the relevant parsers for that type of object, such as DataWindow etc. to generate the output. The parser output is the CodeDOM that is stored in XML format in the database for later usage by other tools in the CodeMiner toolkit.

Visual Reverse Engineer (VRE)

VRE constructs higher-level models and artifacts from the code. By using VRE, CodeDOM is fed to Code Mining component which generates flow charts, function call hierarchy and finding references and other intelligence features to understand business logic. This utility allows the user to:

  • Gain an overview of the system in term of size, complexity and structure
  • Locate and understand the most important function, types or PBL
  • Identify exceptional functions, types or PBL in term of size or complexity compare to the average of the methods in the legacy application
  • Locate redundant code or dead code. This can be unused attributes, routines or commented code
  • Identify the possible presence of design strategy in the legacy application
  • Understand dependency graph of PBLs
  • Identify the key statements such as Embed SQL that interact with database
  • Project Estimator that helps estimate the project effort for the conversion

Architecture Analyzer (AA)

CodeMiner Architecture Analyzer (AA) automatically analyzes architectural structure and code dependencies in the legacy application. It generates comprehensive maps of source code and structures including interdependencies. Based on this information and standard architectural refactoring transformations, the AA will guide the Translator modules with the help of heuristics to convert the code to the target platform. Same is also illustrated in the diagram below,

Semantic Analyzer (SA)

The Semantic Analyzer analyzes the CodeDOM for each object’s source code and makes decisions on the translation approach that will be executed by the Translator modules. The SA also utilizes proprietary heuristic algorithm designed by Visionet.

The SA can also be customized to meet the customer’s specific requirements. For example if the user wished to replace a particular field in all the screens as a drop down list box that information is fed to the SA.

HTML5 Generator

The HTML5 Generator is a component of the translator module that translates the PowerBuilder visual objects as HTML pages and packages them in HTML pages. The HTML5 generator also creates Layout and Navigation and a standard style sheet that is used commonly for all the pages. Screen level edits defined in the visual objects are implemented as JavaScript/jQuery routines and linked to the form fields. The output of HTML5 Generator is used by C# and Java Translators to integrate the presentation layer to server side business logic using REST adaptors.


The C# Translator is responsible for automated generation of the C# code. The outputs from the Architecture Analyzer and Semantic Analyzer modules are used to drive the process used by the C# Translator and the translation decisions made. However it must be said that there are always situations where manual intervention will be required, the C# Translator will mark up the generated code with comments to highlight areas that need manual intervention.

The C# Translator upon completion bundles up all the generated code inside a Microsoft Visual Studio solution file.

Java Translator

The Java Translator works similar to the C# Translator and utilizes the output from the AA and SA to automate the generation of Java code. Similar to the C# Translator Java Translator will mark up the generated code with comments to highlight areas that need manual intervention.

The Java Translator upon completion bundles up all the generated code inside an Eclipse Workspace.


Binder is a component of the Translator and its purpose is to link up the various generated code components with their corresponding PowerBuilder code objects. This facilitates the developers in the manual editing of the code to be able to reference the original PowerBuilder code and also verify the completeness of the translation.

For more information, please visit Platform Modernization.