ERP migration

Migrate from NetSuite to Dolibarr ERP

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

NetSuite logo

NetSuite

Source

Dolibarr ERP

Destination

Dolibarr ERP logo

Compatibility

63%

10 of 16

objects map 1:1 between NetSuite and Dolibarr ERP.

Complexity

BStandard

Timeline

6-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from NetSuite to Dolibarr is a structural simplification. NetSuite's subsidiary-aware multi-entity architecture, where one database represents multiple legal entities with intercompany eliminations, has no native equivalent in Dolibarr. Each NetSuite subsidiary must map either to a separate Dolibarr installation (for full isolation) or to a distinct Dolibarr accounting entity configured with separate chart of accounts prefixes. We extract NetSuite's full transactional schema through SuiteQL, including custom fields (custbody_*, custrecord_*, custentity_*), resolve subsidiary-to-company mapping during discovery, and load data in dependency order: chart of accounts first, then entities (customers and vendors), then products and inventory, then open AR/AP balances, then historical journal entries with original posting dates. NetSuite SuiteFlow workflows, SuiteScript customizations, and OneWorld intercompany elimination rules do not migrate; we deliver a written inventory of these for the customer's administrator to evaluate against Dolibarr's modular feature set. Dolibarr's open-source PHP architecture means the customer can self-host, reducing or eliminating ongoing SaaS licensing costs that drive NetSuite renewal uplift complaints.

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

NetSuite logo

NetSuite

What's pushing teams away

  • Performance is a persistent pain point — opening a sales order or vendor bill takes 30–60 seconds, and follow-up actions like creating invoices are equally slow, frustrating daily users.
  • The HelpDesk module is widely described as inadequate for serious customer service operations, pushing teams to dedicated ticketing platforms they must then integrate.
  • E-invoicing functionality is described as unreliable and immature, requiring workarounds or external portals after months of promised fixes.
  • Hidden renewal uplift costs, module lock-in, and edition upgrades triggered by user or transaction growth surprise organizations at contract renewal.
  • The learning curve is steep — G2 reviews cite setup complexity, confusing role-based permissions, and a dated interface as top friction points for new administrators and end users.

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

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

NetSuite

Chart of Accounts

maps to

Dolibarr ERP

Accounting Module (Plan de Compte)

1:1
Fully supported

NetSuite Accounts map to Dolibarr accounting accounts using account type codes (0=Bank, 1=AR, 2=Inventory, 5=Fixed Assets, 10=AP, 21=Income, 23=COGS, 24=Expense). We preserve account numbers and names, and configure Dolibarr's accounting controller type (terme, tier, produit, TVA) per account. For multi-subsidiary NetSuite environments, each subsidiary's chart of accounts maps to a separate Dolibarr accounting entity or installation with distinct account prefix ranges to prevent cross-entity posting collisions.

NetSuite

Customer (Entity)

maps to

Dolibarr ERP

Third Party (Contact: Customer)

1:1
Fully supported

NetSuite Customer records map to Dolibarr Third Parties with the contact type set to Customer. Address records (billaddr, shipaddr) migrate to Dolibarr address records with type tags. NetSuite's custentity_* custom fields on Customer records map to Dolibarr extrafields on the llx_societe table. We preserve customer-specific pricing tiers as Dolibarr price levels attached to the Third Party record.

NetSuite

Vendor (Entity)

maps to

Dolibarr ERP

Third Party (Contact: Supplier)

1:1
Fully supported

NetSuite Vendor records map to Dolibarr Third Parties with the contact type set to Supplier. Tax registration fields (VAT number, employer identification) migrate to Dolibarr's third-party fiscal ID fields. NetSuite vendor-specific payment terms attached to the vendor record become Dolibarr payment term conditions on the Third Party.

NetSuite

Item (Inventory Assembly, Non-Inventory, Service)

maps to

Dolibarr ERP

Product (Simple, Stockable, Service)

1:1
Fully supported

NetSuite Items (inventory assembly, non-inventory, service, description-only types) map to Dolibarr Product records. Inventory assembly items with BOM relationships map to Dolibarr multi-level BOMs within the product sheet. NetSuite lot/serial tracking migrates to Dolibarr lot/serial numbers attached to stock movements. NetSuite pricing matrices (volume pricing, currency pricing) map to Dolibarr price lists attached to Product records.

NetSuite

Sales Order

maps to

Dolibarr ERP

Customer Order (Commande Client)

1:1
Fully supported

Open NetSuite Sales Orders migrate to Dolibarr Customer Orders. The order status (Pending Fulfillment, Pending Billing, Closed) maps to Dolibarr status codes (Draft, Validated, Shipped, Billed, Canceled). Line items migrate with quantities, unit prices, VAT rates, and discount percentages. Fulfilled lines without invoicing map to Dolibarr shipping records linked to the order.

NetSuite

Invoice (AR)

maps to

Dolibarr ERP

Customer Invoice (Facture Client)

1:1
Fully supported

NetSuite Invoice records map to Dolibarr Customer Invoices. For open invoices, we migrate the full invoice detail including line items, tax lines, payment terms, and due dates. For paid historical invoices, we migrate summary records with payment status closed and original posting date. NetSuite invoice numbers become Dolibarr ref_customer for cross-reference. Custom fields on invoices (custbody_*) migrate to Dolibarr extrafields on the llx_facture table.

NetSuite

Bill (AP)

maps to

Dolibarr ERP

Supplier Invoice (Facture Fournisseur)

1:1
Fully supported

NetSuite Vendor Bills map to Dolibarr Supplier Invoices. Open bills migrate with full line detail, expense categories, and due dates. Historical paid bills migrate as closed records with payment reference. NetSuite's terms (Net 30, Net 60) map to Dolibarr payment term conditions attached to the supplier third party. Discount fields (custbody_discount_percent) migrate to Dolibarr discount lines on the supplier invoice.

NetSuite

Open AR

maps to

Dolibarr ERP

Outstanding Customer Invoices

lossy
Fully supported

NetSuite open AR (outstanding receivables) migrates as open Dolibarr Customer Invoices with status set to Unpaid. Aging buckets, due dates, and payment terms are preserved. NetSuite payment holds and credit holds on customer accounts migrate to Dolibarr bloquecredit and bloqueed fields on the Third Party record. We do not recreate closed AR as historical transactions; open AR is the carryforward scope.

NetSuite

Open AP

maps to

Dolibarr ERP

Outstanding Supplier Invoices

lossy
Fully supported

NetSuite open AP (outstanding payables) migrates as open Dolibarr Supplier Invoices with status set to Unpaid. Due dates, aging buckets, and vendor payment terms are preserved. NetSuite vendor holds map to Dolibarr Third Party status flags. Open AP is carried forward as open balances rather than recreated as historical rows, matching how NetSuite structures the AP aging report.

NetSuite

Journal Entry

maps to

Dolibarr ERP

Accounting Entries (Ecritures Comptables)

1:1
Fully supported

NetSuite Journal Entries migrate to Dolibarr accounting entries with original posting dates and exchange rates preserved. Intercompany elimination entries (NetSuite subsidiary-to-subsidiary postings) are flagged for the customer's administrator to handle in Dolibarr because Dolibarr has no native intercompany elimination engine. Some organizations elect to carry forward open period balances only as fresh journal entries rather than replaying historical rows; we present both options during discovery and capture the choice in the migration contract before sequencing data.

NetSuite

Project (PSA)

maps to

Dolibarr ERP

Project (Projet)

1:1
Fully supported

NetSuite Projects (including PSA billing records, milestones, and resource allocations) map to Dolibarr Projects. Project status migrates (in progress, completed, on hold). Time entries attached to NetSuite Projects migrate to Dolibarr Project time tracking entries. Milestones migrate as Dolibarr Project task milestones. Project financials (billable hours, expenses) migrate to Dolibarr Project invoicing lines. Non-billable project costs and internal allocations are noted as requiring manual review post-migration.

NetSuite

Employee

maps to

Dolibarr ERP

User (HR Module) or Third Party

lossy
Fully supported

NetSuite Employee records map to Dolibarr User records if the HR module is enabled, or to Dolibarr Third Parties with a note if HR is not in scope. Compensation history, PTO balances, and benefits enrollment (effective-dated rows) require careful sequencing because NetSuite stores them as separate sublist rows that Dolibarr HR flattens into a single employee record. We migrate current employment status, department, and job title; historical compensation rows are migrated as notes on the Employee unless the customer specifies carryforward only.

NetSuite

Custom Record Type

maps to

Dolibarr ERP

Dolibarr extrafields or separate module

lossy
Fully supported

NetSuite Custom Records (custrecord_* script IDs) have no direct Dolibarr equivalent. We assess each custom record type during discovery: records with a 1:1 relationship to a standard object (e.g., custom compliance data attached to a customer) migrate as extrafields on the corresponding Dolibarr table (llx_societe). Records that function as independent objects with their own sublists and relationships require a separate Dolibarr module or external table that we document in the schema design phase.

NetSuite

Tax Codes and Jurisdictions

maps to

Dolibarr ERP

VAT/TAX Configuration

lossy
Fully supported

NetSuite tax codes (nexus, rates, filing jurisdictions) map to Dolibarr's TVA (VAT) and local tax configuration. Nexus assignments require manual review because Dolibarr manages tax applicability at the third-party or product level rather than as a separate nexus registry. We preserve the full NetSuite tax code registry as a reference document for the customer's administrator to reconfigure in Dolibarr's tax management module.

NetSuite

Subsidiary

maps to

Dolibarr ERP

Separate Dolibarr Installation or Accounting Entity

1:many
Fully supported

NetSuite's subsidiary model has no native Dolibarr equivalent. Each NetSuite subsidiary must map to either a separate Dolibarr installation (for full legal entity isolation with independent databases) or a distinct Dolibarr accounting entity with separate account prefix ranges and dedicated chart of accounts. Intercompany transactions between subsidiaries require manual reconfiguration in Dolibarr because there is no automatic elimination engine. We build the subsidiary-to-company map during discovery, validate account prefix assignments, and document which subsidiaries will require separate installations versus shared-instance configuration.

NetSuite

File Cabinet (Document attachments)

maps to

Dolibarr ERP

Dolibarr Document Management

1:1
Fully supported

NetSuite File Cabinet documents attached to records migrate as Dolibarr attachments linked to the corresponding record (Invoice, Order, Third Party, Product). File metadata (name, size, upload date) migrates; large file transfers are chunked and retried under rate limit constraints. Dolibarr's /documents/ directory structure replicates the NetSuite file cabinet hierarchy where accessible via REST.

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.

NetSuite logo

NetSuite gotchas

High

API concurrency limits gate extraction throughput

High

Subsidiary-to-company mapping is structural, not cosmetic

High

Service tier transaction-line limits block migration mid-flight

Medium

Custom records and custom fields have no standard schema

Medium

Historical journal entries require strict sequencing

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

  • Subsidiary model has no native Dolibarr equivalent

    NetSuite's subsidiary-aware multi-entity architecture lets one database represent multiple legal entities with intercompany eliminations. Dolibarr has no subsidiary concept, no intercompany elimination engine, and no consolidated reporting across legal entities built in. Each NetSuite subsidiary must map to either a separate Dolibarr installation (full isolation) or a distinct Dolibarr accounting entity with dedicated account prefix ranges. Getting this wrong causes posting errors and cross-entity balance contamination. We build the subsidiary-to-company map during the discovery phase and configure Dolibarr's accounting entities or installation strategy before any data lands.

  • NetSuite custom fields require Dolibarr extrafields setup before import

    NetSuite environments contain unique custom field registries (custbody_*, custcol_*, custentity_*, custrecord_*) that cannot be discovered via public documentation. We run a SuiteQL metadata discovery pass against the account's REST endpoint to enumerate all active custom objects and fields before building the migration map. Each discovered custom field maps to a Dolibarr extrafield on the corresponding llx_* table. Custom fields on transaction lines (custcol_*) require special handling in REST/SOAP payloads and must be declared in Dolibarr's dolibarr_min/max fields before import or they are silently ignored.

  • API concurrency limits gate NetSuite extraction throughput

    NetSuite enforces concurrent API request limits (15 for default tier, up to 55 with SuiteCloud Plus licenses). We monitor concurrency headers and implement exponential backoff with a queue system. If we exceed concurrency during a large migration, NetSuite queues or rejects requests with 429/403 responses. We scope each migration within the account's tier ceiling and chunk exports into date-bounded batches of up to 1,000 records per request to stay within limits. Running over the tier ceiling during migration can trigger a forced service tier upgrade or a billing event.

  • Service tier transaction-line limits can block migration mid-flight

    NetSuite service tiers cap monthly transaction lines (Standard: 200K, Premium: 2M, Enterprise: 10M, Ultimate: 50M). A large migration can push an account over its tier ceiling, triggering a forced upgrade or billing event. We monitor the running six-month average during migration and pace exports to stay within tier limits. We flag when a migration scope will require a tier upgrade before committing to a timeline. This is particularly relevant for companies migrating off NetSuite who may not want to pay for a tier upgrade just to extract their data.

  • Dolibarr PHP file permissions can block document and folder operations

    Dolibarr's document validation workflow renames folders and files when a document is approved (order, invoice, proposal). Permission errors on the /documents/ directory cause silent validation failures with a ROLLBACK in the Dolibarr syslog. We verify web server write permissions on /documents/ and its subdirectories before migration, and we flag any custom numbering systems that use illegal filesystem characters (such as '/') because Dolibarr cannot rename folders containing these characters during validation.

Migration approach

Six steps for a successful NetSuite to Dolibarr ERP data migration

  1. Discovery and subsidiary mapping design

    We audit the NetSuite account across subsidiaries, custom record types, custom field registries (via SuiteQL metadata pass), transaction volume by type, open AR/AP aging, inventory lot/serial counts, and journal entry date ranges. We pair this with a Dolibarr installation assessment: self-hosted (dedicated server, VPS) or DoliCloud, PHP version, MySQL/MariaDB version, and which Dolibarr modules are activated. The discovery output is a written migration scope that includes the subsidiary-to-company map, extrafields list, and a decision on whether to replay historical journal entries or carry forward open-period balances only.

  2. Dolibarr schema preparation

    We configure Dolibarr before any data arrives: activate required modules (Third Parties, Products, Commercial, Stock, Invoicing, Accounting, Projects, HR if in scope), create the accounting chart of accounts, define accounting entities or plan for separate installations per subsidiary, and create all extrafields discovered from the NetSuite metadata pass. We configure Dolibarr's accounting fiscal year to match or align with the migration cutover date. Schema preparation is validated against the NetSuite data model before extraction begins.

  3. Sandbox migration and reconciliation

    We run a full migration into a Dolibarr sandbox (a separate installation or a cloned database) using production-equivalent data volume. The customer's finance lead reconciles account balances (NetSuite Trial Balance vs Dolibarr accounting report), spot-checks 25-50 random records (customer addresses, invoice totals, inventory quantities) against the NetSuite source, and signs off the schema and mapping before production migration begins. Any mapping corrections happen here, not in production. Sandbox reconciliation is the gate before we commit to a production cutover date.

  4. Data extraction with concurrency management

    We extract NetSuite data through the REST/SOAP SuiteTalk API with date-bounded batches and exponential backoff under concurrency limits. Extraction order is driven by dependency: chart of accounts first (account numbers required for journal lines), then entity master data (customers and vendors), then product and inventory data, then open AR/AP, then historical transactions. Custom fields are extracted in parallel with their parent objects. We monitor the running six-month transaction line average against the account's service tier ceiling and pace extraction to avoid triggering a forced tier upgrade.

  5. Production migration in dependency order

    We run production migration in record-dependency order: accounting chart (first), third parties (customers and vendors with address and contact records), products with BOMs and lot/serial data, open AR/AP invoices, historical journal entries with original posting dates, projects and time entries, and employees. Each phase emits a row-count reconciliation report before the next phase begins. We freeze NetSuite write access during the cutover window and run a final delta migration of any records modified during the migration window before closing the NetSuite instance.

  6. Cutover, validation, and workflow handoff

    We disable write access to NetSuite, run a final delta extraction, load the delta into Dolibarr, and close the migration. We deliver a reconciliation report comparing NetSuite closing balances to Dolibarr opening balances across AR, AP, inventory on-hand, and the trial balance. We deliver a written inventory of NetSuite SuiteFlow workflows, saved searches, and SuiteScript customizations that require manual evaluation in Dolibarr's context. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild NetSuite workflows in Dolibarr as standard scope; that is a separate engagement because Dolibarr has no native visual workflow engine.

Platform deep dives

Context on both ends of the pair

NetSuite logo

NetSuite

Source

Strengths

  • Single database architecture consolidates financials, inventory, CRM, and ecommerce with no integration required between modules.
  • Subsidiary-aware multi-entity model natively handles intercompany eliminations and consolidated reporting without separate databases.
  • SuiteBuilder and SuiteFlow allow non-developer administrators to create custom fields, record types, and automated workflows.
  • Real-time dashboards and saved searches give finance teams live visibility without relying on Excel consolidation.
  • Strong inventory management with lot/serial tracking, multi-location fulfillment, and WMS capabilities.

Weaknesses

  • Page load and transaction save times are slow — 30–60 seconds for routine operations frustrate daily users.
  • The native HelpDesk module is considered inadequate by G2 reviewers, with 386 mentions calling for improvement.
  • E-invoicing capabilities are immature and unreliable in practice, requiring workarounds for multi-country compliance.
  • Renewal uplift pricing, edition upgrades triggered by transaction growth, and module lock-in create cost surprises at renewal.
  • Steep learning curve and a dated, non-intuitive interface increase onboarding time for new administrators and end users.
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 NetSuite and Dolibarr ERP.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between NetSuite 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

    NetSuite: 15 concurrent requests (default); up to 55 on Tier 5 with SuiteCloud Plus; 1,000 records per request; 60-second and 24-hour frequency windows per account.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between six and eight weeks for single-subsidiary NetSuite accounts with under 10,000 customers/vendors, straightforward inventory (no lot/serial complexity), and open-period balance carryforward (no multi-year journal entry replay). Migrations with multiple NetSuite subsidiaries requiring separate Dolibarr installation architecture, large custom field registries (over 50 fields), lot/serial inventory history, or multi-year journal entry carryforward move to twelve to eighteen weeks because of subsidiary-to-company mapping complexity, extrafields schema creation, and journal entry sequencing with exchange rate preservation.

Adjacent paths

Related migrations to explore

Ready when you are

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