Reverse Engineering Legacy Adabas Natural Application Interface to C#

Overview and Business Case

The client, a large Healthcare payer, has a large database application with over 900 forms used each day by thousands of employees, the organization’s agents and clients.  It has become a liability as Adabas Natural programmers are dwindling in number.

Solution Required

The client was looking for assistance in migrating the presentation layer and look and feel of the application while maintaining the business logic and integration with the Adabas database.  The client is heavily dependent on the application for its operations and is highly concerned about having a predictable quality assurance process, limiting risks and containing costs.


Because there are so many forms involved, it is difficult to select a subset to work with that represent all possible permutations of Natural code.  The ability to develop a reverse-engineering strategy incrementally will be a key to successful implementation.

Codiscent Solution

Codiscent employed the Reverse Engineering Studio to identify instances of lingual patterns in the Natural code and parse it into a form that can be used to populate a specification dataset from which a C#/Winforms implementation of the user interface forms can be generated.  The Codiscent re-platforming approach is based on our reverse engineering process.


Codiscent performed a POC on a selected subset of the 900 forms and successfully generated all of them in 3 weeks.  It is estimated that this subset represents 80%, or more, of the lingual patterns used throughout the entire application, which implies that converting the remaining forms should require a proportionally lower time per form.


This case demonstrates Codiscent’s approach to application re-platforming or modernization.  Some specific subjects of interest include:

  •  The Codiscent reverse-engineering approach obviates the need to fully understand what each line in the source code is doing in context.  Once a lingual pattern is identified, anything based on it should translate without any particular level of comprehension on the part of the engineer.
  • The process always produces a compilable source, so progress isn’t interrupted for the development of new parsing filters or templates.
  • The reverse-engineering capability for a particular language can be developed iteratively and interactively.  While diversity within the source code base will ultimately determine how fast the filters and templates will accommodate it, it is expected that once 20% of the code base is successfully converted, the entire code base should be convertible.

Comments are closed.