ERP migration
Field-level mapping, validation, and rollback between Grade and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
Grade
Source
Dolibarr ERP
Destination
Compatibility
11 of 12
objects map 1:1 between Grade and Dolibarr ERP.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Grade is a niche ERP platform with no documented API, no publicly available object model, and no confirmed export mechanism in the research record. Any migration from Grade to Dolibarr begins with a mandatory schema discovery phase where we inspect a live Grade instance to reverse-engineer its database tables, custom field definitions, and relationship keys before designing the Dolibarr destination schema. Dolibarr is an open-source, modular ERP and CRM with well-documented llx_* table architecture that covers third parties, contacts, products, invoices, orders, projects, contracts, and stock. We migrate records in dependency order—third parties first, then contacts, then financial documents, then activity history—using Dolibarr's native import module for flat files and direct SQL injection for bulk operations where performance requires it. Workflows, automations, and custom modules from Grade do not migrate; we deliver a written inventory for your admin to rebuild in Dolibarr's module framework.
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 Grade 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.
Grade
Third Party / Organization
Dolibarr ERP
llx_societe (ThirdParty)
1:1Grade's organizational records map to Dolibarr's llx_societe table. We discover the source column names during the schema discovery phase (mandatory before this mapping can be confirmed). Dolibarr stores the primary contact on each third-party record and supports separate contact sub-records on llx_socpeople. We use the Grade organization name as the nom (company name) field and infer the country code, VAT number, and postal address from any labeled Grade fields. Third parties must import before contacts because llx_socpeople.fk_soc references llx_societe.rowid.
Grade
Contact / Person
Dolibarr ERP
llx_socpeople (Contact)
1:1Individual contacts from Grade map to llx_socpeople linked to a parent llx_societe record via fk_soc. We extract first name, last name, email, phone, and role/position from Grade. If Grade stores multiple contact roles per person, we create separate llx_socpeople records and use the llx_element_contact table to manage the many-to-many role linkage to Dolibarr objects (invoices, projects, orders). Dolibarr's contact type (customer, supplier, prospect) is set via the llx_socpeople.prospect, llx_socpeople.client, and llx_socpeople.fournisseur flags.
Grade
Product / Item
Dolibarr ERP
llx_product (Product or Service)
1:1Grade products map to llx_product. We discover Grade's product fields (SKU, name, description, unit price, cost price, stock quantity) during the schema discovery phase. Dolibarr distinguishes products with stock tracking (type=0) from services (type=1). If Grade has a stock quantity field, we map it to llx_product.pmp (weighted average cost) and rely on Dolibarr's llx_product_stock table for actual stock levels. Product must exist before any invoice line items reference it.
Grade
Invoice / Bill (Customer)
Dolibarr ERP
llx_facture (Customer Invoice)
1:1Grade customer invoices map to llx_facture with faciture=0 (customer invoice, not supplier). We map invoice number to ref, issue date to datef, due date to date_echeance, and total amount to total_ht, total_tva, and total_ttc. The fk_soc field links to llx_societe.rowid. Line items migrate to llx_facturedet with fk_product resolved against the product table. Invoice status (draft, validated, paid, abandoned) maps to Dolibarr's fk_statut field (0-2 range).
Grade
Invoice / Bill (Supplier)
Dolibarr ERP
llx_facture_fournisseur (Supplier Invoice)
1:1Grade supplier invoices map to llx_facture_fournisseur. The same field mapping logic applies (datef, date_echeance, total_ht, total_tva, total_ttc) with faciture=1 flag. The fk_soc field links to the supplier's llx_societe record. Supplier invoice lines migrate to llx_facture_fourn_det with product references resolved. If Grade does not distinguish customer from supplier invoices, we flag this for customer confirmation during scoping.
Grade
Quote / Proposal
Dolibarr ERP
llx_propal (Commercial Proposal)
1:1Grade quotes or sales proposals map to llx_propal. We map quote number to ref, date to datep, expiry date to date_lim_reglement, and line items to llx_propaldet. The fk_soc links to the customer. Quote status (draft, sent, won, lost) maps to fk_statut (0-3). Dolibarr's proposal can be converted to an invoice directly; we flag this workflow option for the customer admin post-migration.
Grade
Order / Purchase Order
Dolibarr ERP
llx_commande (Customer Order)
1:1Grade customer orders map to llx_commande. We map order number to ref, order date to date_commande, expected delivery to date_livraison, and line items to llx_commandedet. The fk_soc field links to the customer. If Grade has purchase orders (supplier orders), these map to llx_commande_fournisseur with a separate import run and fk_soc pointing to the supplier third party.
Grade
Project / Task
Dolibarr ERP
llx_projet (Project)
1:1Grade projects map to llx_projet with title, description, date_start, date_end, and budget amounts. We map the project status to fk_statut (0-2 for draft/active/closed). Tasks under a project map to llx_projet_task with fk_projet as the parent reference. If Grade stores task assignments, we resolve the assignee to llx_user.rowid via email matching. Dolibarr's project module must be enabled in Module setup before project data can import.
Grade
Contract / Subscription
Dolibarr ERP
llx_contrat (Contract)
1:1Grade contracts or subscriptions map to llx_contrat linked to llx_societe via fk_soc. Contract start date, end date, and terms migrate to the corresponding llx_contrat fields. Line items for recurring services migrate to llx_contratdet. Dolibarr's contract module tracks service line status (in progress, fulfilled, terminated) via fk_statut. The llx_contrat_extrafields table is available for any Grade custom contract fields discovered during schema analysis.
Grade
Expense / Receipt
Dolibarr ERP
llx_expensereport (Expense Report)
1:1Grade expense records map to llx_expensereport for the report header and llx_expensereport_det for individual expense lines. Expense date, amount, category, and description migrate to the corresponding fields. If Grade expense records are standalone (not wrapped in a report), we create a single llx_expensereport per record and set status to validated. The linked llx_user.fk_user_author field is resolved via email matching against the Dolibarr user table.
Grade
User / Employee
Dolibarr ERP
llx_user (Dolibarr User)
1:1Grade user accounts that represent employees or system operators map to llx_user. We resolve by email address as the dedupe key. The migration user (FlitStack AI's service account) is created in Dolibarr before any data import begins to serve as the fk_user_author on audit fields. Grade users that are purely contact records (no system login) are mapped to llx_socpeople instead. The customer's Dolibarr admin provisions the active user accounts post-migration if Grade user data is incomplete or the password hashes cannot be imported.
Grade
Custom Object / Unknown Entity
Dolibarr ERP
Dolibarr custom table (llx_extrafields or custom module)
lossyGrade's undocumented custom objects require discovery before mapping. We inspect the Grade database for tables not matching standard ERP naming conventions, identify foreign key relationships, and either map them to existing Dolibarr modules (Projects, Contracts, Orders) or create a Dolibarr custom table. Custom fields on standard objects (e.g., extra fields on invoices) use Dolibarr's llx_extrafields tables with the pattern llx_[object]_extrafields. The migration does not include custom module code from Grade; only the data migrates if the module structure can be reverse-engineered.
| Grade | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Third Party / Organization | llx_societe (ThirdParty)1:1 | Fully supported | |
| Contact / Person | llx_socpeople (Contact)1:1 | Fully supported | |
| Product / Item | llx_product (Product or Service)1:1 | Fully supported | |
| Invoice / Bill (Customer) | llx_facture (Customer Invoice)1:1 | Fully supported | |
| Invoice / Bill (Supplier) | llx_facture_fournisseur (Supplier Invoice)1:1 | Fully supported | |
| Quote / Proposal | llx_propal (Commercial Proposal)1:1 | Fully supported | |
| Order / Purchase Order | llx_commande (Customer Order)1:1 | Fully supported | |
| Project / Task | llx_projet (Project)1:1 | Fully supported | |
| Contract / Subscription | llx_contrat (Contract)1:1 | Fully supported | |
| Expense / Receipt | llx_expensereport (Expense Report)1:1 | Fully supported | |
| User / Employee | llx_user (Dolibarr User)1:1 | Fully supported | |
| Custom Object / Unknown Entity | Dolibarr custom table (llx_extrafields or custom module)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.
Grade gotchas
Cross-module data lineage (time entry -> invoice -> payroll) must be preserved
Services-shaped data model does not include inventory or MRP
Resume files and AI-parsed candidate data are two separate artifacts
Free / discounted tiers (non-profits, Ukrainian companies) carry feature restrictions
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
Schema discovery and Grade instance inspection
We begin by inspecting a live Grade instance via database credentials (MySQL or PostgreSQL read access) or through any available admin export interface. We enumerate all tables, identify naming conventions, map foreign key relationships, and locate custom field storage. We produce a Grade Data Dictionary document listing every source table, its columns, and its relationships. This phase is mandatory before Step 2 because no reliable mapping can begin without confirmed source schema information. It typically requires one to two weeks and access to Grade's hosting environment or a database backup.
Dolibarr destination setup and module activation
We provision the Dolibarr instance (self-hosted on the customer's server or via DoliCloud) and activate the required modules based on the discovered Grade schema. We create the custom field structures (llx_extrafields tables) for any Grade custom fields that do not map directly to standard Dolibarr fields. We configure third-party type flags (customer, supplier, prospect) and any required Dolibarr dictionaries (countries, price categories, VAT rules). This phase requires a Dolibarr admin login and runs in parallel with the Grade schema discovery.
Staging migration and record reconciliation
We run a full migration into a staging Dolibarr instance using a Grade data snapshot. We reconcile record counts (third parties in, contacts in, products in, invoices in) against the source snapshot, spot-check 20-30 random records for field-level accuracy, and verify that cross-object links (invoice-to-third-party, project-to-task) are intact in the llx_element_element table. Any mapping corrections happen in staging before production migration begins. We do not migrate to production until the staging sign-off is received from the customer's designated data owner.
User reconciliation and admin provisioning
We extract every distinct user and contact reference from Grade's data and match them against the Dolibarr user table. Grade users that represent system operators map to llx_user and require the customer to provision the accounts with correct email and role (sales, admin, readonly). Grade contacts that represent business contacts map to llx_socpeople and are imported during the contact phase. Any orphaned references (Grade users with no matching Dolibarr user) are flagged for manual provisioning before the final production migration run.
Production migration in dependency order
We run production migration in strict dependency order: third parties (llx_societe) first, then contacts (llx_socpeople with fk_soc resolved), then products (llx_product with price entries), then financial documents (invoices, quotes, orders with fk_soc and product references resolved), then projects and contracts, then activity history, then expense reports. Each phase emits a row-count reconciliation report before the next phase begins. If Grade uses a database not natively supported by Dolibarr's PHP backend, we export to CSV and use Dolibarr's native import module for flat files.
Cutover, final delta, and automation inventory handoff
We freeze writes to Grade during the cutover window, run a final delta migration capturing any records created or modified during the migration run, then hand over a cutover report with record counts by object and any unresolved items. We deliver the Grade workflow and automation inventory document to the customer's admin for rebuild in Dolibarr. We support a five-business-day hypercare window for reconciliation issues. We do not rebuild Grade workflows as Dolibarr workflows inside the migration scope; that is a separate engagement.
Platform deep dives
Grade
Source
Strengths
Weaknesses
Dolibarr ERP
Destination
Strengths
Weaknesses
Complexity grading
Moderate ERP migration. 2 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Grade and Dolibarr ERP.
Object compatibility
2 of 8 objects need a manual workaround.
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
Grade: Not publicly documented — rate limits are not published on the marketing site..
Data volume sensitivity
Grade 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 Grade to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your Grade 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 Grade
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.