| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Purchase (purchase) • Invoicing (account) |
| Lines of code | 3179 |
| Technical Name |
rc_supplier_data_import |
| License | OPL-1 |
| Website | https://www.rivecon.de |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Purchase (purchase) • Invoicing (account) |
| Lines of code | 3179 |
| Technical Name |
rc_supplier_data_import |
| License | OPL-1 |
| Website | https://www.rivecon.de |
Automated Supplier Data Update for Odoo
Automatically update product data, prices, stock levels, and supplier information from CSV or Excel files. Connect via FTP, SFTP, HTTP/HTTPS, Amazon S3, or receive files by e-mail. Built for large-scale updates with up to 500,000+ rows.
Why this module?
This module fills that gap: it fetches vendor files automatically, detects changes via hash comparison, updates only modified records, and tracks every change with full rollback capability.
Connectivity & Files
✔ FTP, SFTP, HTTP/HTTPS (Basic Auth, Bearer Token, API Key), Amazon S3
✔ Built-in FTP file browser for easy path selection
✔ E-mail inbox: send CSV/Excel files to a dedicated alias
✔ CSV and Excel (.xlsx) with automatic encoding and delimiter detection
✔ File history with configurable retention
Field Mapping & Transformation
✔ Dynamic mapping: map any CSV column to any Odoo product field
✔ Auto-mapping: automatic column-to-field suggestions based on name patterns (DE + EN)
✔ Product matching by internal reference, barcode, or supplier SKU
✔ Text cleaning: regex, HTML sanitize, trim whitespace, remove special characters
✔ Math operations during processing (+, -, *, /, %)
✔ Value mapping: replace specific values before writing (e.g. "PCS" → "Units")
Data Protection & Quality
✔ Data Protection Shield: per-field update policy and empty-value handling
✔ Pre-filter: process only specific categories from large files
✔ Blacklist: exclude rows by any column value (e.g. skip B-stock items)
✔ Duplicate detection: barcode and internal reference pre-check
✔ Price threshold: warn or skip when prices change by more than X percent
Processing & Performance
✔ Staging area: load and preview data before processing
✔ Background processing: chunked update queue with adaptive chunk sizing
✔ Hash-based change detection: skip unchanged rows for major performance gains
✔ Per-record savepoints: one bad record never breaks the entire update
✔ Retry mechanism: transient errors are automatically retried
Monitoring & Notifications
✔ Chatter notification with statistics table after each update
✔ Separate toggles for error, warning, and success notifications
✔ Configurable e-mail recipients
✔ Missing update alert: daily check if updates stopped or files are outdated
✔ Multilingual: notifications in the recipient's language (DE/EN)
Changelog, Analysis & Rollback
✔ Full changelog: every field change tracked with old and new value
✔ Price & stock analysis: pivot, chart, and list views with filters
✔ Snapshot entries: continuous history even for unchanged values
✔ Configurable retention: auto-delete changelog entries after X days
✔ Rollback wizard: revert all changes after a specific point in time
Automation
✔ Configurable schedules: daily, hourly, or custom intervals
✔ Fully automatic: fetch file, stage, process, notify — zero manual steps
✔ Multi-company with company-specific security rules
Installation
- Install the module from the Odoo App Store
- Ensure that
product,stock,purchase, andmailmodules are installed - Python packages
paramiko,openpyxl,requests, andboto3must be available on the server - Create a new update configuration under Purchase → Auto Update
Requirements
| Requirement | Details |
|---|---|
| Odoo Version | 19.0 (Community or Enterprise) |
| Odoo Modules | product, stock, purchase, mail |
| Python Packages | paramiko (SFTP), openpyxl (Excel), requests (HTTP/HTTPS), boto3 (Amazon S3) |
| Hosting | Compatible with Odoo.sh, on-premise, and Docker deployments |
Getting Started
This guide walks you through setting up and running your first automated vendor data update.
1. Creating Your First Update Configuration
Go to Purchase → Auto Update and click New.
Enter a descriptive name (e.g. "Supplier ABC Daily Price Update" or "Supplier ABC Stock Feed"). Each configuration represents one data source from one supplier.
Select the protocol (FTP, SFTP, HTTP/HTTPS, S3, Local, or E-mail) and enter the connection details. For FTP/SFTP, use the built-in File Browser button to navigate to the correct file path.
paramiko library. Make sure it's installed on your server.
For Odoo.sh, add it to your requirements.txt.
Click Test Connection & Preview to verify the connection works and see a raw preview of your file. The module automatically detects the file encoding and CSV delimiter.
2. Setting Up Field Mapping
Click 1. Stage Data to download and parse the file. This populates the column list and loads a preview of your data into the staging area.
Set the Match Field to tell the module how to find existing products in Odoo:
- Internal Reference (SKU) — matches against
default_code - Barcode — matches against the product barcode field
- Supplier SKU — matches against the vendor's product code in
product.supplierinfo
In the Field Mapping tab, assign each CSV column to its corresponding Odoo field. Use the Auto-Map button to let the module suggest mappings based on column names.
3. Protecting Your Data
Each mapped field has its own Data Protection Shield with two key settings:
- Always update — overwrite the Odoo field with every import
- Only if empty — only write if the Odoo field is currently blank
- Ignore empty values — keep the existing Odoo value (recommended)
- Clear the field — erase the Odoo value when the file cell is empty
4. Filtering & Blacklisting
If your vendor file contains 50,000 products but you only carry 5,000: Select a filter column (e.g. "Category") and add the values you want to process. All other rows are skipped before staging.
Exclude rows where a specific column contains certain values. Example: skip all rows where the "Condition" column says "B-Stock" or "Refurbished".
In the field mapping detail view, add Ignore Values to skip updating a specific field for certain filter values.
5. Processing Your Update
Click the Pending/Errors smart button to review all staged records.
- 2. Process Staged Data — processes immediately in the browser (up to ~2,500 rows)
- 3. Process All in Background — chunked background processing via cron (recommended for large files)
6. Hash-Based Change Detection
Enable Skip Unchanged in the Automation tab for a major performance boost. Each record gets a hash of its field values. On subsequent updates, records with matching hashes are skipped — only changed data is processed.
7. Notifications
After each update, a summary is posted with record counts, field change breakdown, and tagged recipients. Toggle notifications separately for errors, warnings, and successful updates.
Set Alert if No Update for (Days) to receive a warning when updates stop running.
8. Changelog & Rollback
Click the Changes smart button. Filter by Supplier Prices, Sales Prices, or Stock. Switch between list, pivot, and chart views.
Go to Changelog Settings and click Rollback. Select a point in time and choose which fields to revert. A preview shows affected products before you confirm.
9. Scheduling
In the Automation tab, enable the schedule and set the interval. Once active:
- The scheduled cron fetches the file from the configured source
- Data is staged and an import job is created
- The background queue cron processes data in chunks
- A notification is posted when complete
10. Troubleshooting
| Problem | Solution |
|---|---|
| Products not found during update | Check the Match Field setting. Values must exactly match Internal Reference, Barcode, or Supplier SKU in Odoo. Only existing products can be updated. |
| Prices not updating | Check Data Protection Shield: "Only if empty" skips fields that already have a value. Also check price threshold settings. |
| Processing seems stuck | The queue cron runs every 15 minutes. Large updates take multiple cycles. Locks expire after 15 minutes automatically. |
| Encoding issues | Auto-detection handles most cases. If it fails, save your file as UTF-8 before uploading. |
| Errors for specific records | Click Pending/Errors and filter for "Error". Each record shows the exact error message. Fix the source data and re-stage. |
Version History
| Version | What's New |
|---|---|
| 19.0.6 |
• New update job queue with adaptive chunk sizing (replaces temporary cron jobs) • Price & stock analysis: supplier price, sales price, and stock as separate values • Snapshot entries for gap-free history charts • Multilingual chatter notifications (German/English) • Retry mechanism for transient errors (deadlocks, connection issues) |
| 19.0.5 |
• Value mapping: transform values before writing to Odoo • Math operations with column references • Rollback preview: see affected products and fields before confirming • Enhanced duplicate detection with secondary verification |
| 19.0.4 |
• Amazon S3 as a new data source • E-mail inbox: receive files via a dedicated e-mail alias • Hash-based change detection for dramatically faster recurring updates • Background processing for large files without browser timeout |
| 19.0.3 |
• Data Protection Shield: per-field update and empty-value policies • Pre-filter and blacklist functions • Changelog with configurable retention period • Missing update alerts |
| 19.0.2 |
• Auto-mapping: automatic field mapping based on column names • FTP file browser with preview • Excel support (.xlsx) alongside CSV • Text cleaning: regex, HTML sanitize, special character removal |
| 19.0.1 |
• Initial release • CSV update via FTP/SFTP/HTTP with dynamic field mapping • Staging area with data preview • Full changelog with rollback capability |
Author
rivecon GmbH
Website: www.rivecon.de
About Us
With deep technical expertise and a pragmatic approach, we help companies analyze, implement, and customize their Odoo systems.
Contact
WhatsApp: wa.me/4940696389900
Web: www.rivecon.de/kontakt
Phone: +49 40 5730758-0
Address: rivecon GmbH, Am Strandkai 4, 20457 Hamburg, Germany
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module