ERP migration
Field-level mapping, validation, and rollback between EF Enterprise and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
EF Enterprise
Source
Dolibarr ERP
Destination
Compatibility
6 of 12
objects map 1:1 between EF Enterprise and Dolibarr ERP.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from EF Enterprise to Dolibarr is a platform-category migration: EF Enterprise is a Salesforce-built exhibit and event management system with a top-level Exhibition object containing Booths and linked Sponsors, while Dolibarr is a modular open-source ERP-CRM that uses llx_projet for projects, llx_societe for third parties, llx_product for products, and llx_societe_contact for people records. The two systems share no common API or data model lineage, so every object mapping requires a structural translation. We extract the EF Enterprise Salesforce schema during discovery to identify undocumented custom fields for exhibitor contract terms and sponsor tier flags, then recreate equivalent Dolibarr extrafield definitions before loading data. We disable Salesforce badge-print triggers before migration to prevent duplicate badge generation at cutover, and we surface all inactive EF Enterprise records so the customer decides whether each one migrates, is skipped, or is reassigned. Workflows, automations, and Apex triggers built inside EF Enterprise do not migrate; we deliver a written inventory of every automation requiring rebuild in Dolibarr's built-in workflow engine or a third-party module.
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 EF Enterprise 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.
EF Enterprise
Exhibition
Dolibarr ERP
Project (llx_projet)
1:1EF Enterprise Exhibitions (event name, dates, venue, status) map to Dolibarr llx_projet records. We extract the Exhibition name, start_date, end_date, and venue into Dolibarr extrafield columns on llx_projet (ef_exhibition_start, ef_exhibition_end, ef_venue) because Dolibarr's native Project fields cover only title, description, and status. Exhibition status (Draft, Active, Archived) maps to Dolibarr Project status (0=Open, 1=Closed, -1=Not started) via a status lookup table created during schema design. Exhibition is created first in the migration sequence so that its project_id (fk_projet) is available as a parent reference for Booths and Sessions.
EF Enterprise
Booth
Dolibarr ERP
Product (llx_product) + Warehouse (llx_entrepot)
1:manyEF Enterprise Booths (booth number, size, zone, per-booth pricing) map to Dolibarr llx_product records of type Service with extrafields for booth number, zone, and size. If the destination uses physical booth inventory tracking, we also create llx_entrepot records for venue zones and llx_product_stock entries per booth. Per-booth pricing migrates to llx_product.sellprice (for paid booths) or is flagged as Complimentary via an extrafield. Booth-Exhibition parent relationships are resolved via llx_projet.ref during migration so that each product is linked to the correct Dolibarr project as a WhatId equivalent.
EF Enterprise
Sponsor
Dolibarr ERP
Third Party (llx_societe)
1:1EF Enterprise Sponsors (company name, tier, booth linkage) map to Dolibarr llx_societe records with extrafields for sponsor_tier (Gold, Silver, Bronze) and linked_booth_id. The sponsor's tier is stored in EF Enterprise as a custom Salesforce picklist; we recreate it as a Dolibarr extrafield picklist on llx_societe with equivalent values. Sponsors linked to specific Booths receive a llx_product reference via an extrafield column (ef_linked_booth_product) so that the booth-sponsor relationship is preserved. Sponsor contact persons (if any exist as separate Salesforce Contacts) migrate to llx_socpeople linked to the llx_societe sponsor record.
EF Enterprise
Attendee Registration
Dolibarr ERP
Contact (llx_societe_contact)
1:1EF Enterprise Attendee Registrations (contact reference, session selections, badge type) map to Dolibarr llx_societe_contact records. The attendee's contact data (name, email, phone) is extracted from the linked Salesforce Contact and inserted as a llx_societe_contact entry. Session selections are stored as tags on the contact record using llx_categorie_contact and Dolibarr's category system, with a custom tag taxonomy built from the source session list. Badge type migrates to an extrafield ef_badge_type on llx_societe_contact. We do not migrate the custom registration-type fields and early-bird pricing flags that EF Enterprise stores as Salesforce custom fields without a schema export from the source org.
EF Enterprise
Session
Dolibarr ERP
Task (llx_projet_task)
1:manyEF Enterprise Sessions (associated with Exhibitions, capacity limits, track classification) map to Dolibarr llx_projet_task records under the corresponding llx_projet Exhibition project. Multi-track sessions (sessions that run concurrently across different tracks within one exhibition) are flattened into individual llx_projet_task rows because Dolibarr's task model does not have a native track grouping concept; we add a extrafield ef_session_track to preserve the track classification. Session capacity limits migrate as task.fk_task_parent references or as an extrafield ef_capacity for informational purposes in Dolibarr's task view.
EF Enterprise
Badge Record
Dolibarr ERP
Contact extrafield (ef_badge_record on llx_societe_contact)
1:1EF Enterprise Badge Records (attendee type, access levels, printing status) are stored as extrafields on the migrated llx_societe_contact records rather than as standalone Dolibarr objects, because Dolibarr does not have a native badge object. We create extrafield columns ef_badge_type, ef_access_level, and ef_print_status on llx_societe_contact and populate them from the source badge record data. Salesforce badge-print triggers that auto-generate badge print jobs on Attendee Registration insert are disabled before migration to prevent duplicate print jobs from firing during the batch load.
EF Enterprise
User and Owner Assignment
Dolibarr ERP
User
1:1EF Enterprise Owner records (Salesforce Users assigned to Exhibitions, Booths, and Sponsors) are mapped to Dolibarr User accounts (llx_user). We resolve by email match. Any EF Enterprise Owner without a matching Dolibarr User is held in a reconciliation queue and the customer's Dolibarr admin provisions the corresponding user before the migration resumes. Inactive Salesforce Users (archived) are flagged for reassignment review during discovery rather than migrated as active Dolibarr users.
EF Enterprise
Attachment
Dolibarr ERP
Document (llx_ecm_files / llx_document)
1:1EF Enterprise Attachments linked to Exhibitions, Booths, and Sponsors (typically exhibitor contract PDFs, floor plan images, sponsor logos) are exported from Salesforce ContentDocument via the Salesforce API and uploaded into Dolibarr's documents directory tree (documents/ef_migration/{object_type}/{record_id}/). We preserve the original filename and file type. Dolibarr's ECM module (Menu Home - Documents) indexes the migrated files and links them to the corresponding Dolibarr records via llx_ecm_files entries.
EF Enterprise
Tag and Custom Properties
Dolibarr ERP
Category (llx_categorie) + Multi-select extrafield
lossyEF Enterprise uses a mix of Salesforce standard tags and custom property sets for exhibitor classification. We export the full tag taxonomy (exhibitor type, booth classification, sponsor category, session track, attendee type) and recreate it in Dolibarr as llx_categorie records under the appropriate category types (Category, Contact, Product, Project). Duplicate tags are merged at migration time using a deduplication table. If any tag taxonomy exceeds Dolibarr's native category depth, we use a multi-select extrafield on the target object instead.
EF Enterprise
Custom Objects
Dolibarr ERP
Custom tables via Dolibarr extrafields
lossyEF Enterprise custom objects for exhibitor contracts, floor plans, and lead retrieval are not migratable without a direct schema export from the source Salesforce org because these objects are not discoverable via the standard REST API without metadata access. We request a Salesforce schema export during discovery. If provided, we recreate the custom object schema in Dolibarr using extrafield definitions on the nearest native Dolibarr object (e.g., exhibitor contract PDFs linked to llx_societe as document entries). Without a schema export, custom objects are flagged as unsupported and excluded from the migration scope.
EF Enterprise
Exhibition Status and Archive Flag
Dolibarr ERP
Project status (llx_projet.statut)
lossyEF Enterprise stores deprecated exhibitions as inactive records (a common Salesforce soft-delete pattern) rather than deleting them. We surface the full inactive Exhibition list during discovery review. Active Exhibitions map to Dolibarr project.statut = 0 (Open). Archived exhibitions map to project.statut = 1 (Closed) with an extrafield ef_archived__c = 1 to distinguish true archive state from normal closure. The customer decides for each inactive Exhibition whether it migrates as Closed or is excluded.
EF Enterprise
Exhibitor Contract Terms
Dolibarr ERP
Third Party extrafield (llx_societe_extrafields)
lossyEF Enterprise uses undocumented Salesforce custom fields to store exhibitor contract terms, ROI tracking values, and booth pricing tier flags. Without a schema export from the source org, these fields are not discoverable via the public API. We request a Salesforce schema export during discovery and validate every custom field before building the migration map. If schema access is unavailable, we migrate only standard fields and flag the custom fields as unmigrated in the discovery report. With schema access, we recreate each custom field as a named extrafield column on llx_societe_extrafields and populate it during the Sponsor migration.
| EF Enterprise | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Exhibition | Project (llx_projet)1:1 | Fully supported | |
| Booth | Product (llx_product) + Warehouse (llx_entrepot)1:many | Fully supported | |
| Sponsor | Third Party (llx_societe)1:1 | Fully supported | |
| Attendee Registration | Contact (llx_societe_contact)1:1 | Fully supported | |
| Session | Task (llx_projet_task)1:many | Fully supported | |
| Badge Record | Contact extrafield (ef_badge_record on llx_societe_contact)1:1 | Fully supported | |
| User and Owner Assignment | User1:1 | Fully supported | |
| Attachment | Document (llx_ecm_files / llx_document)1:1 | Fully supported | |
| Tag and Custom Properties | Category (llx_categorie) + Multi-select extrafieldlossy | Fully supported | |
| Custom Objects | Custom tables via Dolibarr extrafieldslossy | Not supported | |
| Exhibition Status and Archive Flag | Project status (llx_projet.statut)lossy | Fully supported | |
| Exhibitor Contract Terms | Third Party extrafield (llx_societe_extrafields)lossy | 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.
EF Enterprise gotchas
Undocumented custom Salesforce fields are not migratable by default
Archived (inactive) records behave differently from deleted records
Badge print triggers fire on record insert, risking duplicate badges at cutover
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 EF Enterprise schema extraction
We audit the source EF Enterprise Salesforce org: we request a full schema export (field IDs, API names, data types, and picklist values) from the customer, extract record counts for Exhibitions, Booths, Sponsors, Attendee Registrations, Sessions, and Badge Records, and identify all active Salesforce Flow and Apex triggers. We also extract the Salesforce ContentDocument library for attachments. The schema export is the gating item; without it, custom field mapping is not possible. We surface inactive records (archived Exhibitions, archived Sponsors, inactive Booths) and deliver the full record list for customer review before any migration design begins.
Dolibarr target schema design and extrafield creation
We configure the destination Dolibarr instance: we enable the required modules (Third Parties, Products, Projects, Tasks, Contacts, Categories, ECM/Documents, and any relevant third-party modules), create all extrafield columns on llx_societe_extrafields (sponsor tier, exhibitor contract fields), llx_projet_extrafields (venue, exhibition dates, status), llx_product_extrafields (booth number, zone, size, linked sponsor), llx_projet_task_extrafields (track, capacity), and llx_societe_contact_extrafields (badge type, access level, print status). We configure llx_categorie entries for the full tag taxonomy from the source. The extrafield schema is deployed into a Dolibarr sandbox instance first for validation before production migration begins.
Sandbox migration and reconciliation
We run a full migration into the Dolibarr sandbox instance using production-equivalent data volume. The customer reconciles record counts (Exhibitions in llx_projet, Booths in llx_product, Sponsors in llx_societe, Attendees in llx_societe_contact, Sessions in llx_projet_task), spot-checks relationship integrity (each Booth's linked Exhibition project, each Sponsor's linked Booth product, each Attendee's linked Sessions via tags), and verifies that custom field data populated correctly from the schema-mapped Salesforce fields. Any mapping corrections are documented and applied to the production migration script before the sandbox is signed off.
Badge print trigger disablement and owner reconciliation
We disable all Salesforce Flow and Apex triggers related to badge printing before migrating any Attendee Registration records. We also disable any Dolibarr badge-print automation module triggers if one is installed. Simultaneously, we reconcile EF Enterprise Owner IDs against Dolibarr User accounts by email. Any EF Enterprise Owner without a matching Dolibarr User goes to a reconciliation queue for the customer's admin to provision. Migration of Exhibitions, Booths, Sponsors, and Sessions can proceed during owner reconciliation; Attendee migration waits until owner resolution is complete because attendee records may be owner-assigned.
Production migration in dependency order
We run production migration in record-dependency order: llx_projet (Exhibitions first, as the parent for Booths and Sessions), llx_societe (Sponsors), llx_product (Booths linked to the llx_projet Exhibition records and linked to sponsor llx_societe records via extrafields), llx_projet_task (Sessions linked to their parent Exhibition project), llx_societe_contact (Attendees linked to their Exhibition project and tagged with session categories), and llx_ecm_files (Attachments linked to the correct Dolibarr records). Each phase emits a row-count reconciliation report before the next phase begins. We use batch CSV import or SQL INSERT with chunking rather than individual REST API calls for performance.
Cutover, validation, and automation inventory handoff
We freeze EF Enterprise writes during cutover, run a final delta migration of any records created or modified during the migration window, then enable Dolibarr as the system of record. We re-enable badge-print triggers in both the source (now read-only) and destination after manual post-load verification confirms no duplicate print jobs were generated. We deliver the automation inventory document listing every Salesforce Flow and Apex trigger from EF Enterprise with a recommended Dolibarr workflow rebuild approach (Dolibarr's native workflow engine or a third-party automation module). We support a one-week hypercare window for reconciliation issues. Workflow and automation rebuild is outside standard migration scope and is a separate engagement.
Platform deep dives
EF Enterprise
Source
Strengths
Weaknesses
Dolibarr ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. All 8 core objects map 1:1 between EF Enterprise and Dolibarr ERP.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across EF Enterprise and Dolibarr ERP.
Object compatibility
All 8 core objects map 1:1 between EF Enterprise and Dolibarr ERP.
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
EF Enterprise: Salesforce API governor limits apply (varies by Salesforce edition).
Data volume sensitivity
EF Enterprise exposes a bulk API — large-volume migrations stream efficiently.
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 EF Enterprise to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your EF Enterprise 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 EF Enterprise
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.