ERP migration

Migrate from Flectra to Dolibarr ERP

Field-level mapping, validation, and rollback between Flectra and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.

Flectra logo

Flectra

Source

Dolibarr ERP

Destination

Dolibarr ERP logo

Compatibility

80%

12 of 15

objects map 1:1 between Flectra and Dolibarr ERP.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Flectra to Dolibarr is a schema-reconciliation migration that spans two different open-source traditions: the Odoo ORM lineage (Flectra) and the Dolibarr REST tradition. Flectra exposes all business objects through XML-RPC execute_kw calls with a unified res.partner model for contacts and companies; Dolibarr uses a separate llx_societe (third-party/company) and llx_socpeople (contact) structure accessible via REST. We build an XML-RPC extraction adapter to read Flectra data, reconcile the partner split during transformation, and load into Dolibarr's REST API with rate-limit handling. We preserve fiscal positions, multi-currency rates, analytic tags, and historical timestamps. Workflows, automations, and PDF template configurations do not migrate; we deliver a written inventory of these for the customer to rebuild in Dolibarr.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Flectra logo

Flectra

What's pushing teams away

  • Community edition provides no security patches, version upgrades, or functional support, leaving self-hosted instances exposed to unpatched vulnerabilities over time.
  • The XML-RPC API lacks the documentation depth and tooling ecosystem of REST-based ERPs, making integrations and migrations harder to automate.
  • Small vendor ecosystem compared to established ERPs means limited third-party consultants, integrators, and certified implementation partners are available.
  • Performance degrades on large transaction volumes (100k+ records) without the infrastructure optimization that commercial ERPs provide out of the box.
  • Version upgrade process for on-premise installations is manual and error-prone, often requiring developer involvement to resolve module incompatibilities.

Choosing

Dolibarr ERP logo

Dolibarr ERP

What's pulling them in

  • Free open-source core with no per-user license fee makes it the lowest-cost entry point for small teams needing ERP and CRM in one package.
  • Self-hosted deployment gives full data ownership and eliminates vendor lock-in, especially attractive to businesses with compliance requirements.
  • Modular architecture means teams enable only the features they use, keeping the interface uncluttered and reducing learning curve.
  • Fast installation with no technical knowledge required — one reviewer set up multiple businesses in minutes using their own hosting.
  • Active community forum and marketplace of third-party add-ons provide support and extension options without mandatory subscription costs.

Object mapping

How Flectra objects map to Dolibarr ERP

Each row shows how a Flectra object lands in Dolibarr ERP, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Flectra

res.partner (company subtype)

maps to

Dolibarr ERP

llx_societe

1:1
Fully supported

Flectra res.partner records with is_company=True map to Dolibarr llx_societe (third-party/company). We extract name, email, phone, website, vat, and address fields (street, street2, zip, town, fk_state, fk_country) and write them to the llx_societe table. The supplier and customer flags (supplier, client) map from Flectra's supplier and customer boolean fields. Parent-company relationships in Flectra (parent_id pointing to another is_company partner) map to Dolibarr's fk_societe_parent field.

Flectra

res.partner (contact subtype)

maps to

Dolibarr ERP

llx_socpeople

1:many
Fully supported

Flectra res.partner records with is_company=False are individual contacts and map to Dolibarr llx_socpeople entries. Each contact is linked to its parent company (llx_societe) via fk_soc. We extract firstname, lastname, email, phone, mobile, function (job title), and address fields. Flectra's child_ids relation (multiple contacts under one company) becomes individual llx_socpeople rows in Dolibarr, each pointing to the same llx_societe.

Flectra

sale.order

maps to

Dolibarr ERP

llx_commande

1:1
Fully supported

Flectra sale.order maps to Dolibarr llx_commande (customer order). We transfer ref (order reference), date_creation (order date), date_valid (validation date), fk_soc (customer link), fk_user_author (salesperson), and the total amounts (total_ht, total_tva, total_ttc). Order status (state field: draft, sent, sale, done, cancel) maps to Dolibarr's fk_statut and statut fields with the appropriate integer code mapping.

Flectra

sale.order.line

maps to

Dolibarr ERP

llx_commandedet

1:1
Fully supported

Flectra sale.order.line records map to Dolibarr llx_commandedet order lines. We resolve the product reference to Dolibarr fk_product, copy qty and UnitPrice, and calculate the total (total_ht, total_tva) for each line. If Flectra uses a free-text line without a linked product, we write a Dolibarr desc (description) line with no fk_product link.

Flectra

product.template

maps to

Dolibarr ERP

product + product_attribute + product_attribute_value

1:many
Fully supported

Flectra's two-level product model (product.template as the master, product.product as variants) requires expansion into Dolibarr's flatter product structure. Each Flectra product.template with active variants becomes a Dolibarr product with attribute rows created for each variant dimension (size, color, etc.). Variant-level pricing in Flectra (product.product UnitPrice overrides) becomes Dolibarr extra prices on the product record. Templates with no variants migrate as a single product record.

Flectra

product.product (variant)

maps to

Dolibarr ERP

product extra price

1:1
Fully supported

Flectra product.product records with a non-zero qty_available or non-default UnitPrice map to Dolibarr price_extra rows linked to the parent product. The variant's attribute_value_ids become Dolibarr product_attribute_value links. Stock levels from Flectra's stock.quant table map to Dolibarr's llx_product_stock entries per warehouse (fk_entrepot).

Flectra

account.move (out_invoice)

maps to

Dolibarr ERP

llx_facture

1:1
Fully supported

Flectra account.move with move_type='out_invoice' maps to Dolibarr llx_facture. We transfer move_id (external reference), ref (invoice number), invoice_date, date_valid, fk_soc (customer), fk_user_author, and financial amounts (total_ht, total_tva, total_ttc). The payment state (paid, unpaid, partial) maps to Dolibarr's fk_paiement and paye (0=unpaid, 1=paid) fields. Historical payment records from account.payment migrate as llx_paiement with line links to the invoice.

Flectra

account.move.line

maps to

Dolibarr ERP

llx_facturedet

1:1
Fully supported

Flectra invoice line items map to Dolibarr llx_facturedet. We resolve fk_product (or write a free-text description line), copy qty and UnitPrice, and compute line totals (total_ht, tva_tx for VAT rate). Tax codes from Flectra's account.tax map to Dolibarr's fk_tva rate lookup. Flectra analytic account tags (analytic_distribution) map to Dolibarr llx_facture_fourn_det where applicable.

Flectra

purchase.order

maps to

Dolibarr ERP

llx_commande_fournisseur

1:1
Fully supported

Flectra purchase.order maps to Dolibarr llx_commande_fournisseur (supplier order). We transfer the order reference, date, supplier link (fk_soc), salesperson, and amounts (total_ht, total_tva, total_ttc). Order status maps to Dolibarr's fk_statut. Flectra's picking_ids relation for receipt tracking maps to Dolibarr's llx_reception if the receiving warehouse module is active.

Flectra

purchase.order.line

maps to

Dolibarr ERP

llx_commande_fournisseurdet

1:1
Fully supported

Flectra purchase.order.line records map to Dolibarr llx_commande_fournisseurdet supplier order lines. We resolve the supplier product reference to Dolibarr fk_product, copy qty and UnitPrice, and calculate line totals. Discounts (% discount field) migrate to Dolibarr's remise_percent field.

Flectra

project.project

maps to

Dolibarr ERP

llx_projet

1:1
Fully supported

Flectra project.project maps to Dolibarr llx_projet. We transfer ref (project code), title (project name), description, date_start, date_end, fk_user_resp (project manager), and the fk_soc link if the project is associated with a customer. Project status (state: open, pending, close) maps to Dolibarr's fk_statut.

Flectra

project.task

maps to

Dolibarr ERP

llx_projet_task

1:1
Fully supported

Flectra project.task records map to Dolibarr llx_projet_task. We transfer ref, title, description, planned_hours, effective_hours, date_start, date_end, user_id (assignee), stage_id (task stage), and fk_projet (parent project). Flectra's child_ids sub-task hierarchy becomes a flat task list in Dolibarr with fk_task_parent links for nesting. Task priority (1-5) maps to Dolibarr's priority field.

Flectra

hr.employee

maps to

Dolibarr ERP

llx_societe (type=contact) + llx_resource

1:1
Fully supported

Flectra hr.employee records map to Dolibarr llx_societe entries with type='contact' plus llx_resource records for resource management. Employee name, work_email, mobile, department_id (fk_department), and job_id map to the contact record. Dolibarr's llx_resource table holds the resource definition (resource_type, fk_user) for project allocation and attendance tracking if the HR module is active. Note that Flectra payroll and salary history resides in external payroll modules and is not part of the standard migration scope.

Flectra

ir.attachment

maps to

Dolibarr ERP

documents directory

1:1
Fully supported

Flectra ir.attachment binary files export as base64-encoded content and are written to Dolibarr's documents directory using the object's module path convention (e.g., commercant/projet/task_123.pdf). We preserve the original filename and create a Dolibarr llx_extrafields record with a reference back to the owning object (fk_object and object_type). The res_model and res_id from Flectra determine the Dolibarr object type and ID for the attachment link.

Flectra

x_custom_field (ir.model.fields state=manual)

maps to

Dolibarr ERP

llx_extrafields

lossy
Fully supported

Flectra custom fields (x_ prefixed fields defined in ir.model.fields with state='manual') are enumerated during discovery and mapped to Dolibarr llx_extrafields table rows for the corresponding object. We create the extrafield definition (column name, label, type, and SQL column addition) before data load. The custom field value data migrates as part of the parent object write. If a custom field references another Flectra record via a many2one relation, we resolve the target ID through the migration's ID cross-reference map before writing.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Flectra logo

Flectra gotchas

High

XML-RPC API format requires non-standard serialization

High

No official migration utility or dedicated export tooling

Medium

Community edition lacks functional support and hosting

Medium

Large imports can trigger timeouts without batching

Dolibarr ERP logo

Dolibarr ERP gotchas

High

Foreign key constraint errors on cross-distribution database restore

High

SQL injection vulnerabilities in version 9.0.1

Medium

Custom fields stored as JSON in extraoptions require field-by-field deserialization

Medium

Decimal precision and rounding configuration affects price fields

Low

No native iOS/Android app forces reliance on browser

Pair-specific challenges

  • Flectra XML-RPC adapter layer required for all reads

    Flectra exposes all data through an XML-RPC execute_kw interface with requests encoded as XML payloads (model, method, args format). Dolibarr's REST API uses JSON. We implement a Python XML-RPC client adapter that wraps Flectra reads so that the rest of our migration engine remains format-agnostic. The adapter handles session authentication (db, uid, password tuple), request batching for search_read calls with domain filters, and XML response parsing. Any third-party middleware or migration tools that assume REST will fail against Flectra without this adapter in place.

  • Dolibarr key length constraint on MySQL/MariaDB with utf8mb4

    Dolibarr's installer and some module upgrade scripts include UNIQUE INDEX constraints with varchar columns that can exceed MySQL/MariaDB's 767-byte key length limit when using utf8mb4 (4 bytes per character). This is a known Dolibarr issue (GitHub issue #16315) affecting upgrades and some data imports on MariaDB 10.1 and MySQL 5.5. We verify the target Dolibarr database's innodb_large_prefix setting and character set before migration. If the constraint applies, we modify the target table schema or use a shorter index length for the migration import, then flag for the customer to address the index definition post-load.

  • Flectra res.partner split to Dolibarr societe/socpeople is irreversible

    Flectra's res.partner holds both individual contacts and companies in one table, differentiated by is_company. Dolibarr separates these into llx_societe and llx_socpeople with a foreign key relationship. We must resolve this split before writing to Dolibarr because a company must exist before contacts can be linked to it. Running contacts before companies in the migration order would create orphaned contact records. We build the company set first, create a partner-id-to-societe-id cross-reference map, then resolve fk_soc on every contact write.

  • Product template-to-variant expansion multiplies record count

    Flectra's product.product variants (color, size, dimension combinations) each exist as separate records linked to a product.template. Dolibarr's product_attribute model handles variants but stores attribute combinations differently, creating one extra price row per variant rather than a full product record. A Flectra product template with 5 colors and 4 sizes (20 variants) becomes 1 Dolibarr product with 20 product_attribute_value entries. We flag the expansion factor during discovery and compute the target Dolibarr record count before migration so the customer understands the data volume implication.

  • Flectra Community edition has no API on the Professional features

    Flectra's XML-RPC External API covers the core ORM methods used in Community edition. However, some Professional-tier modules (Subscription, Rental, Loyalty Programs) may restrict certain API calls or expose additional fields that are gated behind the Professional license. We test API read access during discovery and flag any 403 responses or missing fields. If Flectra Community edition is in use, the migration reads only the modules available in Community (CRM, Sales, Accounting, Inventory, Purchase, Project, Helpdesk) and excludes Professional-only module data.

Migration approach

Six steps for a successful Flectra to Dolibarr ERP data migration

  1. Discovery and Flectra API accessibility check

    We audit the source Flectra instance via XML-RPC: authenticate with db/uid/password, enumerate installed modules via ir.module.module, introspect ir.model.fields for all active business objects, and count records per model. We identify any Professional-tier modules present, flag any 403 responses on restricted API calls, and generate a discovery report covering record counts, custom field list (x_ prefixed fields), address completeness, and product variant count. This report defines the migration scope and informs the product expansion calculation for Dolibarr.

  2. Dolibarr module selection and schema preparation

    We work with the customer to select the active Dolibarr modules matching their Flectra usage: CRM (third parties and contacts), Commercial (quotations and orders), Products, Purchases, Invoicing, Projects, HR, and Inventory. We enable these modules in a fresh or sandbox Dolibarr instance, create the llx_extrafields definitions for every migrating custom field, configure the company information (country, currency, VAT rules), and set up any required extra price rows for product variants. The schema is validated via Dolibarr's database consistency check before data load begins.

  3. Flectra XML-RPC extraction with batch chunking

    We implement the XML-RPC client adapter to read Flectra data in batches of 100-200 records per execute_kw call using the search_read method with domain filters and offset/limit. Large object sets (partners with 50k+ rows, invoices with 100k+ rows) are chunked to avoid HTTP timeout. Each batch is written to a staging JSON-Lines file with the original Flectra record ID preserved as a reference key. We run a row-count reconciliation against the XML-RPC count response before proceeding to transform.

  4. Schema reconciliation and transform pipeline

    We run the transform pipeline against the staged data: split res.partner into llx_societe (companies) and llx_socpeople (contacts) using is_company flag and parent_id; expand product.template variants into product + attribute_value rows; map sale.order and account.move statuses to Dolibarr integer codes; resolve Flectra partner IDs to the new Dolibarr llx_societe IDs via the cross-reference map for all foreign key fields (fk_soc, partner_id, user_id). We apply any multi-currency rate adjustments and fiscal position mappings. The output is a set of Dolibarr-compatible JSON payloads per object type.

  5. Dolibarr REST API load with dependency ordering

    We load data into Dolibarr in strict dependency order: llx_societe first (companies), then llx_socpeople (contacts linked to companies), then llx_product and llx_product_attribute, then llx_commande and llx_commandedet, then llx_facture and llx_facturedet, then llx_projet, llx_projet_task, llx_commande_fournisseur, llx_paiement, and finally llx_resource and llx_extrafields. Each phase emits a success/failure count. We use Dolibarr REST API POST requests with rate-limit handling and retry logic. Any record with a missing required field (e.g., fk_soc not resolved) is held in a deferred queue and retried after the parent record is confirmed.

  6. Cutover, validation, and workflow inventory handoff

    We freeze Flectra writes during a defined cutover window, run a final delta migration of records modified since the last batch, and validate the Dolibarr load by reconciling record counts against the discovery report. We spot-check 20-30 records per object type against the Flectra source for field-level accuracy. We deliver a written inventory of all Flectra automated actions, workflow rules, and PDF template configurations (ir.actions.report, ir.mail_server, ir.config_parameter settings) that do not migrate as code. The customer's admin uses this inventory to rebuild automations in Dolibarr's built-in workflow module and document template editor.

Platform deep dives

Context on both ends of the pair

Flectra logo

Flectra

Source

Strengths

  • Community edition is free with no per-user licensing cost, removing financial barrier to adoption.
  • On-premise hosting option provides full data sovereignty for regulated-industry customers.
  • Modular architecture means customers deploy only the modules they need, reducing system complexity.
  • XML-RPC External API allows programmatic data access across all business objects via standard ORM methods.
  • Open-source codebase can be audited and extended by the customer's own developers without vendor dependency.

Weaknesses

  • Community edition receives no security patches or version upgrades from the vendor, creating long-term maintenance risk.
  • XML-RPC API is less widely documented and supported by third-party integration tools compared to REST alternatives.
  • Smaller community and partner ecosystem than Odoo means fewer pre-built modules and fewer implementation consultants.
  • Performance on large datasets (100k+ records) is not optimised without significant infrastructure tuning.
  • Version upgrade path for on-premise installations requires manual testing of all custom modules for compatibility.
Dolibarr ERP logo

Dolibarr ERP

Destination

Strengths

  • Free core software with AGPL license and no per-user mandatory fee for self-hosted deployments.
  • Modular architecture lets teams activate only needed features, keeping the interface focused and the database lean.
  • Self-hosted option provides full data sovereignty and avoids recurring SaaS subscription costs.
  • Built-in CSV/Excel import and export wizard with saved profiles simplifies recurring data operations.
  • Low-code Module Builder allows functional extensions without writing PHP code.

Weaknesses

  • No native documented REST API for programmatic bulk operations — all migrations depend on the import/export wizard or direct database access.
  • Reporting and analytics are weak without paid add-ons, and built-in charts are limited compared to modern SaaS platforms.
  • UI design is described as dated by multiple reviewers, with infrequent visual updates to the default theme.
  • Community-only support for self-hosted deployments means no SLA or guaranteed response time for issues.
  • Security vulnerabilities (CVE-2024-5314, CVE-2024-5315) in version 9.0.1 with no immediate patch reported.

Complexity grading

How hard is this migration?

Standard ERP migration. All 8 core objects map 1:1 between Flectra and Dolibarr ERP.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Flectra and Dolibarr ERP.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Flectra and Dolibarr ERP.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Flectra: Not publicly documented.

  • Data volume sensitivity

    B

    Flectra doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Flectra to Dolibarr ERP migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Flectra to Dolibarr ERP data migrations

Answers to the questions buyers ask most during Flectra to Dolibarr ERP migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Flectra to Dolibarr ERP migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Straightforward migrations under 15,000 partners, 3,000 sales orders, and 2,000 invoices land in three to five weeks and complete in $7,500-$11,000. Migrations with product variant expansion, large historical invoice batches, custom fields requiring manual mapping, or multi-module Dolibarr configurations (inventory + project + HR) move to eight to twelve weeks and $13,000-$18,000. Flectra Community edition migrations benefit from self-service source extraction (CSV via UI or direct database access); Professional edition customers can provide API credentials to reduce manual export effort.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Flectra.
Land in Dolibarr ERP, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day