ERP migration
Field-level mapping, validation, and rollback between KeyedIn and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
KeyedIn
Source
Dolibarr ERP
Destination
Compatibility
8 of 12
objects map 1:1 between KeyedIn and Dolibarr ERP.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from KeyedIn to Dolibarr is a platform-type migration: KeyedIn is an enterprise PPM with per-seat licensing, a dated UI, and no public API; Dolibarr is free open-source ERP/CRM with a modular activation model and self-hosted deployment. The migration requires solving three structural problems at once. First, KeyedIn maintains two un-synchronized milestone tracking mechanisms — standalone Deliverables and Milestones embedded within Task Plans — and we resolve which records represent canonical milestones before writing to Dolibarr to prevent double-counting. Second, KeyedIn has no documented public REST API; data extraction requires either a managed application export, a Jitterbit connector (for integration customers), or direct database access for on-premise deployments, and we coordinate the extraction path during discovery. Third, Dolibarr ships as a modular platform — we pre-activate the Project Management, Third Party/Contacts, and other relevant modules before migration begins so that the target schema exists when records land. We do not migrate KeyedIn Workflows, automations, or reporting configurations; we deliver a written inventory of these for your admin to rebuild in Dolibarr's action/computation module or via a custom 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 KeyedIn 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.
KeyedIn
Project
Dolibarr ERP
Project
1:1KeyedIn Projects map directly to Dolibarr Project records. We preserve project name, status (Draft, Active, On Hold, Complete), start and end dates, and budget amounts. The KeyedIn project owner maps to the Dolibarr Project contact or user reference. Status values are translated to Dolibarr's fk_statut enumeration (0=Draft, 1=Open, 2=Closed).
KeyedIn
Task
Dolibarr ERP
Project Task
1:1KeyedIn Tasks nested under Projects map to Dolibarr ProjectTask records. Parent-child task hierarchy is preserved by ordering imports by parent task reference and resolving the fk_task_parent foreign key. Start and end dates, assignees (linked to Dolibarr User or Contact), and task status migrate directly. Subtasks at the third level are flattened into child Tasks if no third-level nesting exists in the destination Dolibarr configuration.
KeyedIn
Resource (People or Pool)
Dolibarr ERP
User or Third Party
lossyKeyedIn Resources (People entities used for allocation and capacity planning) map to Dolibarr User records if they are internal employees. Generic resource pool entities map to Dolibarr Third Party contacts. Resource-to-project assignments migrate as separate allocation records, which are represented in Dolibarr as Task assignments linked to the Project. Capacity and forecasting data from KeyedIn is held for customer decision since Dolibarr's project module does not include a native capacity heatmap.
KeyedIn
Portfolio
Dolibarr ERP
Category or Tag
1:1KeyedIn Portfolios group related Projects for executive visibility. We migrate Portfolio-to-Project associations as Dolibarr Categories (multicateg table) or Tags depending on which module the customer has activated. The customer selects the association strategy during scoping. This preserves which projects belong to which portfolio grouping without requiring a custom junction object.
KeyedIn
Deliverable (standalone milestone)
Dolibarr ERP
Project Milestone
1:1KeyedIn standalone Deliverables map to Dolibarr Project Milestone records attached to the parent Project. We resolve the parent Project reference by querying the Task Plan that the Deliverable is linked to, then tracing to the owning Project. Milestone name, due date, percentage complete, and status migrate. Milestones that have no parent Task Plan link are flagged as orphaned and held for customer resolution before import.
KeyedIn
Task Plan Milestone
Dolibarr ERP
Project Milestone (resolved)
1:1KeyedIn Milestones embedded within Task Plans also map to Dolibarr Project Milestone records. Where a Task Plan Milestone and a standalone Deliverable represent the same milestone (identified by matching name, date, and parent Project), we flag the duplicate pair, present it to the customer for resolution, and migrate only the resolved canonical record. This prevents double-counting in Dolibarr project progress reporting.
KeyedIn
Time Entry
Dolibarr ERP
Project Task Time
1:1KeyedIn Time Entries logged against Tasks migrate to Dolibarr ProjectTaskTime records linked to the corresponding ProjectTask. Hours, date, and billable flag migrate directly. Time entries without a valid parent Task reference are held for reconciliation; the customer resolves these against the KeyedIn source before final import.
KeyedIn
Financial Budget (Enterprise)
Dolibarr ERP
Project Cost or Invoice (module-dependent)
lossyKeyedIn Enterprise financial data — budgets, cost codes, and financial line items — is migrated as a separate data plane from tasks. We map budget amounts to Dolibarr Project cost fields if the Project Cost module is activated, or to invoice and expense records in the invoicing module if the customer prefers financial tracking through invoices. Currency mismatches and missing cost codes are flagged before write. This plane requires explicit customer decision on Dolibarr module activation during scoping.
KeyedIn
Risk and Issue
Dolibarr ERP
Project Note or Action (module-dependent)
1:1KeyedIn Risks and Issues logged at the Project level map to Dolibarr Project Note records with a type indicator (Risk vs Issue) or to the Action/Event module if the customer has activated it. Severity, status, owner, and description migrate directly. The link back to the parent Project is preserved as a foreign key reference. Risk probability and impact scores from KeyedIn are held in custom fields on the Dolibarr record if the customer requires the additional data.
KeyedIn
Document and Attachment
Dolibarr ERP
Document (linked file)
1:1Documents attached to KeyedIn Projects or Tasks are stored as file metadata with URL reference and name. We migrate the file metadata and links as Dolibarr Document records attached to the corresponding Project or ProjectTask. Actual file blobs are migrated as file transfers if the customer provides a file share or cloud storage location, or flagged for manual re-upload if extraction of binary files is not available from the KeyedIn deployment.
KeyedIn
Custom Field (Project, Task, other)
Dolibarr ERP
ExtraFields
lossyKeyedIn tenant-specific custom fields are discovered during the discovery phase and mapped to Dolibarr ExtraFields on the corresponding object (Project, ProjectTask, ThirdParty). We create the ExtraField definition in Dolibarr with the correct type (string, integer, select, date, etc.) before importing data, ensuring no custom field data is silently dropped. Fields with no Dolibarr equivalent are held in a catch-all custom field group for customer decision.
KeyedIn
Pipeline Stage (Status Workflow)
Dolibarr ERP
Project Status
lossyKeyedIn status values representing pipeline or workflow stages (Draft, Active, On Hold, Complete) are enumerated values that map to Dolibarr's fk_statut values on Project. We generate a status mapping table during scoping, present it for customer confirmation, and apply the mapping during migration. Any KeyedIn custom status values without a Dolibarr equivalent are either mapped to the nearest standard status or flagged for custom status extension in Dolibarr.
| KeyedIn | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Project | Project1:1 | Fully supported | |
| Task | Project Task1:1 | Fully supported | |
| Resource (People or Pool) | User or Third Partylossy | Fully supported | |
| Portfolio | Category or Tag1:1 | Fully supported | |
| Deliverable (standalone milestone) | Project Milestone1:1 | Fully supported | |
| Task Plan Milestone | Project Milestone (resolved)1:1 | Fully supported | |
| Time Entry | Project Task Time1:1 | Fully supported | |
| Financial Budget (Enterprise) | Project Cost or Invoice (module-dependent)lossy | Fully supported | |
| Risk and Issue | Project Note or Action (module-dependent)1:1 | Fully supported | |
| Document and Attachment | Document (linked file)1:1 | Fully supported | |
| Custom Field (Project, Task, other) | ExtraFieldslossy | Fully supported | |
| Pipeline Stage (Status Workflow) | Project Statuslossy | 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.
KeyedIn gotchas
Deliverables vs Task Plan Milestone duplication
Financial data stored separately from tasks
Custom field schema varies per tenant
No publicly documented bulk export or API
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 extraction method confirmation
We audit the source KeyedIn deployment across tier (Team, Professional, Enterprise), deployment type (cloud SaaS or on-premise), available extraction method (managed export, Jitterbit connector, or direct database), custom field inventory, and data volume estimates for Projects, Tasks, Resources, Deliverables, Task Plans, Time Entries, and Financial line items. We also confirm which Dolibarr modules the customer has activated or plans to activate. The discovery output is a written migration scope, an extraction method recommendation, and a Dolibarr module activation checklist for the customer's admin.
Milestone deduplication design
We run a pre-migration scan of all Deliverable and Task Plan Milestone records to identify duplicate pairs. Duplicates are identified by matching name, due date, and parent Project reference. We present the duplicate pairs to the customer with KeyedIn record IDs and recommend the canonical record to keep. The customer approves the deduplication rules before migration begins. The output is a signed deduplication decision document that drives the milestone migration logic.
Dolibarr schema preparation and module activation
We work with the customer's Dolibarr admin to confirm module activation (Project Management at minimum, plus Invoicing, Third Party, or other modules based on the scope). We create ExtraField definitions for all KeyedIn custom fields, map status values to Dolibarr fk_statut enumerations, and configure the Project and ProjectTask object schemas. Schema is validated in the customer's Dolibarr instance before any data extraction begins. This step ensures the target tables exist when we attempt to write.
Data extraction and transformation
We coordinate data extraction with the customer's KeyedIn deployment team using the confirmed extraction method. For managed exports, we receive a structured export file and validate it against the discovery inventory. For database exports, we write a read-only query set and validate field coverage. We transform the extracted data: resolving the Deliverable-Task Plan milestone deduplication, mapping owner references to Dolibarr User or Contact records, translating financial line items to the correct module, and flagging any records with missing parent references for customer resolution. The output is a staged, transformed dataset ready for Dolibarr import.
Sandbox migration and reconciliation
We run a full migration into the customer's Dolibarr instance (or a staging environment if one exists) using production-like data volume. The customer's admin reconciles record counts (Projects in, Tasks in, Milestones in, Time Entries in, Financial line items in), spot-checks 25-50 random records against the KeyedIn source, and signs off the mapping and deduplication logic before production migration begins. Any mapping corrections, custom field additions, or module activation gaps surface here.
Production migration in dependency order
We run production migration in record-dependency order: Dolibarr Users and Third Parties (manual provisioning, validated), Projects, ProjectTasks (with parent hierarchy resolved), Project Milestones (with deduplication applied), Time Entries (with Task foreign key resolved), Risks and Issues, Documents and Attachments (metadata and links), and Financial line items (final plane, after project budgets are confirmed). Each phase emits a row-count reconciliation report before the next phase begins. Any records with failed parent lookups are held in a retry queue and resolved before the phase closes.
Cutover, validation, and automation inventory delivery
We freeze KeyedIn writes during cutover, run a final delta migration of records modified during the migration window, then enable Dolibarr as the system of record. We deliver a written inventory of KeyedIn Workflows, automations, and reporting configurations that require rebuild in Dolibarr's Action/Computation module or via a custom module development. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild KeyedIn Workflows as Dolibarr automations inside the migration scope; that is a separate engagement.
Platform deep dives
KeyedIn
Source
Strengths
Weaknesses
Dolibarr ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. All 8 core objects map 1:1 between KeyedIn and Dolibarr ERP.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across KeyedIn and Dolibarr ERP.
Object compatibility
All 8 core objects map 1:1 between KeyedIn 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
KeyedIn: Not publicly documented.
Data volume sensitivity
KeyedIn 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 KeyedIn to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your KeyedIn 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 KeyedIn
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.