How Data Lifter Helped a Global Energy Company
Modernize Legacy Python 2x Faster

Client Overview

Operating across more than 70 countries, the client is a global energy and petrochemicals company with approximately 85,000 employees. Its business spans oil and gas exploration and production, natural gas and LNG, fuels and lubricants, chemicals, energy trading, and lower-carbon energy solutions.

With a presence across multiple energy markets, the company serves around 1 billion people with energy every year and 29 million customers daily through its branded mobility network.

Untangling Legacy Python Before Platform Migration

The legacy environment presented challenges in converting Python workloads due to the complexity of the codebase. Limited visibility into business logic and dependencies made it difficult to preserve existing functionality during migration.

01

Scattered Business Logic

Business logic was spread across multiple Python files, which made it difficult to trace how different parts of the codebase worked together.

02

Undocumented Data Sources

Data sources lacked documentation, and key dependencies remained unclear during code analysis and conversion.

03

Tightly Coupled Dependencies

Shared functions and data flows connected multiple files. A change in one area could break logic elsewhere.

04

Platform Compatibility Gaps

Single-node Python did not align with PySpark, Databricks, or engineering standards, limiting scalability.

05

Manual Conversion and Validation

Manual rewriting was slow and error-prone, with no proof that converted logic matched the original.

06

Late Compliance Checks

SEMS (offshore Safety and Environmental Management Systems) compliance checks ran late in the process, putting non-compliant code at risk of reaching production.

We Built a Structured Path to
PySpark Modernization

Using Data Lifter, Indium converted the interdependent legacy Python codebase to PySpark on Databricks. The process included dependency analysis, native conversion, output reconciliation, and CI/CD quality and compliance checks.

01
AST-Based Code Analysis

We parsed the legacy codebase using AST analysis and built a cross-file dependency graph. This established the conversion order and showed how changes could affect other parts of the code.

02
AI-Guided PySpark Conversion

Data Lifter's native conversion generated PySpark with code, dependencies, transformation rules, and engineering standards available as AI context.

03
Automated Output Reconciliation

Auto-generated tests compared legacy Python and PySpark outputs. Any mismatches were identified and remediated before developer review.

04
CI/CD Quality and Compliance Gates

SonarQube quality gates and SEMS compliance checks were integrated into the CI/CD pipeline. Issues could be identified before release.

05
Post-Conversion Code Understanding

After conversion, Genie was used to query code changes and understand the converted code.

The Impact of Modernizing Legacy Python

The codebase was re-engineered for PySpark, with shift-left practices embedding quality and compliance checks earlier in the development cycle.

80% Less Manual Conversion Effort

Automated code conversion reduced manual rewriting and developer effort.

2x Faster Modernization Cycles

A faster conversion process reduced the time required to re-engineer legacy Python code for PySpark.

60–70% Reduced Code Analysis Effort

Automated code analysis reduced the effort required to understand legacy Python applications and map code dependencies.

Verified Logic Across Converted Code

Parity testing confirmed that converted PySpark logic produced results consistent with the legacy application before release.

AI-Assisted Code Understanding with Genie

Genie enabled teams to query the converted code and understand the changes made during modernization.

Business Outcomes

Lower Modernization Costs

Reduced the cost of modernization and shortened the path to value from the Databricks platform.

Fewer Compliance Risks

Running compliance checks earlier reduced the risk of non-compliant code reaching production.

More Time for Engineering Work

Engineering time previously spent on manual rewriting was redirected to new development.

Retired Legacy Code Earlier

Enabled earlier retirement of legacy code, reducing the cost of ongoing maintenance.

A Repeatable Approach

Established an approach that can be reused for future modernization initiatives.

Digital Backbone

Charting a New Course for Legacy Systems

Modernization depends on making informed engineering decisions at every stage. Indium combines deep engineering expertise with platforms like Data Lifter to address the complexity behind legacy systems.

By grounding modernization in system understanding, business logic, and technical validation, we help enterprises make changes with greater certainty. The goal is to make complex systems ready for what comes next.