PO-04 EBS R12.x Purchasing Tier 2 Data Fix

Encumbrance & Budgetary Control Diagnostic

Encumbrance journal status, funds available vs. committed analysis, over-encumbered distributions, reserve for encumbrance account setup, and year-end carry-forward completeness.

PlatformOracle EBS R12.x
Input RequiredBudget Organization or PO Number
Diagnostic Checks28+
Data Sources7 Oracle tables
Fix Options3 guided fixes
Backup CreatedYes — Automatic

Why This Fails — and What It Costs

Oracle EBS Purchasing encumbrance accounting creates a reservation against budget funds at the moment a Purchase Order is approved — before the invoice is received or paid. This allows organizations to track committed spending against budget in real time. The encumbrance entry is recorded in GL_BC_PACKETS and reduces the available budget balance in GL_BALANCES. When the encumbrance process fails — either at PO approval (the funds reservation fails) or at invoice matching (the encumbrance relief does not happen) — the budget balance is either overstated (unfunded encumbrance) or understated (unreleased encumbrance from a cancelled PO).

Funds check failure at PO approval is the most visible encumbrance error. When a buyer submits a PO for approval and the online funds check rejects it with 'Insufficient funds available', the PO cannot be approved until either the budget is increased or the PO amount is reduced. The funds check evaluates the available balance in the budget organization assigned to the PO distribution's GL account. PO-04 identifies the specific budget organization, the budget account, the current available balance, and the PO amount that is attempting to consume it — giving the buyer and the budget manager the exact numbers needed to resolve the conflict.

Unreleased encumbrances from cancelled POs are the second major issue. When a PO is cancelled in Oracle, the system should automatically reverse the encumbrance entry via GL_BC_PACKETS and restore the budget balance. If the cancellation process is interrupted — or if the PO was in an intermediate approval state when it was cancelled — the encumbrance reversal may not have run. The result is a cancelled PO that still has an encumbrance balance consuming budget funds that are actually available. These phantom encumbrances accumulate over time and can artificially restrict budget availability.

PO-04 runs a complete encumbrance diagnostic — funds check status at approval, budget organization and account identification, available budget balance vs PO commitment, encumbrance reversal status for cancelled and finally closed POs, GL_BC_PACKETS packet status and amount, and period-end encumbrance reconciliation between GL_BC_PACKETS and GL_BALANCES.

What This Script Diagnoses

PO-04 systematically investigates every major condition that can cause the issue this diagnostic targets. Below is the complete coverage breakdown.

Funds Check Analysis
Available budget balance vs PO commitment amount. Budget organization, account, and period identification. Exact shortfall calculation with breakdown of committed, obligated, and available balances.
Phantom Encumbrance Detection
GL_BC_PACKETS scan for active encumbrance entries on cancelled or finally closed POs. Total phantom encumbrance amount by budget account. Release eligibility confirmation per PO.
Encumbrance Relief Status
Encumbrance relief at invoice match — confirms GL_BC_PACKETS relief entries exist for each matched AP invoice. Identifies POs where the relief did not run despite a confirmed match.
Period-End Reconciliation
GL_BC_PACKETS balance vs GL_BALANCES encumbrance account balance. Identifies accumulating variances that inflate or deflate the apparent budget availability. Month-end reconciliation support.

What the Report Looks Like

Representative output showing the diagnostic running against a real-world scenario. The script identifies every condition, states the root cause, and generates the fix.

PO-04 — PO-04 Diagnostic Report
════════════════════════════════════════════════════════════
  ORACLE EBS R12 — PO ENCUMBRANCE DIAGNOSTIC
════════════════════════════════════════════════════════════
  PO Number          : PO-2026-004590
  Budget Org         : US-OPERATIONS-BUDGET
  Encumbrance Type   : Purchase Order
  Case Number        : PO-514840
  Report Date        : 23-FEB-2026 11:20:45
════════════════════════════════════════════════════════════

[ SECTION 1 — FUNDS CHECK STATUS ]          STATUS: ✗ FAIL
────────────────────────────────────────────────────────────
  PO Amount          : $142,000
  Budget Account     : 01-600-7200-0000 — IT Capital
  Budget Balance     : $138,400
  Committed          : $0 (no prior encumbrances)
  Available          : $138,400 — insufficient for $142,000 ✗
  ✗ FAIL: Funds check failure — $3,600 shortfall

[ SECTION 2 — PHANTOM ENCUMBRANCES ]        STATUS: ⚠ WARNING
────────────────────────────────────────────────────────────
  ⚠ 3 cancelled POs with unreleased encumbrances found:
  PO-2026-003841     : $28,400 encumbrance — PO cancelled 15-JAN-2026
  PO-2026-003920     : $12,200 encumbrance — PO cancelled 20-JAN-2026
  PO-2026-004010     : $18,100 encumbrance — PO cancelled 28-JAN-2026
  Total Phantom      : $58,700 — artificially reducing available budget

[ SECTION 3 — GL_BC_PACKETS STATUS ]        STATUS: ✓ PASS
────────────────────────────────────────────────────────────
  GL_BC_PACKETS balances reconcile to GL_BALANCES ✓

════════════════════════════════════════════════════════════
  DIAGNOSTIC SUMMARY
════════════════════════════════════════════════════════════
  Funds check failing due to $58,700 in phantom encumbrances from cancelled POs
  FIX: Release phantom encumbrances — available balance becomes $197,100
════════════════════════════════════════════════════════════

The Four-Layer Architecture in PO-04

1
Diagnostic Engine
Runs 28+ checks across funds check status and available balance calculation, budget organization and account identification, encumbrance reversal status for cancelled and finally closed POs, GL_BC_PACKETS packet status, and period-end reconciliation between GL_BC_PACKETS and GL_BALANCES.
2
Backup Created
Before any encumbrance packet is modified, CONS_BACKUP.GL_BC_PACKETS_<case#> and PO_DISTRIBUTIONS_ALL_<case#> are created and row counts verified.
3
Guided Data Fix
Phantom encumbrance release via the Oracle Budgetary Control Year-End process is the functional path. When that is unavailable, PO-04 generates the GL_BC_PACKETS reversal entry with full backup and Controller authorization. Funds check override for specific POs is a functional setup option.
4
KB Article Generated
Complete KB article generated — budget org, phantom encumbrance amounts by PO, release method, available balance after correction, funds check result. Upload directly to your knowledge base.

Backup & Rollback for PO-04

Every table touched by PO-04 data fixes is backed up before the first UPDATE fires. Backup is verified by row count. One script restores the original state if needed.

Tables Backed Up — PO-04

CONS_BACKUP.GL_BC_PACKETS_<case#> CONS_BACKUP.PO_HEADERS_ALL_<case#> CONS_BACKUP.PO_DISTRIBUTIONS_ALL_<case#>

Backup happens before any DML. Script aborts if backup creation fails.

Pre-Flight Safety Guards

AUTHORIZATION_STATUS checkRequired ✓
No active workflow lockChecked ✓
No active session lock on target rowsVerified ✓
CONS_BACKUP schema accessibleVerified ✓

FIX_BACKUP_REGISTRY Entry

REGISTRY_ID<auto-generated>
CASE_NUMBER<consultant case#>
SOURCE_TABLE<table modified>
ROWS_BACKED_UP<row count>
BACKUP_VERIFIEDYES ✓
ROLLBACK_SQLStored as CLOB
STATUSACTIVE
ENVIRONMENTPRODUCTION

Auto-Generated Knowledge Base Article

This article is produced automatically at the end of every PO-04 execution — written from actual run output. No manual documentation required.

KB-PO-514840-001 · Script: PO-04
Funds Check Failure — $58,700 Phantom Encumbrances from 3 Cancelled POs
PO-2026-004590 ($142,000) failing funds check. Available budget $138,400 appears insufficient. PO-04 identifies $58,700 in unreleased encumbrances from 3 POs cancelled in January — phantom commitments reducing apparent available balance from $197,100 to $138,400.
Three POs cancelled in JAN-2026 did not trigger the encumbrance reversal process — all three were cancelled while in REQUIRES REAPPROVAL status (not APPROVED), and the encumbrance reversal program only runs for cancellations of APPROVED POs. The encumbrances from the original approval remain active in GL_BC_PACKETS.
GL_BC_PACKETS — STATUS_CODE = A (Active), ENCUMBRANCE_TYPE_ID = Purchase Order (3 cancelled POs — $58,700 total)
PO_HEADERS_ALL — CANCEL_FLAG = Y, AUTHORIZATION_STATUS = REQUIRES REAPPROVAL (3 POs)
GL_BC_PACKETS reversal entries generated for 3 phantom encumbrances with full backup and Controller authorization. Available budget restored to $197,100. PO-2026-004590 funds check passed. Encumbrance release process updated to handle REQUIRES REAPPROVAL cancellations.
PO cancellation process updated: if PO is in REQUIRES REAPPROVAL status at cancellation, a manual encumbrance release step is added to the cancellation checklist. PO-04 period-end phantom encumbrance scan added to monthly budget reconciliation.
POEncumbranceGL_BC_PACKETSFunds CheckPhantom EncumbranceBudget ControlEBS R12.2

What This Script Finds

Blocking

Funds Check Failure at Approval

Insufficient budget balance blocks PO approval. Often caused by phantom encumbrances from cancelled POs artificially reducing available funds. PO-04 separates true budget shortfalls from phantom-encumbrance-driven failures.

Phantom

Cancelled PO Retains Encumbrance

PO cancelled in a non-APPROVED status bypasses the encumbrance reversal. Phantom encumbrance accumulates over time and can represent significant artificial budget consumption. PO-04 identifies and releases all phantom encumbrances.

Relief

Encumbrance Not Relieved at Match

AP invoice matched to PO but GL_BC_PACKETS relief entry not generated. PO encumbrance persists after payment, understating available budget. PO-04 generates the missing relief entry.

Reconciliation

GL_BC_PACKETS Out of Balance

Encumbrance balance in GL_BC_PACKETS does not match the encumbrance account balance in GL_BALANCES. Period-end reconciliation failure. PO-04 calculates the exact variance and the correcting entry.

Tables Examined

TableModulePurpose
GL_BC_PACKETSGLEncumbrance packets — status, amount, PO reference
PO_HEADERS_ALLPOPO cancel flag and authorization status
PO_DISTRIBUTIONS_ALLPODistribution — encumbrance amount, CCID
GL_BALANCESGLBudget and encumbrance account balances
GL_BUDGET_VERSIONSGLBudget organization and version
GL_PERIOD_STATUSESGLBudget period open/close status
AP_INVOICE_DISTRIBUTIONS_ALLAPInvoice distributions — encumbrance relief link
Decision Framework

How Every Fix Decision Is Made

Before any data is modified in a production Oracle database, AP-01 walks through a four-stage decision process. Every condition identified by the diagnostic maps to exactly one resolution path.

1
First Option — Always
Can the front end fix this?

Oracle's own forms and concurrent programs are always the first option. If the condition can be corrected through Oracle's standard UI — a form, a concurrent program, a setup screen — that path is taken first. No consultant SQL required, no database risk, and the fix is fully supported by Oracle. The diagnostic identifies these conditions explicitly and states the exact front-end navigation path.

✓ Functional Fix
2
When Front End Is Not Available
Is a direct data fix safe to apply?

When the front-end path is unavailable or would require an unacceptable volume of manual steps, a direct fix is evaluated against explicit criteria. All of the following must be true before proceeding:

The fix mirrors exactly what Oracle's own code would have done if the underlying condition were corrected
All dependent tables have been identified and will be updated in the same transaction
The fix is fully reversible — a single INSERT from the backup table restores the original state
The environment patch level has been confirmed against the fix logic version
⚡ Direct Fix
3
Hard Stops — No Exceptions
Does this require Oracle Support?

Certain table areas are never touched directly, regardless of how well the underlying structure is understood. The diagnostic flags these conditions and generates the Service Request documentation:

XLA subledger tablesXLA_EVENTS, XLA_AE_HEADERS — incorrect changes corrupt the subledger audit trail in ways undetectable until period close fails or an auditor requests a reconciliation
Workflow engine tablesWF_ITEMS, WF_ITEM_ACTIVITY_STATUSES — ad-hoc DML can corrupt the workflow engine state instance-wide
Recurring conditions after a fix — indicates a code defect, not a data error. Documented and submitted as a Service Request with a reproducible test case
⚠ Oracle Support
4
For All Approved Direct Fixes
Backup → Execute → Verify → Document

A timestamped backup table is created and row-count verified before the first UPDATE fires. Explicit parameter confirmation is required — the script will not self-execute. After execution, a verification query confirms the expected state. A complete change record — rows affected, before and after values, database username, timestamp — is written to the FIX_BACKUP_REGISTRY and becomes the primary artifact in the knowledge base entry for this incident.

📋 Documented
Condition Identified Resolution Path Notes
Phantom encumbrance — cancelled PO retains encumbrance Direct Fix PO-04 generates the GL_BC_PACKETS reversal entry for each phantom encumbrance with full backup and Controller authorization. Pre-flight confirms PO is CANCELLED before reversing.
Funds check failure — insufficient budget balance Functional First Increase the budget via Budget Entry or transfer funds between budget accounts via Journals. PO-04 identifies the exact shortfall amount and the budget account requiring the increase.
Encumbrance not reversed at invoice match Direct Fix PO-04 identifies the GL_BC_PACKETS rows that should have been reversed when the AP invoice was matched and generates the missing reversal with full backup and Controller authorization.
Duplicate encumbrance — PO encumbered twice Direct Fix PO-04 identifies the duplicate GL_BC_PACKETS entries and removes the duplicate with full backup. Pre-flight confirms the PO amount matches exactly one active encumbrance packet.
Budget period not open — encumbrance cannot post Functional First Open the budget period via General Ledger > Setup > Open/Close Periods for the budget organization. PO-04 identifies the period status and the GL period that must be open.
Encumbrance type not assigned to purchasing document type Functional First Assign the encumbrance type via Purchasing > Setup > Encumbrance. PO-04 identifies the document type and the missing encumbrance type assignment.
GL_BC_PACKETS out of balance with GL_BALANCES Direct Fix PO-04 calculates the exact variance and generates the reconciling GL_BC_PACKETS entry with full backup and Controller and auditor authorization. This is a period-end reconciliation correction.
Funds check override needed — business justification Functional First Enable funds check override for the specific budget account via General Ledger > Budgets > Budget Organization. PO-04 identifies the override parameter and the authorization level required.
Safeguards

Nothing Executes Without a Safety Net

Before any data fix runs, the script verifies pre-flight conditions and creates a complete verified backup. If any check fails, the script aborts. There is no partial execution path.

Pre-Flight Checks — All Must Pass
POSTED_FLAG = 'N'
Will not modify a posted transaction under any circumstances
ACCOUNTING_EVENT_ID IS NULL
Will not modify rows with an active or pending XLA accounting event
No active database lock
Checks V$LOCK — will not proceed if another session holds a lock on target rows
CONS_BACKUP schema writable
Backup schema must be accessible before any DML is permitted
Explicit confirmation required
Script outputs a confirmation prompt — DML does not execute until consultant enters the case number as the execution parameter
Backup Methodology

Before the first UPDATE fires, the script creates a complete copy of every row to be modified. Tables are named CONS_BACKUP.<TABLE>_<CASE#> and persist permanently after execution.

GL_BC_PACKETS
PO_HEADERS_ALL
PO_DISTRIBUTIONS_ALL
Row count verified after backup creation. If backup fails for any reason the script aborts without executing any DML. Rollback is a single INSERT from the backup table. No reconstruction required.
PO-04 — Pre-Flight & Backup Verification
════════════════════════════════════════════════════════════
  PRE-FLIGHT SAFETY CHECK
════════════════════════════════════════════════════════════
  Phantom POs        : 3 cancelled POs — $58,700 total
  PO Status          : All 3 CANCEL_FLAG = Y — confirmed cancelled ✓
  Controller Auth    : Authorized for encumbrance release ✓
  CONS_BACKUP Schema : Accessible ✓
  Session Lock Check : No locks on GL_BC_PACKETS ✓
────────────────────────────────────────────────────────────
  ALL PRE-FLIGHT CHECKS PASSED
════════════════════════════════════════════════════════════
  Creating : CONS_BACKUP.GL_BC_PACKETS_514840
  Rows     : 3 rows backed up ✓
  Registry : FIX_BACKUP_REGISTRY — ID 6088 created ✓
────────────────────────────────────────────────────────────
  BACKUP COMPLETE
════════════════════════════════════════════════════════════
  Enter case number to confirm encumbrance release : 514840
  Confirmed. Generating reversal packets...
════════════════════════════════════════════════════════════
Knowledge Base

Every Execution Produces a Record

The knowledge base article is generated automatically from the script's execution output. No manual documentation required. It becomes the institutional record — for the team, for auditors, and for every future engagement in the same environment.

Zero Manual Effort
Every field — environment, tables, before/after values, backup reference, root cause, prevention — is generated from actual execution output. Nothing is written by hand.
Patterns Surface Over Time
The first engagement produces findings. The third produces patterns. Recurring conditions that are invisible as individual incidents become obvious as knowledge base trends.
Survives Staff Turnover
The knowledge base is an institutional record of the Oracle environment. A new manager, a new DBA, or an external auditor can read exactly what happened, what was done, and what prevents recurrence.
KB-PO-514840-001
Funds Check Failure — $58,700 Phantom Encumbrances from 3 Cancelled POs
EBS R12.2.10 · Purchasing
● RESOLVED
Symptom
PO-2026-004590 ($142,000) failing funds check. Available budget $138,400 appears insufficient. PO-04 identifies $58,700 in unreleased encumbrances from 3 POs cancelled in January — phantom commitments reducing apparent available balance from $197,100 to $138,400.
Root Cause
Three POs cancelled in JAN-2026 did not trigger the encumbrance reversal process — all three were cancelled while in REQUIRES REAPPROVAL status (not APPROVED), and the encumbrance reversal program only runs for cancellations of APPROVED POs. The encumbrances from the original approval remain active in GL_BC_PACKETS.
Tables
GL_BC_PACKETS — STATUS_CODE = A (Active), ENCUMBRANCE_TYPE_ID = Purchase Order (3 cancelled POs — $58,700 total)
PO_HEADERS_ALL — CANCEL_FLAG = Y, AUTHORIZATION_STATUS = REQUIRES REAPPROVAL (3 POs)
Fix Applied
GL_BC_PACKETS reversal entries generated for 3 phantom encumbrances with full backup and Controller authorization. Available budget restored to $197,100. PO-2026-004590 funds check passed. Encumbrance release process updated to handle REQUIRES REAPPROVAL cancellations.
Prevention
PO cancellation process updated: if PO is in REQUIRES REAPPROVAL status at cancellation, a manual encumbrance release step is added to the cancellation checklist. PO-04 period-end phantom encumbrance scan added to monthly budget reconciliation.
Tags
POEncumbranceGL_BC_PACKETSFunds CheckPhantom EncumbranceBudget ControlEBS R12.2

Oracle Documentation References

References the Oracle public documentation for this diagnostic area. These links open directly on docs.oracle.com.

R12 Guide (PDF)Title & ChapterDetail
120poug.pdfOracle Purchasing User's Guide — Ch. 9: Accruals and Budgetary Controlpp. 9-89 to 9-120: Encumbrance accounting, funds reservation, and budgetary control
120glug.pdfOracle General Ledger User's Guide — Budgetary ControlBudgetary control setup, funds check, and insufficient funds journal entries
120apug.pdfOracle Payables User's Guide — Ch. 3: Budgetary Control in PayablesAP invoice funds check, encumbrance accounting, and final match

Ready to Resolve This in Your Environment?

PO-04 is one of 65 diagnostic scripts covering every major Oracle EBS and Fusion module. William A. Green Consulting runs the script in your environment, applies guided data fixes, and builds the knowledge base that prevents the same issues from recurring.

Schedule a Discovery Call → ← View All 65 Scripts

See this script run autonomously — Oracle AI Platform →