CRM migration
Field-level mapping, validation, and rollback between OpenCRM and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
OpenCRM
Source
Nutshell
Destination
Compatibility
6 of 8
objects map 1:1 between OpenCRM and Nutshell.
Complexity
CModerate
Timeline
2-3 weeks
Overview
OpenCRM and Nutshell occupy a similar mid-market sweet spot for small-to-midsize sales teams, but the two platforms differ materially in their data architecture and export constraints. OpenCRM stores relationships through foreign-key linking between Contacts and Companies and requires a specific import ordering sequence; Nutshell enforces its own field types and restricts API access to its Enterprise tier. We resolve the Contact-to-Company lookup by exporting Companies first, staging Contacts with their parent reference, then loading Deals last. We flag any orphaned records before committing the import and deliver a written stage-mapping table for your admin to confirm before the Deal pipeline lands in the correct Nutshell pipeline stage. Workflows, automations, and sequences do not migrate as code; we provide an inventory for your team to rebuild in Nutshell's automation layer 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 OpenCRM object lands in Nutshell, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
OpenCRM
Company
Nutshell
Account
1:1OpenCRM Company records map directly to Nutshell Account. We export Companies from OpenCRM via the UI-based CSV export first, since Contacts reference Company as a parent entity. The OpenCRM record ID is retained as an external reference column for deduplication during import. Account Name, Website, Industry, Phone, and Address fields map 1:1; any custom fields on Companies are created as matching Nutshell custom fields before import.
OpenCRM
Contact
Nutshell
Person
1:1OpenCRM Contact records map to Nutshell People (the Nutshell term for individual contact records). We stage Contacts after Companies and resolve the parent Account reference by matching the OpenCRM Company name or external ID to the Nutshell Account created in the prior phase. Name, Email, Phone, Title, and Address fields map directly; custom Contact fields are created in Nutshell and mapped field-by-field during staging. We flag any Contact without a valid parent Company for customer review before the import commits.
OpenCRM
Deal
Nutshell
Account (Deal field)
1:1OpenCRM Deals map to Nutshell Deals, which are attached to Accounts rather than to People. We resolve the parent Account by matching the OpenCRM Deal's linked Company name or external ID. Deal name, value, expected close date, and owner assignment migrate directly. The pipeline stage name requires a customer-confirmed mapping table because OpenCRM stage names are tenant-defined and rarely align 1:1 with Nutshell's stage values.
OpenCRM
Pipeline Stages
Nutshell
Pipeline Stages
lossyOpenCRM allows full customisation of pipeline stage names per workflow, making direct stage mapping necessary. We produce a stage-mapping table during scoping, present it to the customer for confirmation, and apply the mapping during the Deal import. Without this step, Deals land in the wrong pipeline stage and the customer's forecast visibility is distorted post-migration.
OpenCRM
Activities (Calls, Meetings, Tasks)
Nutshell
Activities
1:1Activity records (calls, meetings, tasks) from OpenCRM migrate to Nutshell as Activity records on the relevant Account or Person. Date and time formats are normalised to UTC before import. Owner names are matched to Nutshell users by email address. We note that Nutshell does not support searching by custom fields via API (Stack Overflow, 2015), so any custom activity metadata should be stored in standard Nutshell fields or as a custom field at migration time rather than relied upon for post-migration deduplication.
OpenCRM
Notes
Nutshell
Notes
1:1Notes attached to OpenCRM Contacts, Companies, or Deals migrate to Nutshell as Notes linked to the equivalent Person, Account, or Deal record. We resolve parent linkage by matching the OpenCRM record's external ID or name to the Nutshell destination record. We run a post-import audit to verify note-parent linkage and flag any notes where the parent record was not found.
OpenCRM
Custom Fields
Nutshell
Custom Fields
lossyOpenCRM custom fields on Contacts, Companies, and Deals require discovery per-tenant during scoping. We create matching Nutshell custom fields (Text, Long Text, Currency, Date, or other types as appropriate) before any data import begins. Nutshell supports custom fields for People, Companies, and Leads. Field names and data types are mapped individually; no automated type conversion is applied without customer review.
OpenCRM
Owner
Nutshell
User
1:1OpenCRM Owner records are matched to Nutshell Users by email address. Owners without a matching Nutshell user are held in a reconciliation queue; the customer's admin provisions the missing users before record import resumes. Owner assignment on Deals and Contacts resolves to the matched Nutshell User ID during import.
| OpenCRM | Nutshell | Compatibility | |
|---|---|---|---|
| Company | Account1:1 | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Deal | Account (Deal field)1:1 | Fully supported | |
| Pipeline Stages | Pipeline Stageslossy | Mapping required | |
| Activities (Calls, Meetings, Tasks) | Activities1:1 | Fully supported | |
| Notes | Notes1:1 | Mapping required | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| Owner | User1: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.
OpenCRM gotchas
Bulk import without CRM ID or ExternalID creates duplicate records
Import ordering dependency: Companies before Contacts
No documented public REST API for programmatic export
Pipeline stage names are tenant-defined and require manual mapping
Nutshell gotchas
Contact tier limits enforced on import
No bulk API endpoint requires paginated extraction
Email sequences not exportable via API
Foundation plan disables key sales features
Pair-specific challenges
Migration approach
Scoping and data audit
We audit the OpenCRM tenant for record counts across Contacts, Companies, Deals, Activities, Notes, and custom fields. We confirm the customer's target Nutshell tier and flag whether Enterprise-level API access is required for post-migration workflows. We identify the set of OpenCRM columns to include in the CSV export for each object and document the stage-name set for the Deal pipeline. The scoping output is a written migration scope, a stage-mapping table for customer confirmation, and a custom-field discovery list for Nutshell field creation.
CSV export and data staging
We guide the customer through the OpenCRM UI CSV export process for each object type, selecting all relevant columns including the OpenCRM record ID. We stage the exported CSV files in a secure staging environment, parse and normalise field names, convert date formats to UTC, and deduplicate based on the OpenCRM record ID. Any data quality issues — missing required fields, malformed emails, orphaned records — are flagged in a pre-import audit report for the customer to address or acknowledge before transformation begins.
Nutshell field and pipeline preparation
We create all required Nutshell custom fields (matching the OpenCRM custom field names and types identified during scoping), configure the Deal pipeline with the customer-confirmed stage names, and set up any required Nutshell users to match OpenCRM owners. If the customer is on a non-Enterprise Nutshell tier, we design the migration to use CSV import only, with no API dependency. This step is completed in the customer's live Nutshell environment before any data is loaded.
Companies import with reconciliation
We import OpenCRM Companies into Nutshell as Accounts using the resolved external ID as the matching key. We run a row-count reconciliation and spot-check 20-30 records against the source. Accounts without a valid name or with duplicate entries are flagged for the customer's admin to resolve before the Contact import begins. This phase must complete before Contacts are loaded because Account records are the parent reference for Contact linkage.
Contacts import with parent resolution
We import OpenCRM Contacts into Nutshell as People, resolving each Contact's parent Company to the corresponding Nutshell Account using the OpenCRM Company name or external ID. Contacts without a matching Account are held in a reconciliation queue; the customer confirms whether to create a placeholder Account, merge into an existing Account, or exclude the record. Once the queue is resolved, we commit the Contact import and run a second reconciliation pass to verify the Account-Person linkage.
Deals, activities, and notes import
We import OpenCRM Deals into Nutshell using the stage-mapping table confirmed in step one. Owner assignment resolves by email matching to the Nutshell User table. Activities (calls, meetings, tasks) and Notes are imported after Deals, linked to their parent Account or Person record via the resolved ID. Each phase emits a row-count report; any phase where reconciliation falls below 95 percent is held for review before the next phase begins.
Cutover, validation, and automation inventory handoff
We freeze OpenCRM writes at cutover, run a final delta migration of any records modified during the migration window, then mark Nutshell as the system of record. We deliver a written inventory of OpenCRM workflows, automations, and any active sequences for the customer's admin to rebuild in Nutshell's automation layer. We do not rebuild automations or workflows as part of the standard migration scope. A post-import validation report is delivered covering record counts, linkage verification, and any known gaps in the migration output.
Platform deep dives
OpenCRM
Source
Strengths
Weaknesses
Nutshell
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 4 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across OpenCRM and Nutshell.
Object compatibility
4 of 8 objects need a mapping; the rest are 1:1.
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
OpenCRM: Not publicly documented.
Data volume sensitivity
OpenCRM 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 OpenCRM to Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your OpenCRM to Nutshell migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave OpenCRM
Other ways to arrive at Nutshell
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.