- Home
- /
- Oracle ERP Testing Tool
- /
- Oracle Accounts Receivable (AR) Testing Tool
- /
- Oracle Collections Testing
Oracle Collections Testing
Collections is the decision engine that sits on top of past-due Receivables balances. It classifies delinquency, assigns a strategy, scores customer risk, queues work items for collectors, executes dunning and contact, and tracks the promises and disputes that determine whether a balance is paid, written off, or escalated. When that engine is mis-configured or breaks silently after an update, collectors chase the wrong accounts, dunning letters go out over an active dispute, or promises to pay are never followed up.
This page is a practical, in-depth guide to testing Oracle Collections — delinquency and ageing, strategy assignment, scoring, work items, dunning, contact history, promises to pay, and disputes. It sits under the Oracle Accounts Receivable (AR) Testing Tool hub and focuses on collections workflow, not on the underlying adjustment transactions or credit-limit mechanics.

What Is Oracle Collections in Oracle Fusion Receivables?
Oracle Collections manages the lifecycle of a past-due customer balance from the moment it becomes delinquent through to resolution. It classifies open items into ageing buckets, evaluates delinquency against configured thresholds, assigns a collections strategy, calculates a risk score, and generates work items that route to individual collectors. From there, the process executes dunning correspondence and manual contact, records promises to pay, manages disputes, and closes out with a payment, a write-off recommendation, or an escalation such as a credit hold or legal referral.
The teams that depend on Collections behaving correctly are collectors working assigned queues, collections supervisors reallocating work and approving exceptions, credit and AR management tracking exposure, and finance teams relying on accurate ageing and write-off recommendations. Its upstream dependency is Receivables balance and ageing data; its downstream dependencies are the adjustment/write-off transaction and customer credit hold processes that a collections decision ultimately triggers.
| Building block | What it is | Key attributes tested |
|---|---|---|
| Delinquency & ageing | Bucketing of open balances by days past due and classification against delinquency thresholds | Bucket boundaries, threshold crossing, recalculation timing |
| Collections strategy | The rule set assigned to a customer or segment that drives task sequence and dunning | Assignment logic, task order, manual override |
| Collections scoring | A calculated risk score used to prioritise collector attention | Score formula inputs, recalculation, queue ranking |
| Work item | The unit of work queued to a collector for a delinquent account | Creation, assignment, reassignment, closure |
| Dunning correspondence | System-generated letters or emails at defined escalation levels | Level sequencing, suppression conditions |
| Contact history | The log of calls, emails, and letters between collector and customer | Logging completeness, outcome codes |
| Promise to pay (PTP) | A customer commitment to pay a specific amount by a specific date | Creation, kept/broken tracking, follow-up trigger |
| Dispute | A customer-raised objection to all or part of a balance | Reason code, resolution outcome, dunning suppression |
Scope note. This page covers collections strategy and workflow — deciding who to collect from, how, and tracking the process to resolution. It does not cover the adjustment and write-off transaction mechanics, which are tested on Oracle Adjustments Testing, and it does not cover credit limits or credit holds, which are tested on Oracle Customer Credit Management Testing. Where collections triggers one of those downstream actions, this page tests the trigger; the referenced pages test the transaction itself.
Why Testing Oracle Collections Matters
Collections drives cash flow directly, and a defect here rarely stays contained — a missed threshold, a suppressed follow-up, or a mis-scored account compounds every day it goes undetected. The risks specific to collections workflow:
| Risk | Example | Potential impact | Testing response |
|---|---|---|---|
| Delinquency mis-classification | Invoice sits in the wrong ageing bucket | Wrong strategy assigned; delayed action | Boundary tests at each bucket threshold |
| Strategy mis-assignment | Customer segment maps to the wrong strategy | Inconsistent treatment; SLA breach | Assignment rule tests by segment/customer |
| Dunning during dispute | Letter sent on an amount under active dispute | Customer friction; reputational risk | Suppression tests for dispute/PTP conditions |
| Broken PTP not followed up | Missed payment doesn't trigger re-escalation | Silent revenue leakage | PTP broken-state trigger tests |
| Score miscalculation | Risk score omits a key input after configuration change | Wrong accounts prioritised | Score calculation and recalculation tests |
| Orphaned work item | Item never reassigned when collector leaves queue | Account falls out of active collection | Reassignment and queue-integrity tests |
| Premature write-off recommendation | Recommendation fires before dispute resolves | Incorrect bad-debt exposure | Dispute-aware write-off recommendation tests |
| Credit hold not triggered | Delinquency threshold reached but hold not raised | Continued exposure on a bad account | Cross-module trigger tests (see Credit Management) |
| Contact history gap | Call outcome not logged against account | Weak audit trail; repeat contact | Contact logging completeness tests |
| Silent behaviour change | Quarterly update alters strategy or scoring logic | Undetected control drift | Release-aware regression on collections |
The Oracle Collections Process Flow
Collections begins the moment an invoice goes overdue and runs through classification, strategy, work, contact, and resolution.
Collections sequence
- Trigger: an invoice crosses its due date and ages into an overdue bucket.
- Classification: the account is evaluated against delinquency thresholds and assigned a collections strategy and score.
- Work & contact: a work item is created and routed to a collector, who executes dunning, calls, and emails, all logged to contact history.
- Decision point: the customer either commits with a promise to pay, raises a dispute, or takes no action — each path changes the next step.
- Resolution: the balance is paid, recommended for write-off (see Adjustments Testing), or escalated, including a possible credit hold (see Credit Management Testing) or legal referral.
- Downstream impact: a closed work item feeds collector productivity and portfolio reporting.
Suggested visual: a swimlane process diagram of the collections sequence with PTP and dispute branches, for the web team to produce.
Testing Scope & Coverage Matrix
The dimensions a complete Oracle Collections test suite must cover, with automation suitability and priority.
| Test area | What must be validated | Example scenario | Automation | Priority |
|---|---|---|---|---|
| Delinquency & ageing | Buckets and thresholds classify correctly | Invoice crosses 60-day threshold | High | High |
| Strategy assignment | Correct strategy by customer/segment, override works | High-risk segment gets accelerated strategy | High | High |
| Collections scoring | Score formula and queue ranking accurate | Score recalculates after payment | High | High |
| Work item management | Creation, assignment, reassignment, closure | Item reassigned on collector change | High | High |
| Dunning management | Level sequencing and suppression rules | Letter suppressed during active dispute | High | High |
| Contact history | Calls, emails, letters logged with outcome | Call outcome recorded and reportable | Medium | Medium |
| Promise to pay | Creation, kept/broken tracking, follow-up | Broken PTP re-triggers dunning | High | High |
| Dispute management | Creation, reason code, resolution, downstream impact | Valid dispute excludes amount from aging | High | High |
| Write-off recommendation | Recommendation logic, handoff to Adjustments | Recommendation blocked while disputed | Medium | Medium |
| Credit escalation trigger | Collections status correctly triggers credit action | Delinquency threshold raises credit hold | High | High |
| Reporting & productivity | Dashboards and collector reports reconcile | Portfolio dashboard matches raw data | High | Medium |
| Role-based access | Collector vs supervisor privileges enforced | Only supervisor approves write-off recommendation | Medium | High |
| Integration / API | Work items and contacts created via API match UI | API-created work item routes correctly | High | Medium |
| Regression / release | Behaviour unchanged after a quarterly update | Re-run pack after update, results match | High | High |
Oracle Collections Test Scenarios
36 representative Oracle Fusion collections scenarios spanning delinquency and ageing, strategy, scoring, work items, dunning and contact, promises to pay, disputes, resolution, reporting, and regression. Test IDs use the AR-COL prefix.
| ID | Scenario | Preconditions | Expected result | Pri | Auto |
|---|---|---|---|---|---|
| AR-COL-001 | Ageing bucket classification on due-date crossing | Open invoice passes its due date | Invoice moves into the correct ageing bucket | H | Y |
| AR-COL-002 | Delinquency threshold crossing | Balance exceeds configured delinquency threshold | Account flagged delinquent | H | Y |
| AR-COL-003 | Collections strategy assignment by segment | Customer profile class configured | Correct strategy auto-assigned | H | Y |
| AR-COL-004 | Strategy task sequencing | Multi-task strategy active on account | Tasks execute in configured order and timing | H | Y |
| AR-COL-005 | Manual strategy override | Account has an auto-assigned strategy | Override applied; change recorded in audit trail | M | Y |
| AR-COL-006 | Collections scoring calculation | Scoring inputs (ageing, history, balance) present | Score computed per configured formula | H | Y |
| AR-COL-007 | Score-based work-queue prioritisation | Multiple customers with differing scores | Highest-risk accounts surfaced first in queue | H | Y |
| AR-COL-008 | Work item creation on delinquency | Customer newly classified delinquent | Work item created and queued | H | Y |
| AR-COL-009 | Work item assignment to collector | Work item unassigned | Assigned per routing rule / collector workload | H | Y |
| AR-COL-010 | Work item reassignment | Collector unavailable or workload rebalanced | Item reassigned; history preserved | M | Y |
| AR-COL-011 | Work item closure on resolution | Underlying issue resolved (paid / PTP / dispute closed) | Work item closed with reason code | M | Y |
| AR-COL-012 | Level 1 dunning letter generation | Invoice crosses level-1 ageing threshold | Level 1 letter generated and logged | H | Y |
| AR-COL-013 | Multi-level dunning escalation sequence | Balance remains open past level-1 grace period | Escalated letter level generated per sequence | H | Y |
| AR-COL-014 | Dunning suppressed during active dispute | Open dispute exists on the invoice | Dunning suppressed for the disputed amount | H | Y |
| AR-COL-015 | Dunning suppressed during active PTP | Active promise to pay covers the balance | Dunning suppressed until PTP due date passes | H | Y |
| AR-COL-016 | Follow-up call logged against work item | Collector performs an outbound call | Call logged with outcome and timestamp | M | P |
| AR-COL-017 | Email contact logged to customer history | Collector sends a collections email | Email recorded in contact history | M | Y |
| AR-COL-018 | Letter correspondence logged | System or manual letter is sent | Letter recorded in contact history | M | Y |
| AR-COL-019 | Contact outcome tracked and reportable | Contact logged with an outcome code | Outcome visible in contact history and reports | M | Y |
| AR-COL-020 | Promise-to-pay creation | Customer commits to a specific amount and date | PTP recorded and linked to the invoice(s) | H | Y |
| AR-COL-021 | Promise-to-pay kept | Payment received by the PTP due date | PTP marked kept; normal strategy/dunning resumes | H | Y |
| AR-COL-022 | Promise-to-pay broken | PTP due date passes with no payment | PTP marked broken; follow-up/escalation triggered | H | Y |
| AR-COL-023 | Dispute creation against invoice/line | Customer disputes a charge | Dispute recorded with amount and status | H | Y |
| AR-COL-024 | Dispute reason code captured | Dispute created without a reason code | Valid reason code required and stored | M | Y |
| AR-COL-025 | Dispute resolution — valid claim | Dispute investigated and claim upheld | Adjustment recommended; dispute closed valid | H | Y |
| AR-COL-026 | Dispute resolution — invalid claim | Dispute investigated and claim rejected | Dispute closed invalid; collections resumes | H | Y |
| AR-COL-027 | Dispute impact on ageing and dunning | Open dispute on part of the balance | Disputed amount excluded from ageing/dunning trigger | H | Y |
| AR-COL-028 | Write-off recommendation from collections | Balance meets write-off recommendation criteria | Recommendation logged for supervisor approval | M | Y |
| AR-COL-029 | Write-off initiated from recommendation | Recommendation approved by supervisor | Adjustment transaction created — verify on Adjustments Testing | M | P |
| AR-COL-030 | Credit-hold trigger from collections status | Customer reaches delinquency/risk threshold | Credit hold triggered — verify on Credit Management Testing | H | Y |
| AR-COL-031 | Collections dashboard reflects portfolio status | Multiple accounts across strategies and statuses | Dashboard totals and buckets reconcile to source data | M | Y |
| AR-COL-032 | Collector productivity report accuracy | Collector activity recorded over a period | Report reflects calls, PTPs, and closures per collector | M | Y |
| AR-COL-033 | Role-based collector access enforced | Collector role vs supervisor role compared | Restricted actions (e.g. write-off approval) blocked for collector | H | P |
| AR-COL-034 | Bankruptcy / legal escalation flag | Customer flagged bankrupt or in legal proceedings | Standard dunning suspended; escalation workflow triggered | H | Y |
| AR-COL-035 | Collections actions via integration / API | External system creates a work item or contact via API | API result matches equivalent UI behaviour | M | Y |
| AR-COL-036 | Quarterly-release regression pack | Post-update tenant | All prior collections 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 Collections Defects
| Defect | Likely cause | Business impact | Recommended test |
|---|---|---|---|
| Wrong ageing bucket | Bucket boundary misconfigured | Wrong strategy/dunning level applied | AR-COL-001, AR-COL-002 |
| Strategy assigned to wrong segment | Assignment rule out of date | Inconsistent collector treatment | AR-COL-003, AR-COL-005 |
| Dunning fires during dispute or PTP | Suppression rule not evaluated at run time | Customer friction; escalated complaints | AR-COL-014, AR-COL-015 |
| Score does not update after payment | Recalculation not triggered by balance change | Account misprioritised in queue | AR-COL-006, AR-COL-007 |
| Work item never reassigned | Manual reassignment process gap | Account falls out of active collection | AR-COL-010 |
| Broken PTP not re-escalated | Follow-up trigger not configured | Delayed collection; revenue leakage | AR-COL-022 |
| Dispute closed without downstream update | Ageing/dunning not re-evaluated post-resolution | Stale exclusion or incorrect dunning resumes | AR-COL-025 to 027 |
| Write-off recommended while disputed | Recommendation logic ignores dispute status | Incorrect bad-debt exposure | AR-COL-028 |
| Credit hold not triggered | Cross-module trigger misconfigured | Continued exposure on high-risk customer | AR-COL-030 |
| Contact history incomplete | Manual contact not logged consistently | Weak audit trail; repeat outreach | AR-COL-016 to 019 |
| Unauthorised write-off approval | Role privileges too broad | Segregation-of-duties weakness | AR-COL-033 |
| API-created work item mis-routes | Integration bypasses assignment rules | Inconsistent controls between channels | AR-COL-035 |
How SyntraFlow Automates Collections Testing
SyntraFlow drives collections scenarios across the UI and API, then asserts the exact strategy, score, work-item, and dunning outcome — not just that the page loaded.
AI test generation
Generates delinquency, strategy, scoring, PTP, and dispute variants from your Receivables configuration.
Self-healing execution
Playwright-based runs that re-anchor when Oracle changes work-item or dunning pages, so assertions keep working.
Oracle Data Vault
Provisions customers and collections data — aged balances, active disputes, open PTPs — that produce the specific scenario each test needs. See Oracle Data Vault.
Regression suite
A maintained AR-COL pack that re-runs after every configuration or quarterly-update change.
Release intelligence
Scopes regression to the collections behaviour a given release actually touches.
Configuration intelligence
Ties tests to the strategy, scoring, and dunning setup that drives them, flagging drift between environments.
UI + API execution
Runs collections scenarios through both entry points and confirms they agree.
Evidence capture
Timestamped screenshots and result logs retained as audit-grade evidence for every run.
Quarterly-update testing
Re-runs the collections pack against each Oracle update to catch silent strategy or scoring drift.
A note on capability. AI-assisted test generation, self-healing execution, Oracle Data Vault, and evidence capture are current platform capabilities. Coverage scoped to your specific strategies, scoring model, and dunning levels is configurable during onboarding. Any tenant-specific extension is confirmed at assessment rather than assumed here.
Oracle Collections Test Pack
A structured pack covering delinquency and strategy scenarios, work-item conditions, promise-to-pay and dispute cases, expected results, and the evidence and sign-off fields needed for audit. It is built to extend directly into the AR-COL suite above rather than replace it.
Request the Test PackWhen to Re-Test Oracle Collections
Collections depends on configuration and master data, so any change to either is a regression trigger. Retest when these events occur:
| Change event | Risk to collections | Recommended regression scope |
|---|---|---|
| Oracle quarterly update | Strategy, scoring, or dunning logic changes | Full AR-COL pack, release-scoped |
| Ageing bucket definition change | Classification boundaries shift | Delinquency and bucket cases |
| Strategy reconfiguration | Assignment or task sequence changes | Strategy assignment and task cases |
| Scoring model / weight change | Risk score and queue ranking shift | Scoring and prioritisation cases |
| Dunning template / level change | Escalation sequence or suppression logic changes | Dunning and suppression cases |
| Work-item routing rule change | Assignment/reassignment behaviour shifts | Work-item lifecycle cases |
| Credit management integration change | Credit-hold trigger from collections shifts | Cross-module escalation cases |
| Security-role change | Collector vs supervisor privileges shift | Role-based access cases |
| Integration / API change | API-created work items or contacts diverge from UI | API and integration cases |
| Production defect fix | Fix may regress adjacent strategy or PTP logic | Targeted + smoke collections pack |
Collections & Oracle Quarterly Releases
Oracle's quarterly updates can change collections behaviour without any action on your part — through feature opt-ins, Redwood redesigns of the collections and work-item pages, altered scoring defaults, or deprecated dunning options. Because collections drives cash flow, a silent change is exactly the kind you must catch before it reaches production.
Rather than re-testing every 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 collections.
- 2.Maps those changes to your configuration — strategies, scoring model, dunning levels.
- 3.Identifies the customer segments and workflows affected.
- 4.Recommends the specific AR-COL test cases to run.
- 5.Prioritises regression execution by risk.
- 6.Tracks collections test evidence for audit and sign-off.
See how the impact map is built on the Release Impact Analysis page.
Configurations That Drive Collections
A collections test is only trustworthy if the configuration behind it is known and stable. These setups determine how an account is classified, scored, and worked — and when they drift between environments, tests pass against the wrong reality.
| Configuration area | Testing impact | Example failure | Recommended validation |
|---|---|---|---|
| Ageing bucket definitions | Set delinquency classification boundaries | Bucket differs between environments | Boundary cases per bucket |
| Collections strategy setup | Drives assignment and task sequencing | Strategy rule missing in test env | Assignment and sequencing cases |
| Scoring formula & weights | Determines risk score and queue order | Weight change not synced across envs | Score calculation cases |
| Dunning templates & levels | Govern letter content, sequence, suppression | Template level out of sync | Dunning generation and suppression cases |
| Work-item routing rules | Determines collector assignment | Routing rule differs by tenant | Assignment/reassignment cases |
| PTP terms & grace period | Sets kept/broken evaluation window | Grace period misaligned with policy | PTP kept/broken cases |
| Dispute reason codes | Drives valid dispute categorisation | Reason code list incomplete | Dispute creation cases |
| Credit management integration | Governs credit-hold trigger from collections | Trigger threshold drifts from policy — see Credit Management Testing | Escalation trigger cases |
| Security roles / collector access | Which roles can approve write-offs or release holds | Release privilege drift | Role-based access cases |
SyntraFlow's Configuration Intelligence compares these setups across environments and flags drift before it corrupts a collections test result — so a passing test means the configuration was correct, not just present.
Oracle Collections Testing Best Practices
Test every ageing and delinquency threshold at, below, and above its limit.
Verify dunning suppression on every active dispute and open PTP, not just the happy path.
Cover both the PTP kept and PTP broken paths, including the re-escalation trigger.
Test work-item reassignment explicitly — orphaned items are a common silent failure.
Assert exact score values and queue order, not just that scoring "ran".
Verify write-off recommendations and credit-hold triggers at the handoff, then confirm the downstream transaction on the relevant sibling page.
Test collector vs supervisor role permissions to protect segregation of duties.
Re-run the collections pack on every quarterly update, scoped by release impact.
Part of Order-to-Cash
Oracle Collections does not operate in isolation — it acts on balances that originate in order capture, invoicing, and receipting, and it hands off to adjustment, credit, and reporting processes downstream. This process forms part of the complete Oracle Order-to-Cash (O2C) lifecycle. For the end-to-end view across order, billing, receivables, and cash application, see the Oracle O2C Testing Tool.
Related Oracle Receivables Pages
Collections connects to the rest of the Receivables suite. Go deeper on adjacent topics:
Oracle AR Testing Tool ⭐
The Receivables testing hub.
Adjustments Testing →
Adjustment and write-off transaction mechanics.
Customer Credit Management Testing →
Credit limits, checks, and holds.
Customer Testing →
Customer master data and profiles.
Receipt Testing →
Cash application and receipting.
Oracle O2C Testing Tool →
The full order-to-cash lifecycle.
Frequently Asked Questions
What does Oracle Collections testing cover?
▼
Oracle Collections testing covers the strategy and workflow that manages a past-due balance — delinquency classification, ageing, strategy assignment, collections scoring, work items, dunning correspondence, contact history, promises to pay, and disputes, through to resolution.
How is this different from Oracle Adjustments Testing?
▼
Collections testing covers the decision layer — classifying delinquency, assigning strategy, and recommending a write-off. Adjustments Testing covers the transaction that follows — the actual adjustment or write-off posted to the customer balance and its accounting impact. A complete suite tests the handoff between the two, not just each one in isolation.
How is this different from Credit Management Testing?
▼
Collections manages accounts that are already past due. Customer Credit Management Testing manages credit limits, credit checks, and holds that control new exposure before or during ordering. Collections can trigger a credit hold as an escalation; that hold's mechanics are tested on the credit management page.
How does delinquency classification work?
▼
Open Receivables balances are aged by days past due into configured buckets, and an account crosses into delinquent status when it meets a configured threshold. Testing must confirm bucket boundaries are exact and that classification recalculates correctly as balances age or are paid.
What should collections strategy testing include?
▼
Automatic strategy assignment by customer or segment, the sequencing and timing of tasks within a strategy, and manual override by a collector or supervisor with the change recorded in an audit trail.
What is collections scoring and how is it tested?
▼
Collections scoring calculates a risk value per customer from inputs such as ageing, payment history, and balance, and that score is used to prioritise the collector work queue. Testing confirms the score formula produces expected values and that the queue re-ranks correctly as scores change.
What is a work item and what should be tested?
▼
A work item is the unit of collections work queued to a collector. Testing should cover creation on delinquency, assignment by routing rule, reassignment when a collector's workload changes, and closure with the correct reason code once the underlying issue resolves.
How is a promise to pay (PTP) tested?
▼
Test PTP creation with the correct amount and date, the kept path where payment arrives on time and dunning resumes normally, and the broken path where the due date passes unpaid and a follow-up or escalation is triggered automatically.
How is dispute management tested in Collections?
▼
Test dispute creation with a valid reason code, resolution as either valid (adjustment recommended) or invalid (collections resumes), and — critically — the dispute's impact on ageing and dunning, since a disputed amount should be excluded from dunning triggers while the dispute is open.
Why does dunning need suppression testing?
▼
A dunning letter sent over an amount already covered by an active promise to pay or an open dispute damages the customer relationship and undermines trust in the collections process. Suppression logic is a control, and it should be tested as rigorously as the dunning trigger itself.
What contact history should be captured and tested?
▼
Calls, emails, and letters should all be logged against the customer with an outcome code and timestamp. Testing should confirm logging is complete across channels and that outcomes are reportable, since gaps in contact history weaken both collector effectiveness and audit trail.
How do you automate Oracle Collections testing?
▼
SyntraFlow provisions customers and collections data in the state each scenario needs — aged balances, active disputes, open PTPs — runs the collections action through the UI and API, then asserts the exact strategy, score, work-item, or dunning outcome. It self-heals when Oracle changes the pages and captures evidence for every run.
How often should collections be regression tested?
▼
On every Oracle quarterly update, and after any change to ageing buckets, strategy configuration, the scoring model, dunning templates, work-item routing, or security roles. Because collections drives cash flow directly, silent drift after these events carries real financial cost.
Which configurations most affect collections results?
▼
Ageing bucket definitions, collections strategy setup, scoring formula and weights, dunning templates and levels, work-item routing rules, PTP terms, dispute reason codes, credit management integration, and collector security roles. Configuration Intelligence compares these across environments so a passing test reflects correct configuration, not a coincidence. See Configuration Intelligence.
What test data does collections testing need?
▼
Each test needs data engineered to produce a specific state — an account at a precise ageing threshold, an active dispute, an open or broken PTP, a specific score profile. The Oracle Data Vault provisions customers and collections data so tests produce the intended scenario reliably instead of relying on hand-built fixtures.
Strengthen Your Oracle Receivables Test Coverage
Identify gaps in your collections test suite, automate high-risk strategy and dunning scenarios, and prepare for Oracle quarterly updates with SyntraFlow. See it run against collections cases like yours.