{
  "test_id": "ORCL.P2P.AP.INV.VALIDATE.DUPLICATE",
  "scenario_name": "Duplicate Invoice Validation",
  "application": "Oracle Fusion Cloud",
  "product": "Financials",
  "module": "Accounts Payable",
  "process": "Invoice Processing",
  "business_flow": "Procure-to-Pay",
  "scenario_type": "Negative / Exception",
  "priority": "High",
  "automation_status": "SyntraFlow Ready",
  "library": "Syntra Standard",
  "canonical_url": "https://www.syntraflow.cloud/oracle-erp-testing-tool/test-library/financials/accounts-payable/invoice-processing/duplicate-invoice-validation/",
  "objective": {
    "intro": "Confirms that Oracle Fusion's duplicate invoice validation correctly identifies when a new invoice potentially duplicates an existing supplier invoice already on file, and that it responds according to the Business Unit's configured Duplicate Invoice Check options.",
    "confirms": [
      "An invoice matching an existing Supplier plus Invoice Number is flagged and held as a potential duplicate",
      "An invoice matching Supplier, Invoice Number, and Amount is treated as a high-confidence duplicate",
      "An invoice sharing an Invoice Number with a different Supplier is not incorrectly flagged",
      "Invoices with the same Supplier and Number but a different Amount or Date are still evaluated per the configured match basis",
      "Genuinely unique invoices save and validate without being wrongly placed on hold",
      "A Duplicate Invoice Hold can be researched, released, or resolved via cancellation/correction by an AP user",
      "Formatting differences in Invoice Number, such as leading zeros or spacing, are handled per Oracle's documented exact-match logic",
      "A duplicate invoice re-entered after the original was cancelled is still evaluated by the duplicate check",
      "No duplicate invoice reaches accounting or payment selection without the hold being explicitly resolved"
    ],
    "scope_note": "This test covers the duplicate invoice detection and hold/resolution logic specifically, not general field-level invoice validation or the standard invoice creation flow."
  },
  "preconditions": [
    "Business Unit has Duplicate Invoice Check options enabled in Manage Invoice Options (Number, Amount, and/or Date basis)",
    "At least one existing, validated invoice is on file for the test supplier to serve as the duplicate baseline",
    "Supplier and Supplier Site are active and correctly set up in Oracle Fusion Payables",
    "Test user has Accounts Payable Invoice Entry privileges",
    "Test environment's Invoice Options configuration mirrors production",
    "DataVault is populated with known existing invoice numbers, suppliers, and amounts to construct deterministic duplicate and non-duplicate conditions",
    "Duplicate Invoice Hold reason/code is configured and active",
    "Business Unit and Currency are consistent between the baseline invoice and the test invoice",
    "No conflicting batch validation jobs are running against the test supplier during execution"
  ],
  "test_data": [
    {
      "field": "Business Unit",
      "example": "US1 Business Unit"
    },
    {
      "field": "Supplier",
      "example": "Meridian Office Supplies"
    },
    {
      "field": "Supplier Site",
      "example": "MERIDIAN-HOU"
    },
    {
      "field": "Existing Invoice Number (baseline)",
      "example": "INV-10432"
    },
    {
      "field": "New Invoice Number (test entry)",
      "example": "INV-10432"
    },
    {
      "field": "Invoice Amount",
      "example": "4,250.00 USD"
    },
    {
      "field": "Invoice Date",
      "example": "15-JUN-2026"
    },
    {
      "field": "Currency",
      "example": "USD"
    },
    {
      "field": "Payment Terms",
      "example": "Net 30"
    },
    {
      "field": "Invoice Type",
      "example": "Standard"
    },
    {
      "field": "Duplicate Check Basis",
      "example": "Number + Amount + Date"
    },
    {
      "field": "Line/Distribution Amount",
      "example": "4,250.00 (single line)"
    }
  ],
  "business_steps": [
    {
      "step_number": 1,
      "step_name": "Open Create Invoice",
      "action": "Navigate to Payables, then Invoices, then Create Invoice",
      "test_data": "",
      "expected_result": "Create Invoice page opens with entry fields ready",
      "validation_type": "action"
    },
    {
      "step_number": 2,
      "step_name": "Select Business Unit and Supplier",
      "action": "Choose the Business Unit and select the Supplier for the invoice",
      "test_data": "Business Unit: US1 Business Unit; Supplier: Meridian Office Supplies",
      "expected_result": "Supplier details populate, including default payment terms and liability account",
      "validation_type": "action"
    },
    {
      "step_number": 3,
      "step_name": "Select Supplier Site",
      "action": "Select the applicable Supplier Site",
      "test_data": "Supplier Site: MERIDIAN-HOU",
      "expected_result": "Site-specific defaults such as payment terms and remit-to are applied",
      "validation_type": "action"
    },
    {
      "step_number": 4,
      "step_name": "Enter Invoice Number",
      "action": "Enter the Invoice Number exactly as it appears on the source document",
      "test_data": "Invoice Number: INV-10432",
      "expected_result": "Invoice Number field accepts entry",
      "validation_type": "action",
      "note": "This value is the primary key used in Oracle's duplicate match logic"
    },
    {
      "step_number": 5,
      "step_name": "Enter Invoice Date and Amount",
      "action": "Enter the Invoice Date and Invoice Amount",
      "test_data": "Date: 15-JUN-2026; Amount: 4,250.00 USD",
      "expected_result": "Fields accept entry and the header total updates",
      "validation_type": "action"
    },
    {
      "step_number": 6,
      "step_name": "Enter Invoice Line and Distribution",
      "action": "Enter the line amount and distribution account matching the header total",
      "test_data": "Line Amount: 4,250.00",
      "expected_result": "Line and distribution totals match the invoice header amount",
      "validation_type": "action"
    },
    {
      "step_number": 7,
      "step_name": "Save the Invoice",
      "action": "Save the invoice to trigger Oracle's duplicate invoice evaluation",
      "test_data": "",
      "expected_result": "Oracle evaluates the invoice against existing invoices for the same supplier per the configured Duplicate Invoice Check options",
      "validation_type": "action"
    },
    {
      "step_number": 8,
      "step_name": "Observe Duplicate Check Response",
      "action": "Review the confirmation message or warning returned after save",
      "test_data": "",
      "expected_result": "System either saves the invoice cleanly or returns a duplicate warning and applies a Duplicate Invoice Hold",
      "validation_type": "action"
    },
    {
      "step_number": 9,
      "step_name": "Open Manage Holds",
      "action": "Navigate to the invoice's Holds tab to review any applied hold",
      "test_data": "",
      "expected_result": "Duplicate Invoice Hold, when triggered, is listed with hold reason and hold-from date",
      "validation_type": "action"
    },
    {
      "step_number": 10,
      "step_name": "Research the Duplicate Condition",
      "action": "Compare the new invoice against the existing baseline invoice for supplier, number, amount, and date",
      "test_data": "",
      "expected_result": "Researcher can determine whether the invoice is a true duplicate or a legitimate separate invoice",
      "validation_type": "action"
    },
    {
      "step_number": 11,
      "step_name": "Resolve the Hold",
      "action": "Release the Duplicate Invoice Hold if the invoice is confirmed unique, or cancel/correct the entry if it is a true duplicate",
      "test_data": "",
      "expected_result": "Invoice hold status updates to reflect the resolution decision",
      "validation_type": "action"
    },
    {
      "step_number": 12,
      "step_name": "Re-validate the Invoice",
      "action": "Re-run validation after resolution to confirm the invoice's updated status",
      "test_data": "",
      "expected_result": "Invoice moves to Validated status if released, or remains cancelled/corrected if it was a true duplicate",
      "validation_type": "action"
    },
    {
      "step_number": 13,
      "step_name": "Confirm Downstream Eligibility",
      "action": "Check whether the invoice is now eligible for accounting and payment processing",
      "test_data": "",
      "expected_result": "Only a legitimately unique, validated invoice becomes eligible for accounting and payment selection",
      "validation_type": "action"
    },
    {
      "step_number": 14,
      "step_name": "Confirm Duplicate Validation Business Outcome",
      "action": "Confirm that the overall duplicate-check business intent was met for this scenario",
      "test_data": "",
      "expected_result": "A true duplicate was correctly caught and held or resolved, or a genuinely unique invoice was correctly accepted without being wrongly blocked",
      "validation_type": "business_assertion"
    }
  ],
  "expected_results": [
    "Invoices matching an existing Supplier plus Invoice Number are placed on Duplicate Invoice Hold",
    "Duplicate detection additionally weighs Amount and Date per the Business Unit's configured Invoice Options",
    "Invoices sharing an Invoice Number with a different Supplier are not flagged as duplicates",
    "Genuinely unique invoices save and validate without any duplicate-related hold",
    "Duplicate Invoice Hold displays a clear hold reason referencing the matching condition",
    "Users can research, release, or correct and cancel a Duplicate Invoice Hold through standard Manage Holds functionality",
    "Formatting differences in Invoice Number, such as leading zeros or spacing, are evaluated per Oracle's exact-string match logic, which may not flag near-duplicates as a documented behavior boundary rather than a defect",
    "A resolved duplicate proceeds normally through validation, accounting, and payment eligibility",
    "Re-entry of a previously cancelled duplicate invoice number is still evaluated by the duplicate check the same as any new invoice",
    "No duplicate invoice is accounted or paid without the hold being explicitly researched and resolved by an AP user"
  ],
  "validation_checkpoints": [
    "Supplier plus Invoice Number match triggers a Duplicate Invoice Hold",
    "Supplier plus Invoice Number plus Amount match triggers a Duplicate Invoice Hold with a high-confidence indicator",
    "Same Invoice Number with a different Supplier does not trigger a hold",
    "Same Supplier and Number with a different Amount is still evaluated per the configured basis",
    "Same Supplier and Number with a different Date is still evaluated per the configured basis",
    "Hold reason code correctly identifies as Duplicate Invoice",
    "Hold is traceable back to the specific existing invoice it potentially duplicates",
    "Formatting-variant invoice numbers are handled consistently with Oracle's documented exact-match behavior",
    "Released holds allow the invoice to proceed to validation and accounting",
    "Cancelled or corrected duplicate invoices do not remain in a payable state",
    "Genuinely unique invoices are never wrongly placed on Duplicate Invoice Hold",
    "Duplicate check behavior is consistent for both first-time entry and re-entry after a prior cancellation"
  ]
}