Case studies
Java · GeoTools · GeoServer · Spring · PostGIS
316 Java classes and 337 JSPs behind an Ant build, with 129 JARs checked into WEB-INF/lib. Now Maven, Jakarta and Java 21.
02 · Decomposition.NET 10 · Aspire · YARP · EF Core · Wolverine
The boundaries are read from the entities, the DbContext and the call graph. The code is moved, not regenerated, and only the seams are written.
03 · GovernanceAny language · report first, then fix
Twelve detector families find the slop, the structural map ranks it by what is actually reachable, and the fix lands on a work branch one compiled file at a time.
04 · GreenfieldNext.js 16 · React 19 · Rust · axum · PostgreSQL 17
The monorepo, the OpenAPI contract, the caching layer, the containers and the pipeline are composed from tested blocks. The model writes the decoder and the viewer.
05 · Test suiteJava, C# or Python · Playwright · TypeScript
Every locator a provable equivalent of the one it replaces. Unported tests stay visibly unported, so nothing unfinished can report a pass.
06 · Test dataREST routes · SQL · stored procedures
Every operation split into three layers — what arrives, what it touches inside, what it hands back — so integration tests, service-level tests and contract tests each get the rows they need. Derived from the schema and the routes, not copied from production.
07 · MigrationVB6 or VB.NET · XSD · XSLT · Java 21 · Spring Boot
A booking desk written against a global distribution system. The Java model is generated from the XSDs, so an element that appears in no sample message still exists with the right type.
08 · MigrationRPGLE · SQLRPGLE · DDS · DB2 for i · Java 21
Indicators, the program cycle and record-level access recovered by a parser and written out explicitly, before a line of Java exists. Display files become an API, a phased front end, or nothing — that is an answer, not an assumption.
09 · Data tierDDS · DB2 for i · PostgreSQL or DB2 LUW · JPA
Logical files become the indexes and views the programs actually depend on. Constraints the RPG enforces but the schema never declared are proposed with their evidence and their violating rows — never applied silently.
10 · IntegrationMule 4 · DataWeave · RAML · Java 21 · Spring Boot
Flows become Spring Integration or Camel routes and the RAML stays the contract. DataWeave is translated beside its source, and the API Manager policies that never lived in the repository are listed rather than lost.
11 · AssessmentRPG · CL · DDS · COBOL/400 · SQL · CMD · binder source · JT400
Fourteen kinds of source member, identified by extension, then content, then the parser. One model of programs, files, screens, jobs and calls, traced to member and line, before the target is chosen.
12 · API enablementService programs · binder source · JT400 · XMLSERVICE · .NET or Java
What to expose starts from the export list in the binder source and the call graph behind it. Interactive programs are split into an endpoint and a page; the bridges that reached into the box are removed, not reimplemented.
13 · BatchCL · SBMJOB · OVRDBF · data queues · data areas · triggers · commitment control
CL is orchestration and lands as job code. Submitted jobs become scheduled jobs with dependencies from the CL call graph, overrides become configuration, keyed data queues get a queue with selective receive, and every commit scope is matched file for file.