ERP migration
Field-level mapping, validation, and rollback between Tuhund and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
Tuhund
Source
Dolibarr ERP
Destination
Compatibility
13 of 15
objects map 1:1 between Tuhund and Dolibarr ERP.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Tuhund to Dolibarr is a structural migration across two fundamentally different ERP philosophies. Tuhund is a branch-aware, multi-department platform from Bengaluru where the same entity (customer, product, user) can carry different configurations per branch. Dolibarr uses a flat, modular open-source model where users activate only the modules they need and third parties live as unified contact records without branch inheritance. We extract from Tuhund's integration API, scope the migration to a named branch or replicate across all branches, and resolve the multi-branch artifact layer before importing into Dolibarr's third-party, product, and document modules. We preserve line-item pricing on quotations and invoices, stock levels per location, and service request hierarchies. We do not migrate Tuhund's custom workflow approvals, branch-scoped automations, or department-level routing rules; these require rebuilding as Dolibarr module configuration post-migration. Dolibarr does not have a native cost-centre object, so Tuhund department associations on expense claims and purchase orders are preserved in custom fields for audit.
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 Tuhund 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.
Tuhund
Company
Dolibarr ERP
ThirdParty (mode = Company)
1:1Tuhund Company records (B2B contacts) map to Dolibarr ThirdParty in Company mode. The Company name maps to the name field, address and phone fields map directly, and the email maps to the email field. We use the ThirdParty email as the dedupe key during import. Branch associations from Tuhund are preserved in a custom text field tuhund_branch__c for audit and reporting in Dolibarr.
Tuhund
Person
Dolibarr ERP
ThirdParty (mode = Individual)
1:1Tuhund Person records (B2C contacts) map to Dolibarr ThirdParty in Individual mode. First name and last name split from the Tuhund full-name field using name-order detection, and the email maps to the email field. Individual mode enables Dolibarr's contact-specific fields (birthday, personal address) while preserving the original Tuhund Person ID in a custom field tuhund_person_id__c.
Tuhund
Branch
Dolibarr ERP
Extrafields on ThirdParty + Tag
lossyTuhund's multi-branch architecture has no direct Dolibarr equivalent because Dolibarr's third-party records are flat without branch inheritance. We map branch membership by creating a Dolibarr Tag for each Tuhund branch (e.g., branch_mumbai, branch_bengaluru) and attaching it to all third parties belonging to that branch via the Tag/Category system. This preserves branch provenance without requiring a custom branch object.
Tuhund
Department
Dolibarr ERP
Extrafields on User and Expense Claim
lossyTuhund departments associate with users, expense claims, and purchase orders. Dolibarr has no native department object, so we create a custom extrafields dropdown tuhund_department__c on Dolibarr User and Project records, populating it with the distinct department names from Tuhund. This keeps department provenance for audit without affecting Dolibarr's access control model.
Tuhund
Sales Quotation
Dolibarr ERP
Commercial Proposal (Propal)
1:1Tuhund Sales Quotations and Proforma Invoices map to Dolibarr Commercial Proposal (Propal). We map line items (product reference, quantity, unit price, discount) directly, preserve the quotation date and expiry date, and link the proposal to the corresponding ThirdParty. The tuhund_quotation_id__c field stores the original Tuhund document ID for reconciliation.
Tuhund
Commercial Invoice
Dolibarr ERP
Invoice (Facture)
1:1Tuhund Commercial Invoices map to Dolibarr Invoice. Invoice header fields (number, date, due date, total, tax amount) migrate with line items intact. Tuhund's tax calculation logic is not migrated; we preserve base amounts and tax amounts as separate fields in Dolibarr, and the customer reconciles tax accounts during post-migration setup. Invoice status (Draft, Validated, Paid, Cancelled) maps to Dolibarr's fk_statut.
Tuhund
Inventory / Product
Dolibarr ERP
Product
1:1Tuhund product records map to Dolibarr Product. We preserve product categories (mapped to Dolibarr Product Category), stock levels per location, and the SKU/reference field. Stock balances migrate as static values at migration time; we flag any product with zero stock for inventory count reconciliation post-migration.
Tuhund
Stock Location
Dolibarr ERP
Warehouse
1:1Tuhund stock locations map to Dolibarr Warehouse. Each warehouse record in Dolibarr stores the physical location, and stock entries per product per warehouse are created from Tuhund's stock-level data. Multi-location setups (one warehouse per Tuhund location) are preserved; if Tuhund has a single stock location, we default to the Dolibarr Default warehouse.
Tuhund
Purchase Order
Dolibarr ERP
Purchase Order (CommandeFournisseur)
1:1Tuhund Purchase Orders map to Dolibarr Purchase Order. We map vendor reference (linked to the Tuhund vendor ThirdParty), PO number, line items, quantities, and amounts. The GRN (Goods Receipt Note) association from Tuhund is preserved as a custom field tuhund_grn_ref__c on the Dolibarr receipt line, but GRN itself is not a separate Dolibarr object unless the Receipt module is activated.
Tuhund
Goods Receipt Note (GRN)
Dolibarr ERP
Supplier Receipt (Reception)
1:1Tuhund GRN records link to purchase orders and inventory updates. Dolibarr's Reception module (activated as part of the Purchase workflow) handles supplier receipt recording. We map GRN fields (receipt date, vendor, received quantities) to Dolibarr Reception, linking each receipt to the corresponding Purchase Order line item and updating product stock accordingly.
Tuhund
Service Request / Job Card
Dolibarr ERP
Ticket + Intervention
1:1Tuhund Service Requests map to Dolibarr Ticket, and Job Cards map to Dolibarr Intervention (if the Interventions module is activated). We preserve request status, priority, requester ThirdParty link, and the job card timeline. Warranty tracking from Tuhund's Services module is stored as a custom field tuhund_warranty_end_date__c on the Ticket or Product record, as Dolibarr's warranty tracking requires a community add-on module.
Tuhund
Expense Claim
Dolibarr ERP
Expense Report (ExpenseReport)
1:1Tuhund Expense Claims map to Dolibarr Expense Report if the HR module is activated. We migrate claim headers (submitter user, department, approval status), individual expense items (category, amount, date, description), and totals. Tuhund approval workflow state migrates as a read-only status field; approval routing is not migrated as Dolibarr does not replicate the same approval chain model.
Tuhund
Project / Task
Dolibarr ERP
Project + Task
1:1Tuhund Projects map to Dolibarr Project, and tasks map to Dolibarr Task with parent project linkage. Milestones from Tuhund map to Dolibarr Project milestones if the Project module is configured accordingly. Assignees resolve by email against the Dolibarr User table. Custom fields at project level require schema inspection before import.
Tuhund
User
Dolibarr ERP
User
1:1Tuhund User records map to Dolibarr User. We resolve by email match and preserve the Tuhund role assignment and branch/department associations in Dolibarr extrafields. Tuhund's permission model does not map to Dolibarr's permission set system; we deliver a role-reconciliation table as part of the migration output.
Tuhund
Attachment
Dolibarr ERP
Document via ContentDocumentLink
1:1Tuhund attachments associated with service requests, expense claims, and documents are downloaded via the Attachment Download API and stored in Dolibarr's documents directory, linked to the corresponding record via ContentDocumentLink. We flag attachments where the listing API does not expose the full set; the customer verifies completeness against Tuhund's document storage during the scoping walkthrough.
| Tuhund | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Company | ThirdParty (mode = Company)1:1 | Fully supported | |
| Person | ThirdParty (mode = Individual)1:1 | Fully supported | |
| Branch | Extrafields on ThirdParty + Taglossy | Fully supported | |
| Department | Extrafields on User and Expense Claimlossy | Fully supported | |
| Sales Quotation | Commercial Proposal (Propal)1:1 | Fully supported | |
| Commercial Invoice | Invoice (Facture)1:1 | Fully supported | |
| Inventory / Product | Product1:1 | Fully supported | |
| Stock Location | Warehouse1:1 | Fully supported | |
| Purchase Order | Purchase Order (CommandeFournisseur)1:1 | Fully supported | |
| Goods Receipt Note (GRN) | Supplier Receipt (Reception)1:1 | Fully supported | |
| Service Request / Job Card | Ticket + Intervention1:1 | Fully supported | |
| Expense Claim | Expense Report (ExpenseReport)1:1 | Fully supported | |
| Project / Task | Project + Task1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Attachment | Document via ContentDocumentLink1: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.
Tuhund gotchas
Per-customer module configuration creates schema drift
No publicly documented developer API
Long implementation cycles imply long extraction cycles
Geographic vendor presence affects support cadence
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 inspection and branch scoping
We query Tuhund's field metadata endpoint to identify all standard and custom fields across Companies, Persons, Sales Quotations, Invoices, Products, Purchase Orders, Service Requests, and Projects. We identify branch-scoped custom fields and department-level value lists. If the Tuhund instance spans multiple branches, we confirm the migration scope with the customer: a single named branch or all branches replicated into a single Dolibarr instance. The output is a written field mapping document covering every source field to its Dolibarr destination, including data types, picklist values, and any transformation logic required.
Dolibarr module activation and schema setup
We activate the required Dolibarr modules in a fresh installation or in a DoliCloud-hosted instance: ThirdParty/Contact, Product/Stock, BOM/Manufacturing (if applicable), Commercial Proposal, Invoice, Purchase Order, Reception, Ticket/Intervention, Project, and HR/ExpenseReport. We create extrafields for tuhund_branch__c, tuhund_department__c, and the original Tuhund record IDs. We configure Warehouse records to map against Tuhund stock locations and verify product categories align with Tuhund's product category hierarchy. All schema changes are tested in a staging Dolibarr instance before production data load.
Data extraction from Tuhund
We extract data from Tuhund's integration API in dependency order: ThirdParties (Companies then Persons), Users, Products with stock levels per location, Sales Quotations, Commercial Invoices, Purchase Orders, Goods Receipt Notes, Service Requests and Job Cards, Expense Claims, and Projects with Tasks. Each extraction produces a CSV or JSON snapshot with the original Tuhund record ID preserved in every row for reconciliation. We use exponential backoff and batch chunking on the Tuhund API to handle rate limits without data loss. Attachments are downloaded in parallel using the Attachment Download API.
Transformation and branch resolution
We apply the transformation logic identified during schema inspection: name splitting for Persons, email-based dedupe for ThirdParties, branch tag assignment for third parties and users, department extrafield population, and line-item extraction for all documents. For records originating from multiple branches, we resolve branch assignments and apply the appropriate tag. Custom field values are mapped from Tuhund's branch-specific value lists to Dolibarr picklist values using the translation table created during scoping. The transformation output is a set of import-ready files per Dolibarr entity.
Staged import into Dolibarr
We run import in dependency order: ThirdParties first (Companies then Persons), then Users, Products, Warehouses and stock entries, Commercial Proposals, Invoices, Purchase Orders, Receptions, Tickets and Interventions, Expense Reports, and Projects with Tasks. Each phase is validated with a row-count reconciliation report and a spot-check of 20-30 records against the source snapshot. Dolibarr's built-in import tool handles CSV loads for standard objects; larger volumes use the Dolibarr REST API with batch chunking and error retry. Attachments are linked to their parent records via ContentDocumentLink after all primary records are confirmed imported.
Cutover and migration completion
We freeze writes in Tuhund, run a final delta extraction for any records modified during the migration window, load the delta into Dolibarr, and confirm all row counts match. We deliver the migration completion report including record counts per entity, any records that could not be imported with reason codes, the attachment coverage summary, and the role-reconciliation table for Dolibarr User permissions. We provide a one-week hypercare window to resolve post-migration data discrepancies. We do not rebuild Tuhund's branch-scoped workflows, department approval routing, or warranty automation rules; these are documented in the workflow inventory and rebuilt by the customer's admin as Dolibarr module configuration.
Platform deep dives
Tuhund
Source
Strengths
Weaknesses
Dolibarr ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. All 8 core objects map 1:1 between Tuhund and Dolibarr ERP.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Tuhund and Dolibarr ERP.
Object compatibility
All 8 core objects map 1:1 between Tuhund 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
Tuhund: Not publicly documented.
Data volume sensitivity
Tuhund 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 Tuhund to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your Tuhund 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 Tuhund
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.