Paying $2,800 Extra Annually? Clean Odoo Database with Data Cleaning Module
By Braincuber Team
Published on December 20, 2025
Your Odoo database has 47,000 CRM leads. 23,000 are from 2019-2021, never contacted again, marked "Lost." They clutter every search, slow down reports, make it impossible to find active opportunities. Your sales team complains: "Takes 3 minutes to load lead list. Can't tell which are real."
Database bloat costs real money. Odoo Enterprise pricing tier based on users + data volume. You're on $8,400/year plan. If you cleaned out dead leads, invoices from closed customers, archived projects—you'd drop to $5,600/year tier. That's $2,800/year wasted storing garbage.
Plus performance: Reports take 8 seconds to generate (should be 2 seconds). Searches timeout. Your IT guy says "Need bigger server" = $400/month hosting upgrade. Reality: You just need to delete 23,000 dead records.
Odoo 18 Data Cleaning module automates this. Set rules: "Delete leads older than 6 months if status = Lost." System runs nightly, cleans automatically. Database stays lean, reports stay fast, no more manual cleanup. Here's how to set it up so you stop paying $2,800/year to store trash.
You're Wasting Money If:
What Odoo 18 Data Cleaning Module Does
Automated record cleanup tool. Define rules (e.g., "Delete lost leads older than 180 days"), system scans database nightly, archives or deletes matching records. Keeps database lean without manual work.
| Task | Manual Cleanup | Automated Cleaning |
|---|---|---|
| Find old records | Search, filter manually (30 min) | Rule-based, automatic |
| Delete records | Select all, delete (15 min) | Scheduled nightly |
| Frequency | Quarterly (when forced) | Daily, automated |
| Annual time cost | 4 hours @ $280 | 0 hours |
Prerequisites
- Odoo 18 Enterprise (Data Cleaning in both Community and Enterprise, but Enterprise has more features)
- Admin access to configure rules
- Database backup before first run (safety precaution)
Step 1: Install Data Cleaning Module
- Go to Apps
- Search: "Data Cleaning"
- Click Install
- Module appears in main menu
Step 2: Access Recycle Records
- Go to Data Cleaning → Recycle Records
- See dashboard (empty initially)
- This is where flagged records appear
Step 3: Create Recycle Rule
Define automated cleanup rules.
Create New Rule
- Go to Data Cleaning → Configuration → Recycle Records
- Click New
Rule Configuration Fields
Key Settings:
- Model: Which database table to clean (Leads, Sales Orders, Contacts, etc.)
- Filter: Conditions to narrow down records (e.g., Stage = Lost, Active = False)
- Time Field: Date field to check (Created On, Last Updated, Order Date)
- Delta: Number representing age threshold (e.g., 180)
- Delta Unit: Time unit (Days, Weeks, Months, Years)
- Recycle Mode:
- Manual: Requires approval before deletion
- Automatic: Deletes without confirmation (use carefully)
- Recycle Action:
- Archive: Hide records (recoverable)
- Delete: Permanently remove (not recoverable)
- Include Archived: Also target already-archived records
Example 1: Clean Old Lost Leads
Problem
23,000 leads from 2019-2021, status = "Lost," never contacted again. Cluttering database.
Solution: Create Rule
Rule Name: Clean Old Lost Leads
Model: Lead/Opportunity
Filter: Active = False AND Stage = Lost
Time Field: Created on (Lead/Opportunity)
Delta: 180
Delta Unit: Days
Recycle Mode: Manual (review first time)
Recycle Action: Delete
Include Archived: Yes
Translation: "Delete lost leads that were created more than 180 days ago."
Save and Run
- Click Save
- Click Run Now (or wait for nightly scheduled action)
- System scans database, finds matching records
- Click Records smart button to see flagged leads (23,000 found)
Review and Validate
- Review list of flagged records
- Spot check: Are these really dead leads? (Yes)
- Select all
- Click Validate
- Records deleted
Result: 23,000 records deleted. Database size reduced by 34%. Report load time: 8 seconds → 2.3 seconds.
Example 2: Archive Old Sales Orders
Problem
Sales orders from 3+ years ago still showing in searches. Don't want to delete (need history) but want them hidden.
Solution: Archive Instead of Delete
Rule Name: Archive Old Sales Orders
Model: Sales Order
Filter: State = Sale OR State = Done
Time Field: Order Date
Delta: 3
Delta Unit: Years
Recycle Mode: Automatic
Recycle Action: Archive
Include Archived: No
Translation: "Archive sales orders older than 3 years. Don't delete, just hide from active views."
Example 3: Delete Spam Contacts
Problem
8,400 contacts with no email, no phone, never used in any transaction. Created during data import gone wrong.
Solution: Aggressive Cleanup
Rule Name: Delete Empty Contacts
Model: Contact
Filter: Email is not set AND Phone is not set
Time Field: Created on
Delta: 30
Delta Unit: Days
Recycle Mode: Manual
Recycle Action: Delete
Include Archived: Yes
Translation: "Delete contacts with no email AND no phone that are older than 30 days."
Manual vs Automatic Mode
| Mode | When to Use | Approval Required |
|---|---|---|
| Manual | First time running rule, or deleting critical data | Yes (click Validate) |
| Automatic | After you trust the rule, ongoing maintenance | No (runs nightly, deletes automatically) |
Best Practice: Always start with Manual mode. Run once, review results. If correct, switch to Automatic for ongoing cleanup.
Scheduled Actions (How It Runs)
Odoo runs data cleaning rules via scheduled action every night at 2 AM (server time).
View Schedule
- Go to Settings → Technical → Automation → Scheduled Actions
- Search: "Data Cleaning"
- See scheduled action: "Data Cleaning: Recycle Records"
- Runs daily, processes all active rules
Manual Trigger
Don't want to wait for nightly run? Click Run Now button on any rule to process immediately.
Real-World Impact Example
Scenario: SaaS Company with 5 Years of Data
Before Data Cleaning:
- Database size: 47GB
- Records: 180,000 leads, 23,000 old/lost
- Odoo Enterprise tier: $8,400/year (based on data volume)
- Report generation: 8 seconds average
- Search performance: 4-5 seconds
- Manual cleanup: 4 hours quarterly @ $70/hour = $1,120/year
- Annual cost: $9,520 (subscription + labor)
After Implementing Data Cleaning:
- Database size: 31GB (34% reduction)
- Records: 157,000 leads (deleted 23,000 dead leads)
- Odoo Enterprise tier: $5,600/year (dropped a tier)
- Report generation: 2.3 seconds
- Search performance: 1.2 seconds
- Manual cleanup: 0 hours (automated)
- Annual cost: $5,600
Savings: $3,920/year
Plus 70% faster reports, 4 hours recovered quarterly = 16 hours/year
Common Mistakes That Cause Problems
1. Using Automatic Mode Too Early
Rule set to "Automatic" on first run. Deletes 2,000 records overnight. 400 were wrong (not actually lost).
Fix: Always start Manual. Review first batch. Switch to Automatic only after confirming rule is correct.
2. No Backup Before Mass Delete
Deleted 23,000 leads. Realized rule was wrong. No backup. Data lost forever.
Fix: Database backup before first data cleaning run. Test restore process.
3. Deleting Instead of Archiving
Deleted old sales orders. Customer called 6 months later asking for invoice copy. Can't recover.
Fix: Archive old transactional data (orders, invoices). Only delete true garbage (spam leads, test data).
4. Too Aggressive Time Threshold
Rule: "Delete leads older than 30 days." But your sales cycle is 45 days. Deleted active leads.
Fix: Time threshold should be 3-4× your average sales cycle. If cycle is 45 days, use 180-day threshold.
Best Practices
- Start conservative: Longer time thresholds (180-365 days) first run
- Always Manual first: Review results before switching to Automatic
- Backup before: Full database backup before first mass cleanup
- Archive > Delete: For transactional data (orders, invoices, projects)
- Delete only garbage: Spam contacts, test data, duplicate records
- Document rules: Why each rule exists, what it targets
- Monitor results: Check "Records" smart button weekly after automation
- Combine filters: Use AND conditions (status=Lost AND age>180 days)
Quick Implementation Checklist
- Install Data Cleaning module
- Backup database (critical step)
- Identify cleanup targets: Old leads, archived orders, spam contacts
- Create first rule (Manual mode, Archive action)
- Run Now and review flagged records
- Validate cleanup if results look correct
- Monitor for 1 week to ensure no issues
- Switch to Automatic if confident
- Create additional rules for other models
- Check results monthly via smart buttons
Testing Tip: Create test rule on non-critical model first (like "Activities" or "Messages"). Confirm automation works correctly before targeting Leads or Orders.
Paying $2,800/Year Extra Because Database Full of Garbage?
We configure Odoo data cleaning rules to automatically archive old records, delete spam data, optimize database size. Drop pricing tiers, speed up reports 70%, eliminate manual cleanup.
