CRM migration
Field-level mapping, validation, and rollback between Adobe Campaign and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Adobe Campaign
Source
Salesforce Sales Cloud
Destination
Compatibility
7 of 13
objects map 1:1 between Adobe Campaign and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
5-8 weeks
Overview
Moving from Adobe Campaign to Salesforce is a structural data migration with significant platform model differences. Adobe Campaign uses an XML-schema-based data model centered on nms:recipient as the primary profile table with delivery logs split across local and cloud databases in v8's FFDA architecture. Salesforce uses a relational object model with Contacts, Leads, Accounts, and Opportunities. We extract Recipients via workflow-based data exports (bypassing the 100,000-row list ceiling), reconcile BroadLog records from both FFDA databases, and map the split Adobe Campaign recipient to a Contact with opt-in status preserved in a custom field. Delivery templates, campaign metadata, and custom schemas migrate as structured objects. Seed addresses, internal testing workflows, and Adobe-specific dynamic content blocks do not migrate; we deliver a written inventory for admin reconstruction. We do not migrate automations, CRM connectors, or IMS technical operator configurations as code.
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 Adobe Campaign 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.
Adobe Campaign
Recipient (nms:recipient)
Salesforce Sales Cloud
Contact
1:1Adobe Campaign nms:recipient is the primary profile table. Standard fields (email, format preference, address) map directly to Salesforce Contact fields. Custom fields added via schema extension land as custom properties or mapped to custom Contact fields. We set a custom field ac_original_email_format__c to preserve the Adobe Campaign format preference (HTML, text, or none) because Salesforce Contact has no native format equivalent.
Adobe Campaign
Recipient
Salesforce Sales Cloud
Lead
1:1Recipients designated as unconverted or marketing-only in Adobe Campaign may map to Salesforce Lead instead of Contact depending on the customer's buyer journey model. We define the routing rule during scoping based on subscription status and campaign engagement history.
Adobe Campaign
Delivery logs (BroadLog)
Salesforce Sales Cloud
Campaign Member (CampaignMember)
1:1BroadLog records track every message sent across email, SMS, and push channels. We map them to Salesforce CampaignMember records linked to the migrated Campaign, preserving send date, status (sent, bounced, delivered), and error reason. Aggregate open and click tracking logs map separately to CampaignMember custom fields because Salesforce CampaignMember has no native engagement score fields.
Adobe Campaign
Campaign (nms:campaign)
Salesforce Sales Cloud
Campaign
1:1Adobe Campaign Campaign metadata (labels, start and end dates, type, status, budget) maps to Salesforce Campaign. We preserve campaign owner from Adobe Campaign as the Salesforce Campaign OwnerId resolved via User email lookup. Parent-child campaign hierarchy maps to Salesforce Campaign hierarchy natively.
Adobe Campaign
Program (Standard and v8)
Salesforce Sales Cloud
Campaign (folder hierarchy)
lossyAdobe Campaign Programs are hierarchical containers for Campaigns in Standard and v8. Folder structure and program labels migrate as Salesforce Campaign records with a Program__c custom field to preserve hierarchy depth. Program-specific permissions do not migrate and must be reconfigured in Salesforce at the destination.
Adobe Campaign
Service (opt-in subscriptions)
Salesforce Sales Cloud
Campaign + CampaignMember
1:manyAdobe Campaign Services represent opt-in subscription lists (e.g., weekly newsletter, product updates). Each Service maps to a Salesforce Campaign. The subscription relationship between Recipient and Service maps to CampaignMember with Status = Sent and a custom field ac_subscription_date__c carrying the original subscription timestamp.
Adobe Campaign
Delivery template
Salesforce Sales Cloud
Salesforce Email Template (or Custom Object)
lossyAdobe Campaign delivery templates (email, SMS, push) contain routing parameters, content blocks, and personalisation tokens. We assess each template for migration: email templates with simple personalisation map to Salesforce Email Templates; templates with dynamic content blocks, conditional logic, or advanced personalisation are documented for rebuild in Marketing Cloud Content Builder or a custom object with Visualforce/Aura rendering.
Adobe Campaign
Custom schema (nms:ext:)
Salesforce Sales Cloud
Custom Object (__c)
1:1Adobe Campaign custom tables created via nms:ext: namespace or FDA-linked external schemas require custom extraction logic. We inspect the schema XML to derive the underlying SQL table structure, then map to Salesforce custom objects with equivalent field types. Lookup relationships between custom schemas map to Salesforce lookup or master-detail relationships on the custom object.
Adobe Campaign
Tracking log (NmsTrackingLog)
Salesforce Sales Cloud
CampaignMember custom fields
1:1Tracking logs (open, click, bounce events) are stored in NmsTrackingLog. We preserve click-through URLs and timestamped events as CampaignMember custom fields (ac_first_click_date__c, ac_last_click_url__c, ac_bounce_date__c). Aggregate open and click rates are recalculated at the destination; we do not import computed metrics that depend on the source platform's calculation engine.
Adobe Campaign
Control group
Salesforce Sales Cloud
Campaign (static group)
1:1Control groups in Adobe Campaign exclude populations from delivery targeting. We extract the exclusion criteria and reapply them as a Salesforce Campaign static group or a CampaignMember records with a control group flag. The rebuild approach is documented for the customer's admin to implement in Salesforce Flow or a list view.
Adobe Campaign
Enumerations
Salesforce Sales Cloud
Picklist values
lossyAdobe Campaign enumerations defined in schema XML (e.g., deliveryStatus, gender, subscriptionStatus) may have different internal values in Salesforce. We maintain a value-mapping table keyed by enumeration name and map to Salesforce picklist values during import. Values without a Salesforce picklist match route to a custom picklist field with the original enumeration values preserved.
Adobe Campaign
Workflows
Salesforce Sales Cloud
Flow (documentation only)
lossyAdobe Campaign targeting workflows, campaign workflows, and technical workflows can be exported as XML packages. Dynamic content blocks and queryDef expressions frequently break across editions and do not migrate. We deliver a written inventory of every active workflow with its trigger, conditions, actions, and recommended Salesforce Flow equivalent. The customer's admin or a Salesforce partner rebuilds them post-migration.
Adobe Campaign
Seed address
Salesforce Sales Cloud
Test Contact (documentation)
lossySeed addresses are Adobe Campaign internal testing records used for proofing. They are instance-specific and not designed for cross-platform portability. We do not migrate seed addresses and recommend rebuilding proof lists in Salesforce using the customer's test contact set or Salesforce's built-in test sending capability.
| Adobe Campaign | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Recipient (nms:recipient) | Contact1:1 | Fully supported | |
| Recipient | Lead1:1 | Fully supported | |
| Delivery logs (BroadLog) | Campaign Member (CampaignMember)1:1 | Mapping required | |
| Campaign (nms:campaign) | Campaign1:1 | Fully supported | |
| Program (Standard and v8) | Campaign (folder hierarchy)lossy | Fully supported | |
| Service (opt-in subscriptions) | Campaign + CampaignMember1:many | Fully supported | |
| Delivery template | Salesforce Email Template (or Custom Object)lossy | Fully supported | |
| Custom schema (nms:ext:) | Custom Object (__c)1:1 | Fully supported | |
| Tracking log (NmsTrackingLog) | CampaignMember custom fields1:1 | Fully supported | |
| Control group | Campaign (static group)1:1 | Fully supported | |
| Enumerations | Picklist valueslossy | Fully supported | |
| Workflows | Flow (documentation only)lossy | Mapping required | |
| Seed address | Test Contact (documentation)lossy | 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.
Adobe Campaign gotchas
ACS to ACC schema migration breaks dynamic content blocks
Per-active-profile billing counts every imported Recipient
Technical operator IMS migration mandatory in v8.5+
v8 FFDA dual-database architecture complicates data mapping
List export ceiling of 100,000 rows requires chunking
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 edition audit
We audit the source Adobe Campaign instance across edition (Classic v7, Standard, or v8), recipient volume, active profile count, custom schema inventory, delivery log history depth, active workflows, and technical operator configuration. We identify whether v8 FFDA dual-database extraction is required and whether IMS migration is in scope for v8.5+. The discovery output is a written migration scope, an enumeration value-mapping table template, and a Salesforce edition recommendation based on recipient volume and campaign complexity.
Recipient export via workflow-based extraction
We configure Adobe Campaign workflow exports using the Load file and Transfer file activities, chunking the export by date range or segment to bypass the 100,000-row list ceiling. For v8 instances, we query both the local and cloud FFDA databases, cross-reference records by broadLogId, and produce a single reconciled recipient set. We run the export into a staging SFTP location, validate row counts against the in-platform count, and flag any recipients that should be classified as suppressed or inactive to avoid unintended Active Profile billing increments at the destination.
Schema design and Salesforce sandbox migration
We design the destination schema in Salesforce: custom objects for any Adobe Campaign custom schemas, custom fields on Contact and Campaign for Adobe Campaign-specific attributes (format preference, subscription date, bounce reason), Campaign Record Types for different delivery channel types, and picklist values configured from the enumeration value-mapping table. Schema is deployed to a Salesforce Full Copy Sandbox first for validation with production-like data volume. The customer's marketing ops lead reconciles 25-50 recipient records and delivery log samples before production migration begins.
Delivery log and tracking log export
We export BroadLog records (message send history) and NmsTrackingLog records (open, click, bounce events) from Adobe Campaign. For v8, this requires querying both FFDA databases and reconciling by broadLogId. We chunk the export by campaign date range, produce a per-campaign CSV set, and map each row to Salesforce CampaignMember records with custom engagement fields. Aggregate computed metrics (open rates, click rates) are not imported because they depend on the source platform's calculation engine; we import raw events instead and the destination reports recalculate them.
Production migration in dependency order
We run production migration in record-dependency order: Salesforce Campaign records first (from Adobe Campaign Programs and standalone Campaigns), then Salesforce Contact records (from Recipients with opt-in status resolved), then Salesforce CampaignMember records (from BroadLog linked to migrated Contacts and Campaigns), then custom object records (from Adobe Campaign custom schemas with lookup relationships resolved), and finally tracking log custom fields (linked to CampaignMember). Each phase emits a row-count reconciliation report before the next phase begins. We freeze Adobe Campaign writes during the cutover window and run a final delta migration of any records modified during the migration window.
Delivery template inventory and workflow handoff
We deliver a written inventory of every Adobe Campaign delivery template with a classification: migratable (static content, standard personalisation), rebuildable (dynamic content requiring Marketing Cloud AMPscript or Visualforce), or deprecated (references discontinued Adobe-specific features). We also deliver the Workflow inventory document listing every active targeting and campaign workflow with its trigger, conditions, actions, and recommended Salesforce Flow equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild Adobe Campaign workflows as Salesforce Flow inside the migration scope; that is a separate engagement.
Platform deep dives
Adobe Campaign
Source
Strengths
Weaknesses
Salesforce Sales Cloud
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Adobe Campaign and Salesforce Sales Cloud.
Object compatibility
1 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
Adobe Campaign: Not publicly documented; throughput limits are contract-specific and enforced at the infrastructure level.
Data volume sensitivity
Adobe Campaign 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 Adobe Campaign to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Adobe Campaign 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 Adobe Campaign
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.