AP_INVOICES_ALL — INVOICE_ID, VENDOR_ID, INVOICE_AMOUNT
GL_CODE_COMBINATIONS — CODE_COMBINATION_ID 88432 (disabled 01-JAN-2026)
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.
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.
AP-06 systematically investigates every major condition that can cause the issue this diagnostic targets. Below is the complete coverage breakdown.
Representative output showing the diagnostic running against a real-world scenario. The script identifies every condition, states the root cause, and generates the fix.
════════════════════════════════════════════════════════════
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
════════════════════════════════════════════════════════════
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.
Backup happens before any DML. Script aborts if backup creation fails.
This article is produced automatically at the end of every AP-06 execution — written from actual run output. No manual documentation required.
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.
Same vendor consistently placing QUANTITY RECEIVED holds — indicates a receiving process gap or tolerance configuration issue, not individual invoice errors.
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.
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.
| Table / View | Schema | Purpose 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 |
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.
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.
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:
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_EVENTS, XLA_AE_HEADERS — incorrect changes corrupt the subledger audit trail in ways undetectable until period close fails or an auditor requests a reconciliationWF_ITEMS, WF_ITEM_ACTIVITY_STATUSES — ad-hoc DML can corrupt the workflow engine state instance-wideA 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.
| 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. |
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.
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.
INSERT from the backup table. No reconstruction required.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.
| R12 Guide (PDF) | Title & Chapter | Detail |
|---|---|---|
| 120apug.pdf | Oracle Payables User's Guide — Appendix C: Oracle Payables Holds | Appendix C: Authoritative list of all predefined hold codes and release reason names |
| 120apug.pdf | Oracle Payables User's Guide — Ch. 3: Invoice Approval Workflow | pp. 3-172 to 3-190: Invoice approval holds, workflow holds, and holds resolution |
| 120apug.pdf | Oracle Payables User's Guide — Ch. 3: Validation | pp. 3-168 to 3-187: How validation applies system holds and the hold release process |
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.
See this script run autonomously — Oracle AI Platform →