ANC
Data MigrationCapabilities

Salesforce Field Map

Every SF field and where it lives in the CRM.

Salesforce → CRM Field Map

Complete mapping. If you find a SF field not in this table, it didn't migrate — check with Ahmad before assuming it's lost.

Opportunity

SF fieldCRM fieldTypeNotes
Opportunity.NamenameTEXTDirect
RecordType.NamebusinessUnitSELECT5→3 roll-up
StageNamestage + bidStatusSELECT×28 SF stages split into 5 stage + 7 bidStatus
ProbabilityprobabilityNUMBER0-100, backfilled by bidStatus if null
CloseDatecloseDateDATE_TIMEDirect
Sale_Price__cdealValueCURRENCY67% populated in SF
Actual_Revenue__camountCURRENCYFallback for dealValue; primary reporting source
Actual_Margin__cmarginCURRENCY
Total_Payments_Received__cpaidAmountCURRENCY
Bid_Due_Date__cproposalDueDateDATE_TIME
Substantial_Compltion_Date__c (sic)substantialCompletionDateDATESF typo preserved on their side
Contract_Term_End_Date__ccontractEndDateDATE
AccountIdcompany (via name match)RELATION97.7% of SF accounts have a match
Owner.NameaccountExecutiveTEXTWorkaround: no workspace seats for 30+ SF sellers
Owner.EmailaccountExecutiveEmailTEXT
Proposal_Stage__cproposalStageSELECT
Priority__cprioritySELECT
Pricing_complete__cpricingCompleteBOOLEAN
Pricing_Complete_Date__cpricingCompleteDateDATE_TIME
Technology_Vendor_Partner__ctechnologyVendorPartnerTEXT

Revenue tracker (per-fiscal-year)

SF fieldCRM fieldNotes
Revenue_Tracker__c.X2026_Revenue__cOpportunity.revenue2026 + opportunityRevenueSplit rowDual-write
Revenue_Tracker__c.X2026_Margin__cOpportunity.margin2026
Revenue_Tracker__c.X2027__cOpportunity.revenue2027Note SF dropped _Revenue on 2027
Revenue_Tracker__c.X2027_Margin__cOpportunity.margin2027
Revenue_Tracker__c.X2028_Revenue__copportunityRevenueSplit rowNot flattened to OpportunityOpportunity

Team allocations (Hankook-style)

SF Revenue_Tracker__c rows where Account != parent opp's Account are treated as team allocations, not splits:

SF fieldCRM field
Account.NameopportunityTeamAllocation.team (matched to Company)
Fiscal yearopportunityTeamAllocation.fiscalYear
RevenueopportunityTeamAllocation.revenue
MarginopportunityTeamAllocation.margin

860 orphan rows → 537 matched → 472 allocations migrated.

Account

SF fieldCRM field
Namename
Address fieldsAddress block (standard)
League__cleague
Primary_Vertical__crevenueType

Contact

SF fieldCRM field
FirstName, LastNameDirect
Email, PhoneDirect
TitlejobTitle
AccountIdcompany RELATION

Service Ticket, Design Request, Venue

Migrated with SF field names mapped to camelCase equivalents in the CRM. For full per-field detail, check the SF schema dumps at /root/twenty-backups/sf-schema/.

Fields NOT migrated

  • Activity history (calls, meetings, emails via Einstein) — deprioritized during migration
  • Tasks from SF — new tasks go native in the CRM, no backfill
  • Case comments — service ticket comments get a fresh start in the ticketComment object
  • Custom campaign objects — didn't exist in ANC's SF org

How the matching worked

  1. Account → Company match: exact name, then normalized (strip suffixes like "LLC", "Inc"), then manual triage for ambiguous cases
  2. Contact → Person match: email first, then first+last+company fallback
  3. Opportunity → Company link: via parent AccountId already matched in step 1
  4. Revenue Tracker → Opportunity split: exact parent opp match

Unmatched records logged. See /root/twenty-backups/ for full match + exception reports.

On this page