ERP migration
Field-level mapping, validation, and rollback between SoftLedger and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
SoftLedger
Source
Dolibarr ERP
Destination
Compatibility
8 of 12
objects map 1:1 between SoftLedger and Dolibarr ERP.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from SoftLedger to Dolibarr is a structural migration that reverses a decade of cloud-first, entity-centric design for a free, modular, self-hosted architecture. SoftLedger organizes every financial record under a Location hierarchy where each entity carries its own currency, COA, and operational settings; Dolibarr uses a flat third-party model with optional multi-company and accountancy modules that must be explicitly enabled. We handle that structural difference by flattening SoftLedger's entity tree into Dolibarr's third-party and project structures, mapping per-entity COAs to Dolibarr's accountancy module account codes, and preserving beginning balances through Dolibarr's opening-balance upload rather than raw journal entry injection. The 200 req/min SoftLedger API rate limit drives our chunking strategy, and any custom exchange rate overrides on multi-currency journal entries are extracted as metadata and applied explicitly in Dolibarr so that translated amounts are not recalculated at the wrong rate. Dolibarr does not migrate as code; we deliver a written inventory of any imported custom report configurations and Dolibarr modules requiring activation so the customer's admin can configure them post-migration.
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 SoftLedger 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.
SoftLedger
Location
Dolibarr ERP
Third Party (societe) + Project or Category
lossySoftLedger Locations are the top-level entity container with per-location currency, address, and COA inheritance. Dolibarr has no direct entity object; multi-entity simulation requires the Multi-Company module or manual structure using Third Parties with a category hierarchy and Project tagging. We extract every Location, preserve its currency and address, and map it to a Dolibarr Third Party (as the legal entity) plus a Project or Category node used as the consolidation dimension. Organizations using Dolibarr's Multi-Company module configure it during scoping to mirror the SoftLedger location tree.
SoftLedger
Chart of Accounts (per Location)
Dolibarr ERP
Accountancy Module (plan_comptable)
1:1SoftLedger COAs are defined per Location with account number, name, type, and tax code. Dolibarr's accountancy module stores a single system-wide COA; per-entity COAs in Dolibarr require either the Multi-Company accountancy module or a category-based tagging strategy on journal lines. We extract each SoftLedger account with its type, number, and tax code, map it to the equivalent Dolibarr account, and flag any accounts that require the Multi-Company module to maintain per-entity segregation.
SoftLedger
Customer
Dolibarr ERP
Third Party (type Customer)
1:1SoftLedger Customers (name, email, address, payment terms, currency, custom fields) map to Dolibarr Third Parties with type ThirdParty and the Customer checkbox enabled. Payment terms migrate as Dolibarr cond_reglement codes. Currency assignment maps to Dolibarr's multi-currency extra parameters. Custom field values transfer to Dolibarr extra attributes on the Third Party.
SoftLedger
Vendor
Dolibarr ERP
Third Party (type Supplier)
1:1SoftLedger Vendors parallel Customer records and include AP-specific fields like 1099 eligibility. We map to Dolibarr Third Parties with the Supplier checkbox enabled. 1099 eligibility flags to Dolibarr's supplier_payment_terms extra attribute. Outstanding AP balances at migration date transfer as open invoice records in Dolibarr's Supplier Invoice module with status Unbilled.
SoftLedger
Journal Entry
Dolibarr ERP
Accountancy Ledger Entry (ecompt一支)
1:1SoftLedger Journal Entries carry Lines with account ID, amount, currency, dimension tags, and source references. We migrate journal lines as Dolibarr Accounting entries (accounting_type = standard). Multi-currency entries require exchange rate extraction: we pull the effective rate at posting date or the manual override rate from SoftLedger metadata and apply it explicitly as Dolibarr's fk_currency rate on each line. Dimension tags from SoftLedger map to Dolibarr categories on the journal line or to project assignment depending on the customer's chosen tagging strategy.
SoftLedger
Invoice (AR)
Dolibarr ERP
Customer Invoice (facture)
1:1SoftLedger AR Invoices map to Dolibarr Customer Invoice (type invoice customer). Invoice number, date, due date, line items, tax amounts, and status (open, paid, void) migrate directly. Open invoices are migrated with status Unpaid so that outstanding receivables are visible in Dolibarr's AR aging report from day one. Closed invoices migrate as historical records with status Paid and a payment date recorded.
SoftLedger
Invoice (AP)
Dolibarr ERP
Supplier Invoice (facture_fournisseur)
1:1SoftLedger AP Invoices map to Dolibarr Supplier Invoice. The same line-item, tax, and status migration logic applies as AR. Outstanding AP balances migrate as open Supplier Invoices with the appropriate payment term and due date, ensuring that Dolibarr's AP aging reflects the true liability position at cutover.
SoftLedger
Bank Transaction
Dolibarr ERP
Bank Account Statement Line (compta_bank_line)
1:1SoftLedger Bank Transactions link to Journal Entries and carry reconciliation status. We map to Dolibarr Bank Account Statement Lines. Reconciliation status is preserved: unreconciled items are set to open (not reconciled) in Dolibarr so the finance team continues bank reconciliation work without a false-closed bank account. Reconciled items transfer with their reconciliation date and reference intact.
SoftLedger
Custom Field (all objects)
Dolibarr ERP
Extra Attribute (extraattribute)
1:1SoftLedger Custom Fields on Customers, Vendors, Invoices, Journal Entries, and other objects are defined during scoping and mapped to Dolibarr extra attributes on the equivalent object. Dolibarr's extra attribute system stores key-value pairs per object ID. We map SoftLedger field types (text, number, select, date) to Dolibarr attribute types and create the attribute definitions in Dolibarr before importing values.
SoftLedger
Dimension
Dolibarr ERP
Category (categorie) or Project
lossySoftLedger Dimensions tag journal lines with organizational attributes like department or cost center. Dolibarr has no native dimension tagging equivalent; options are Dolibarr Categories (applied to third parties, products, or projects) or Project assignment on individual transactions. We discuss the tagging strategy during scoping: if the customer needs department-level journal-line tagging, we recommend the Multi-Company or custom accounting extension module; if project-level tagging is sufficient, Project assignment covers most use cases.
SoftLedger
Financial Report
Dolibarr ERP
ReportList module or manual rebuild
lossySoftLedger stores custom report definitions as JSON tied to account IDs. These definitions cannot be imported into Dolibarr's ReportList module because the account ID references are entity-specific. We extract the report JSON configurations and deliver a written document that maps each SoftLedger account ID referenced in a report to its Dolibarr account number, along with instructions for rebuilding the report in Dolibarr's ReportList or via the SQL reporting interface. The customer's admin rebuilds the reports post-migration.
SoftLedger
Beginning Balance
Dolibarr ERP
Opening Balance Entry (saisie_comptable)
lossySoftLedger uses a specific Beginning Balance upload mechanism that seeds opening trial balances without posting running transactions. We do not migrate beginning balances as standard journal entries, which would create duplicate balance-sheet impact. Instead, we use SoftLedger's beginning balance endpoint to extract the balance per account per entity, then structure the upload payload to match Dolibarr's opening balance format for the accountancy module. Each entity's opening balance posts as a distinct entry with a designated opening period reference so that the trial balance in Dolibarr reconciles to the SoftLedger snapshot date.
| SoftLedger | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Location | Third Party (societe) + Project or Categorylossy | Fully supported | |
| Chart of Accounts (per Location) | Accountancy Module (plan_comptable)1:1 | Fully supported | |
| Customer | Third Party (type Customer)1:1 | Fully supported | |
| Vendor | Third Party (type Supplier)1:1 | Fully supported | |
| Journal Entry | Accountancy Ledger Entry (ecompt一支)1:1 | Fully supported | |
| Invoice (AR) | Customer Invoice (facture)1:1 | Fully supported | |
| Invoice (AP) | Supplier Invoice (facture_fournisseur)1:1 | Fully supported | |
| Bank Transaction | Bank Account Statement Line (compta_bank_line)1:1 | Fully supported | |
| Custom Field (all objects) | Extra Attribute (extraattribute)1:1 | Fully supported | |
| Dimension | Category (categorie) or Projectlossy | Fully supported | |
| Financial Report | ReportList module or manual rebuildlossy | Fully supported | |
| Beginning Balance | Opening Balance Entry (saisie_comptable)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.
SoftLedger gotchas
200 req/min API rate limit can throttle bulk exports
Beginning balances require a dedicated upload mechanism
Unreconciled bank items carry status that must transfer intact
Custom exchange rate overrides on journal entries require explicit extraction
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 Dolibarr module selection
We audit the source SoftLedger portal: entity count and hierarchy, COA per entity, customer and vendor volumes, journal entry history by period, multi-currency flag, custom field inventory, dimension definitions, beginning balance snapshot date, and outstanding invoice and bank reconciliation status. We pair this with a Dolibarr readiness assessment: which core modules are required (Third Parties, Products, Invoicing, Accounting, Bank), which optional modules are needed (Multi-Company for entity isolation, Multi-Currency for currency handling, Eurotrash for exchange rate management), and whether the self-hosted infrastructure is provisioned. The discovery output is a written migration scope with entity-mapping strategy and Dolibarr module activation plan.
Schema extraction and Dolibarr account plan construction
We extract the full COA from each SoftLedger entity, flatten the per-entity account lists, and build a unified Dolibarr account plan. If the customer uses Dolibarr's Multi-Company module, we configure per-entity account code prefixes to maintain visual segregation. If not, we document the category-based tagging strategy for journal lines. We extract custom field definitions and map their types to Dolibarr extra attribute definitions, creating the attribute records in Dolibarr before any data import begins.
Beginning balance extraction and opening balance preparation
We extract beginning balances per account per entity from SoftLedger's dedicated beginning balance endpoint, producing a balance-per-account table at the migration snapshot date. We structure the opening balance payload in Dolibarr's required format, setting the correct period reference for the opening fiscal year. This step must complete before any journal entries import so that the trial balance is seeded correctly and running transactions add on top without duplication.
Entity and third-party migration
We run entity and third-party migration in dependency order: Locations (mapped to Dolibarr Third Parties with Multi-Company or category tags), Customers, Vendors. Each record carries its SoftLedger custom field values mapped to Dolibarr extra attributes. We resolve any duplicate detection by company name or tax ID before insert. The migration user account in Dolibarr is granted sufficient write permissions before this phase begins.
Journal entry and invoice migration with rate-limit handling
We extract journal entries in entity-sorted batches of 150 requests, respecting the 200 req/min SoftLedger API limit with exponential backoff on 429 responses. Multi-currency entries are extracted with their explicit override rates applied as Dolibarr line-level currency rates. Open AR and AP invoices migrate with status Unpaid; closed invoices migrate as historical paid records. Each batch emits a row-count reconciliation report before the next batch begins. Bank transactions migrate last within this phase, with reconciliation status preserved.
Cutover, validation, and report rebuild handoff
We freeze SoftLedger writes during cutover, run a final delta migration of any records modified during the migration window, then enable Dolibarr as the system of record. We deliver a written document containing the custom report inventory with account-ID mappings, the Dolibarr module activation checklist, and the entity-tagging strategy summary. We support a one-week hypercare window for reconciliation issues. We do not rebuild SoftLedger workflows or automations in Dolibarr; these are outside standard migration scope and documented as a separate configuration task for the customer's admin.
Platform deep dives
SoftLedger
Source
Strengths
Weaknesses
Dolibarr ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. All 8 core objects map 1:1 between SoftLedger and Dolibarr ERP.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across SoftLedger and Dolibarr ERP.
Object compatibility
All 8 core objects map 1:1 between SoftLedger 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
SoftLedger: 200 requests per minute per organization; returns HTTP 429 when exceeded.
Data volume sensitivity
SoftLedger 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 SoftLedger to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your SoftLedger 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 SoftLedger
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.