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

PO Period Close Readiness Diagnostic

Uninvoiced receipts for accrual, unmatched PO receipts, open POs past need-by date, pending change orders, unprocessed receiving transactions, and encumbrance liquidation completeness.

PlatformOracle EBS R12.x
Input RequiredPeriod Name and Operating Unit
Diagnostic Checks35+
Data Sources9 Oracle tables
Fix Options3 guided fixes
Backup CreatedYes — Automatic

Why This Fails — and What It Costs

The Oracle EBS Purchasing period close requires that the Purchasing and Receiving sub-ledgers reconcile cleanly to the General Ledger before the period can be closed. The key reconciliation is between the PO accruals — goods received but not yet invoiced (GRNI) — and the receiving account in the GL. When goods are received in Oracle Receiving, an accrual entry debits the inventory or expense account and credits the AP Accrual (GRNI) account. When the AP invoice is matched and posted, the GRNI account is relieved. At period close, any remaining balance in the GRNI account represents goods that have been received but not yet invoiced.

Clearing account reconciliation is the primary technical complexity. Oracle EBS maintains a perpetual accrual in the AP Accrual account (GRNI) — every receipt creates an entry, and every matched invoice creates the relief. When a receipt is entered but the corresponding AP invoice is never matched — because the supplier has not sent the invoice, or because the invoice is on hold — the GRNI balance grows. At period close, the accounting team must report on this balance and explain every aged item. PO-05 identifies all open GRNI items with their age and the reason the invoice has not cleared.

The second period-close requirement is that the Purchasing module period is closed before the GL period can close. The Purchasing period close runs the Purchasing Period-End Accruals process, which generates journal entries for any goods received but not invoiced as of period end, and then closes the period in PO_SYSTEM_PARAMETERS. If this process has not run, the GL close will report that the Purchasing subledger is still open.

PO-05 runs a complete PO period-close readiness diagnostic — open GRNI items with age and invoice status, Purchasing period status and accrual program completion, open PO encumbrances that will carry forward, unfinalised receipts in PENDING status, unmatched unordered receipts, and the PO accrual account balance reconciliation to GL.

What This Script Diagnoses

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

Period Status & Accrual
Purchasing period open/close status in PO_SYSTEM_PARAMETERS. Period-End Accruals program completion confirmation. Accrual journal amount and GL posting status.
GRNI Aging Analysis
Open goods-received-not-invoiced items by age bracket — current, 10-30 days, 30-60 days, 60+ days. Total balance per bucket. Identifies items requiring vendor follow-up or receipt reversal.
Unordered Receipt Status
Unmatched unordered receipts that must be matched or rejected before the period can close. Supplier, item description, and candidate PO line identification for each unmatched receipt.
Encumbrance Carryforward
Open encumbrances on approved POs — confirms these are legitimate carryforwards vs phantom encumbrances from cancelled POs. Encumbrance balance by budget organization for the Controller's review.

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-05 — PO-05 Diagnostic Report
════════════════════════════════════════════════════════════
  ORACLE EBS R12 — PO PERIOD CLOSE READINESS DIAGNOSTIC
════════════════════════════════════════════════════════════
  Period             : FEB-2026
  Operating Unit     : US Primary OU
  Case Number        : PO-524820
  Report Date        : 25-FEB-2026 16:40:22
════════════════════════════════════════════════════════════

[ SECTION 1 — PURCHASING PERIOD STATUS ]    STATUS: ✗ FAIL
────────────────────────────────────────────────────────────
  PO Period          : FEB-2026 — OPEN — accrual program not yet run ✗
  ✗ FAIL: Purchasing period not closed — GL close will be blocked

[ SECTION 2 — OPEN GRNI ITEMS ]             STATUS: ⚠ WARNING
────────────────────────────────────────────────────────────
  Total GRNI Balance : $284,400 across 12 open items ⚠
  Items > 30 days    : 4 items — $92,100 — aged beyond 30 days
  Oldest Item        : PO-2026-003841 Line 2 — 45 days — $28,400

[ SECTION 3 — PENDING RECEIPTS ]            STATUS: ✓ PASS
────────────────────────────────────────────────────────────
  No PENDING receipts — all receipts finalized ✓

[ SECTION 4 — UNORDERED RECEIPTS ]          STATUS: ✗ FAIL
────────────────────────────────────────────────────────────
  ✗ 2 unmatched unordered receipts — must be matched before period close

[ SECTION 5 — OPEN ENCUMBRANCES ]           STATUS: ✓ PASS
────────────────────────────────────────────────────────────
  All open encumbrances are for open approved POs — carryforward expected ✓

════════════════════════════════════════════════════════════
  DIAGNOSTIC SUMMARY
════════════════════════════════════════════════════════════
  PERIOD CANNOT CLOSE — 2 blocking conditions
  1. Run Purchasing Period-End Accruals and close Purchasing period
  2. Match or reject 2 unordered receipts
  Advisory: 4 GRNI items aged > 30 days require management review
════════════════════════════════════════════════════════════

The Four-Layer Architecture in PO-05

1
Diagnostic Engine
Runs 35+ checks across Purchasing period status and accrual program completion, open GRNI items with age and invoice status, pending receipt finalization, unmatched unordered receipts, open encumbrances for approved POs, and PO accrual account balance reconciliation to GL.
2
Backup Created
Before any accrual or period data is modified, CONS_BACKUP.RCV_RECEIVING_SUB_LEDGER_<case#> and PO_SYSTEM_PARAMETERS_<case#> are created and row counts verified.
3
Guided Data Fix
Period-end accruals and period close are functional operations — PO-05 provides the exact concurrent program names and parameters. GRNI adjustments require Controller authorization. Unordered receipt matching is a standard receiving function.
4
KB Article Generated
Complete KB article generated — period, blocking conditions, GRNI aging summary, accrual program parameters, close completion confirmation. Upload directly to your knowledge base.

Backup & Rollback for PO-05

Every table touched by PO-05 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-05

CONS_BACKUP.RCV_RECEIVING_SUB_LEDGER_<case#> CONS_BACKUP.PO_SYSTEM_PARAMETERS_<case#> CONS_BACKUP.GL_BC_PACKETS_<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-05 execution — written from actual run output. No manual documentation required.

KB-PO-524820-001 · Script: PO-05
PO Period FEB-2026 Close — Accrual Not Run and 2 Unmatched Unordered Receipts
PO period FEB-2026 cannot close. Period-End Accruals program not yet run. 2 unmatched unordered receipts blocking period close. 4 GRNI items aged over 30 days flagged for management review ($92,100).
Period-End Accruals: program not submitted — not on the close checklist for the Purchasing team. Unordered receipts: 2 dock receipts for IT equipment received without PO reference on 20-FEB — IT procurement team has not yet matched to the correct POs.
PO_SYSTEM_PARAMETERS — ACCRUE_ON_RECEIPT_FLAG, period status (FEB-2026 OPEN)
RCV_SHIPMENT_LINES — TRANSACTION_TYPE = UNORDERED, MATCH_FLAG = N (2 records)
IT procurement matched 2 unordered receipts to correct POs. Period-End Accruals program run — $284,400 accrual generated and posted to GL. Purchasing period FEB-2026 closed. 4 aged GRNI items reported to Controller for vendor follow-up.
Period-End Accruals added to Purchasing close checklist with mandatory submission before day-minus-1. Unordered receipt review SLA set to 5 business days. PO-05 should run at period day-minus-3.
POPeriod CloseGRNIPeriod-End AccrualsUnordered ReceiptRCV_RECEIVING_SUB_LEDGEREBS R12.2

What This Script Finds

Blocking

Period-End Accruals Not Run

The most common PO close blocker. Purchasing period-end accruals generate the GRNI journal entries that reconcile the receiving sub-ledger to GL. Period cannot close until this program completes. PO-05 provides the exact submission parameters.

Blocking

Unmatched Unordered Receipts

Dock receipts entered without a PO reference — must be matched to a PO or rejected before the period closes. PO-05 identifies each unmatched receipt with the supplier and candidate PO lines.

Advisory

Aged GRNI Balance

Goods received over 30 days ago with no corresponding AP invoice. Indicates either a missing supplier invoice or a receipt that should be reversed. PO-05 produces the GRNI aging detail for the Controller's review.

Advisory

Pending Receipts at Period Close

Receipts initiated but not finalized — sitting in PENDING status. Cannot be reported in the period-end accrual until finalized. PO-05 identifies the receiver and the receipt date.

Tables Examined

TableModulePurpose
RCV_RECEIVING_SUB_LEDGERPOReceiving sub-ledger — GRNI accrual entries
PO_SYSTEM_PARAMETERSPOPurchasing period status and accrual configuration
RCV_SHIPMENT_LINESPOUnordered receipts — match status
RCV_TRANSACTIONSPOPending receipts — finalization status
GL_BC_PACKETSGLOpen encumbrances — carryforward analysis
AP_INVOICES_ALLAPInvoices matched to PO — GRNI relief status
GL_BALANCESGLGRNI account balance — reconciliation target
PO_HEADERS_ALLPOPO authorization status for encumbrance analysis
GL_PERIOD_STATUSESGLGL period open/close status
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
Purchasing period not closed — accrual program not run Functional First Submit the Purchasing Period-End Accruals concurrent program, then close the period via Purchasing > Setup > Financials > Accounting > Control Purchasing Periods. PO-05 provides the exact program parameters.
Unmatched unordered receipts at period close Functional First Match unordered receipts via Purchasing > Receiving > Match Unordered Receipts. PO-05 identifies each unmatched receipt with the supplier, item, and candidate PO lines for the match.
Aged GRNI items — goods received but invoice not arrived Functional First Controller review of aged GRNI items. Options: follow up with supplier for invoice, reverse the receipt if goods were returned, or accrue the liability manually. PO-05 provides the GRNI aging detail.
PENDING receipts at period close Functional First Finalize pending receipts via Oracle Receiving. PO-05 identifies receipts in PENDING status and the receiving team member who initiated the receipt.
GRNI account out of balance vs GL accrual account Direct Fix PO-05 calculates the variance between RCV_RECEIVING_SUB_LEDGER and the GL GRNI account balance. Generates the reconciling journal with full backup and Controller authorization.
Open encumbrances on cancelled POs — phantom budget consumption Direct Fix PO-05 identifies cancelled POs with active GL_BC_PACKETS entries and generates the reversal with full backup. Pre-flight confirms PO CANCEL_FLAG = Y.
Purchasing period close errors — period close program failing Functional First Review the period close program output log. PO-05 identifies whether the failure is a data condition (unmatched receipts, open accruals) or a program error requiring Oracle Support.
Invoice not matched before period close — aging liability Functional First Match open invoices before the period closes to relieve the GRNI balance in the correct period. PO-05 identifies open AP invoices that reference PO lines with GRNI balances.
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.

RCV_RECEIVING_SUB_LEDGER
PO_SYSTEM_PARAMETERS
GL_BC_PACKETS
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-05 — Pre-Flight & Backup Verification
════════════════════════════════════════════════════════════
  PRE-FLIGHT SAFETY CHECK
════════════════════════════════════════════════════════════
  Period             : FEB-2026
  Operating Unit     : US Primary OU
  GRNI Balance       : $284,400 — 12 open items
  CONS_BACKUP Schema : Accessible ✓
  Session Lock Check : No locks on PO_SYSTEM_PARAMETERS ✓
────────────────────────────────────────────────────────────
  ALL PRE-FLIGHT CHECKS PASSED
════════════════════════════════════════════════════════════
  Creating : CONS_BACKUP.PO_SYSTEM_PARAMETERS_524820
  Rows     : 1 row backed up ✓
  Registry : FIX_BACKUP_REGISTRY — ID 6104 created ✓
────────────────────────────────────────────────────────────
  BACKUP COMPLETE — Run Period-End Accruals then close period
════════════════════════════════════════════════════════════
  Enter case number to confirm : 524820
  Confirmed.
════════════════════════════════════════════════════════════
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-524820-001
PO Period FEB-2026 Close — Accrual Not Run and 2 Unmatched Unordered Receipts
EBS R12.2.10 · Purchasing
● RESOLVED
Symptom
PO period FEB-2026 cannot close. Period-End Accruals program not yet run. 2 unmatched unordered receipts blocking period close. 4 GRNI items aged over 30 days flagged for management review ($92,100).
Root Cause
Period-End Accruals: program not submitted — not on the close checklist for the Purchasing team. Unordered receipts: 2 dock receipts for IT equipment received without PO reference on 20-FEB — IT procurement team has not yet matched to the correct POs.
Tables
PO_SYSTEM_PARAMETERS — ACCRUE_ON_RECEIPT_FLAG, period status (FEB-2026 OPEN)
RCV_SHIPMENT_LINES — TRANSACTION_TYPE = UNORDERED, MATCH_FLAG = N (2 records)
Fix Applied
IT procurement matched 2 unordered receipts to correct POs. Period-End Accruals program run — $284,400 accrual generated and posted to GL. Purchasing period FEB-2026 closed. 4 aged GRNI items reported to Controller for vendor follow-up.
Prevention
Period-End Accruals added to Purchasing close checklist with mandatory submission before day-minus-1. Unordered receipt review SLA set to 5 business days. PO-05 should run at period day-minus-3.
Tags
POPeriod CloseGRNIPeriod-End AccrualsUnordered ReceiptRCV_RECEIVING_SUB_LEDGEREBS 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: Receipt Accrualspp. 9-89 to 9-120: Uninvoiced receipts accrual process and AP/PO reconciliation
120poug.pdfOracle Purchasing User's Guide — Ch. 1: Controlling Purchasing Periodspp. 1-80 to 1-82: Purchasing period control and period-end close sequence
120glug.pdfOracle General Ledger User's Guide — Period ClosePO encumbrance year-end carryforward and GL period close for purchasing

Ready to Resolve This in Your Environment?

PO-05 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 →