Removing Oracle Java is only half the work. The other half is proving the removal date so Oracle cannot bill you for periods after the binaries were gone.
Removing Oracle Java is only half the work. The other half is proving the removal date so Oracle cannot bill you for periods after the binaries were gone.
Removing Oracle Java from your estate does not, by itself, protect you from a back-fee claim. Oracle's stated policy is to hold customers accountable for unlicensed usage retroactively, and in 2026 audits Oracle applies a defined three year lookback window against telemetry it has already collected. If you cannot prove when the last Oracle binary stopped running, Oracle will calculate fees from the earliest download record it holds all the way to the present. The removal date is not a compliance footnote. It is the single fact that bounds how far the claim can reach.
This is the mechanics of documentation: what to collect, in what form, and how each artifact survives Oracle's assumption that any Java install equals company-wide, present-day liability. If you are still in the technical phase, read the OpenJDK migration execution guide first, then return here to build the file that defends the work you did.
Oracle's back-fee logic has three moving parts, and the removal date interacts with all of them. First, the start date: Oracle typically anchors the claim to when Java became a paid product for your version, which for most estates is January 2019 (the end of free public updates for Java 8) or the date you first downloaded a version under a non-free license. Second, the end date: Oracle defaults to the present unless you provide proof that you stopped earlier. Third, the metric: since January 2023 the only subscription Oracle sells is the per-employee model, which counts every employee, contractor, consultant, and agent, not just the machines that ran Java.
Put those together and the danger is obvious. Oracle finds an old download record, assumes the deployment continued to today, applies the employee count, and multiplies by every year in the lookback. In one documented case Oracle's auditors found Java on 800 machines and demanded the company license all 10,000 employees retroactively from 2021, an opening figure near 5 million dollars. The company argued that only 800 installations were in use. Oracle stuck to the letter of the terms. What breaks that logic is dated evidence: proof that the installs were removed, on a specific date, and that nothing Oracle-licensed ran after it.
Oracle bills to the present unless you can prove you stopped earlier. The removal date is the ceiling on the claim.
There is also a legal ceiling worth knowing. Oracle Java exposure is fundamentally a copyright matter, and the statute of limitations for copyright claims is three years under 17 U.S.C. §507(b). Oracle's demands sometimes reach back to April 2019, well beyond that window, but the three year limit is a real anchor for your negotiating posture. A documented removal date inside that window is far stronger than an undocumented one anywhere.
This is the part buyers consistently underestimate. In a Java audit the burden of demonstrating where and how Java is (or was) used falls on the customer, not on Oracle. Oracle only needs to produce a download log or a telemetry check-in. From there it presumes the worst-case deployment and the maximum period. If you cannot rebut with your own data, the presumption stands and becomes the settlement baseline.
In our engagements the effect of good evidence is not marginal. Across the matters behind this guide, Oracle opened on the full employee count and settled 5 to 15 times lower once the estate was evidenced rather than assumed. A verified inventory removed 60 to 90 percent of claimed exposure before the commercial conversation even started. That range is our own market experience, not an Oracle-published figure, but it is consistent enough across cases that we treat the evidence file as the highest-leverage deliverable in any Java defense. Our published case studies (a global retailer closed at zero cost, a 4 million dollar manufacturer claim resolved at zero) all turned on install evidence beating download assumptions.
An evidence file is not a single document. It is a dated, cross-verifiable set of records that together fix the removal date beyond dispute. Build it before you decommission anything, because several of these artifacts cannot be recreated after the fact.
| Artifact | What it proves | How to capture it |
|---|---|---|
| Uninstall logs / deployment tool records | Removal executed on a specific date, per host | SCCM, Intune, Tanium, BigFix, or package manager logs with timestamps and hostnames |
| Pre-removal inventory snapshot | The exact scope of Oracle binaries that existed | File-path scans, registry keys, version strings, dated and signed |
| Post-removal verification scan | No Oracle binaries remain after the removal date | Second scan run days or weeks later, same tooling, dated |
| Telemetry check-in cutoff | The last date each host contacted Oracle's update servers | Firewall / proxy logs, or Oracle's own usage data if obtained |
| Replacement JDK source and version | What runs now is not Oracle | OpenJDK / distribution package manifests, vendor download records |
| Formal decommission attestation | Management sign-off that the exit is complete | Signed internal record naming the date, scope, and owner |
The pre-removal inventory is the one people skip and later regret. Once binaries are gone you cannot prove what was there, and Oracle will happily fill the gap with its own assumptions. Run and preserve the full inventory before touching production. Our detailed method is in how to inventory every Oracle Java install before migrating.
Oracle tracks Java use through two channels. Download telemetry records IP addresses, corporate domain associations, timestamps, and account details at download. Installed telemetry is the automatic update check-in that every installed copy makes to Oracle's servers unless it has been affirmatively disconnected. Oracle logs when each machine checks in, and three years of that data is now the foundation of the 2026 audit wave.
The useful inversion: if Oracle's log shows when a machine stopped checking in, that same log is evidence of when the Oracle install ceased operating. You want your own version of this record. Capture firewall and proxy logs that show outbound connections to Oracle's update endpoints ending on a particular date for each host. Read how to block Oracle Java update check-ins and telemetry for the endpoints and the method, and see does Oracle Java phone home for what Oracle already knows before it ever contacts you.
The same check-in log that Oracle uses to prove you ran Java can prove the exact date you stopped.
One caution on telemetry as evidence. Silence in the check-in log is ambiguous: it can mean the software was removed, or it can mean the machine was simply firewalled off while Oracle Java kept running (which is still non-compliant if you were on a paid version). Never rely on telemetry cutoff alone. Pair it with uninstall logs and a post-removal scan so the record shows the binary was actually gone, not merely quiet.
Three failure modes recur, and each one leaves a hole Oracle will exploit. Address them explicitly in the evidence file.
On the NFTC point specifically: JDK versions 21 through 24 remain free under the NFTC only until September 2026, and JDK 25 shipped in September 2025. If part of your estate is running on an NFTC version you plan to keep, the evidence file must show it never received a post-cutover OTN-licensed patch. That is a distinct claim from "we removed Oracle Java" and needs its own patch-history record.
A removal date that lives only in a scattered set of logs is fragile. Convert it into a single, dated, signed internal record: a decommission attestation that names the scope removed, the removal date, the verification method, the replacement JDK, and the accountable owner. This document is what you hand to counsel and to us when Oracle's letter arrives. It gives the technical logs a narrative and a signature.
Sequence the file to match how a large estate actually exits. Phasing matters because the removal date is per host, not per company, and Oracle can and will treat unremediated pockets as evidence of continued use. Our approach to sequencing is in phasing a Java vendor migration across a large estate, and compatibility risk (the reason phases slip) is covered in testing application compatibility when switching JDK vendors.
The audit may close but Oracle's interest in your Java estate will not. Retain correspondence, inventories, scan outputs, uninstall logs, telemetry cutoff evidence, and the decommission attestation indefinitely, in a location that survives staff turnover and tooling changes. The 2026 lookback is three years today, but the more valuable protection is simply having the record when the next inquiry arrives in 2028 or 2029 asking about a period you already closed.
One practical note on organization: store artifacts by host and by date, not by project. When Oracle presents a download record for a specific machine, you want to retrieve that machine's full history (installed, patched, removed, verified) in one pull. A project-shaped archive forces you to reconstruct the per-host story under time pressure, which is exactly when errors and gaps appear.
If you have removed or are removing Oracle Java, treat the evidence file as a deliverable of the project, not an afterthought. Concretely: (1) run and preserve a pre-removal inventory before decommissioning anything; (2) capture uninstall logs with hostnames and timestamps; (3) run a post-removal verification scan and keep it; (4) collect firewall or proxy evidence of the telemetry check-in cutoff per host; (5) document the replacement JDK source and version; (6) close with a signed decommission attestation naming the date and scope; and (7) retain all of it indefinitely in a per-host, per-date structure.
If Oracle has already made contact, do not answer their scoping questions before your evidence file exists, because early admissions become the baseline. Route the response through a controlled process (see the Oracle Java audit response playbook) and lean on the evidence-first audit defense approach. The removal date, properly documented, is the difference between a claim that reaches back years and one that stops on the day your binaries did.
No single document is sufficient. The strongest proof is a dated set: a pre-removal inventory, uninstall logs with hostnames and timestamps, a post-removal verification scan, and telemetry cutoff evidence, all tied together by a signed decommission attestation naming the removal date and scope. Any one artifact alone leaves a gap Oracle will fill with assumptions.
Oracle typically anchors the claim to when your Java version became paid (often January 2019) and runs it to the present unless you prove you stopped earlier. Without a documented removal date, Oracle bills every year in that span at the per-employee rate. A verified removal date caps the claim at that date.
Yes, indirectly. Oracle logs when each installed copy stops checking in to its update servers, and your own firewall or proxy logs can show the same cutoff. But silence is ambiguous, it can mean removal or just a blocked machine still running Java. Always pair telemetry cutoff with uninstall logs and a post-removal scan.
The statute of limitations for copyright claims is three years under 17 U.S.C. §507(b), and Oracle Java exposure is fundamentally a copyright matter. Oracle's demands sometimes reach back further, but the three year limit is a real anchor for your negotiating posture, especially when your documented removal date falls inside that window.
Bundled Oracle JDK is the most common reason a removal is incomplete, and estate sweeps find Oracle binaries on 15 to 35 percent of servers buyers believed were already migrated. Inventory bundled instances separately, track each to closure, and never attest to a removal date you have not confirmed with a scan.
Indefinitely. The current lookback is three years, but Oracle's interest in your Java estate persists after any audit closes. Retain correspondence, inventories, scans, uninstall logs, and the attestation in a per-host, per-date structure that survives staff and tooling changes.
Oracle now audits Java SE on employee count, not installs, which can multiply the bill several times over. How to defend the notice and exit to OpenJDK.
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.