AP-06 EBS R12.x Accounts Payable Tier 2 Data Fix

Invoice Holds Summary & Aging Diagnostic

Complete inventory of all invoice holds across a date range — aging, hold type breakdown, top vendors by hold count, repeat hold patterns, and resolution path guidance.

PlatformOracle EBS R12.x
Input RequiredDate Range or Operating Unit
Diagnostic Checks25+
Data Sources5 Oracle tables
Fix Options3 guided fixes
Backup CreatedYes — Automatic

Why This Fails — and What It Costs

Individual invoice holds are transactional problems. A population of holds across an operating unit over a date range is a data quality and process problem — and the two require fundamentally different approaches. When an AP manager runs the standard Oracle Holds report and sees 47 invoices on hold totalling $890,000, the report tells them what is on hold but not why it accumulated, not which holds are the same type recurring on the same vendors, and not which holds are about to cost the business money through missed payment discounts. That level of analysis requires cross-referencing AP_HOLDS_ALL, AP_INVOICES_ALL, AP_SUPPLIERS, and AP_HOLD_CODES in a way Oracle's standard reports do not do.

Repeat hold patterns are the most operationally significant finding in a holds population analysis. When the same hold type is placed and released on the same invoice three or more times, it means the underlying condition was never actually corrected — the hold was manually released without fixing the root cause, and Oracle's validation engine placed it again on the next validation run. This pattern is invisible in any individual invoice view but becomes unmistakable in a population analysis. A single vendor generating PRICE holds repeatedly across multiple invoices indicates a PO pricing process gap between Purchasing and the supplier — not individual invoice data entry errors.

Aging is the second critical dimension. A QUANTITY RECEIVED hold that is 3 days old is a routine receiving timing issue. The same hold at 45 days is a dispute, an abandoned invoice, or a receiving process failure that needs management attention. Holds older than 60 days frequently represent invoices that were entered incorrectly, held, and then forgotten — the vendor has been paid by check outside the system, or the goods were never received and the invoice should be cancelled. Neither situation resolves itself, and both accumulate on the AP aging report and distort the period-close reconciliation.

AP-06 runs a structured population analysis of all holds in AP_HOLDS_ALL for the specified date range — count and amount by hold type, aging distribution across six buckets, top vendors by hold count and amount, repeat hold detection with frequency analysis, and discount risk flagging for invoices approaching the discount cutoff date. It produces both the summary view for management and the detailed transaction list for the AP team.

What This Script Diagnoses

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

Holds Inventory
All active holds in AP_HOLDS_ALL for the specified date range — total count, total amount on hold, breakdown by hold type (system vs. user vs. workflow). Oldest hold date.
Aging Analysis
Holds aged by: 0-7 days, 8-14 days, 15-30 days, 31-60 days, 61-90 days, 90+ days. Invoices approaching payment discount cutoff date. Invoices at risk of missing cash discount.
Top Vendors by Hold
Vendors with the most invoices on hold — count and total amount. Vendors with persistent holds suggesting setup issues. Single-vendor root cause analysis.
Repeat Hold Patterns
Invoices where the same hold type has been placed and released multiple times — indicating a systemic setup issue rather than a one-time data problem. Pattern frequency.
Resolution Path by Hold Type
For every hold type: system vs. user hold classification, resolution path (functional UI navigation), Tier 2 DML fix eligibility, Tier 3 Oracle SR eligibility, average resolution time.

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.

AP-06 — AP-06 Diagnostic Report
════════════════════════════════════════════════════════════
  ORACLE EBS R12 — INVOICE HOLDS SUMMARY & AGING DIAGNOSTIC
════════════════════════════════════════════════════════════
  Operating Unit     : US Operations OU
  Date Range         : 01-JAN-2026 to 25-FEB-2026
  Case Number        : 861290
  Report Date        : 25-FEB-2026 10:15:33
════════════════════════════════════════════════════════════

[ SECTION 1 — HOLDS INVENTORY ]
────────────────────────────────────────────────────────────
  Total Active Holds : 52
  Total Amount       : $1,084,200.00
  System Holds       : 38
  User Holds         : 11
  Workflow Holds     : 3

[ SECTION 2 — HOLD TYPE BREAKDOWN ]
────────────────────────────────────────────────────────────
  ACCOUNT INVALID    : 18 invoices — $412,000
  QUANTITY RECEIVED  : 11 invoices — $284,100
  PRICE              : 7 invoices — $198,400
  USER HOLD          : 11 invoices — $142,200
  WORKFLOW           : 3 invoices — $47,500
  OTHER              : 2 invoices — $18,000 (MAX QTY ORD, CANT CLOSE PO)

[ SECTION 3 — AGING ]
────────────────────────────────────────────────────────────
  0-7 days           : 8 invoices — $124,000
  8-14 days          : 12 invoices — $218,400
  15-30 days         : 14 invoices — $312,100
  31-60 days         : 11 invoices — $284,500
  61-90 days         : 5 invoices — $98,200 — MANAGEMENT REVIEW
  90+ days           : 2 invoices — $47,000 — ESCALATION REQUIRED

[ SECTION 4 — REPEAT HOLD PATTERNS ]         STATUS: ✗ PATTERN DETECTED
────────────────────────────────────────────────────────────
  ✗ Vendor 8812 (Consolidated Supply): PRICE hold placed 4x in 60 days
  ✗ ACCOUNT INVALID: 18 holds all reference CCID 88432 — bulk remediation available

[ SECTION 5 — DISCOUNT RISK ]                STATUS: ⚠ WARNING
────────────────────────────────────────────────────────────
  ⚠ 3 invoices with discount dates within 7 days — $4,180 at risk
════════════════════════════════════════════════════════════

The Four-Layer Architecture in AP-06

1
Diagnostic Engine
Runs 25+ checks covering hold inventory by type and amount, aging distribution across six buckets, top vendors by hold count and amount, repeat hold pattern detection with frequency analysis, and discount risk flagging for invoices approaching cutoff dates.
2
Backup Created
Before any hold records are modified, CONS_BACKUP.AP_HOLDS_ALL_<case#> and AP_INVOICES_ALL_<case#> are created and row counts verified.
3
Guided Data Fix
Most hold population conditions resolve through bulk functional actions — batch validation runs, bulk CCID remaps, vendor-level corrections. AP-06 generates the bulk fix scripts for ACCOUNT INVALID holds referencing the same disabled CCID. Explicit COMMIT required.
4
KB Article Generated
Complete KB article generated — hold population summary, repeat pattern analysis, discount risk flags, bulk remediation reference, aging distribution. Upload directly to your knowledge base.

Backup & Rollback for AP-06

Every table touched by AP-06 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 — AP-06

CONS_BACKUP.AP_HOLDS_ALL_<case#> CONS_BACKUP.AP_INVOICES_ALL_<case#> CONS_BACKUP.AP_HOLD_CODES_<case#>

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

Pre-Flight Safety Guards

POSTED_FLAG = 'N'Required ✓
ACCOUNTING_EVENT_ID IS NULLRequired ✓
No active session lockChecked ✓
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 AP-06 execution — written from actual run output. No manual documentation required.

KB-AP-861290-001 · Script: AP-06
Invoice Holds Population Analysis — 18 ACCOUNT INVALID Holds and Repeat PRICE Hold Pattern Detected
52 active invoice holds totalling $1.08M identified in AP holds population analysis for JAN-FEB 2026. 18 ACCOUNT INVALID holds all reference the same disabled CCID. Vendor 8812 has placed PRICE holds 4 times in 60 days — systemic pricing discrepancy identified.
The 18 ACCOUNT INVALID holds all reference CCID 88432, disabled during a GL COA cleanup on 01-JAN-2026. The PRICE hold pattern on Vendor 8812 traces to a blanket PO created at the old unit price — invoices are billed at the new supplier price (2.4% higher) which breaches the 2% tolerance.
AP_HOLDS_ALL — HOLD_LOOKUP_CODE, INVOICE_ID (18 ACCOUNT INVALID + 7 PRICE holds)
AP_INVOICES_ALL — INVOICE_ID, VENDOR_ID, INVOICE_AMOUNT
GL_CODE_COMBINATIONS — CODE_COMBINATION_ID 88432 (disabled 01-JAN-2026)
ACCOUNT INVALID bulk remediation: AP-01 applied to each of 18 invoices — CCID 88432 remapped to 99105 across AP_INVOICE_DISTRIBUTIONS_ALL. PRICE hold pattern: Purchasing notified to amend blanket PO-2026-00112 price to current supplier rate. 3 discount-risk invoices escalated and cleared within 48 hours.
AP-06 holds population analysis should run weekly during peak invoice periods and at period day-minus-5. CCID bulk remediation should be triggered by GL-03 before COA cleanup events disable accounts still referenced in open AP transactions.
APInvoice HoldsACCOUNT INVALIDPRICE HoldHolds AgingRepeat Hold PatternBulk RemediationEBS R12.2

Most Common Issues Detected by AP-06

Pattern

High Volume ACCOUNT INVALID Holds

Multiple invoices with ACCOUNT INVALID holds — indicates a GL Chart of Accounts cleanup that affected many open invoices. AP-06 groups them by the disabled CCID for efficient bulk remediation.

Pattern

Chronic QUANTITY RECEIVED Holds

Same vendor consistently placing QUANTITY RECEIVED holds — indicates a receiving process gap or tolerance configuration issue, not individual invoice errors.

Aging

Holds Older Than 60 Days

Long-aged holds frequently indicate abandoned invoices, disputed charges, or missing approver action. AP-06 flags these for management review with vendor and amount detail.

Discount

Cash Discounts at Risk

Invoices on hold whose payment discount date is within 5 days. AP-06 prioritizes these with an urgent flag and calculates the discount amount at risk.

Tables & Views Examined

Table / ViewSchemaPurpose in Diagnostic
AP_HOLDS_ALL AP All holds — type, reason, dates, release status
AP_INVOICES_ALL AP Invoice header for amount and vendor context
AP_HOLD_CODES AP Hold type definitions and system vs. user classification
AP_SUPPLIERS AP Vendor names for grouping analysis
GL_CODE_COMBINATIONS GL CCID validation for ACCOUNT INVALID holds
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
ACCOUNT INVALID holds — all referencing same disabled CCID Direct Fix AP-06 identifies the shared disabled CCID across all affected invoices and generates a bulk CCID remap with backup for all distributions in a single pass. More efficient than running AP-01 individually on each invoice.
QUANTITY RECEIVED holds — high volume from same vendor Functional First Pattern indicating a receiving process gap. AP-06 groups by vendor and PO for coordinated resolution with the Receiving team. Bulk resolution more efficient than individual invoice review.
PRICE holds — repeat pattern on same vendor Functional First Indicates PO pricing is misaligned with current supplier pricing. Buyer amends the blanket PO or adjusts the tolerance. AP-06 identifies the PO reference and the exact price variance for each hold.
User holds — placed by AP team, no release action taken Functional First User holds require manual release via the Invoice Workbench. AP-06 identifies the hold placer, the date, and the aging so the AP manager can assign release responsibility.
Holds older than 60 days — management review required Functional First AP-06 flags these with vendor, amount, hold type, and age for escalation. Options: resolve the hold condition, cancel the invoice if goods not received, or write off if approved by Finance.
Discount risk — discount cutoff within 7 days Functional First AP-06 calculates the discount amount at risk and flags the invoice for priority resolution. The hold condition must be resolved and the invoice validated before the discount date for the discount to be captured.
Workflow holds — stuck in approval workflow Oracle Support Workflow holds in WF_ITEM_ACTIVITY_STATUSES require Oracle Support or the Oracle Workflow Administrator to diagnose and recover. AP-06 identifies the workflow item key and activity status for the SR.
CANT CLOSE PO hold — PO cannot be closed while invoice is unpaid Functional First PO closure is blocked by the outstanding invoice. Resolution requires either paying the invoice or cancelling it. AP-06 identifies the PO and the outstanding amount preventing closure.
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.

AP_HOLDS_ALL
AP_INVOICES_ALL
AP_HOLD_CODES
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.
AP-06 — Pre-Flight & Backup Verification
════════════════════════════════════════════════════════════
  PRE-FLIGHT SAFETY CHECK
════════════════════════════════════════════════════════════
  Operating Unit     : US Operations OU
  Hold Count in Scope: 52
  CONS_BACKUP Schema : Accessible ✓
  Session Lock Check : No locks on target rows ✓
────────────────────────────────────────────────────────────
  ALL PRE-FLIGHT CHECKS PASSED — Ready to create backup
════════════════════════════════════════════════════════════
  Creating : CONS_BACKUP.AP_HOLDS_ALL_861290
  Rows     : 52 rows backed up ✓ Verified
  Creating : CONS_BACKUP.AP_INVOICE_DISTRIBUTIONS_ALL_861290
  Rows     : 54 distribution rows backed up ✓ Verified
  Registry : FIX_BACKUP_REGISTRY — ID 2118 created ✓
────────────────────────────────────────────────────────────
  BACKUP COMPLETE — Rollback available via single INSERT
════════════════════════════════════════════════════════════
  Enter case number to confirm bulk CCID remap : 861290
  Confirmed. Executing bulk fix for 18 ACCOUNT INVALID holds...
════════════════════════════════════════════════════════════
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-AP-861290-001
Invoice Holds Population Analysis — 18 ACCOUNT INVALID Holds and Repeat PRICE Hold Pattern Detected
EBS R12.2.10 · Accounts Payable
● RESOLVED
Symptom
52 active invoice holds totalling $1.08M identified in AP holds population analysis for JAN-FEB 2026. 18 ACCOUNT INVALID holds all reference the same disabled CCID. Vendor 8812 has placed PRICE holds 4 times in 60 days — systemic pricing discrepancy identified.
Root Cause
The 18 ACCOUNT INVALID holds all reference CCID 88432, disabled during a GL COA cleanup on 01-JAN-2026. The PRICE hold pattern on Vendor 8812 traces to a blanket PO created at the old unit price — invoices are billed at the new supplier price (2.4% higher) which breaches the 2% tolerance.
Tables
AP_HOLDS_ALL — HOLD_LOOKUP_CODE, INVOICE_ID (18 ACCOUNT INVALID + 7 PRICE holds)
AP_INVOICES_ALL — INVOICE_ID, VENDOR_ID, INVOICE_AMOUNT
GL_CODE_COMBINATIONS — CODE_COMBINATION_ID 88432 (disabled 01-JAN-2026)
Fix Applied
ACCOUNT INVALID bulk remediation: AP-01 applied to each of 18 invoices — CCID 88432 remapped to 99105 across AP_INVOICE_DISTRIBUTIONS_ALL. PRICE hold pattern: Purchasing notified to amend blanket PO-2026-00112 price to current supplier rate. 3 discount-risk invoices escalated and cleared within 48 hours.
Prevention
AP-06 holds population analysis should run weekly during peak invoice periods and at period day-minus-5. CCID bulk remediation should be triggered by GL-03 before COA cleanup events disable accounts still referenced in open AP transactions.
Tags
APInvoice HoldsACCOUNT INVALIDPRICE HoldHolds AgingRepeat Hold PatternBulk RemediationEBS R12.2

Oracle Documentation References

R12 Guide (PDF)Title & ChapterDetail
120apug.pdfOracle Payables User's Guide — Appendix C: Oracle Payables HoldsAppendix C: Authoritative list of all predefined hold codes and release reason names
120apug.pdfOracle Payables User's Guide — Ch. 3: Invoice Approval Workflowpp. 3-172 to 3-190: Invoice approval holds, workflow holds, and holds resolution
120apug.pdfOracle Payables User's Guide — Ch. 3: Validationpp. 3-168 to 3-187: How validation applies system holds and the hold release process

Ready to Resolve This in Your Environment?

AP-06 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 →