ERP migration
Field-level mapping, validation, and rollback between Kafinea and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
Kafinea
Source
Dolibarr ERP
Destination
Compatibility
11 of 14
objects map 1:1 between Kafinea and Dolibarr ERP.
Complexity
BStandard
Timeline
3-5 weeks
Overview
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.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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
Dolibarr ERP
ThirdParty (Societe)
1:1Kafinea 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
Dolibarr ERP
Contact (SocPeople)
1:1Kafinea 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
Dolibarr ERP
ThirdParty extension
1:1Kafinea 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)
Dolibarr ERP
Invoice
1:1Kafinea 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
Dolibarr ERP
Invoice (type = Credit Note)
1:1Kafinea 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
Dolibarr ERP
Bookkeeping Entry (EcritureComptable)
1:1Kafinea 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
Dolibarr ERP
Accounting Account (Compte)
lossyKafinea 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
Dolibarr ERP
Order (Commande)
1:1Kafinea 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
Dolibarr ERP
Product Price
lossyKafinea 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
Dolibarr ERP
Contract
1:1Kafinea 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
Dolibarr ERP
Intervention (ficheinter)
1:1Kafinea 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
Dolibarr ERP
Project + Task
1:1Kafinea 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
Dolibarr ERP
Extrafield
lossyKafinea 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)
Dolibarr ERP
Document
1:1Kafinea 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.
| Kafinea | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Customer | ThirdParty (Societe)1:1 | Fully supported | |
| CRM Contact | Contact (SocPeople)1:1 | Fully supported | |
| Company | ThirdParty extension1:1 | Fully supported | |
| Invoice (Classic, Progress, Recurring) | Invoice1:1 | Fully supported | |
| Credit Note | Invoice (type = Credit Note)1:1 | Fully supported | |
| Journal Entry | Bookkeeping Entry (EcritureComptable)1:1 | Fully supported | |
| Chart of Accounts | Accounting Account (Compte)lossy | Mapping required | |
| Sales Order | Order (Commande)1:1 | Fully supported | |
| Price Book | Product Pricelossy | Fully supported | |
| Service Contract | Contract1:1 | Fully supported | |
| Intervention | Intervention (ficheinter)1:1 | Fully supported | |
| Timesheet | Project + Task1:1 | Fully supported | |
| Custom Field | Extrafieldlossy | Fully supported | |
| Attachment (EDM) | Document1:1 | Fully supported |
Gotchas + challenges
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 gotchas
Tiered pricing model affects feature availability
Limited volume caps on base tiers
Workflows and AI automations are not exportable
SEPA and banking links do not transfer across systems
Dolibarr ERP gotchas
Foreign key constraint errors on cross-distribution database restore
SQL injection vulnerabilities in version 9.0.1
Custom fields stored as JSON in extraoptions require field-by-field deserialization
Decimal precision and rounding configuration affects price fields
No native iOS/Android app forces reliance on browser
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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
Kafinea
Source
Strengths
Weaknesses
Dolibarr ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Kafinea and Dolibarr ERP.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Kafinea: Not publicly documented.
Data volume sensitivity
Kafinea doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Kafinea to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Kafinea
Other ways to arrive at Dolibarr ERP
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.