CLI Usage¶
fluvo¶
Fluvo: A tool for importing, exporting, and processing data.
Usage
fluvo [OPTIONS] COMMAND [ARGS]...
Options
- --version¶
Show the version and exit.
- -v, --verbose¶
Enable verbose, debug-level logging.
- --log-file <log_file>¶
Path to a file to write logs to, in addition to the console.
- --flow-file <flow_file>¶
Path to the YAML flow file. Defaults to ‘flows.yml’ in current directory.
- --run <flow_name>¶
Name of a specific flow to run from the flow file.
export¶
Runs the data export process.
Usage
fluvo export [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- --protocol <protocol>¶
RPC protocol to use. Options: xmlrpc (default for Odoo 8-9), jsonrpc (recommended for Odoo 10-18, ~30%% faster), json2 (Odoo 19+, requires API key). If not specified, uses protocol from config file or defaults to xmlrpc.
- Options:
xmlrpc | xmlrpcs | jsonrpc | jsonrpcs | json2 | json2s
- --output <output>¶
Required Output file path.
- --model <model>¶
Required Odoo model to export from.
- --fields <fields>¶
Required Comma-separated list of fields to export. Special specifiers are available for IDs: ‘.id’ for raw database ID; ‘field/.id’ for related raw ID; ‘id’ for XML ID; ‘field/id’ for related XML ID. The tool automatically uses the best export method based on the fields requested.
- --domain <domain>¶
Odoo domain filter as a list string.
- --worker <worker>¶
Number of simultaneous connections.
- --size <batch_size>¶
Number of records to process per batch.
- --streaming¶
Enable streaming to write data batch-by-batch. Use for very large datasets.
- --resume-session <resume_session>¶
Resume a previously failed export session using its ID.
- -s, --sep <separator>¶
CSV separator character.
- --context <context>¶
Odoo context as a dictionary string.
- --encoding <encoding>¶
Encoding of the data file.
- --technical-names¶
Force the use of the high-performance raw export mode. This is often enabled automatically if you request raw IDs or technical field types like ‘selection’ or ‘binary’.
- --all-companies¶
Automatically set allowed_company_ids to all companies the user has access to. This enables exporting records across multiple companies.
- --sudo¶
Temporarily disable record rules for the model during export. Requires admin rights. Use with –all-companies to export all records across companies regardless of restrictive record rules.
- --sanitize-newlines <sanitize_newlines>¶
Replace embedded newlines in text fields with this string. Default: None (no sanitization). Recommended: “ | “ to prevent CSV corruption from embedded newlines in text/char/html fields.
import¶
Runs the data import process.
Usage
fluvo import [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- --protocol <protocol>¶
RPC protocol to use. Options: xmlrpc (default for Odoo 8-9), jsonrpc (recommended for Odoo 10-18, ~30%% faster), json2 (Odoo 19+, requires API key). If not specified, uses protocol from config file or defaults to xmlrpc.
- Options:
xmlrpc | xmlrpcs | jsonrpc | jsonrpcs | json2 | json2s
- --file <filename>¶
Required File to import.
- --model <model>¶
Odoo model to import into. If not provided, it’s inferred from the filename.
- --deferred-fields <deferred_fields>¶
Comma-separated list of fields to defer to a second pass (enables two-pass import).
- --auto-defer¶
Automatically defer all non-required many2one fields. Enables progressive import where records are created first, then relational fields are populated in Pass 2.
- --unique-id-field <unique_id_field>¶
The column that uniquely identifies records (e.g., ‘xml_id’). Required for deferred imports.
- --no-preflight-checks¶
Skip all pre-flight checks before starting the import.
- --check-refs <check_refs>¶
Action for pre-import reference check: fail (abort if missing), warn (continue with warning), skip (no check). Default: warn.
- Options:
fail | warn | skip
- --worker <worker>¶
Number of simultaneous connections.
- --size <batch_size>¶
Number of lines to import per connection.
- --delay <batch_delay>¶
Delay in seconds between batches to reduce server load. Use 0.5-2.0 for busy servers. Default: 0 (no delay).
- --max-batch-bytes <max_batch_bytes>¶
Maximum estimated payload size per batch in bytes. When a batch exceeds this size, it is split regardless of record count. Useful for imports with large binary fields like images. Default: 5242880 (5MB). Set to 0 to disable size-based batching.
- --skip <skip>¶
Number of initial lines to skip.
- --fail¶
Run in fail mode, retrying records from the _fail.csv file.
- --headless¶
Run in headless mode, auto-confirming any prompts (e.g., installing languages).
- -s, --sep <separator>¶
CSV separator character.
- --groupby <groupby>¶
Comma-separated list of columns to group data by to prevent deadlocks.Records with empty values for the first column are processed first, then grouped by that column. This process repeats for subsequent columns.
- --ignore <ignore>¶
Comma-separated list of columns to ignore.
- --context <context>¶
Odoo context as a JSON string e.g., ‘{“key”: true}’.
- --company-id <company_id>¶
Company ID or external ID for multicompany imports. Accepts database ID (e.g., ‘1’) or XML ID (e.g., ‘base.main_company’). Sets allowed_company_ids context to enable cross-company field references.
- --all-companies¶
Automatically set allowed_company_ids to all companies the user has access to. This mimics the behavior of the Odoo web interface and enables importing records that reference data across multiple companies.
- --o2m¶
Special handling for one-to-many imports.
- --on-missing-ref <on_missing_ref>¶
Action for missing references: field:action pairs. Actions: create (auto-create), skip (skip row), empty (set to False). Example: ‘country_id:create,user_id:skip,category_id:empty’
- --auto-create-refs¶
Automatically create missing related records for all many2one fields. Uses Odoo’s name_create to create records with just the name.
- --set-empty-on-missing¶
Set relational fields to empty (False) when reference not found, instead of failing the row. Useful for capturing incomplete data.
- --fallback-values <fallback_values>¶
Default values for invalid selection/boolean fields: field:value pairs. Example: ‘state:draft,active:true’
- --tracking-disable, --tracking-enable¶
Disable/enable mail tracking during import. Disabled by default.
- --auto-clean¶
Apply safe, type-aware coercions before load (strip whitespace, normalize null tokens, canonicalize booleans). Off by default.
- --defer-parent-store¶
Defer parent_left/parent_right computation for hierarchical models. Improves performance for large imports of nested structures.
- --encoding <encoding>¶
Encoding of the data file.
- --stream¶
Stream CSV data without loading entire file into memory. Ideal for very large files. Not compatible with –o2m, –groupby, –defer, or –fail options.
- --resume, --no-resume¶
Resume from checkpoint if available. Enabled by default. When enabled, imports can be resumed after crashes or interruptions.
- --no-checkpoint¶
Disable checkpoint saving during import. Use for small imports where checkpointing overhead is not needed.
- --dry-run¶
Validate data without importing. Checks required fields, selection values, and reference existence.
- --skip-unchanged¶
Skip records that already exist with identical values. Makes imports idempotent by comparing field values before importing.
- --skip-existing¶
Skip records whose external ID already exists in Odoo. Makes imports safely re-runnable without update errors. Ideal for stock.quant and other models with update restrictions.
- --adaptive-throttle, --no-adaptive-throttle¶
Health-aware throttling that automatically adjusts batch sizes and delays based on server response times. Enabled by default to prevent server overload. Use –no-adaptive-throttle to disable for maximum speed.
- --sudo¶
Temporarily disable record rules for the model during import. Requires admin rights. Use with –all-companies to import all records across companies regardless of restrictive record rules.
- --post-action <post_action>¶
Method to call on imported records after successful import. Example: ‘action_apply_inventory’ for stock.quant to apply stock adjustments. The method is called with all successfully imported record IDs.
- --move-date <move_date>¶
Set the date on stock moves created by inventory adjustment. Use with –post-action action_apply_inventory for opening inventory imports. Format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS. Example: –move-date 2026-01-01
migrate¶
Performs a direct server-to-server data migration.
Usage
fluvo migrate [OPTIONS]
Options
- --config-export <config_export>¶
Required Path to the source Odoo connection config.
- --config-import <config_import>¶
Required Path to the destination Odoo connection config.
- --model <model>¶
Required The Odoo model to migrate.
- --domain <domain>¶
Domain filter to select records for export.
- --fields <fields>¶
Required Comma-separated list of fields to migrate.
- --mapping <mapping>¶
A dictionary string defining the transformation mapping.
- --export-worker <export_worker>¶
Number of workers for the export phase.
- --export-batch-size <export_batch_size>¶
Batch size for the export phase.
- --import-worker <import_worker>¶
Number of workers for the import phase.
- --import-batch-size <import_batch_size>¶
Batch size for the import phase.
module¶
Commands for managing Odoo modules.
Usage
fluvo module [OPTIONS] COMMAND [ARGS]...
install¶
Installs or upgrades a list of Odoo modules.
Usage
fluvo module install [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- -m, --modules <modules_str>¶
Required A comma-separated list of module names to install or upgrade.
install-languages¶
Installs one or more languages in the Odoo database.
Usage
fluvo module install-languages [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- -l, --languages <languages_str>¶
Required A comma-separated list of language codes to install (e.g., ‘nl_BE,fr_FR’).
uninstall¶
Uninstalls a list of Odoo modules.
Usage
fluvo module uninstall [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- -m, --modules <modules_str>¶
Required A comma-separated list of module names to uninstall.
update-list¶
Scans the addons path and updates the list of available modules.
Usage
fluvo module update-list [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
path-to-image¶
Converts columns with local file paths into base64 strings.
Usage
fluvo path-to-image [OPTIONS] FILE
Options
- -f, --fields <fields>¶
Required Comma-separated list of fields to export. Special specifiers are available for IDs: ‘.id’ for the raw database ID of the record. ‘field/.id’ for the raw database ID of a related record. ‘id’ for the XML/External ID of the record. ‘field/id’ for the XML/External ID of a related record. Using ‘.id’ or ‘/.id’ will automatically enable a faster, raw export mode.
- --path <path>¶
Image path prefix. Defaults to the current working directory.
- --out <out>¶
Name of the resulting output file.
Arguments
- FILE¶
Required argument
url-to-image¶
Downloads content from URLs in columns and converts to base64.
Usage
fluvo url-to-image [OPTIONS] FILE
Options
- -f, --fields <fields>¶
Required Comma-separated list of fields with URLs to convert to base64.
- --out <out>¶
Name of the resulting output file.
Arguments
- FILE¶
Required argument
vat¶
Commands for managing VAT/VIES validation settings.
Usage
fluvo vat [OPTIONS] COMMAND [ARGS]...
disable¶
Disable VAT validation (VIES and/or stdnum) for companies.
Usage
fluvo vat disable [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- --company-ids <company_ids>¶
Comma-separated list of company IDs. If not specified, disables for all.
- --vies, --no-vies¶
Disable VIES online check. Default: True.
- --stdnum, --no-stdnum¶
Disable stdnum format validation. Default: True.
- --save-settings¶
Save current settings for later restoration. Default: True.
- --output <output>¶
Save settings to a JSON file for later restoration.
get-settings¶
Get current VAT validation settings for all companies.
Usage
fluvo vat get-settings [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- --company-ids <company_ids>¶
Comma-separated list of company IDs to check. If not specified, checks all.
- --include-stdnum, --no-stdnum¶
Include stdnum validation settings. Default: True.
restore¶
Restore VAT validation settings to their original state.
Usage
fluvo vat restore [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- --input <input_file>¶
Restore settings from a JSON file saved by ‘vat disable –output’.
validate¶
Validate VAT numbers against VIES in batches with optional notifications.
Usage
fluvo vat validate [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- --batch-size <batch_size>¶
Number of records to validate per batch. Default: 50.
- --delay <delay>¶
Delay between batches in seconds. Default: 1.0.
- --notify-users <notify_users>¶
Comma-separated list of user IDs to notify on failures.
- --domain <domain>¶
Odoo domain filter as a list string. Example: “[(‘is_company’, ‘=’, True)]”
- --max-records <max_records>¶
Maximum number of records to validate.
workflow¶
Run legacy or complex post-import processing workflows.
Usage
fluvo workflow [OPTIONS] COMMAND [ARGS]...
invoice-v9¶
Runs the legacy Odoo v9 invoice processing workflow.
Usage
fluvo workflow invoice-v9 [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- --action <actions>¶
Workflow action to run. Can be specified multiple times. Defaults to ‘all’.
- Options:
tax | validate | pay | proforma | rename | all
- --field <field>¶
Required The source field containing the legacy invoice status.
- --status-map <status_map_str>¶
Required Dictionary string mapping Odoo states to legacy states. e.g., “{‘open’: [‘OP’]}”
- --paid-date-field <paid_date_field>¶
Required The source field containing the payment date.
- --payment-journal <payment_journal>¶
Required The database ID of the payment journal.
- --max-connection <max_connection>¶
Number of parallel threads.
write¶
Runs the batch update (write) process.
Usage
fluvo write [OPTIONS]
Options
- --connection-file <connection_file>¶
Required Path to the Odoo connection file.
- --file <filename>¶
Required File with records to update.
- --model <model>¶
Required Odoo model to write to.
- --worker <worker>¶
Number of simultaneous connections.
- --size <batch_size>¶
Number of records to process per batch.
- --fail¶
Run in fail mode, retrying records from the _write_fail.csv file.
- -s, --sep <separator>¶
CSV separator character.
- --context <context>¶
Odoo context as a dictionary string.
- --encoding <encoding>¶
Encoding of the data file.