ERP migration

Migrate from Kafinea to Dolibarr ERP

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

Kafinea logo

Kafinea

Source

Dolibarr ERP

Destination

Dolibarr ERP logo

Compatibility

79%

11 of 14

objects map 1:1 between Kafinea and Dolibarr ERP.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Kafinea to Dolibarr is a full-ERP migration with finance, CRM, and service management components. Kafinea uses separate Contacts and Companies objects with a link between them; Dolibarr merges these into a single Third Party entity with optional contact sub-records, requiring a merge decision during scoping. Kafinea invoice types (Classic, Progress, Recurring) map to Dolibarr Invoice objects with payment status preserved. Journal entries with multi-line debits and credits require sequencing by posting date, and SEPA direct debit mandate references do not transfer across systems. Kafinea workflows and AI automations use platform-specific action types with no standard export format; we document every active workflow for manual rebuild in Dolibarr's built-in workflow engine. We use Dolibarr's native import tool via CSV for standard objects and REST API where available, with date format validation handled before load to prevent the rejection errors that occur when Kafinea's datetime strings fail Dolibarr's strict YYYY-MM-DD regex validation.

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

Kafinea logo

Kafinea

What's pushing teams away

  • Limited volume of use restrictions on lower tiers can throttle growing companies that exceed stated data or transaction limits.
  • Smaller market footprint means fewer third-party integrations compared to established international ERP platforms.
  • Support limited to ticket-based channels on base tiers creates longer resolution times for urgent issues.
  • Smaller user community and fewer online resources make troubleshooting less straightforward than larger platforms.

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 Kafinea objects map to Dolibarr ERP

Each row shows how a Kafinea 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.

Kafinea

Customer

maps to

Dolibarr ERP

ThirdParty (Societe)

1:1
Fully supported

Kafinea Customers map to Dolibarr ThirdParty (llx_societe) records. The primary contact details, billing address, and payment terms transfer as the ThirdParty header; additional contact persons map to Dolibarr contact sub-records (llx_socpeople) linked via fk_soc. Customer category assignments (prospect, customer, supplier) map to Dolibarr's标签 system. We resolve the ThirdParty ID before any dependent object import to satisfy the foreign key constraint.

Kafinea

CRM Contact

maps to

Dolibarr ERP

Contact (SocPeople)

1:1
Fully supported

Kafinea CRM Contacts (separate from Companies in Kafinea's schema) map to Dolibarr Contact sub-records. Kafinea's lifecycle stage and custom contact properties map to Dolibarr extrafields. If the customer used Kafinea's Contact-Company link extensively, we resolve the link into Dolibarr's fk_soc reference on each contact. Contacts without a parent ThirdParty are held in a reconciliation queue for the customer to assign a company before import.

Kafinea

Company

maps to

Dolibarr ERP

ThirdParty extension

1:1
Fully supported

Kafinea Companies map directly to Dolibarr ThirdParty records, with the domain stored in the website field as a reference. If both Company and Customer records exist for the same entity in Kafinea (which is common), we merge them into a single Dolibarr ThirdParty with the customer flag set. Supplier-flagged Companies map to Dolibarr ThirdParty with the supplier status enabled.

Kafinea

Invoice (Classic, Progress, Recurring)

maps to

Dolibarr ERP

Invoice

1:1
Fully supported

Kafinea invoices map to Dolibarr Invoice (llx_facture) records. Invoice type (classic, replacement, credit note) maps from Kafinea's type field. Payment status and the invoice-to-payment link transfer as Dolibarr payment records (llx_paiement_facture) linked to the invoice. VAT treatment that differs between systems is flagged for manual confirmation before the invoice is set to validated status in Dolibarr. Recurring invoices are migrated as template invoices with their frequency metadata preserved in extrafields.

Kafinea

Credit Note

maps to

Dolibarr ERP

Invoice (type = Credit Note)

1:1
Fully supported

Kafinea credit notes map to Dolibarr Invoice records with type = Credit Note (Avoir). The link back to the original invoice is preserved as a Dolibarr fk_facture_source reference where available. If Kafinea does not expose this link in its export, we capture it in a companion mapping file and advise the customer to link manually post-import.

Kafinea

Journal Entry

maps to

Dolibarr ERP

Bookkeeping Entry (EcritureComptable)

1:1
Fully supported

Kafinea journal entries with multi-line debits and credits map to Dolibarr accounting entries (llx_ecm_files and llx_accounting_bookkeeping). Entries are sequenced by posting date to preserve the chronological ledger order. Each line's account code is mapped to the corresponding Dolibarr chart of accounts code. If Kafinea account codes use a non-standard numbering scheme, we flag these for the customer to align with their chosen Dolibarr chart of accounts template before import.

Kafinea

Chart of Accounts

maps to

Dolibarr ERP

Accounting Account (Compte)

lossy
Mapping required

Kafinea chart of accounts records map to Dolibarr accounting account codes. We require the customer to confirm their chosen Dolibarr chart of accounts template (France PCG, Belgium PCMN, or custom) before mapping. Account type (asset, liability, equity, income, expense), currency, and cost center assignment transfer as account properties. Non-standard or custom account codes that do not map to the chosen template are flagged with the customer and can be added to the template before import.

Kafinea

Sales Order

maps to

Dolibarr ERP

Order (Commande)

1:1
Fully supported

Kafinea Sales Orders map to Dolibarr Customer Order records. Line items with product references and pricing rules transfer to Dolibarr commandelines. Order status (draft, validated, shipped, closed) maps to Dolibarr order status. Kafinea's tiered price book rules applied at order time are resolved as static prices in the order line rather than as dynamic rule references, because Dolibarr's price application is resolved at order creation.

Kafinea

Price Book

maps to

Dolibarr ERP

Product Price

lossy
Fully supported

Kafinea tiered quantity-based pricing tiers map to Dolibarr product price entries per customer or customer category. Each quantity break from Kafinea creates a corresponding Dolibarr price level entry. If Kafinea's price book applies customer-specific overrides, these map to Dolibarr customer-specific price entries. We require the customer to confirm the target Dolibarr price type (selling price, minimum price, wholesale price) before mapping.

Kafinea

Service Contract

maps to

Dolibarr ERP

Contract

1:1
Fully supported

Kafinea Service Contracts define recurring billing terms and SLA levels that map to Dolibarr Contract records. The contract start date, duration, renewal terms, and linked service items transfer. SLA terms that Kafinea stores as custom properties map to Dolibarr extrafields since Dolibarr's base contract object does not have a native SLA field.

Kafinea

Intervention

maps to

Dolibarr ERP

Intervention (ficheinter)

1:1
Fully supported

Kafinea Interventions (time or task records logged against service contracts) map to Dolibarr Intervention records linked to the corresponding Contract. Duration, description, and the user who logged the intervention transfer. If the destination Dolibarr instance does not have the Interventions module activated, we flag this before migration and advise on module activation, as interventions without the module appear as generic project tasks.

Kafinea

Timesheet

maps to

Dolibarr ERP

Project + Task

1:1
Fully supported

Kafinea Timesheets map to Dolibarr Project records with individual time entries as Project Tasks (llx_projet_task). Effective-dated absence records require sequential import to preserve accrual balance calculations. If Kafinea timesheets are linked to specific projects or contracts, we resolve the Dolibarr project reference at migration time before inserting the task records.

Kafinea

Custom Field

maps to

Dolibarr ERP

Extrafield

lossy
Fully supported

Kafinea custom fields across all objects map to Dolibarr extrafields (llx_extrafields). We handle type casting: picklist values from Kafinea map to Dolibarr select extrafields; date fields map to Dolibarr date extrafields; numeric fields map to Dolibarr double or integer extrafields. Multi-select picklists map to Dolibarr's checkbox extrafield type. Before migration, we pre-create every extrafield definition in Dolibarr so that incoming records are validated against the target schema.

Kafinea

Attachment (EDM)

maps to

Dolibarr ERP

Document

1:1
Fully supported

Kafinea EDM documents export as file references or direct downloads. We preserve the folder structure and attach documents to the corresponding Dolibarr records using Dolibarr's document management system. Files without a clear parent record are collected into a migration-attachments folder for manual categorization post-import. Document size and format compatibility are validated before upload.

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.

Kafinea logo

Kafinea gotchas

Medium

Tiered pricing model affects feature availability

Medium

Limited volume caps on base tiers

High

Workflows and AI automations are not exportable

High

SEPA and banking links do not transfer across systems

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

  • Dolibarr enforces strict date format on import

    Dolibarr's import validator uses a strict regex (^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$) that rejects datetime strings with time components. Kafinea exports datetime fields as 'YYYY-MM-DD HH:MM:SS', which Dolibarr interprets as invalid during CSV import. We pre-process every date and datetime field in the Kafinea export, stripping time components where Dolibarr expects a date-only field, and applying the correct format before loading. This is the most common reason imports from external systems fail in Dolibarr, documented in GitHub issue #24700.

  • Dolibarr modules must be activated before data import

    Dolibarr's modular architecture means that importing into a module that is not activated produces no error but silently drops the records. We audit the customer's Dolibarr instance before migration begins, confirming that the ThirdParty, Invoice, Accounting, Contract, Project, and Intervention modules are all enabled. If the customer is self-hosting, we require a screenshot of the module activation page as part of the pre-flight checklist. This is a common oversight in DIY Dolibarr migrations.

  • SEPA payment links and banking mandates do not transfer

    Kafinea stores SEPA direct debit mandates and invoice-to-payment links against the customer's bank configuration inside Kafinea. These references are Kafinea-internal and cannot be exported in a form that Dolibarr can consume. We preserve the mandate identifiers, bank account references, and SEPA creditor IDs in a companion mapping file so that the customer can re-establish the payment method links in Dolibarr's banking module. This requires re-initiating bank account verification, which is a manual step that takes one to five business days depending on the bank.

  • Opening balances require separate accounting setup

    Dolibarr's accounting module requires opening balances to be established as a manual journal entry or imported via a specific opening entry format before transactional history begins. If the migration includes journal entries from Kafinea, we create an opening entry in Dolibarr that captures the trial balance at the cutover date. Historical journal entries before the cutover date can be imported as consultation-only entries if the customer wants full history, but this requires the accounting module to be in double-entry mode and the chart of accounts to be fully reconciled first.

  • Kafinea workflows have no export format for Dolibarr

    Kafinea's AI-powered workflow engine uses platform-specific action types, triggers, and prompt configurations that have no standard export. We capture each active Kafinea workflow as a written summary (trigger conditions, action steps, applicable object types, and AI prompt logic where applicable) so that the customer can rebuild them in Dolibarr's built-in workflow engine or via a Dolibarr partner. This is not a migration blocker but represents post-migration configuration work that must be planned separately.

Migration approach

Six steps for a successful Kafinea to Dolibarr ERP data migration

  1. Discovery and Kafinea module audit

    We audit every Kafinea module the customer has subscribed to and actively uses, because data from an app the customer does not also activate in Dolibarr cannot land correctly at the destination. We extract record counts for Customers, Contacts, Companies, Invoices, Journal Entries, Chart of Accounts, Sales Orders, Service Contracts, Interventions, and Timesheets. We identify custom fields and their data types across all objects. We review volume caps on the customer's current Kafinea tier and flag any temporary upgrade requirement before export begins. We confirm which Kafinea apps (Finance, CRM, Sales, Service) are active and map them to Dolibarr module equivalents for activation before migration.

  2. Dolibarr instance preparation and module activation

    We require the customer to confirm Dolibarr module activation (ThirdParty, Facture, Accounting, Contract, Project, Agenda for interventions) before we begin data preparation. We provide a module activation checklist with screenshots. We also confirm the chosen chart of accounts template (France PCG, Belgium PCMN, or custom) and the accounting mode (simple versus double entry) because these settings affect journal entry structure and chart of accounts import format. We pre-create all Dolibarr extrafield definitions to match Kafinea custom field names and types so that incoming records are validated against the target schema from the first load.

  3. Data extraction and date format pre-processing

    We extract all Kafinea data via the REST API in JSON format. We apply a pre-processing step to every date and datetime field, stripping time components from fields where Dolibarr expects YYYY-MM-DD and preserving ISO 8601 timestamps where Dolibarr expects a datetime. We validate the cleaned output against Dolibarr's import regex before generating the CSV files for Dolibarr's native import tool. We also resolve parent-record references: we extract the Kafinea Customer and Company IDs on every dependent record so that foreign key relationships are preserved during import.

  4. Third Party and Contact merge strategy

    Kafinea uses separate Contacts and Companies objects; Dolibarr merges contact persons into sub-records under a ThirdParty. We apply the merge strategy during the transform phase: each Kafinea Company becomes a Dolibarr ThirdParty, and each Kafinea Contact that references that Company becomes a Dolibarr Contact sub-record linked via fk_soc. Contacts without a parent Company are held with a reconciliation flag for the customer to resolve before import. We merge Customer and Company records that reference the same legal entity into a single ThirdParty with both customer and contact flags set.

  5. Import sequencing and journal entry ordering

    We run the import in strict dependency order: ThirdParty records first (as the parent for all dependent objects), then Contact sub-records, then Product and Service catalog entries, then Price Book structures, then Invoices, then Sales Orders, then Service Contracts and Interventions, then Timesheets and Project Tasks, then Journal Entries (sequenced by posting date), then Attachments. Chart of accounts and opening balances are imported separately before journal entry history begins. Each phase emits a row-count reconciliation report showing imported count versus expected count. Any records rejected during import (validation failures, date format issues, missing foreign keys) are logged with error details and re-processed in a correction pass.

  6. Cutover, SEPA handoff, and workflow inventory delivery

    We freeze Kafinea writes during the cutover window, run a final delta import of any records modified since the initial extract, then confirm Dolibarr as the system of record. We deliver the SEPA mandate mapping file with instructions for re-establishing payment method links in Dolibarr's banking module. We deliver the written Kafinea workflow inventory with Dolibarr equivalent recommendations for each workflow trigger and action type. We provide a one-week post-cutover reconciliation window to resolve any record-level issues reported by the customer's team. We do not rebuild Kafinea workflows as Dolibarr workflows; that work is handled by the customer's admin or a Dolibarr partner as a separate engagement.

Platform deep dives

Context on both ends of the pair

Kafinea logo

Kafinea

Source

Strengths

  • Modular architecture lets companies adopt finance, CRM, or service apps independently without a full suite commitment.
  • French-market-focused with built-in e-invoicing reform compliance and SEPA payment support.
  • REST API with customizable fields enables programmatic data access and integration for technical teams.
  • Unlimited users on Business tier removes per-seat scaling friction for growing SMEs.
  • Cancel anytime billing model lowers commitment risk for companies evaluating the platform.

Weaknesses

  • Limited public documentation on API rate limits and export volume thresholds creates migration scoping uncertainty.
  • Smaller ecosystem means fewer pre-built connectors and migration tools compared to platforms like SAP or Odoo.
  • Support limited to ticket-based channels on base pricing tier can slow down migration-critical issue resolution.
  • Workflows are Kafinea-native and cannot be programmatically exported, requiring manual rebuild at the destination.
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. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

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

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • 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

    Kafinea: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Kafinea 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 Kafinea to Dolibarr ERP data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Migrations under 5,000 customer records, 2,000 invoices, and no service contract history land between three and five weeks. Migrations with full journal entry histories, tiered price book structures, large sales order volumes with multi-line items, or Dolibarr module activation that requires post-import configuration move to eight to twelve weeks because of chart-of-accounts reconciliation, journal entry sequencing, and extrafields type-casting work. The primary variable is the number of Kafinea modules in active use and whether the Dolibarr instance is already configured with the correct chart of accounts template.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Kafinea.
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