This is the finance paper, not the engineering plan. It sets out the three scenarios a CFO should be shown, the seven assumptions finance will attack, and what happens to payback when each one turns out to be wrong.
This is the finance paper, not the engineering plan. It sets out the three scenarios a CFO should be shown, the seven assumptions finance will attack, and what happens to payback when each one turns out to be wrong.
Not a Java project. The proposal is to retire a recurring cost that scales with hiring and has no relationship to how much Java the business runs, and to fund a bounded coordination effort in order to do it. Frame it that way on the first slide, because it changes which mental model finance applies.
Since January 2023 Oracle has sold the Java SE Universal Subscription on an employee metric. The count is total headcount, including full time, part time and temporary staff, plus the staff of your agents, contractors, outsourcers and consultants who support your internal business operations.
Two cost shapes, and why finance treats them differently
| Attribute | Oracle Java subscription | Migration effort |
|---|---|---|
| Shape | Recurring, annual, indefinite | One time, bounded, with an end date |
| Driver | Total headcount including contractors | Application count and integration complexity |
| Direction of travel | Rises with every hire and every outsourcing arrangement | Falls as the estate standardizes |
| Control | Vendor sets the metric and the rate card | You set the scope, the sequence and the pace |
| What ends it | Nothing, while any unlicensed use remains | Completion, evidenced |
That single design choice is the whole case. Two companies running identical Java estates pay wildly different amounts if one employs five times the people, and the larger one gets nothing extra for it. Oracle's own Java SE subscription page sets out the metric.
You are not funding a Java project. You are retiring a headcount tax that grows with hiring, not with usage.
Start from Oracle's own published tiers rather than from a modeled estimate, then replace them with your actual quote the moment you have one. Oracle publishes the Java SE Universal Subscription rate card in its global price list library, and the same document carries a worked example.
Published list tiers and what they mean at three year scale
| Employee band | Published list, per employee per month | Annual list at the top of the band | Three year list |
|---|---|---|---|
| 1 to 999 | $15.00 | $179,820 | $539,460 |
| 1,000 to 2,999 | $12.00 | $431,856 | $1,295,568 |
| 3,000 to 9,999 | $10.50 | $1,259,874 | $3,779,622 |
| 10,000 to 19,999 | $8.25 | $1,979,901 | $5,939,703 |
| 20,000 to 29,999 | $6.75 | $2,429,919 | $7,289,757 |
| 40,000 to 49,999 | $5.25 | $3,149,937 | $9,449,811 |
Oracle's own worked example in that price list takes a company at 28,000 total employees, being 23,000 staff plus 5,000 contractors, at $6.75 per employee per month. That is $2,268,000 a year. Using Oracle's arithmetic rather than yours removes an entire category of argument from the room.
Two gaps to note before finance finds them. Bands the table omits should be read off the live price list rather than interpolated, and above 50,000 employees Oracle publishes no rate at all, so that figure has to come from your quote.
The tiers create a discontinuity that finance will spot immediately if you do not raise it first. At the top of the 3,000 to 9,999 band the annual list is higher than at the bottom of the next band, because the rate step is larger than the volume step.
Show the cliff explicitly. It demonstrates you understand the rate card rather than having been handed a number, and it prepares the ground for the headcount discussion that follows. The full band mechanics sit in our Oracle Java SE procurement insights.
Before January 2023 Java licensing was usage based and comparatively small: a per user desktop metric and a processor metric for servers. A firm with a modest Java estate paid a modest amount, and the number moved with deployment.
The employee metric broke that link. Organizations with large non technical workforces saw the largest multiples, because they now pay for warehouse staff, retail staff and field engineers who will never open a Java application. That is the fact to put in front of a CFO, because it is a structural argument rather than a complaint about price.
Less than finance expects, and in a shape finance likes. This is a coordination effort rather than a rewrite: inventory, standardize on a distribution, repave build pipelines, validate, and evidence the removal. The runtimes themselves are free and production ready.
The honest cost driver is not code. It is the number of distinct application owners you have to coordinate and the number of third party products that ship their own runtime. Model against those two counts, not against total application count.
The one time cost lines, and how a CFO wants each one treated
| Line | What it covers | Cash or capacity | How to present it |
|---|---|---|---|
| Discovery and inventory | Scanning hosts, images, templates, workstations | Usually capacity | Days by role, with a rate, marked as reallocated |
| Assessment and lab testing | Per workload validation against the target build | Capacity, plus cash if outsourced | Split the two explicitly. Finance will ask. |
| Remediation | The minority of applications needing code or config change | Mixed | Size from the assessment, not from an assumption |
| Pipeline and image rework | Build agents, base images, deployment automation | Capacity | One team, one quarter, in most estates |
| Evidence pack | Rescans, dated records, sign off | Capacity | Small line, disproportionate value at audit |
| Contingency | Residual footprint that cannot be removed in the window | Cash | Price a partial subscription. Do not assume zero. |
On timeline, Azul's published State of Java survey has reported that a large majority of organizations completing a migration finished within a year. Our own benchmark for a full estate cutover at enterprise scale runs nine to fourteen months, documented in the 9 to 14 month migration timeline.
Then model the paid scenario properly instead of arguing. A commercial OpenJDK support contract gives finance a named vendor and a contractual response commitment, and it is priced per server, per JVM or per developer rather than per employee.
That metric difference is the entire point: you replace a cost that scales with your workforce with one that scales with the infrastructure you actually run. Compare the options in our OpenJDK distribution guide, and the operational exposure in OpenJDK support and rollback risk.
Seven, and they are the same seven every time. Put them in the paper as an assumption register with a source and a sensitivity for each, before anyone asks. A model that anticipates its own challenges reads as competence rather than advocacy.
The assumption register a CFO will actually read
| Assumption | The challenge you will get | The evidence that answers it | If you are wrong |
|---|---|---|---|
| 1. The avoided subscription cost | "That is list. What do we actually pay?" | The invoice or live quote. Published bands only as a labelled ceiling. | Net saving moves proportionally. The shape of the case does not change. |
| 2. The employee count | "Our headcount is lower than that." | Oracle's definition, which adds agents, contractors and outsourcers supporting internal operations. | A higher count raises the avoided cost. This challenge usually helps you. |
| 3. Application portability | "How do you know they just move?" | Your own lab results per workload, not a vendor statistic. | Each exception adds remediation days, not subscription years. |
| 4. Internal effort | "That is not a saving. We already pay those people." | Two numbers: incremental cash, and reallocated capacity at a stated rate. | The reallocated case lengthens payback modestly and survives scrutiny. |
| 5. Timeline | "What if it takes twice as long?" | A modeled 24 month downside alongside the 9 to 14 month base case. | One extra year of subscription. Payback moves by roughly that year. |
| 6. Support posture | "Who supports the runtime afterwards?" | A priced paid tier scenario for the workloads that need it. | Adds a recurring line that stays well below the subscription. |
| 7. Completeness | "What if we miss some?" | Scan evidence, a rescan cadence, and a funded contingency line. | This is the one that can remove the saving entirely. Price it. |
Assumption four is where most technology business cases lose credibility. Finance departments have seen too many models that count existing salaries as savings, and a paper that makes that mistake gets discounted wholesale rather than line by line.
Assumption seven is the one that actually matters. One application still running unlicensed Oracle JDK re establishes the subscription requirement, so a programme that stops at ninety percent keeps the obligation and surrenders the benefit. Cover the mechanics with the embedded JDK migration guide and the CI/CD and workstation cleanup.
On one page, with three scenarios and a sensitivity block underneath. The recurring line is so much larger than the one time line in most brackets that payback usually lands inside the first year, which means the interesting question is not whether it pays back but what could stop it.
Present B and C side by side and let the CFO pick. A paper that offers a risk choice gets approved faster than one that argues for a single answer, because it hands the decision to the person who owns the risk appetite.
What moves the answer, and by how much
| Change to the base case | Effect on the multi year net | Effect on payback |
|---|---|---|
| Project runs 24 months rather than the base case | Reduced by roughly one additional year of subscription | Moves out by about that year |
| Headcount grows across the period | Improved, because the avoided cost grows with it | Shortens |
| Paid support elected on tier one workloads | Reduced by the support fee, which is priced on infrastructure | Small effect in most brackets |
| Remediation scope doubles | Reduced by a one time amount only | Moves out by weeks, not years |
| A residual footprint survives cutover | Can eliminate the saving entirely, because a subscription is still required | May never arrive |
Read the bottom row aloud in the meeting. It is the one risk in the model that is binary rather than proportional, and naming it yourself is what earns the room's trust in everything above it.
Source: Redress Compliance advisory engagement file, 2024 to 2025.
The common advice is to lead with the headline percentage saving, because a large percentage is memorable and easy to put on a slide. We disagree. Finance departments see inflated percentage savings from technology functions constantly, and a large one triggers scepticism rather than enthusiasm, particularly when the denominator is a list price nobody has ever paid. The framing that actually works is the shape of the two cost lines: one recurring and indexed to hiring, one bounded and ending on a date you control. A CFO already models headcount growth independently, which means the growth in the Oracle line is something finance can verify without trusting you at all. Lead with the shape, put the percentage in an appendix, and let the verifiable fact do the persuading.
As a contingent liability with a clock on it, not as an abstraction. A CFO signs faster when the downside of inaction has a number and a date attached, and Oracle Java offers three of them.
Put the audit line in the paper as a contingent cost with a probability the CFO can argue with, rather than as a scare. The details of the claim mechanics sit in the Avis Budget Group case, and Oracle's own release licensing notes are on its JDK licensing FAQ.
Yes, and this is the argument to make to a CFO who is not yet convinced the migration should happen. A credible, funded, sequenced exit plan changes the commercial conversation whether or not you execute all of it.
The word doing the work is credible. A plan with an owner, a budget line, a schedule and a first completed wave behaves entirely differently in a negotiation from an intention. Our Oracle Java SE exit strategies page sets out how to build one that stands up.
Build the paper in the order finance reads it, and keep it to three pages. Numbers, risk, decision. Everything else belongs in an appendix that nobody will open but everyone will be reassured exists.
Do not put architecture in the paper. Every diagram you add invites a question that delays approval, and the technical case has its own home in our migration decision and execution guide.
If the modeling behaves the way it usually does at enterprise scale, the CFO's question stops being whether to migrate and becomes how quickly it can be funded. The three commercial patterns, including the hybrid one that gets chosen more often than it should, are compared in three Java migration patterns modeled.
In most enterprise brackets, inside the first year. The subscription is a recurring cost sized by total headcount, while the migration is a bounded coordination effort, so the recurring line usually dwarfs the one time line. Model payback from your own invoice rather than from a published band.
That the cost line grows with hiring rather than with usage. Finance already forecasts headcount independently, so the growth in the Oracle line is verifiable without taking anyone in technology at their word. Percentage savings are far less persuasive than that structural fact.
Yes, and shown twice. Give finance the incremental cash number and the reallocated capacity number separately, each at a stated rate. Models that quietly treat existing salaries as savings get discounted in full rather than corrected.
Total employees, not Java users. The definition covers full time, part time and temporary staff, plus the staff of agents, contractors, outsourcers and consultants who support your internal business operations. The licensed quantity is set against that count as of the order effective date.
You pay one additional year of subscription and payback moves out by roughly that year. Model the 24 month case explicitly next to the base case. A downside you presented yourself is far less damaging than one finance discovers.
No. Commercial OpenJDK support is priced per server, per JVM or per developer rather than per employee, so it replaces a workforce sized cost with an infrastructure sized one. It reduces the net saving without changing the direction of the answer.
An incomplete migration. A single application still running unlicensed Oracle JDK is enough to re establish the requirement, so a residual footprint costs you the saving and none of the liability. Fund a contingency line and release it only against evidenced removal.
Yes. A funded, sequenced exit with an owner and a completed first wave behaves very differently in a commercial conversation from a stated intention. The work is not wasted if the decision changes, because the same artefacts support both outcomes.
Migrating Oracle to PostgreSQL removes the licence and the 22 percent support annuity. The break even math, what migrates cleanly, and why a credible exit is leverage even if you s
Gated with a work email on the download page. No sales follow up you did not ask for.
Get the White Paper →500+ enterprise clients. 11 vendor practices. Industry recognized. One conversation can change what you pay for the next three years.
One buyer side briefing a week. Renewal signals, audit moves, and the levers that work. No vendor spin.