Skip to main content
Dunning and RMA Recovery

How Dunning and RMA Recovery works inside Odoo: menus, scheduled actions and records

Dunning and RMA Recovery adds an app called Recovery to Odoo, with a Dashboard, the Dunning Cases list, the RMA Orders list and a Configuration menu. Behind it, four active scheduled actions run: two every hour (Recovery: Open Dunning Cases and Recovery: Advance Dunning Cases), one daily (Recovery: Retention Cleanup) and one every twelve months (Recovery: Annual Statistics). Below you will find the full timeline and the pieces that make up a dunning case and a return.

FlexigoTech · Editor in charge: Víctor Gómez · Updated 4 November 2026

Key facts

Versions
Odoo 17, 18 and 19
Checked
in the module's source code, version 19.0 · against the sources linked at the end
Reading time
4 min

The menus you get when you install Recovery

The Odoo Apps listing introduces the module under the heading Dunning for overdue invoices and RMA returns: chasing overdue invoices and handling RMA returns. Inside Odoo everything sits under a single app, Recovery, with these entries:

  • Recovery › Dashboard
  • Recovery › Dunning Cases
  • Recovery › RMA Orders
  • Recovery › Configuration

The configuration menu opens into five submenus:

  • Recovery › Configuration › Dunning Policies
  • Recovery › Configuration › RMA Reasons
  • Recovery › Configuration › Recovery Settings
  • Recovery › Configuration › Business Calendars
  • Recovery › Configuration › DSAR Requests
A walk through the Recovery lists: Dunning Cases, Dunning Policies, RMA Orders and back to Dunning Cases
The walk-through moves from the dunning case list to the policies, then the RMA orders, and back to the cases.

The timeline, from purchase to the annual statistics

This is the sequence as you will meet it: first what you do, then the scheduled actions that ship with the module, with their name and frequency.

  1. Before buying The listing has a section titled Before you buy: some features of this app use a paid external service. Read it on the Odoo Apps listing before you decide.
  1. On install The Recovery app appears with Dashboard, Dunning Cases, RMA Orders and Configuration.
  1. While configuring You go through Recovery › Configuration: Dunning Policies, RMA Reasons, Recovery Settings, Business Calendars and DSAR Requests.
  1. Every hour The scheduled action Recovery: Open Dunning Cases runs, set as active.
  1. Every hour The scheduled action Recovery: Advance Dunning Cases runs, also active.
  1. Every day The scheduled action Recovery: Retention Cleanup runs, active.
  1. Every twelve months The scheduled action Recovery: Annual Statistics runs, active.

To check in your own database that all four scheduled actions exist and are active, search for them by their exact name, which always starts with Recovery:.

The pieces that make up a dunning case

Day-to-day dunning work lives in Recovery › Dunning Cases. Each row is a case, and the list shows its name, the invoice, the company, the status, the amount owed, the attempts and the next action.

Dunning Cases list in Recovery with five open cases and columns for invoice, company, status, amount owed, attempts and next action
The dunning case list with five open records.

Under the bonnet, the module splits the pieces into separate models:

  • recovery.dunning.case (Recovery Dunning Case): the case.
  • recovery.dunning.attempt (Recovery Dunning Attempt): the attempts.
  • recovery.dunning.policy (Recovery Dunning Policy): the policy.
  • recovery.dunning.policy.step (Recovery Dunning Policy Step): the steps of a policy.
  • recovery.dunning.manual.action.wizard (Recovery Dunning Manual Action Wizard): a wizard for manual actions.

Policies are managed in Recovery › Configuration › Dunning Policies. The screenshot shows just one, Default guarded dunning policy, for the company My Company (San Francisco) and set as active.

Dunning Policies list with a single policy named Default guarded dunning policy, set as active, with a New button and search bar
The dunning policy list with a single active policy.

The pieces that make up an RMA return

Returns live in Recovery › RMA Orders. The list shows name, RMA number, partner, status and three amounts: returned, recovered and refunded.

RMA Orders list in Recovery with five records and columns for RMA number, partner, status and returned, recovered and refunded amounts
The RMA order list with five records.

The models on this side are:

  • recovery.rma.order (Recovery RMA Order): the return order.
  • recovery.rma.line (Recovery RMA Line): its lines.
  • recovery.rma.disposition.line (Recovery RMA Disposition Line): disposition lines.
  • recovery.rma.disposition.wizard (Recovery RMA Disposition Wizard): a disposition wizard.
  • recovery.rma.reason (Recovery RMA Reason): the reasons, set up in Recovery › Configuration › RMA Reasons.

Calendars, companies, privacy and statistics

Beyond cases and RMAs, the module includes supporting pieces worth knowing about when you roll it out:

  • Calendars. Recovery › Configuration › Business Calendars relies on the models recovery.business.calendar and recovery.business.calendar.day.
  • Multiple companies. The model recovery.company.guard is described as Recovery: company rule checked again after a change of company.
  • Privacy. The Recovery › Configuration › DSAR Requests menu comes with the models recovery.subject.request and recovery.dsar.wizard. The listing also has a Privacy policy section.
  • Technical log. There is a model recovery.public.abuse.event (Recovery Public Abuse Event) and a recovery.observability.mixin (Recovery Observability Mixin).
  • Statistics. There is recovery.statistics.report and the export wizard recovery.statistics.export.wizard, alongside the Recovery: Annual Statistics scheduled action.

If something doesn't add up once you are using it, the literal warning texts are in the Dunning and RMA Recovery error messages.

Versions, price and next step

The module is published on Odoo Apps for 17.0, 18.0 and 19.0, at €9 excluding VAT per Odoo version, as a one-off payment. If you are still unsure whether it fits, see what it covers and what you need before installing it.

At FlexigoTech we implement Odoo and build bespoke connectors and integrations, so we can help you get Recovery set up in your database or link it to the tools you already use. The details are on the module page.

Keep reading

Dunning and RMA Recovery errors in Odoo: when each message appears and what to doEvery Dunning and RMA Recovery error message in Odoo, word for word: when it appears in RMAs, links, policies and permissions, and how to deal with each one.Is Dunning and RMA Recovery right for your business? What it covers and what you needWhat Dunning and RMA Recovery covers for Odoo 17, 18 and 19 according to its documentation, what to have ready before installing it and how to decide.Spain CAE Certificates errors in Odoo: when each message appears and what to doSpain CAE Certificates error messages in Odoo, word for word: consumption, dates, ENAC verifier, audit notes and liquidation, and how to fix each one.
Checked in the module's source code (version 19.0) and the linked sources

Sources

  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): views/recovery_menu.xml
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): data/recovery_crons.xml
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): static/description/index.html
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_calendar.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_company_guard.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_dsar.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_dunning_attempt.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_dunning_case.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_dunning_policy.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_observability.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_public_abuse.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_rma_line.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_rma_order.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): models/recovery_rma_reason.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): wizards/recovery_dsar_wizard.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): wizards/recovery_dunning_manual_action_wizard.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): wizards/recovery_rma_disposition_wizard.py
  • Module source code: flexigo_subscription_dunning_and_rma_recovery_enhancer 19.0 (148cc2ff): wizards/recovery_statistics_export_wizard.py
  • apps.odoo.com/apps/modules/19.0/flexigo_subscription_dunning_and_rma_recovery_enhancer
  • apps.odoo.com/apps/modules/17.0/flexigo_subscription_dunning_and_rma_recovery_enhancer
  • apps.odoo.com/apps/modules/18.0/flexigo_subscription_dunning_and_rma_recovery_enhancer
  • flexigotech.com/en/services.html