CRM migration
Field-level mapping, validation, and rollback between Adobe Campaign and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Adobe Campaign
Source
Twenty CRM
Destination
Compatibility
9 of 11
objects map 1:1 between Adobe Campaign and Twenty CRM.
Complexity
BStandard
Timeline
4-7 weeks
Overview
Adobe Campaign is an enterprise cross-channel marketing platform with per-active-profile licensing, three non-compatible editions, and an XML-schema data model that makes large-scale extraction complex. Twenty CRM is an open-source CRM built around a Person and Company model with a REST API and a growing field schema. The fundamental challenge of this migration is bridging a marketing automation platform's recipient-centric data model to a CRM's person-centric data model: Recipients become People with address and communication preferences preserved, while Adobe Campaign's delivery logs, tracking logs, and broadlog records map to Twenty's Activity records with the original send and engagement timestamps intact. We do not migrate Workflows, Sequences, dynamic content blocks, or campaign delivery templates as code; we deliver a written inventory of these objects for your admin to rebuild in Twenty CRM or a complementary tool. A critical pre-migration step is provisioning the full set of custom fields in Twenty CRM before data import begins, because Twenty's standard field schema is intentionally minimal and requires manual field creation that can take 30 to 60 minutes per data model.
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 Twenty CRM, 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)
Twenty CRM
Person
1:1Adobe Campaign Recipient records map to Twenty CRM Person records. Core fields (firstName, lastName, email, phone, address) migrate directly. Extended fields from custom schema extensions land as custom properties on Person. The recipient's subscription status to Services maps to a custom boolean field subscribed__c or to the Person's workspace membership depending on the customer's preference.
Adobe Campaign
Address (nms:address)
Twenty CRM
Person (address fields)
1:1Adobe Campaign stores delivery address in the nms:address linked table or as address fields on nms:recipient. We extract the postal address fields (street, city, state/province, postalCode, country) and map them to Twenty's address fields on Person. If the address exists as a separate address table record, we perform a LEFT JOIN on recipientId to attach the correct address to each Person.
Adobe Campaign
Company (schema-extended nms:recipient or custom org schema)
Twenty CRM
Company
1:1Adobe Campaign does not have a native Company object equivalent to a CRM Account. If the customer has extended nms:recipient with an organization field or uses a linked organization schema, we extract the distinct organization values and create Company records in Twenty CRM. The organization field on each Recipient is then linked via a lookup to the corresponding Company. If no organization data exists, we derive Companies from the email domain as a fallback.
Adobe Campaign
Campaign (nms:campaign)
Twenty CRM
Opportunity
1:manyAdobe Campaign Campaign records (labels, type, start and end dates, budget, status) map to Twenty CRM Opportunity records with a custom field campaign_type__c set to 'Marketing Campaign'. A single Adobe Campaign can generate multiple Opportunities if it contains distinct revenue-aligned programs. Campaign metadata (label, type, dates) migrates as Opportunity fields; internal Adobe Campaign workflow orchestration does not migrate.
Adobe Campaign
Delivery (nms:delivery)
Twenty CRM
Activity (custom)
1:1Adobe Campaign Delivery records (email sends, SMS, push notifications) map to Twenty CRM Activity records with a type field set to 'Delivery' and a custom status field carrying the Adobe Campaign deliveryStatus value. The broadlog count (number of recipients targeted) migrates as a custom field broadlog_count__c. Delivery routing parameters do not migrate because Twenty CRM has no sending infrastructure.
Adobe Campaign
Delivery Log (BroadLog / nms:broadLogRcp)
Twenty CRM
Activity
1:1BroadLog records track every message sent per recipient per delivery. We map each BroadLog entry to an Activity record on the corresponding Person, with deliveryLabel as the activity subject and status mapping to the activity result. BroadLog records are extracted from the cloud database in v8 FFDA environments. We preserve the send timestamp and the internal Adobe Campaign contact date for campaign attribution.
Adobe Campaign
Tracking Log (NmsTrackingLog)
Twenty CRM
Activity
1:1NmsTrackingLog records store open, click, and bounce events with timestamps and URLs. We map click events to Activity records with the target URL stored in a custom url__c field, and open events to Activity records with a type 'EmailOpened'. Bounce records map to a custom bounced__c boolean flag on the corresponding Activity. We preserve the original timestamp for chronological accuracy on the Person's timeline.
Adobe Campaign
Service (nms:service)
Twenty CRM
Workspace Membership (custom)
1:1Adobe Campaign Services (opt-in subscription lists) do not have a direct Twenty CRM equivalent. We map each Service to a custom field on Person (e.g., newsletter_subscribed__c) with the subscriptionDate carried as a date value. If the customer has multiple Services, each becomes a separate custom boolean or date field on Person. Double-opt-in confirmation flags map as a secondary field.
Adobe Campaign
Program (nms:program)
Twenty CRM
Workspace or Folder (custom)
1:1Adobe Campaign Programs are hierarchical containers for Campaigns in Standard and v8 editions. Program names and types migrate as custom fields on the related Campaign-Opportunity records. Folder and folder-permission structure does not migrate; we recommend a post-migration folder organization strategy using Twenty's workspace or custom field scoping.
Adobe Campaign
Custom Schema (nms:ext: namespace)
Twenty CRM
Custom Fields on Person or Company
lossyExtended schemas (nms:ext: prefix or custom namespaces) represent fields added beyond the standard nms:recipient structure. We inspect the schema XML to derive the underlying field names and data types, then create equivalent custom fields in Twenty CRM before migration. Relationship fields from custom schemas that link to other tables require additional lookup field creation and must be resolved before Person import.
Adobe Campaign
Seed Address (nms:seedMember)
Twenty CRM
N/A
1:1Seed addresses are internal testing records for proofing and do not migrate. They are instance-specific and tied to the Adobe Campaign sending infrastructure. We recommend rebuilding proofing workflows in Twenty CRM or a dedicated email testing tool post-migration.
| Adobe Campaign | Twenty CRM | Compatibility | |
|---|---|---|---|
| Recipient (nms:recipient) | Person1:1 | Fully supported | |
| Address (nms:address) | Person (address fields)1:1 | Fully supported | |
| Company (schema-extended nms:recipient or custom org schema) | Company1:1 | Fully supported | |
| Campaign (nms:campaign) | Opportunity1:many | Fully supported | |
| Delivery (nms:delivery) | Activity (custom)1:1 | Fully supported | |
| Delivery Log (BroadLog / nms:broadLogRcp) | Activity1:1 | Fully supported | |
| Tracking Log (NmsTrackingLog) | Activity1:1 | Fully supported | |
| Service (nms:service) | Workspace Membership (custom)1:1 | Fully supported | |
| Program (nms:program) | Workspace or Folder (custom)1:1 | Fully supported | |
| Custom Schema (nms:ext: namespace) | Custom Fields on Person or Companylossy | Fully supported | |
| Seed Address (nms:seedMember) | N/A1: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.
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
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Discovery and edition audit
We audit the source Adobe Campaign instance across the active edition (Classic v7, Standard, or v8), the recipient count, the number of custom schema extensions, the volume of delivery logs and tracking logs, the count of active Campaigns and Services, and any linked FDA (Federated Data Access) tables. For v8 instances, we identify the FFDA split by querying both the local and cloud databases to confirm which tables exist where. We pair this with a Twenty CRM workspace audit to confirm the current field schema state, the user count, and any existing integrations. The discovery output is a written migration scope document with a recommended Twenty CRM custom field schema and a data extraction plan.
Twenty CRM schema preparation
We create all required custom fields in Twenty CRM before any Adobe Campaign data is extracted. This includes custom fields on Person for every schema-extended nms:recipient attribute, custom fields on Company for organization-level attributes, custom fields on Activity for delivery status, broadlog ID, tracking URL, and engagement type, and custom boolean fields for each Adobe Campaign Service subscription. We validate the field schema by performing a test import of a small sample set (50 records) and verifying that all expected fields populate correctly before proceeding to full-scale extraction.
Adobe Campaign data extraction with edition-specific logic
We extract data from Adobe Campaign using edition-appropriate methods. For Classic v7 and Standard, we use workflow-based data extraction (Query and Load file activities) with chunking filters to handle record sets above 100,000 rows. For v8, we run parallel queries against the local and cloud databases, reconcile by primary key, and produce a unified export set. We extract Recipients first (as the primary object), then delivery logs and tracking logs linked by recipientId, then campaign metadata, then service subscription records. Custom schema data is extracted as separate files and joined to the recipient export by ID before import.
Sandbox import and reconciliation
We run a full import into a Twenty CRM staging environment using production-like data volume. We reconcile record counts at each object layer (Persons in, Companies in, Activities in), spot-check 25 to 50 records against the Adobe Campaign source for field-level accuracy, and verify that custom fields created in step 2 are populated correctly. Any field mapping corrections, missing custom field additions, or data type adjustments happen in this phase before production migration begins. We also verify that the Person-to-Company lookup links are correct when organization data exists.
Production migration in dependency order
We run production migration in dependency order: Companies first (if deriving from email domain or organization field), then Persons (with Company lookup resolved), then Activities (linked to the imported Persons by email or ID). We use Twenty CRM's REST API with cursor pagination and apply exponential backoff on rate limit responses. Each phase emits a row-count reconciliation report before the next phase begins. We freeze writes in Adobe Campaign during the cutover window and run a final delta migration of any records modified during the migration window before declaring cutover complete.
Cutover, validation, and workflow rebuild handoff
We enable Twenty CRM as the system of record, verify a sample of 100 to 200 records against the Adobe Campaign source for final accuracy, and deliver a written inventory of all Adobe Campaign Workflows, Sequences, dynamic content blocks, and delivery templates with recommendations for rebuilding each in Twenty CRM or an alternative tool. We support a one-week hypercare window for reconciliation issues. We do not rebuild Adobe Campaign Workflows as automations inside Twenty CRM; that scope requires a separate engagement focused on workflow design and tool selection.
Platform deep dives
Adobe Campaign
Source
Strengths
Weaknesses
Twenty CRM
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 Twenty CRM.
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 Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Adobe Campaign to Twenty CRM 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 Twenty CRM
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.