CRM migration
Field-level mapping, validation, and rollback between Blackbaud and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Blackbaud
Source
Salesforce Sales Cloud
Destination
Compatibility
11 of 12
objects map 1:1 between Blackbaud and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
48–72 hours
Overview
Blackbaud Raiser’s Edge NXT models its universe around the Constituent — a single record type that holds individuals, households, and organizations with their gift history, appeals, and custom attributes attached. Salesforce Sales Cloud splits this model across Account (organizations), Contact (individuals), and Lead objects, with Opportunities carrying fundraising amounts and Campaigns tracking appeals. The migration therefore has to decompose Blackbaud's constituent-centric model into Salesforce's relational graph: Constituents with an organization type become Accounts + primary Contacts; individual constituents become Contacts attached to a default Account; gifts map to Opportunities with CampaignId pointing to migrated Appeals; and constituent custom fields become Salesforce custom fields on the appropriate object using Blackbaud's field-type metadata (text, number, boolean, date, or picklist). The harder problems are mapping Blackbaud's soft-credit model (which has no native Salesforce equivalent), preserving gift batch and acknowledgment status, and keeping Blackbaud's SKY API extraction within the 10 calls/second throttle while still hitting 25,000 daily quota. FlitStack AI sequences the migration so parent Accounts resolve before child Contacts, resolves constituent owners by email match to Salesforce users, and runs a delta-pickup window at cutover to capture any gifts entered during the final load. Workflow Designer automations and Smart Field rules do not migrate — we export their definitions for your Salesforce admin to rebuild in 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 Blackbaud 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.
Blackbaud
Constituent (organization type)
Salesforce Sales Cloud
Account + Contact
1:manyBlackbaud organization constituents split into a Salesforce Account (the organization name, address, industry) and a primary Contact (the organization's primary point of contact with their email, phone, and title). The organization's constituent ID is stored as Source_System_ID__c on both records for traceability.
Blackbaud
Constituent (individual type)
Salesforce Sales Cloud
Contact
1:1Blackbaud individual constituents map directly to Salesforce Contact. The constituent's primary address becomes MailingAddress fields on Contact; additional addresses require AccountContactRelation or custom address fields on the Contact. Email, phone, title, and birthdate transfer directly. Individual constituents without a household association are linked to a default Account during migration.
Blackbaud
Constituent (household type)
Salesforce Sales Cloud
Account + Contact (household model)
1:1Blackbaud households require a choice between Salesforce's Household Account model (one Account per household) or Individual Account model. We map household members as Contacts under a shared Account, preserving the household name and primary address on the Account record. Each household member's name and contact details become separate Contact records linked to the household Account.
Blackbaud
Gift
Salesforce Sales Cloud
Opportunity
1:1Each Blackbaud gift becomes a Salesforce Opportunity with Amount, CloseDate, StageName, Description, and CampaignId (pointing to the migrated Appeal/Campaign). Gift date becomes Opportunity CloseDate; gift acknowledgment status migrates to a custom picklist field on Opportunity. Multiple gifts from one constituent become separate Opportunity records.
Blackbaud
Soft Credit
Salesforce Sales Cloud
Custom Junction Object
1:1Blackbaud's native soft-credit recipient field has no direct Salesforce equivalent, so we create a custom Gift_Soft_Credit__c junction object linking the Opportunity (gift) to the Contact (soft-credit recipient). This junction object includes a role picklist field to capture the soft-credit relationship type, such as Spouse, Employer, or Matching Gift, enabling accurate soft-credit attribution reporting in Salesforce.
Blackbaud
Appeal
Salesforce Sales Cloud
Campaign
1:1Blackbaud appeals map to Salesforce Campaign records. Campaign Name, Description, StartDate, EndDate, and TargetRevenue map directly from the Blackbaud appeal fields. Salesforce's campaign hierarchy (parent campaigns) mirrors Blackbaud's appeal hierarchy, preserving the relationship between parent and child appeals. We preserve the appeal's fund reference as a custom field on the Campaign record.
Blackbaud
Campaign
Salesforce Sales Cloud
Campaign
1:1Blackbaud campaigns (the higher-level fundraising initiative container) map to Salesforce Campaign records with type, status, and budget fields. Multiple Blackbaud campaigns can roll up under a single Salesforce parent Campaign if your organization's campaign structure uses a hierarchy. This preserves the grouping of related fundraising initiatives across both platforms.
Blackbaud
Fund
Salesforce Sales Cloud
Custom Object: Fund__c
1:1Blackbaud's Fund object (the accounting bucket for gift routing) has no Salesforce standard equivalent. We create a Fund__c custom object with Name, Fund_Code__c (text), and a lookup to Campaign, then add a Fund__c lookup field on Opportunity so gifts can be tagged to the correct fund.
Blackbaud
Action / Task
Salesforce Sales Cloud
Task
1:1Blackbaud constituent actions (phone calls, emails, meetings) map to Salesforce Task records with Subject, Status, Priority, ActivityDate, and WhoId (Contact lookup). Original action date and owner are preserved. Completed status maps to Salesforce 'Completed'; pending actions map to 'Not Started'.
Blackbaud
Note / Attachment
Salesforce Sales Cloud
Note / ContentDocument (Salesforce Files)
1:1Blackbaud notes on constituents and gifts migrate as Salesforce Notes (modern object, not legacy Note) with Body, ParentId (pointing to the related Account, Contact, or Opportunity), and OwnerId. File attachments are downloaded and re-uploaded as Salesforce Files (ContentDocument/ContentVersion) linked to the parent record.
Blackbaud
Constituent Custom Fields (Attributes)
Salesforce Sales Cloud
Custom Fields on Account / Contact
1:1Blackbaud custom fields on Constituent records (Boolean, CodeTableEntry, Currency, Date, Number, Text) are analyzed by type and created as Salesforce custom fields on Account or Contact. CodeTableEntry pick-list values require value-by-value mapping to Salesforce pick-list values. The original field name and category are stored in the field label for reference.
Blackbaud
Gift Custom Fields
Salesforce Sales Cloud
Custom Fields on Opportunity
1:1Blackbaud gift-level custom fields such as gift-batch reference, acknowledgment status, tribute type, and appeal designation migrate as custom fields on Salesforce Opportunity. Batch reference becomes a text field; tribute type and acknowledgment status become pick-lists with values mapped value-by-value from Blackbaud's code table values to ensure consistent data in Salesforce.
| Blackbaud | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Constituent (organization type) | Account + Contact1:many | Fully supported | |
| Constituent (individual type) | Contact1:1 | Fully supported | |
| Constituent (household type) | Account + Contact (household model)1:1 | Fully supported | |
| Gift | Opportunity1:1 | Fully supported | |
| Soft Credit | Custom Junction Object1:1 | Fully supported | |
| Appeal | Campaign1:1 | Fully supported | |
| Campaign | Campaign1:1 | Fully supported | |
| Fund | Custom Object: Fund__c1:1 | Fully supported | |
| Action / Task | Task1:1 | Fully supported | |
| Note / Attachment | Note / ContentDocument (Salesforce Files)1:1 | Fully supported | |
| Constituent Custom Fields (Attributes) | Custom Fields on Account / Contact1:1 | Fully supported | |
| Gift Custom Fields | Custom Fields on Opportunity1: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.
Blackbaud gotchas
SKY API rate limits constrain bulk migration throughput
NXT web view enforces different data entry workflows than legacy Database view
Custom field code tables must be pre-created in the destination
File relocation takes 2-6 hours and is not resumable
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
Request Blackbaud data export via FTP or support ticket
Blackbaud bulk data extraction requires either a support ticket with a Customer Authorization Form (for managed backups) or access to the FTP site where Blackbaud places a zipped database file. We initiate this request on your behalf — the admin who owns the Blackbaud account must sign the authorization form and attach it to a support case. While waiting for the export, we begin the Salesforce schema design so custom objects, custom fields, and record types are ready before data lands.
Design Salesforce schema: custom objects, custom fields, record types, page layouts
We analyze your Blackbaud data export to inventory all custom fields (by type: Boolean, CodeTableEntry, Currency, Date, Number, Text), appeal/campaign/fund hierarchy, and gift batch structure. We then deliver a Salesforce schema setup plan: Fund__c custom object definition, soft-credit junction object, custom fields on Account/Contact/Opportunity/Campaign with pick-list value mappings, and record-type assignments if you're splitting constituent types across Salesforce profiles. Your Salesforce admin creates these before migration runs.
Extract constituents, gifts, appeals, actions, and attachments from Blackbaud
We run API extraction against Blackbaud SKY API respecting the 10 calls/second throttle. Constituents are extracted first (to build the ID mapping table), then gifts (with appeal and fund references resolved from the ID map), then appeals and campaigns, then actions, then file attachments. Each extraction pass logs record counts, API call consumption, and any throttling events. Duplicate detection runs against constituent email and constituent_id to flag records that may need merging before Salesforce load.
Run a sample migration with field-level diff before full run
A representative slice migrates first — typically 200–500 constituent records spanning individuals, organizations, and households, plus associated gifts, appeals, and actions. We generate a field-level diff comparing source Blackbaud values against destination Salesforce field values so you can verify: constituent-to-Account/Contact split, gift amount and close date accuracy, appeal-to-campaign mapping, soft-credit junction object linkage, and owner resolution by email. You approve the sample before the full run commits.
Execute full migration with delta-pickup window at cutover
Full migration runs against Salesforce using Bulk API 2.0 for high-volume record loads (Accounts, Contacts, Opportunities). A delta-pickup window — typically 24–48 hours — runs after the initial bulk load to capture any gifts entered in Blackbaud during the cutover. Audit log captures every create and update operation. One-click rollback reverts all Salesforce records to pre-migration state if reconciliation against the Blackbaud source reveals data integrity issues. We deliver a reconciliation report comparing source record counts and gift totals against Salesforce Opportunity counts and sum amounts.
Platform deep dives
Blackbaud
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 Blackbaud 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
Blackbaud: 10 calls/second (fixed, cannot be increased) and 25,000 calls per 24 hours on Standard Edition. Daily quota can be increased via Account Executive..
Data volume sensitivity
Blackbaud exposes a bulk API — large-volume migrations stream efficiently.
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 Blackbaud to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Blackbaud 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 Blackbaud
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.