CRM migration

Migrate from GoldMine to Twenty CRM

Field-level mapping, validation, and rollback between GoldMine and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.

GoldMine logo

GoldMine

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

90%

9 of 10

objects map 1:1 between GoldMine and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

GoldMine logo

GoldMine

What's pushing teams away

  • The interface and UX have not kept pace with modern CRM design, driving younger or mobile-first users to work around the system rather than use it directly.
  • Support and feature development from Ivanti has slowed significantly, with formal end-of-life announced for April 2026, forcing organizations to plan a migration now.
  • Limited cloud and mobile capabilities compared to SaaS CRMs make it unsuitable for distributed or remote-first sales teams expecting real-time sync across devices.
  • Integration ecosystem is narrow—no modern REST API, fewer third-party connectors—making automation and modern tool stacks difficult to implement.
  • Reports and dashboards are basic compared to competitors, frustrating sales leaders who need pipeline visibility and analytics.

Choosing

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How GoldMine objects map to Twenty CRM

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

maps to

Twenty CRM

People

1:1
Fully supported

GoldMine 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

maps to

Twenty CRM

Company

1:1
Fully supported

GoldMine 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

maps to

Twenty CRM

Opportunity

1:1
Fully supported

GoldMine 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

maps to

Twenty CRM

Task and Note

1:1
Mapping required

GoldMine 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

maps to

Twenty CRM

File (via Twenty CRM attachment API)

1:1
Mapping required

GoldMine 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

maps to

Twenty CRM

Custom Fields (per object)

lossy
Mapping required

GoldMine 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)

maps to

Twenty CRM

Task (with subtasks)

1:1
Fully supported

GoldMine 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

maps to

Twenty CRM

Labels (on People and Company)

1:1
Mapping required

GoldMine 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

maps to

Twenty CRM

Member

1:1
Fully supported

GoldMine 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

maps to

Twenty CRM

Task

1:1
Mapping required

Appointments 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.

Gotchas + challenges

What specifically takes care here

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 logo

GoldMine gotchas

High

GoldMine support and updates end April 2026

High

No REST API requires direct database or XML API extraction

High

Communication history is the migration's highest-value and highest-risk object

Medium

Custom fields stored in extended tables require schema discovery

Medium

File attachments depend on server-side file paths that may be orphaned

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • GoldMine has no REST API—extraction requires XML API or direct database read

    GoldMine does not expose a modern REST or GraphQL API. Integrations historically relied on COM automation, the GoldMine XML API DLL, or direct reads from the underlying SQL Server or Paradox database. We extract data via the XML API where available or by querying the backend database directly with read-only credentials. GoldMine versions vary across customer installs (some on GoldMine 2018, others on 2024.x), which affects which extraction path is available and the schema structure of extended tables. We identify the backend type and GoldMine version during discovery before committing to an extraction approach.

  • Communication history normalization is the highest-risk migration object

    GoldMine users frequently cite the full email and call history attached to records as their primary reason for staying. This data is stored in a non-normalized history table that includes mixed formats: plain text entries, HTML-encoded entries, and MIME-encoded email bodies. We normalize each history entry to plain text, strip encoding artifacts and markup, and verify character set integrity before loading into Twenty CRM as Task or Note records. Silent data loss on history is the most common post-migration complaint with GoldMine migrations. We validate history completeness against GoldMine record counts before sign-off.

  • GoldMine data quality issues cause field rejection during import

    GoldMine allows free-form entry in picklist fields (F2 Lookup) without enforcing valid values. Databases frequently contain picklist fields with slight misspellings, redundant values, or data placed in the wrong field type (dates in text fields, numbers in text fields). GoldMine's built-in CSV export produces malformed files with columns jumbled and notes attached to the wrong contact. We run SQL-based extraction with explicit schema mapping rather than relying on GoldMine's built-in export, and we validate field types against Twenty CRM's import requirements before loading. Data that fails validation is flagged in a pre-migration cleanup report.

  • Twenty CRM requires custom fields to exist before CSV import

    Twenty CRM's CSV import creates records but not fields. All custom fields must be created in Settings → Data Model before any data import begins, and all users must be invited and have accepted their invitations before Owner or Assignee lookups can be resolved. We run GoldMine schema discovery first to enumerate every extended-column custom field, classify its data type, then pre-create those fields in Twenty CRM before any extraction begins. If a customer adds new custom fields to the migration scope after import begins, those fields require a separate provisioning step before their data can load.

  • GoldMine end-of-life April 2026 creates hard migration deadline

    Ivanti has announced end-of-life for GoldMine, meaning no further patches, security updates, or regulatory compliance work after April 2026. We factor this hard deadline into migration timelines and flag any scoping that extends past Q1 2026 as requiring expedited scheduling. Organizations with GoldMine installations on older Paradox backends may face additional complexity if the backend database requires migration infrastructure that is no longer supported.

Migration approach

Six steps for a successful GoldMine to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

GoldMine logo

GoldMine

Source

Strengths

  • Decades of accumulated contact and communication history in a single system.
  • Offline desktop operation with local database for intermittent connectivity environments.
  • Highly customizable database fields and tabs without requiring developer resources.
  • Strong Outlook email and calendar synchronization via COM-based integration.
  • Perpetual license ownership model gives organizations control over upgrade cycles.

Weaknesses

  • No modern REST API—all integrations rely on COM, DLL, or XML API methods that require Windows infrastructure.
  • End-of-life and end-of-support scheduled for April 2026, making new deployments inadvisable.
  • Outdated desktop-first UX that does not match modern SaaS CRM expectations for mobile, UI, or speed of use.
  • Limited native marketing automation compared to HubSpot, Salesforce, or Zoho.
  • Attachment and document management is file-system-dependent, not cloud-native.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across GoldMine and Twenty CRM.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    GoldMine: Not publicly documented—rate limiting is not formally specified for GoldMine's XML API or COM-based integrations.

  • Data volume sensitivity

    B

    GoldMine doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your GoldMine to Twenty CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about GoldMine to Twenty CRM data migrations

Answers to the questions buyers ask most during GoldMine to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most GoldMine migrations land between three and five weeks for accounts under 10,000 records with clean data and a SQL Server backend. GoldMine installations on Paradox backends or with extensive history logs spanning decades, large attachment inventories, or GoldMine Premium Project records move to eight to twelve weeks because of the extraction scripting, normalization work, and multi-pass reconciliation.

Adjacent paths

Related migrations to explore

Ready when you are

Move from GoldMine.
Land in Twenty CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day