CRM migration
Field-level mapping, validation, and rollback between GoldMine and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
GoldMine
Source
Twenty CRM
Destination
Compatibility
9 of 10
objects map 1:1 between GoldMine and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
GoldMine and Twenty CRM occupy opposite ends of the CRM generational spectrum. GoldMine is a Windows desktop application with a Paradox-derived or SQL Server backend, no modern REST API, and an end-of-life deadline of April 2026. Twenty CRM is a TypeScript, open-source, cloud-native CRM that launched in 2023, is backed by Y Combinator, and exposes a REST API for data import and CRUD operations. The structural gap between these platforms is wide: GoldMine stores custom fields in non-visible extended tables, communication history in a non-normalized mixed-format log, and attachments as either BLOBs or file-system path references. We close that gap by running schema discovery against GoldMine's database before extraction, stripping HTML encoding artifacts from history entries, re-uploading attachments to Twenty's document store, and pre-creating every custom field in Twenty's Data Model before the first CSV row loads. We do not migrate GoldMine Workflows or Automated Processes, and we flag any GoldMine attachment whose source path returns a file-not-found error for customer decision before cutover.
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 GoldMine object lands in Twenty CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
GoldMine
Contact
Twenty CRM
People
1:1GoldMine Contact records map directly to Twenty CRM People. We extract the CONTACT1 table, handling name parsing (first name, last name, title), phone numbers across multiple phone-type columns, email addresses, and address blocks as standard field-to-field transfers. GoldMine's Additional Contacts stored in separate related rows are merged into a single People record linked to the same Company. The GoldMine RECID becomes a custom external_id__c field on People for relationship resolution during history and attachment migration.
GoldMine
Company
Twenty CRM
Company
1:1GoldMine Company records map to Twenty CRM Company. Company name, address, phone, website, and industry fields transfer 1:1. We create Company records before People records so that the Company-People lookup relationship is satisfied at the moment of People import. GoldMine Company records that have no associated contacts are imported as standalone Company records with no linked People.
GoldMine
Opportunity
Twenty CRM
Opportunity
1:1GoldMine Opportunities map to Twenty CRM Opportunity. The GoldMine pipeline stage names and values are reviewed during scoping and mapped to Twenty CRM pipeline stages. We preserve deal value, close date, pipeline name, and stage as custom fields where Twenty CRM's standard Opportunity fields do not cover the customer's specific pipeline logic. The Opportunity-People relationship resolves via the GoldMine contact-opportunity link extracted from the relationship table.
GoldMine
History / Activity Log
Twenty CRM
Task and Note
1:1GoldMine stores emails, calls, meetings, and notes as chronological History records tied to Contacts or Companies. These are the highest-value and highest-risk migration objects. GoldMine's history table contains mixed formats: plain text entries, HTML-encoded entries, and MIME-encoded email bodies. We normalize each entry to plain text, strip encoding artifacts, verify character set integrity, and split by type into Twenty CRM Task (for calls, meetings, tasks) and Note (for email body and free-text notes). Activity timestamp is preserved as the Task or Note creation date. The GoldMine RECID cross-reference links each activity to the migrated People or Company record.
GoldMine
Documents and Attachments
Twenty CRM
File (via Twenty CRM attachment API)
1:1GoldMine attachments exist either as BLOBs in the database or as files on a network share referenced by a path in the record. We export attachments with the record they are attached to, re-uploading to Twenty CRM's attachment store and linking to the target People, Company, or Opportunity. Attachments over 25 MB are flagged for chunked upload. Any attachment where the source path returns a file-not-found error is logged to a reconciliation report for the customer to decide: skip, restore from backup, or manually reattach.
GoldMine
Custom Fields
Twenty CRM
Custom Fields (per object)
lossyGoldMine stores user-defined fields in separate extended columns linked to the primary record by RECID. These extended tables are not visible in the standard GoldMine UI and require SQL schema inspection to enumerate. We run a discovery query that pulls all non-system columns across the CONTACT1 and related tables, classifies each as text, numeric, date, or picklist, and presents the full custom field inventory for mapping. We then create the equivalent custom fields in Twenty CRM Settings → Data Model before any data import runs, per Twenty CRM's requirement that fields must exist before CSV import.
GoldMine
Projects (GoldMine Premium)
Twenty CRM
Task (with subtasks)
1:1GoldMine Premium Project tracking with tasks, assignments, and milestones maps to Twenty CRM Task and subtask structure. Project-level tasks become parent Tasks with milestones preserved as due dates; individual assignments become child Tasks under the parent. We extract the GoldMine PROJECTS table and TASK table together during discovery to preserve the full project hierarchy before mapping.
GoldMine
Groups and Tags
Twenty CRM
Labels (on People and Company)
1:1GoldMine supports groups, marketing lists, and tag-like labeling on records. We extract group membership lists and apply them as Labels in Twenty CRM on the relevant People and Company records. GoldMine F2 Lookup picklist values that act as tags (e.g., industry classifications, segmentation labels) are mapped to Twenty CRM labels if the customer selects label-based segmentation during scoping.
GoldMine
User
Twenty CRM
Member
1:1GoldMine user accounts do not map automatically to Twenty CRM members. We extract the full GoldMine user roster, match by email address against the Twenty CRM Members list, and flag any inactive GoldMine users whose records need reassignment to a current owner. Users must be provisioned in Twenty CRM Settings → Members before the migration begins, per Twenty CRM's requirement that user references must exist at import time.
GoldMine
Calendar / Appointments
Twenty CRM
Task
1:1Appointments synced from Outlook or entered directly in GoldMine are extracted from the GoldMine calendar table and mapped to Twenty CRM Task records with subject, time, attendees, and linked People preserved. Appointment type (call, meeting, demo) is stored as a custom field on the Task. Outlook-synced appointments that GoldMine stores with MIME calendar content are decoded and normalized to plain text for import.
| GoldMine | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| History / Activity Log | Task and Note1:1 | Mapping required | |
| Documents and Attachments | File (via Twenty CRM attachment API)1:1 | Mapping required | |
| Custom Fields | Custom Fields (per object)lossy | Mapping required | |
| Projects (GoldMine Premium) | Task (with subtasks)1:1 | Fully supported | |
| Groups and Tags | Labels (on People and Company)1:1 | Mapping required | |
| User | Member1:1 | Fully supported | |
| Calendar / Appointments | Task1:1 | Mapping required |
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.
GoldMine gotchas
GoldMine support and updates end April 2026
No REST API requires direct database or XML API extraction
Communication history is the migration's highest-value and highest-risk object
Custom fields stored in extended tables require schema discovery
File attachments depend on server-side file paths that may be orphaned
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Discovery and extraction path assessment
We audit the GoldMine installation to identify the database backend type (SQL Server or Paradox), GoldMine version (2018 through 2024.x), and available extraction method (XML API DLL or direct database read). We run a discovery query that enumerates all extended table columns across CONTACT1 and related tables, classifies each as text, numeric, date, or picklist, and presents the complete custom field inventory. We extract the full history log schema and attachment inventory (file count and total size) to scope the normalization and re-upload work. The discovery output is a written extraction plan and migration scope document signed off before any data moves.
Twenty CRM workspace preparation
We set up the Twenty CRM workspace before data arrives. This includes creating all custom objects and custom fields identified during GoldMine discovery in Settings → Data Model, configured with the correct field types (text, number, date, select options). We invite all team members via Settings → Members and wait for acceptance so that Owner lookups resolve at import time. We configure the pipeline stages to match the GoldMine pipeline stage names and values based on the scoping document. Views, permissions, and workflows are documented separately for manual rebuild after migration.
Test migration and reconciliation
We run a full migration into a staging or development Twenty CRM instance using production-equivalent data volume. We validate record counts (Contacts in, Companies in, Opportunities in, History in), spot-check 25-50 random records against the GoldMine source for field accuracy and character set integrity, and confirm that Company-People relationships resolved correctly. We test attachment re-upload for a sample of records. The customer's administrator reviews the test migration and signs off the mapping before production migration begins. Any corrections to field mapping, data type handling, or pipeline stage configuration happen at this stage.
Data extraction and transformation
We extract data from GoldMine using the identified extraction path. Contacts and Companies export with all standard and custom fields resolved from extended tables via RECID lookup. History records undergo normalization: HTML encoding stripped, MIME bodies decoded, character set verified. Attachments are extracted from database BLOBs or file-system paths and re-organized for re-upload. We generate the history type classification (call, meeting, email, note) during extraction based on GoldMine's history type column. The output is a set of object-specific CSV files ready for Twenty CRM import.
Production migration in dependency order
We run production migration in record-dependency order: Companies first (since People require a Company lookup), then People (with CompanyId resolved from the Company external_id mapping), Opportunities (with CompanyId and PeopleId resolved), History entries as Task and Note records (linked to the migrated People or Company via external_id), Attachments re-uploaded and linked, and Custom Objects last if applicable. Each phase emits a row-count reconciliation report before the next phase begins. We freeze GoldMine writes during the cutover window and run a final delta migration for any records modified during the window.
Cutover, validation, and handoff
We deliver the post-migration validation report comparing GoldMine record counts against Twenty CRM record counts per object. We run user spot checks with the customer's sales team to confirm that key accounts, recent history, and open pipeline are visible and accurate. We deliver a written inventory of GoldMine Automated Processes and Workflows with their trigger, conditions, and actions, plus a note that these must be rebuilt manually in Twenty CRM as they do not migrate as code. We support a one-week post-cutover window for reconciliation issues. We do not rebuild GoldMine workflows, sequences, or automated processes inside the migration scope.
Platform deep dives
GoldMine
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across GoldMine and Twenty CRM.
Object compatibility
2 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
GoldMine: Not publicly documented—rate limiting is not formally specified for GoldMine's XML API or COM-based integrations.
Data volume sensitivity
GoldMine 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 GoldMine to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your GoldMine to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave GoldMine
Other ways to arrive at Twenty CRM
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.