Today is the big day! After years of research, months of hard work, experiments, and collecting feedback, Federico’s new book is finally available. It’s everything you need to know about migrating from RPG and the only book in the world to focus on migrating RPG code to modern languages.

Migrating RPG Code to Modern techniques

In this book, Federico presents the results of how we, at Strumenta, deal with migrations. The approach is inspired by principles he studied during his doctorate (especially in Model-Driven Development), but also by many years of work and research in the Software Language Engineering field.

Still, these ideas didn’t come from a moment of revelation. They’ve been shaped in practice: by tackling real problems, seeing what doesn’t work, learning humility, and listening carefully to advice and ideas from clients, partners, and colleagues. Step by step, and not without some wounds, we’ve learned what really matters in migrations.

So, who is this book for?

  • For anyone with an IBM i system (or who knows someone who has one), it provides practical advice on how to handle an RPG migration.
  • For professionals working on migrations of any kind: while some lessons are RPG-specific, many principles apply far more broadly. (And if you’re interested in other types of migrations, just contact me — I’d be glad to talk.)
  • For those curious about Software Language Engineering: solving migration challenges forced us to push and refine our methods, and the lessons we learned can also be applied to other complex Language Engineering projects.

Buy now on Gumroad (PDF + ePUB)

Launch discount $19+ VAT

Buy now on your local Amazon (Kindle + Print)

Click here for selected Amazon links

Reminder: The launch discount is only valid for 2 weeks. After that, the price will increase to $39 and will never come down.

Book contents

Part I – Making Sense of Legacy Migrations

1. Why Migrate?

1.1 The Scarcity of RPG Skills

1.2 Maintainability Issues

1.3 Hardware and Operational Costs

1.4 Platform Longevity Concerns

1.5 Migration dictated by the acquirer

1.6 The Underlying Desire for Order (The Unspoken Reason)

1.7 Summary

2. What Happens During a Migration

2.1 The Three Phases of a Migration

2.2 Planning

2.3 Migration

2.4 Testing

2.5 When your team will be involved?

2.6 How Long Does a Migration Take?

2.7 Summary

Part II – Planning the Migration

3. The Different Kinds of Migrations

3.1 Choosing the Target Platform

3.2 Choosing the Migration Approach

3.3 Summary

4. Choosing the Target Language and Framework

4.1 Why Choosing the Right Language Matters

4.2 Let the Problem Guide the Choice

4.3 Our Shortlist: Java, Python, and C#

4.4 Aligning the Language with Your Domain

4.5 Picking the Right Framework

4.6 Choosing Based on Goals

4.7 A Word of Caution

4.8 Summary

5. Planning the Migration

5.1 Why Planning Matters

5.2 What the Planning Phase Must Clarify

5.3 How Long Should Planning Take?

5.4 Point 1. Understanding the Current System

5.5 Point 2. Defining the Target System

5.6 Point 3. Migration Style and Strategy

5.7 Point 4. Addressing Risks

5.8 Point 5. Testing and Validation

5.9 Point 6. Team and Project Planning

5.10 Summary

Part III – Key Technical Challenges

6. Translating RPG Code

6.1 Guiding Principles

6.2 Transformations

6.3 Handling GOTO Statements

6.4 Comments

6.5 Dead Code and Clones

6.6 Copybooks and External Libraries

6.7 Indicators

6.8 Error Handling

6.9 Naming Conventions and Code Readability

6.10 Program and Procedure Calls and Re-architecting

6.11 Summary

7. Translating Data Structures

7.1 Variable Names

7.2 Choosing Between Equivalence and Maintainability

7.3 The Three Forms of RPG Data Structures

7.4 Summary

8. Green Screens and UI

8.1 Scenarios for UI Migration: A Tale of Two Users

8.2 Path B – The Faithful Reproduction

8.3 Path C – The Hybrid Migration

8.4 Considerations and Challenges

8.5 Summary

9. The Database

9.1 Understanding DB2’s Unique Role on IBM i

9.2 The strategies available

9.3 Implementing the migration

9.4 Summary

​​10. Translating CL Code

10.1 What CL Programs Do

10.2 Choosing a Translation Target

10.3 The Translation Challenge: More Than Just Syntax

10.4 Summary

Part IV – Ensuring Success​

11. Testing the Migration

11.1 Manual Testing: Always the Final Step

11.2 What it means that the system is correct?

11.3 Quality Validation

11.4 Equivalence Verification: The Real Challenge

11.5 Running Tests in the Target Environment

11.6 Beyond Migration: The Future Benefits of Your Investment

11.7 Summary

12. The Strumenta Migration Pipeline

12.1 Overview of the Whole Pipeline

12.2 The Role of LionWeb and Starlasu

12.3 AST Generation

12.4 Semantic Enrichment

12.5 Analysis Phase

12.6 Transformation Pipeline

12.7 AST Post-processing and Code Generation

12.8 Transpilation Traces

12.9 Summary

13. Migration Pitfalls and Best Practices

13.1 Define Your “Why” Before Your “How”

13.2 Don’t Wait for the Last RPG Developer to Retire

13.3 Invest in Planning

13.4 Build the Bridge in Stages

13.5 Don’t Wait Forever to Make a Move

13.6 Don’t Forget the Rest of the System

13.7 Pick the Right Time—Before it’s Picked for You

13.8 Trust, But Set Clear Expectations

13.9 Don’t Overlook the Human Side

13.10 Closing Thoughts

Learn more about the book and watch a video of Federico describing why he wrote it HERE.