CRM migration
Field-level mapping, validation, and rollback between GoldMine and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
GoldMine
Source
Salesforce Sales Cloud
Destination
Compatibility
9 of 15
objects map 1:1 between GoldMine and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
4-6 weeks
Overview
GoldMine to Salesforce is a migration from a legacy desktop CRM to a modern cloud platform with fundamentally different data architecture. GoldMine stores contacts in a Contact1 (primary) and Contact2 (secondary contact at same company) structure that does not map directly to Salesforce's separate Account and Contact objects. We extract from GoldMine via the XML API or direct SQL reads of the underlying Paradox or SQL Server database, normalize Contact1 and Contact2 records into Account-Contact relationships, and preserve the full communication history as Salesforce Tasks, Events, and EmailMessage records. Custom fields stored in GoldMine's extended columns require pre-migration schema discovery. The GoldMine April 2026 end-of-life deadline makes this migration a hard requirement for organizations still running the platform. Workflows, automations, and GoldMine's built-in reporting do not migrate; we deliver a written inventory of these for your admin to rebuild in Salesforce Setup or Flow.
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 Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
GoldMine
Contact1
Salesforce Sales Cloud
Account
1:1GoldMine's Contact1 table holds the primary contact and company record. We parse the CompanyName field from each Contact1 record to create a Salesforce Account. The Account's Name maps from GoldMine's Company field or the Contact1 record's company identifier. Account is the parent object created first so that subsequent Contact imports can resolve the AccountId lookup. Deduplication uses Account Name as the external ID with fuzzy matching on variations and abbreviations.
GoldMine
Contact1
Salesforce Sales Cloud
Contact
1:1GoldMine Contact1 records map to Salesforce Contact. The Contact's AccountId lookup is resolved to the Account created from the same GoldMine CompanyName. Name fields (FirstName, LastName) parse from GoldMine's Name1 or separate FirstName/LastName columns depending on the GoldMine version. GoldMine's Title field maps to Contact.Title, and the primary phone block maps to Phone and MobilePhone on the Contact.
GoldMine
Contact2
Salesforce Sales Cloud
Contact (additional per Account)
1:manyGoldMine Contact2 records represent secondary contacts at the same company as a Contact1 record. We link each Contact2 record to the same Account as the parent Contact1 by matching on the GoldMine internal RECID or company key. Contact2 fields (name, title, phone, email) map to Contact fields identically to Contact1. If GoldMine Contact2 stores a Role value, we map it to the Salesforce Contact Role object on the Account-Contact relationship. Contacts without an email address are flagged during reconciliation for manual review.
GoldMine
Companies
Salesforce Sales Cloud
Account
1:1GoldMine Companies (separate from the company embedded in Contact1) map directly to Salesforce Account. Where GoldMine stores separate Company and Contact records with a linkage between them, we create a single Account from the Company record and link all Contacts that reference that company. If GoldMine uses only Contact1 records without separate Company records, we extract the distinct CompanyName values and create Accounts from those, treating Contact1 as the account-defining record.
GoldMine
Opportunities
Salesforce Sales Cloud
Opportunity
1:1GoldMine Opportunities map to Salesforce Opportunity. The GoldMine pipeline stage name maps to a Salesforce StageName that we configure as part of the Record Type and Sales Process setup. GoldMine's Project or deal value maps to Amount, expected close date maps to CloseDate, and Opportunity name maps to Name. If GoldMine stores multiple deal products per opportunity, we create OpportunityLineItem records in Salesforce after resolving the Pricebook2 reference.
GoldMine
Pipeline / Stage
Salesforce Sales Cloud
Record Type + Sales Process
lossyEach GoldMine pipeline becomes a Salesforce Record Type on Opportunity with a corresponding Sales Process that restricts the allowed StageName values to those matching the GoldMine pipeline stages. Stage probability percentages from GoldMine migrate to Salesforce StageProbability values. We configure the Record Type in the destination org before Opportunity migration begins.
GoldMine
History (communication log)
Salesforce Sales Cloud
Task + Event + EmailMessage
1:1GoldMine History records are the migration's highest-risk object. GoldMine stores emails, calls, meetings, and notes in a non-normalized history table with mixed formats including plain text, HTML, and MIME-encoded content. We normalize each entry type: emails become Salesforce EmailMessage records (with the email body in HtmlBody or plain TextBody) linked to an Activity Task; calls become Task with TaskSubtype=Call; meetings become Event with StartDateTime, EndDateTime, and Location; notes become Note linked via ContentDocumentLink. Encoding artifacts are stripped and character set integrity is verified for each record. History completeness testing is performed before sign-off.
GoldMine
Calendar / Appointments
Salesforce Sales Cloud
Event
1:1GoldMine calendar entries (whether entered directly or synced from Microsoft Outlook via COM integration) map to Salesforce Event. Subject, StartDateTime, EndDateTime, Location, and Description migrate directly. Attendees map to EventRelation records linked to the corresponding Salesforce Contacts, Leads, or Users. Recurring appointments require special handling: each occurrence in the GoldMine recurrence series becomes a separate Salesforce Event record to maintain accurate scheduling data.
GoldMine
Documents and Attachments
Salesforce Sales Cloud
ContentVersion + ContentDocument
1:1GoldMine attachments stored as BLOBs in the database or as files on network shares require extraction and re-upload to Salesforce's ContentDocument model. We export each attachment with its parent record reference, upload to Salesforce as ContentVersion linked to ContentDocument, and create a ContentDocumentLink to the parent Contact, Account, or Opportunity. Network share paths that return file-not-found errors are flagged for the customer to investigate or skip. Attachments over 25MB are flagged for chunked upload via Bulk API.
GoldMine
Projects (GoldMine Premium)
Salesforce Sales Cloud
Custom Project object or Task hierarchy
lossyGoldMine Premium's Project tracking (with tasks, assignments, and milestones) maps to a Salesforce custom Project object if the destination org uses the Salesforce Project Management starter pack or a similar AppExchange solution. Tasks within the GoldMine Project map to Salesforce Task records with a custom parent Task or a custom Milestone__c field. If the destination Salesforce org has no native project object, we map GoldMine Projects to a custom object with a Tasks sub-object and preserve milestone dates as custom date fields. The customer selects the model during scoping.
GoldMine
Custom Fields
Salesforce Sales Cloud
Custom Fields (Account, Contact, Opportunity)
lossyGoldMine stores custom fields in extended columns linked to the primary record by RECID. These extended tables are not visible in the GoldMine UI and require SQL schema inspection to enumerate. We run a discovery query that pulls all non-system columns across CONTACT1, CONTACT2, COMPANIES, and PROJECTS, classifies each as text, numeric, date, or picklist, and presents the full custom field inventory for mapping. Text fields map to Salesforce Text custom fields; numeric fields map to Number or Currency depending on content; dates map to Date fields; picklist values map to Salesforce Picklist with the allowed values defined before migration. We pre-create the destination custom fields in the Salesforce org before any data import.
GoldMine
Users
Salesforce Sales Cloud
User
1:1GoldMine user accounts do not map automatically to Salesforce Users. We extract the full GoldMine user roster during discovery and match by email address against the Salesforce destination org's User table. Active GoldMine users require a corresponding active Salesforce User before record migration begins. Inactive GoldMine users whose records need reassignment are flagged and their records held in a reassignment queue. Any GoldMine user without a matching Salesforce User goes to a reconciliation queue for the customer's admin to provision before migration resumes.
GoldMine
Groups / Marketing Lists
Salesforce Sales Cloud
Campaign + CampaignMember or List Model
lossyGoldMine groups and marketing lists (tag-like labels applied to records) are extracted as segment data and mapped to Salesforce Campaign membership or to the Salesforce Lists feature depending on the destination edition. Group membership logic migrates as CampaignMember records linking each Contact or Lead to its originating GoldMine group. The customer selects Campaign-based segmentation or List-based segmentation during scoping based on their ongoing marketing use case.
GoldMine
Sales Literature
Salesforce Sales Cloud
ContentDocument + Library
1:1GoldMine's Sales Literature module stores content used in mail merges and document generation. We export these files and re-upload them to Salesforce's Salesforce Files (ContentDocument) model, optionally organized into Salesforce ContentLibrary structures. We note which Contact, Account, or Opportunity records reference each Sales Literature document so that ContentDocumentLinks can be created during migration to preserve the association.
GoldMine
Tags / Labels
Salesforce Sales Cloud
Multi-Select Picklist or Topic
lossyGoldMine tag-like labels applied to records (stored as text values in extended columns or as group membership) migrate to Salesforce multi-select picklist fields on the relevant object. If the tag count exceeds Salesforce's 500-value picklist limit for a single field, we create a separate custom object for Tags with a junction relationship to Contacts and Accounts. The customer chooses the tag strategy during scoping.
| GoldMine | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Contact1 | Account1:1 | Fully supported | |
| Contact1 | Contact1:1 | Fully supported | |
| Contact2 | Contact (additional per Account)1:many | Fully supported | |
| Companies | Account1:1 | Fully supported | |
| Opportunities | Opportunity1:1 | Mapping required | |
| Pipeline / Stage | Record Type + Sales Processlossy | Fully supported | |
| History (communication log) | Task + Event + EmailMessage1:1 | Fully supported | |
| Calendar / Appointments | Event1:1 | Mapping required | |
| Documents and Attachments | ContentVersion + ContentDocument1:1 | Mapping required | |
| Projects (GoldMine Premium) | Custom Project object or Task hierarchylossy | Fully supported | |
| Custom Fields | Custom Fields (Account, Contact, Opportunity)lossy | Mapping required | |
| Users | User1:1 | Fully supported | |
| Groups / Marketing Lists | Campaign + CampaignMember or List Modellossy | Fully supported | |
| Sales Literature | ContentDocument + Library1:1 | Mapping required | |
| Tags / Labels | Multi-Select Picklist or Topiclossy | 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.
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
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Discovery and GoldMine database access
We audit the source GoldMine database: version (GoldMine 2018 through 2024.x), backend type (SQL Server or Paradox), record counts per table (CONTACT1, CONTACT2, COMPANIES, OPPORTUNITIES, HISTORY), custom field inventory via SQL schema inspection, active user count, group/list definitions, and any GoldMine Premium Project usage. We confirm read-only SQL access or XML API availability with the customer's GoldMine administrator. We also identify the target Salesforce edition (Professional at $80/user supports most migrations; Enterprise at $165/user required for custom objects, advanced Flow, or territory management). The discovery output is a written scope and migration plan.
Account-Contact relationship mapping and GoldMine Contact1/Contact2 resolution
We design the GoldMine Contact1/Contact2 resolution strategy. Every distinct CompanyName value from Contact1 becomes a Salesforce Account. The Contact1 record becomes a Salesforce Contact linked to that Account. Each Contact2 record linked to the same company becomes an additional Contact on the same Account, with any role data mapped to Contact Role. Where Contact2 records lack a clear company identifier, we use the Contact1 parent record or shared phone/address heuristics to resolve the Account link. We document the full Contact-to-Account linkage map and validate it against GoldMine's record counts before extraction begins.
Custom field discovery and Salesforce schema creation
We run a SQL discovery query against the GoldMine database to enumerate all non-system columns across CONTACT1, CONTACT2, COMPANIES, and PROJECTS. Each custom field is classified by data type and mapped to a Salesforce custom field type (Text, Number, Currency, Date, Picklist). We pre-create all custom fields in the destination Salesforce org via the UI or metadata API with the correct field types and picklist values before any data import. Salesforce validation rules and required-field constraints are documented so we can plan bypasses or data preparation steps for the migration load.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox (Developer Pro or Full Copy depending on data volume) using production-like record counts. The customer's admin reviews record counts (Accounts in, Contacts in, Opportunities in, Activities in), spot-checks 25-50 random records against the GoldMine source, and validates that the Contact1/Contact2-to-Account-Contact resolution produced the expected structure. GoldMine Groups and Sales Literature are validated against the sandbox. Any mapping corrections, custom field additions, or Account-Contact linkage adjustments happen in the sandbox before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from GoldMine Companies and Contact1 CompanyName values), Contacts (Contact1 and Contact2 with AccountId resolved), Opportunities (with AccountId, OwnerId, and RecordTypeId resolved), Activity history (Tasks, Events, EmailMessage via Salesforce Bulk API 2.0 with parent-record lookup resolution), Custom Objects (Projects from GoldMine Premium if applicable), Attachments (ContentDocument via Bulk API with chunked upload for files over 25MB), and finally Tags/Groups as Campaign membership or Lists. Each phase emits a row-count reconciliation report before the next phase begins. GoldMine writes are frozen during the cutover window.
Cutover, validation, and automation rebuild handoff
We run a final delta migration of any records modified in GoldMine during the cutover window, then enable Salesforce as the system of record. We deliver a written inventory of GoldMine workflows, automations, and reporting patterns that require rebuild in Salesforce Setup, Flow, or a reporting partner tool. We do not rebuild GoldMine automations as Salesforce Flow within the migration scope. We support a one-week hypercare window where we resolve any data reconciliation issues raised by the customer's sales team. GoldMine can remain running in read-only mode during hypercare for reference but is decommissioned on customer direction.
Platform deep dives
GoldMine
Source
Strengths
Weaknesses
Salesforce Sales Cloud
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 Salesforce Sales Cloud.
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 Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your GoldMine to Salesforce Sales Cloud 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 Salesforce Sales Cloud
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.