| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 811 |
| Technical Name |
sk_uploader |
| License | LGPL-3 |
| Website | https://iamshahid.dev/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 811 |
| Technical Name |
sk_uploader |
| License | LGPL-3 |
| Website | https://iamshahid.dev/ |
| Versions | 18.0 19.0 |
👨💻 Need Custom Odoo Development?
I specialize in advanced Odoo modules, data migration tools, performance optimization, and enterprise-grade custom solutions.
📌 What is Uploader?
Uploader is a comprehensive data import solution designed specifically for Odoo environments. It eliminates the complexity of manual data entry by providing a sophisticated yet intuitive framework for uploading Excel and CSV files with configurable templates, intelligent field mappings, and advanced duplicate-handling strategies.
Save 10x Time
Automate data imports that would take hours manually into minutes
Zero Errors
Validate data before import with smart field detection and type checking
Reusable Templates
Create once, use forever across multiple import operations
✨ Powerful Features
Everything you need for seamless data migration and import operations
Dynamic Field Mapping
Create intelligent mappings between your Excel/CSV columns and Odoo model fields.
Smart Duplicate Handling
Choose from three strategies: Skip (ignore duplicates), Always Create (allow duplicates), or Update Existing (modify current records). Define unique identifier fields to detect duplicates accurately based on your business logic.
Many2one Sub-Templates
Import complex relational data effortlessly. Sub-templates handle related records automatically by searching existing entries or creating new ones. Perfect for importing products with categories, contacts with companies, or any hierarchical data structure.
Batch Processing
Handle large datasets efficiently with configurable batch sizes (10, 50, 100, or custom). Prevents server timeouts, reduces memory usage, and provides progress tracking. Import thousands of records without compromising system performance.
🧩 Core Concepts
Understanding the building blocks of Uploader
Uploader Template
The foundation of your import configuration. Each template is a reusable blueprint that defines how data should be imported into a specific Odoo model.
Template Components:
- Target Model: The Odoo model where records will be created (e.g., Products, Contacts, Sales Orders)
- Company Context: Multi-company support for enterprise environments
- Unique Identifier: Field used to detect existing records (e.g., Internal Reference, Email, Barcode)
- Duplicate Strategy: Defines behavior when matching records are found
- Field Mappings: Column-to-field associations for data transformation
Field Mapping
The bridge between your source data and Odoo fields. Each mapping translates a column from your file into structured database information.
Mapping Features:
- Smart Field Filtering: Only displays fields compatible with the selected model
- Type Validation: Ensures data type compatibility (text, number, date, boolean)
- Required Field Indicators: Visual markers for mandatory fields
- Default Values: Set fallback values for empty cells
- Data Transformation: Apply formatting rules and conversions during import
🚀 Step-by-Step Usage Guide
Learn how to configure templates and prepare your data for import
Step 1: Create a New Template
The first step in using the module is to create a Template. A template defines how Excel or CSV data will be mapped and imported into Odoo records.
Template Form Overview
When creating a new template, the form is divided into two main sections:
- Header fields at the top
- A Notebook with two configuration pages below
Template Header Fields
Name
The name of the template. It should clearly describe the purpose of the import (e.g., Customer Import, Product Update Template).
Company
Specifies the company for which this template is applicable. Useful in multi-company environments.
Odoo Model
Select the Odoo model for which this template is created
(e.g., res.partner, product.template).
This determines which fields are available for mapping.
Duplicate Handling Action
- Always Create: Always create a new record.
- Update Duplicates: Update existing records.
- Skip Duplicates: Skip records if duplicates exist.
Unique Field
Field used to identify existing records (e.g., Email, Internal Reference). This field is used during duplicate detection.
📸 Screenshot: Template form showing header fields
Notebook Configuration
The template form includes a Notebook with two pages:
- Fields Mapping
- Sub Templates
1. Fields Mapping
This tab defines how Excel columns map to Odoo fields. Each row represents a single column-to-field mapping.
- Only basic Odoo fields are supported
- Relational fields are excluded (many2one, one2many, many2many)
📸 Screenshot: Fields Mapping tab with sample mappings
2. Sub Templates
Sub Templates are used to handle relational data during the import process.
- Only many2one fields are supported
- one2many and many2many are not supported
When adding a sub-template, an additional field called Mapped To Field is available. This field links the sub-template to a many2one field of the parent model.
Once selected, the sub-template model is automatically determined, reducing configuration errors and ensuring data consistency.
📸 Screenshot: Sub Template creation with Mapped To Field highlighted
Step 2: Create and Use an Uploader
After configuring and activating the template, the next step is to create an Uploader. The uploader is responsible for processing the Excel file and importing data into Odoo based on the selected template configuration.
Uploader Form Overview
To begin, create a new uploader record. The uploader form contains the following fields:
Uploader Fields
Name
The name of the uploader. It should clearly describe the import operation (e.g., Customer Import – January, Product Update Batch 1).
Template
Select a template. The uploader uses this template to determine field mappings, duplicate handling rules, and sub-template behavior.
Batches
Defines how many records are processed per batch during the import. This helps manage performance and large datasets.
- 10
- 50
- 100
- Custom
Custom Batch
This field becomes available only when Custom is selected in the Batches field. Enter the desired number of records to be processed per batch.
File
Upload the Excel file containing the data to be imported. The column names in the file must exactly match the File Field values defined in the template's field mappings.
📸 Screenshot: Uploader form with all fields filled
Uploading the File
Once all required fields are completed and the file is uploaded, verify the following:
- The batch size is correctly configured
- The uploaded file matches the template structure
Click the Upload File button to start the import process.
What happens next?
After clicking Upload File, the system processes the data according to:
- The selected template
- Duplicate handling rules
- Field mappings and data transformations
🔗 Advanced Many2one Relationships
Handle complex relational data structures with nested sub-templates
Uploader's sub-template system enables sophisticated relational imports without manual record creation. When importing data with Many2one relationships (like Products with Categories, or Contacts with Companies), sub-templates automatically handle the related records.
How Sub-Templates Work:
Define Related Model Template
Create a separate template for the related model (e.g., Product Category template for importing products)
Link via Mapped To Field
Connect the sub-template to a Many2one field in the parent template using the mapped_to
parameter
Automatic Search or Create
The system searches for existing related records based on sub-template unique fields. If not found, creates new records automatically and links them to the parent
💡 Real-World Example:
Importing 1000 products with categories: Instead of manually creating
categories first, define a Product Category sub-template linked to the product's
categ_id
field.
The system will automatically find existing categories or create new
ones during the product import, ensuring data consistency and saving hours of manual work.
⚙️ Intelligent Batch Processing
Optimized for performance, designed for scale
Large file imports can overwhelm servers and cause timeouts. Uploader processes your data in controlled batches to ensure stability, speed, and reliability even with thousands of records.
10
Quick Testing
Ideal for template validation and trial imports
50
Balanced Mode
Recommended for most production imports
100+
High Volume
Best for large datasets with optimized servers
💡 Tip: You can also define a custom batch size based on your server capacity for optimal performance.
Please log in to comment on this module