- Home
- /
- Oracle ERP Testing Tool
- /
- Oracle Accounts Receivable (AR) Testing Tool
- /
- Oracle Adjustments Testing
Oracle Adjustments Testing
Adjustment transactions are how Oracle Receivables corrects a customer balance without rewriting the original invoice — a manual adjustment, a write-off, a claim resolution, a miscellaneous receipt, or a chargeback. Each is a distinct transaction type with its own reason codes, approval rules, and accounting impact. When these mechanics are mis-tested, balances drift, write-offs post without authority, or claims resolve without the accounting entries following — and none of it surfaces until reconciliation or audit.
This page is a practical guide to testing the adjustment transaction itself — creation, approval, and accounting impact — once a decision to adjust, write off, or charge back has already been made. It sits under the Oracle Accounts Receivable (AR) Testing Tool hub.
What Is Adjustment Processing in Oracle Receivables?
Oracle Fusion Receivables gives AR teams several distinct ways to change what a customer owes without editing the original transaction. A manual adjustment increases or decreases a transaction balance for a defined reason — a pricing correction, a freight dispute, a rounding difference. A write-off clears a small remaining balance that isn't worth collecting. A claim captures a customer deduction or short payment that must be investigated before it is resolved as valid or invalid. A miscellaneous receipt records cash that doesn't relate to a specific invoice. A chargeback creates a new open debit when a receipt only partially settles what it was applied against, so the shortfall stays visible and collectible.
Every one of these transaction types is governed by a reason code and an activity that determines its GL account derivation, and most carry an approval limit tied to the amount and the requesting role. Getting the mechanics right — the right reason code drives the right account, the right amount triggers the right approval tier, the transaction posts the right accounting entry and updates the right balance — is what keeps the subledger trustworthy. Get it wrong and either a customer balance is silently mis-stated or an unauthorized adjustment slips past approval.
Scope note. This page covers adjustment, write-off, claim, and chargeback transaction mechanics — how each is created, approved, and accounted. When and why a write-off is initiated as part of a dunning or collections strategy is covered on Oracle Collections Testing; this page owns executing the transaction once that decision is made. It's also distinct from Oracle AR Credit Memo Testing, which covers formal, customer-facing credit memo documents — adjustments here are typically internal balance corrections, not documents issued to the customer.
Adjustment, Write-off, Claim, Misc Receipt & Chargeback — How They Differ
Five transaction types, five distinct purposes. A test suite that treats them as interchangeable will miss the defects specific to each.
| Transaction type | Purpose | Customer-facing document? | Typical accounting impact | Reversal behavior |
|---|---|---|---|---|
| Manual adjustment (increase/decrease) | Correct a balance for a defined reason | No | Debit/credit to reason-code-derived account | Reversing adjustment against the original |
| Write-off | Clear a small uncollectible balance | No | Write-off expense per Receivables Activity | Reversal restores the balance |
| Claim (deduction / short-pay) | Investigate a disputed deduction | Usually no | None until resolved (approved/denied) | Re-open claim; resolution transaction reversed |
| Miscellaneous receipt | Record cash not tied to an invoice | No | Cash to activity-derived revenue/liability account | Reversal / unapplication of receipt |
| Chargeback | Re-open a shortfall as a new debit item | Yes — new open transaction | New receivable linked to the original receipt | Reversal cancels the new debit item |
Why Testing Adjustment Transactions Matters
Adjustments touch cash-adjacent balances and bypass the controls that govern invoicing. A defect here either mis-states what a customer owes or lets a balance move without the authority that should have signed off on it.
| Risk | Example | Potential impact | Testing response |
|---|---|---|---|
| Adjustment exceeds authority | Processor posts above their approval limit | Unauthorized balance change; SOD failure | Test authority limits at and beyond the threshold |
| Wrong GL account derived | Reason code maps to the wrong activity account | Mis-stated GL; reconciliation break | Validate account derivation per reason code |
| Write-off tolerance too loose | Auto-approval threshold set higher than intended | Revenue leakage from unreviewed write-offs | Boundary test at and beyond the tolerance |
| Claim resolved without accounting | Claim marked resolved but no adjustment posts | Balance and claim status disagree | Assert accounting entry follows every resolution |
| Chargeback not linked correctly | New debit item doesn't reference original receipt | Lost audit trail; duplicate collection effort | Verify chargeback-to-receipt linkage |
| Closed-period posting | Adjustment dated into a closed AR period | Accounting failure; close delay | Test adjustment date against period status |
| Duplicate adjustment | Same invoice/reason/amount posted twice | Overstated correction; balance error | Negative test on duplicate submission |
| Reversal incomplete | Reversal changes balance but not GL, or vice versa | Balance/GL out of sync | Assert both balance and accounting reverse together |
| Credit-hold bypass | Adjustment on a held customer changes exposure silently | Credit control weakened | Test adjustment behavior against hold status |
| Silent behavior change | Quarterly update alters approval or accounting logic | Undetected control drift | Release-aware regression on adjustments |
The Oracle Adjustment Transaction Process Flow
Regardless of transaction type, adjustment processing follows the same sequence from identification through to reporting.
Adjustment sequence
- Trigger: a processor, collector, or claims analyst identifies a balance that needs correcting — manually, from a receipt application, or from a resolved claim.
- Reason code: every transaction requires a reason code, which drives the GL account derivation and the reporting category.
- Approval: amount and role determine whether the transaction auto-approves, routes to a single approver, or requires multi-tier approval.
- Transaction created: the adjustment, write-off, claim resolution, receipt, or chargeback is recorded against the customer/transaction.
- Accounting impact: a subledger entry posts to the account derived from the activity and reason code.
- Balance updated: the customer's open balance and ageing reflect the transaction immediately.
- Reporting / audit: the transaction, its approver, and its accounting are retained for ageing reports and audit review.
Suggested visual: a swimlane diagram of the adjustment sequence with an approval decision branch, for the web team to produce.
Testing Scope & Coverage Matrix
The dimensions a complete adjustment test suite must cover, with automation suitability and priority.
| Test area | What must be validated | Example scenario | Automation | Priority |
|---|---|---|---|---|
| Functional (pass) | Valid adjustment creates and posts cleanly | Manual increase with valid reason code | High | High |
| Negative | Invalid data is rejected correctly | Missing reason code blocked | High | High |
| Boundary | Behavior at exact approval/tolerance limits | Amount = authority limit vs +0.01 | High | High |
| Approval workflow | Routing and escalation by amount and role | Multi-tier approval on large write-off | Medium | High |
| Role-based authority | Only privileged roles post above their limit | Processor blocked from high-value write-off | Medium | High |
| Claims lifecycle | Creation, investigation, resolution, application | Deduction claim resolved and applied | Medium | High |
| Chargeback linkage | New debit item ties correctly to the receipt | Chargeback created on short receipt | High | High |
| Accounting / GL impact | Subledger entry matches transaction type and amount | Write-off posts to correct expense account | High | High |
| Period / date | Date resolves to an open accounting period | Closed-period adjustment blocked | High | High |
| Currency / tax | Foreign-currency and tax-bearing adjustments | Adjustment on non-ledger-currency invoice | Medium | Medium |
| Integration / API | Adjustments via REST and bulk import behave as UI | API-created adjustment matches UI result | High | Medium |
| Reporting / audit trail | Ageing and audit logs reflect every transaction | Adjustment appears in ageing and audit report | High | Medium |
| Regression / release | Behavior unchanged after an update | Re-run pack after quarterly update | High | High |
Oracle Adjustments Test Scenarios
A representative set of 37 Oracle Fusion Receivables adjustment scenarios — manual adjustments, write-offs, claims, miscellaneous receipts, chargebacks, approval and authority conditions, and regression. Test IDs use the AR-ADJ prefix.
| ID | Scenario | Preconditions | Expected result | Pri | Auto |
|---|---|---|---|---|---|
| AR-ADJ-001 | Manual adjustment increase | Open invoice, valid increase reason | Balance increases; adjustment posts | H | Y |
| AR-ADJ-002 | Manual adjustment decrease | Open invoice, valid decrease reason | Balance decreases; adjustment posts | H | Y |
| AR-ADJ-003 | Adjustment reason code required | Reason code list configured | Adjustment blocked without a reason code | H | Y |
| AR-ADJ-004 | Reason code drives GL account | Reason mapped to a specific activity account | Correct account derived on posting | M | Y |
| AR-ADJ-005 | Adjustment approval workflow — single approver | Amount above auto-approval, within one tier | Routed to approver; posts once approved | H | Y |
| AR-ADJ-006 | Adjustment approval workflow — multi-level | Amount spans two approval tiers | Sequential approvals enforced in order | M | P |
| AR-ADJ-007 | Auto-approval below threshold | Amount under the auto-approve limit | Adjustment approves automatically, no queue | H | Y |
| AR-ADJ-008 | Adjustment exceeding authority limit | Amount exceeds requester's approval authority | Adjustment rejected or escalated | H | Y |
| AR-ADJ-009 | Missing or inactive reason code | Reason code blank or disabled | Validation error; transaction not created | M | Y |
| AR-ADJ-010 | Write-off small balance under tolerance | Balance within auto write-off tolerance | Write-off created and auto-approved | H | Y |
| AR-ADJ-011 | Write-off with required approval | Balance exceeds auto write-off tolerance | Routed for approval before posting | H | Y |
| AR-ADJ-012 | Write-off reversal | Posted write-off, reversal requested | Original balance restored; reversal posts | M | Y |
| AR-ADJ-013 | Claim creation from short-pay | Receipt applied short against an invoice | Claim created for the short-pay amount | H | Y |
| AR-ADJ-014 | Claim creation from deduction | Customer deduction noted on remittance | Claim created with deduction reason | H | Y |
| AR-ADJ-015 | Claim investigation status | Claim under review by analyst | Status updates to in-investigation | M | Y |
| AR-ADJ-016 | Claim resolution — approved | Investigation confirms a valid deduction | Claim approved; adjustment/write-off generated | H | Y |
| AR-ADJ-017 | Claim resolution — denied | Investigation finds the deduction invalid | Claim denied; balance reinstated to customer | H | Y |
| AR-ADJ-018 | Claim applied to invoice | Approved claim ready to apply | Claim amount applied; invoice balance reduced | H | Y |
| AR-ADJ-019 | Miscellaneous receipt — non-invoice cash | Cash received with no matching invoice | Misc receipt recorded, unapplied to any invoice | H | Y |
| AR-ADJ-020 | Miscellaneous receipt accounting | Misc receipt posted against an activity | Correct GL account per receivables activity | H | Y |
| AR-ADJ-021 | Chargeback creation from claim | Approved claim requires re-invoicing | Chargeback debit item created against customer | H | Y |
| AR-ADJ-022 | Chargeback creation from receipt dispute | Disputed short payment on a receipt | Chargeback created, linked to original receipt | M | Y |
| AR-ADJ-023 | Chargeback applied against original receipt | Chargeback created from a receipt | Original receipt shows linked chargeback | H | Y |
| AR-ADJ-024 | Chargeback reversal | Chargeback later found invalid | Chargeback reversed; balances restored | M | Y |
| AR-ADJ-025 | Adjustment against closed period | Target accounting period closed | Adjustment blocked or routed to next open period | H | Y |
| AR-ADJ-026 | Adjustment in foreign currency | Customer transaction in non-ledger currency | Adjustment converts and posts correctly | M | Y |
| AR-ADJ-027 | Adjustment tax impact | Adjustment affects a taxable invoice | Tax recalculated / adjusted per rules | M | Y |
| AR-ADJ-028 | Adjustment accounting / GL impact | Adjustment posted | Subledger entry balances to adjustment amount | H | Y |
| AR-ADJ-029 | Bulk adjustment processing | Batch of adjustments submitted together | All processed; exceptions reported individually | M | Y |
| AR-ADJ-030 | Adjustment via REST API | Adjustment submitted through an integration | API result matches UI-created adjustment | M | Y |
| AR-ADJ-031 | Adjustment via bulk integration import | Adjustments loaded from an external system | Adjustments created and validated on import | M | Y |
| AR-ADJ-032 | Adjustment audit trail | Adjustment created, approved, posted | Full log of who/when/why is retained | H | Y |
| AR-ADJ-033 | Role-based adjustment authority | User role has a defined authority limit | System enforces max amount by role | H | P |
| AR-ADJ-034 | Adjustment reporting / ageing | Adjustments posted across several periods | Ageing and adjustment reports reflect changes | M | Y |
| AR-ADJ-035 | Duplicate adjustment detection | Same invoice/reason/amount submitted twice | Duplicate flagged or blocked | M | Y |
| AR-ADJ-036 | Adjustment against credit-held customer | Customer account on credit hold | Adjustment allowed per policy; hold status tracked | M | Y |
| AR-ADJ-037 | Quarterly-update regression pack | Post-update tenant | All prior results reproduce | H | Y |
Pri = priority (H/M/L). Auto = automation candidate (Y suitable · P partly, needs role/data setup). Steps summarised; full step detail ships in the downloadable test pack.
Common Adjustment Defects
| Defect | Likely cause | Business impact | Recommended test |
|---|---|---|---|
| Adjustment posts above authority | Approval limit misconfigured or bypassed | SOD failure; unauthorized balance change | AR-ADJ-008, AR-ADJ-033 |
| Wrong account derivation | Reason code mapped to incorrect activity | GL mis-statement; reconciliation break | AR-ADJ-004, AR-ADJ-028 |
| Write-off tolerance drift | Auto-approve threshold changed between environments | Revenue leakage from unreviewed write-offs | AR-ADJ-010, AR-ADJ-011 |
| Claim resolved without accounting entry | Resolution step doesn't trigger the transaction | Balance and claim status disagree | AR-ADJ-016, AR-ADJ-018 |
| Chargeback orphaned from receipt | Linkage field not populated on creation | Lost audit trail; duplicate follow-up | AR-ADJ-022, AR-ADJ-023 |
| Closed-period acceptance | Date validation against period status skipped | Accounting failure; close delay | AR-ADJ-025 |
| Duplicate adjustment posted | No uniqueness check on resubmission | Overstated correction; balance error | AR-ADJ-035 |
| Reversal incomplete | Balance reversed but accounting entry not generated | Balance/GL out of sync | AR-ADJ-012, AR-ADJ-024 |
| Currency conversion error | Wrong or missing rate applied on adjustment | Foreign-currency balance mis-stated | AR-ADJ-026 |
| Approval chain skipped | Multi-tier routing collapses to one step | Control weakened on high-value adjustments | AR-ADJ-006 |
| API/UI divergence | Integration path validates differently than UI | Inconsistent controls across entry points | AR-ADJ-030, AR-ADJ-031 |
| Audit trail gap | Approver or reason not retained on the record | Audit finding; unclear accountability | AR-ADJ-032 |
Accounting Impact by Transaction Type
Each transaction type derives its accounting differently. A test that only checks the customer balance and never inspects the subledger entry will miss a wrong account, a missing entry, or a reversal that only half-completes.
| Transaction type | Subledger entry | Customer balance effect | AR control account impact | Reversal accounting |
|---|---|---|---|---|
| Manual adjustment (increase) | Debit AR / credit reason-code account | Balance increases | Increases control account | Reversing entry decreases both |
| Manual adjustment (decrease) | Debit reason-code account / credit AR | Balance decreases | Decreases control account | Reversing entry increases both |
| Write-off | Debit write-off expense / credit AR | Balance cleared | Decreases control account | Reversal restores balance and control account |
| Claim (approved resolution) | Adjustment or write-off entry per resolution type | Balance reduced by claim amount | Decreases control account | Re-opening claim reverses the resolution entry |
| Miscellaneous receipt | Debit cash / credit activity-derived account | No invoice balance affected | No AR control impact (unapplied cash) | Reversal/unapplication reverses cash entry |
| Chargeback | Debit AR (new item) / credit original receipt line | New open balance created | Increases control account for the new item | Reversal cancels the new debit item |
How SyntraFlow Automates Adjustments Testing
SyntraFlow drives adjustment, write-off, claim, and chargeback creation across the UI and API, then asserts both the resulting customer balance and the accounting entry — not just that the transaction saved.
Automated adjustment/write-off creation
Drives manual adjustments, write-offs, claims resolutions, and chargebacks through the UI or API against your reason codes.
Approval-authority validation
Submits transactions at, below, and above configured authority limits and confirms routing, escalation, and rejection match policy.
Customer-balance comparison
Captures the expected balance before and after each transaction and asserts the actual result matches exactly.
Accounting validation
Checks the subledger entry generated by each transaction type against the expected account and amount, not just the balance.
Negative test data
Provisions the conditions that should be rejected — missing reason codes, closed periods, over-authority amounts, duplicates.
Evidence capture
Retains timestamped screenshots, approval logs, and accounting output as audit-grade evidence for every run.
Regression selection
Runs the adjustment subset a given release or configuration change actually affects, rather than the full pack every time.
A note on capability. Automated transaction creation, balance comparison, accounting validation, and evidence capture are current platform capabilities. Coverage scoped to your specific reason codes, approval hierarchy, and receivables activities is configurable during onboarding. Any tenant-specific extension is confirmed at assessment rather than assumed here.
When to Re-Test Adjustment Transactions
Adjustment processing depends on configuration, reason codes, and approval hierarchy, so any change to these is a regression trigger. Retest when these events occur:
| Change event | Risk to adjustments | Recommended regression scope |
|---|---|---|
| Oracle quarterly update | Adjustment or approval logic changes | Full adjustment pack, release-scoped |
| Approval limit change | Auto-approve and escalation thresholds shift | Authority boundary cases |
| Reason code / activity change | Account derivation changes | Accounting-impact cases per activity |
| Write-off tolerance change | Auto-write-off threshold shifts | Write-off boundary cases |
| Security / role change | Who can adjust, write off, or release changes | Role-based authority cases |
| Chart of accounts / ledger change | Derived accounts change or become invalid | Accounting-impact cases, all transaction types |
| Redwood rollout | Adjustment/claim UI pages change | UI transaction-creation cases |
| Integration / API change | Adjustment API diverges from UI | API and bulk-import cases |
| Production defect fix | Fix may regress adjacent transaction types | Targeted plus smoke adjustment pack |
Adjustments & Oracle Quarterly Releases
Oracle's quarterly updates can change adjustment behavior without any action on your part — through feature opt-ins, Redwood redesigns of the adjustment and claims pages, or altered approval and accounting logic. Because these transactions move customer balances and post to the general ledger, a silent change is exactly the kind that needs catching before it reaches production.
Rather than re-testing every adjustment scenario on every release, SyntraFlow Release Intelligence narrows the work to what actually changed in your tenant:
- 1.Analyses the Oracle release notes for changes touching Receivables adjustments, claims, and receipts.
- 2.Maps those changes to your configuration — reason codes, activities, and approval limits.
- 3.Identifies the transaction types and customer segments affected.
- 4.Recommends the specific adjustment test cases to run.
- 5.Prioritises regression execution by risk.
- 6.Tracks adjustment evidence for audit and sign-off.
See how the impact map is built on the Release Impact Analysis page.
Configurations That Drive Adjustment Processing
An adjustment test is only trustworthy if the configuration behind it is known and stable. Reason codes, receivables activities, and approval limits determine whether a transaction posts correctly and to whom it routes — and when they drift between environments, tests pass against the wrong reality.
SyntraFlow's Configuration Intelligence compares receivables activities, reason codes, and approval hierarchies across environments and flags drift before it corrupts an adjustment test result — so a passing test means the configuration was correct, not just present.
Oracle Adjustments Test Cases
A structured adjustment test pack goes beyond a scenario list — it ties each case to the transaction type, the reason code that drives its accounting, the approval authority required at that amount, and the two outcomes that must both be verified: the customer balance and the accounting entry.
A well-built adjustment test case captures: adjustment type, reason code, amount, approval authority required, expected customer balance, expected accounting, and evidence & status. Structuring cases this way makes it possible to trace a failed test straight to the reason code or authority limit responsible, rather than re-running the whole suite to isolate the cause.
To see the full Oracle Adjustments Test Cases pack and how it maps to your reason codes and approval hierarchy, request an assessment.
Part of Order-to-Cash
This process forms part of the complete Oracle Order-to-Cash (O2C) lifecycle. Adjustments, write-offs, claims, and chargebacks sit downstream of invoicing and receipt application, and upstream of ageing, collections, and revenue reporting. For the full cross-process view — from order capture through cash application — see the Oracle O2C Testing Tool.
Related Oracle Receivables Pages
Adjustment processing connects to the rest of the AR suite. Go deeper on adjacent topics:
Oracle Accounts Receivable (AR) Testing Tool ⭐
The AR testing hub.
Oracle Collections Testing →
Dunning and collections strategy.
AR Credit Memo Testing →
Customer-facing credit documents.
Oracle Receipt Testing →
Receipt capture and application.
Oracle Customer Testing →
Customer master and account setup.
Oracle O2C Testing Tool →
Full order-to-cash lifecycle.
Frequently Asked Questions
What is an adjustment in Oracle Receivables?
▼
An adjustment is a transaction that increases or decreases a customer's balance for a defined reason without editing the original invoice. It requires a reason code, which drives the GL account the adjustment posts to, and may require approval depending on the amount and the requester's authority.
How is this different from Oracle Collections Testing?
▼
Collections testing covers the strategy side — when and why a write-off or adjustment is initiated as part of a dunning or collections workflow, based on ageing and customer risk. This page covers the transaction mechanics — how that decision is executed: creation, reason code, approval, and accounting impact. See Oracle Collections Testing for the strategy side.
How is this different from Oracle AR Credit Memo Testing?
▼
A credit memo is a formal, customer-facing document that reverses or reduces an invoice — it's issued to the customer as evidence of the credit. Adjustments, write-offs, claims, and chargebacks covered here are typically internal balance corrections that don't generate a customer-facing document. See AR Credit Memo Testing for the document-based process.
What is a claim in Oracle Receivables?
▼
A claim captures a customer deduction or short payment that needs investigation before it's resolved. Once investigated, a claim is either approved — generating an adjustment or write-off — or denied, reinstating the balance to the customer. Testing must cover creation, investigation status, and both resolution outcomes.
What is a chargeback and how does it differ from an adjustment?
▼
A chargeback creates a new open debit item when a receipt only partially settles what it was applied against, keeping the shortfall visible and collectible. Unlike a manual adjustment, which changes an existing balance, a chargeback generates a new transaction linked back to the original receipt.
What is a miscellaneous receipt?
▼
A miscellaneous receipt records cash received that doesn't relate to a specific invoice — a refund, interest income, or an unidentified payment. It posts to an account derived from the receivables activity rather than reducing an open invoice balance, so testing must confirm the accounting lands on the correct activity account.
How do approval limits work for adjustments and write-offs?
▼
Approval limits are set by amount and role. Transactions below the auto-approve threshold post immediately; amounts above it route to one or more approval tiers. Testing must cover the exact boundary — an amount at the limit should pass or route as configured, and one unit beyond should trigger the next tier or a rejection.
Why test the accounting entry, not just the balance?
▼
A customer balance can look correct while the underlying GL entry posts to the wrong account or doesn't post at all. Because each transaction type derives its accounting differently, tests must verify the subledger entry — account, amount, and timing — alongside the balance change, not as a substitute for it.
How do you test adjustments through the REST API?
▼
Oracle exposes Receivables adjustment creation through REST APIs and bulk import in addition to the UI. A complete suite tests all entry points and confirms they produce the same balance and accounting outcome, since integrations and mass adjustments commonly rely on the API or import path.
How often should adjustment testing be repeated?
▼
On every Oracle quarterly update, and after any change to reason codes, receivables activities, approval limits, the chart of accounts, or security roles. Because adjustments move balances and post accounting entries directly, testing after these events protects against drift that would otherwise surface only at reconciliation.
What happens if an adjustment is submitted against a closed period?
▼
Oracle validates the transaction date against the accounting period status. A closed-period date should be blocked or routed to the next open period rather than silently accepted — this is one of the highest-value negative tests because a missed check here can stall a period close.
Can adjustments be tested against a credit-held customer?
▼
Yes, and it's a specific test area. An adjustment can be permitted on a credit-held customer per policy, but the hold status and exposure calculation should remain accurate and unaffected in ways that weren't intended — testing confirms the adjustment and the hold interact correctly.
How does SyntraFlow provision test data for adjustments?
▼
The Oracle Data Vault provisions customers, transactions, and balances engineered to produce a specific test outcome — a balance at an authority boundary, a closed-period date, a duplicate submission — so tests exercise the intended condition reliably.
Does adjustment testing help with audit and SOX compliance?
▼
Directly. Adjustments, write-offs, and claim resolutions are balance-moving transactions subject to segregation-of-duties controls. Testing that authority limits are enforced and that every transaction retains an audit trail supports the evidence auditors expect to see for this control area.
Strengthen Your Oracle Receivables Test Coverage
Identify gaps in your adjustment test suite, automate high-risk authority and accounting scenarios, and prepare for Oracle quarterly updates with SyntraFlow. See it run against adjustment cases like yours.