Skip to content
Code To Cloud
9 min read

Oil & Gas Legacy Modernization Without the Risk

A recurring oil & gas pattern: modernizing a critical legacy app with GitHub Copilot and Azure Red Hat OpenShift — without a risky full rewrite.

By Kevin Evans

What's Inside

  • Why a full rewrite is the wrong default for a critical, decade-old field or asset-management application
  • Using GitHub Copilot's app modernization tooling to transform code instead of replacing it
  • Hardening the result with GitHub Advanced Security before anything ships
  • Landing on Azure Red Hat OpenShift through the ARO Landing Zone Accelerator's secure-baseline pattern
  • Why "CNCF-certified" is a specific, checkable claim here, not a buzzword

This is a pattern I saw repeatedly across oil & gas customers during my years at Microsoft, not a single client engagement — the same shape of problem showing up at enough different companies that it's worth writing up as its own case rather than a one-off story. The details below describe the pattern and the technology stack, not a specific company's environment.

The Problem: A Critical App Too Important to Rewrite, Too Old to Leave Alone

Energy and resources companies run on field operations and asset-management software that's frequently a decade or more old — tracking well data, equipment maintenance, inspection schedules, or compliance records that the business genuinely cannot operate without. The people who built it have often moved on. The framework it's written in is out of mainstream support. And nobody wants to be the person who signs off on replacing it, because a full rewrite carries real operational risk: months of running two systems in parallel, migrating years of accumulated edge cases the original team may never have written down, and the possibility that the new version quietly breaks something the old one handled correctly for a decade.

That risk profile is exactly why so many of these applications never get modernized at all — until a compliance deadline, a security audit, or a platform end-of-life date forces the question. The pattern below is the answer that avoids both extremes: neither "leave it alone and hope" nor "rewrite it and pray."

The Approach: Transform the Code, Don't Replace It

GitHub Copilot App Modernization, Not a Ground-Up Rebuild

GitHub Copilot app modernization reached general availability for Java and .NET in September 2026 — a Copilot agent-mode capability purpose-built for exactly this problem. Instead of a developer (or an agent) starting from a blank canvas, it assesses the existing application, applies code transformations, patches the build, containerizes the services that need it, and produces a modernization report a human reviews before anything ships. The legacy application's actual behavior — the decade of edge cases nobody documented — stays intact, because the code is being transformed, not reimagined from a spec.

That's the core judgment call in this whole pattern: an old, working, business-critical application is an asset to transform, not a liability to demolish. AI-assisted transformation is what makes that judgment practical instead of just cautious.

GitHub Advanced Security Before Anything Ships

A modernized application still has to clear the same bar any new code does before it touches production — arguably a higher one, since it's about to take over a system the business depends on. GitHub Advanced Security's code scanning and secret scanning run against every change the modernization produces, catching the class of issue that's easy to introduce when large amounts of code move at once: a hardcoded credential carried over from the original codebase, a dependency with a known vulnerability, a pattern the original developers used in 2015 that isn't acceptable in 2026.

Azure Red Hat OpenShift, Deployed Through a Secure Baseline

The runtime target matters as much as the modernization tooling. Azure Red Hat OpenShift (ARO) is jointly engineered, operated, and supported by Microsoft and Red Hat — not a Microsoft product with Red Hat's name attached, a genuinely co-run managed service. It's deployed through the ARO Landing Zone Accelerator, Microsoft's own published reference architecture: network segmentation, identity boundaries, and landing-zone structure built in from the start, instead of a bespoke deployment a team designs from scratch and discovers the gaps in during an audit. Microsoft Entra ID handles single sign-on end to end, so the modernized application inherits the client's existing identity governance rather than bolting on a separate login system.

The Result: A Real Platform, Not a Bespoke Stack

OpenShift is a CNCF Certified Kubernetes distribution — it passes the CNCF's own conformance test suite, which is a specific, checkable claim, not marketing language. Azure Red Hat OpenShift is the same certified distribution, managed jointly by Microsoft and Red Hat. That matters for an operation that can't tolerate an unplanned outage: the client ends up running real, portable, standards-conformant Kubernetes with joint enterprise support behind it, not a stack held together by one engineer's tribal knowledge of a system nobody else on the team fully understands.

The application itself keeps doing exactly what it did before — tracking the same field data, running the same compliance checks — just on a modernized codebase, hardened before shipping, running on infrastructure the client's platform team can actually operate and extend after we're gone.

What We'd Tell Any Team Facing This Today

  • Default to transforming the existing codebase before considering a rewrite — the years of undocumented edge cases in a working application are exactly what a rewrite tends to lose
  • Run code and secret scanning against every change a modernization tool produces, not just the final result — large automated transformations are precisely where a stray credential or an outdated dependency slips through
  • Use a published landing-zone reference architecture (like the ARO Landing Zone Accelerator) instead of designing network segmentation and identity boundaries from scratch — someone has already built and tested that baseline
  • Confirm your runtime target's conformance claims are checkable, not just asserted — "CNCF Certified Kubernetes" is a specific status you can verify, and it's worth the five minutes to actually verify it

This is the same discipline behind GitHub's agentic DevOps tooling in production more broadly — the coding agent and app modernization tooling doing the drudgery, with governance and review built into the pipeline rather than bolted on after. If you're facing a similar decision on a legacy system your business can't afford to get wrong, see our Agentic DevOps work, or book a discovery call to talk through your specific situation.

Kevin Evans

Kevin Evans — Fractional CTO and founder of Code To Cloud Fractional CTO & Founder, Code To Cloud Inc. Kevin Evans is a fractional CTO and technology advisor based in Calgary, Alberta. He spent nearly five years at Microsoft — rising to Senior Solutions Engineer — leading cloud and AI platform strategy across enterprise customers, including energy and resources, and now leads enterprise and mid-market engagements at Code To Cloud. More about Kevin

Frequently Asked Questions

Why not just rewrite the legacy application from scratch?

A full rewrite of a critical field or asset-management system means running two versions in parallel for months, migrating years of edge cases the original team may not remember documenting, and accepting real operational risk if the new version misses something the old one quietly handled. AI-assisted modernization — transforming the existing, working codebase rather than replacing it — keeps that risk bounded.

What does GitHub Copilot app modernization actually do?

It's a GitHub Copilot capability, generally available for Java and .NET as of September 2026, that automates a substantial part of the modernization workflow — assessing the existing application, applying code transformations, patching the build, containerizing services, and producing a modernization report — through Copilot agent mode, with a developer reviewing and approving each step rather than being replaced by it.

Is Azure Red Hat OpenShift actually a certified Kubernetes platform, or just Kubernetes-based?

OpenShift passes the CNCF's own Kubernetes conformance test suite and carries the Certified Kubernetes mark — it isn't a Kubernetes-inspired platform, it's a certified one. Azure Red Hat OpenShift is Microsoft and Red Hat's jointly engineered, jointly operated managed version of that same certified distribution, not a fork with its own compatibility story.

What's the ARO Landing Zone Accelerator, and why use it instead of a custom deployment?

It's Microsoft's own published reference architecture and Terraform implementation for deploying Azure Red Hat OpenShift with a secure baseline already built in — network segmentation, identity, and landing-zone structure — instead of a team designing that baseline from scratch and hoping it holds up to an audit later.

Does this replace the client's internal platform team?

No. The pattern is built as reusable infrastructure the client's team owns and extends afterward, embedded delivery alongside them — not a system we hand over and walk away from, and not a team we replace.

Have a similar problem to solve?

Book a discovery call — no pitch, just a straight conversation.