CRM migration
Field-level mapping, validation, and rollback between Ortto and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Ortto
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
6 of 8
objects map 1:1 between Ortto and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Ortto to Microsoft Microsoft Dynamics 365 Sales is a platform-category migration: Ortto is a marketing automation and CDP platform; Microsoft Dynamics 365 Sales is a sales CRM. The core challenge is that Ortto's People object (contact record) has no direct 1:1 equivalent in Dynamics 365 because Dynamics separates unqualified prospects into Leads and qualified buyers into Contacts attached to Accounts. We resolve this design gap during scoping by establishing a lifecycle-stage-to-Lead-Contact split rule, then migrate People records through that filter before bulk import. Tags, which are first-class objects in Ortto, become either multi-select picklists or Topics in Dynamics 365 depending on whether they represent contact classifications or campaign classifications. Activity history (email opens, form submissions, custom events) migrates via the Dataverse API with parent-record resolution to the correct Contact and Account. Journey and automation logic from Ortto does not migrate; we document the original flow structure so your team can reconstruct it in Microsoft Dynamics 365 Sales automation or Power Automate.
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.
Source platform
Ortto platform overview
Scorecard, SWOT, gotchas, and pricing for Ortto.
Destination platform
Microsoft Dynamics 365 Sales platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Sales .
Data migration guide
The complete Microsoft Dynamics 365 Sales migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Microsoft Dynamics 365 Sales migration checklist
Pre- and post-cutover tasks for moving onto Microsoft Dynamics 365 Sales .
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Ortto object lands in Microsoft Dynamics 365 Sales , including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Ortto
People (Contacts)
Microsoft Dynamics 365 Sales
Lead or Contact (split required)
1:manyOrtto People with lifecycle_stage of subscriber, lead, or marketing-qualified lead map to Dynamics 365 Lead. Ortto People with lifecycle_stage of sales-qualified lead, opportunity, or customer map to Dynamics 365 Contact tied to an Account. We compute the split at migration time using Ortto's lifecycle stage property, preserve the original stage value in a custom field ortto_original_lifecycle__c on both Lead and Contact, and flag any People without a lifecycle stage for manual assignment during scoping.
Ortto
Accounts (Organizations)
Microsoft Dynamics 365 Sales
Account
1:1Ortto Account records (formerly Organizations) map directly to Dynamics 365 Account. The Account domain becomes the Website field and is used as the dedupe key during import. Account is created before any Contact import so that the parentcustomerid_type and customerid_value lookups are satisfied at Contact insert time. The 3,000-person linkage limit per Account in Ortto does not apply in Dynamics 365.
Ortto
Tag
Microsoft Dynamics 365 Sales
Multi-Select Picklist or Topic
lossyOrtto tags are first-class objects referenced per Person via the API. We export the full tag taxonomy (tag names and per-person assignments), then convert contact classification tags to Dynamics 365 multi-select picklist fields on the Contact entity and campaign classification tags to Topic records with TopicAssignment links. The customer chooses the tag strategy during scoping based on whether tags represent lead sources, account tiers, or campaign membership.
Ortto
Audience (Segment)
Microsoft Dynamics 365 Sales
Marketing List or Saved View
1:1Ortto Audiences are dynamic or static segments of People defined by behavioral rules. These map to Dynamics 365 Marketing Lists (static) or Sales Navigator saved views (dynamic) with the caveat that Dynamics 365's segment rule syntax differs from Ortto's behavioral event-based rules. We document the original audience definition and provide a written segment reconstruction guide; the rules do not migrate programmatically because the underlying data model and rule engine are incompatible.
Ortto
Campaign
Microsoft Dynamics 365 Sales
Campaign
1:1Ortto Campaigns (email, SMS, push) map to Dynamics 365 Campaign. Campaign name, objective, and timing migrate; campaign content (templates, body copy, assets) requires separate export from Ortto and manual re-creation in Dynamics 365 Marketing or Power Automate. Campaign schedules that reference active audience triggers are flagged as automation dependencies outside migration scope.
Ortto
Activity (email, form submission, custom event)
Microsoft Dynamics 365 Sales
ActivityPointer (Task, Email, Custom Activity)
1:1Ortto Activities represent behavioral events linked to People. Email open and click activities map to Dynamics 365 Email (email direction=Incoming) records; form submissions map to Task records with a custom ortto_activity_type__c field set to form_submission; custom events map to custom Activity entities if defined in the destination Dataverse schema. Activity timestamps preserve the original Ortto recorded_at value to maintain the behavioral timeline sequence.
Ortto
Custom Field (People)
Microsoft Dynamics 365 Sales
Custom Field on Contact or Lead
1:1Ortto custom fields on People (up to 100) migrate to custom fields on the appropriate Dynamics 365 entity based on the Lead-Contact split. Aggregate field types (not supported in Ortto's API) are flagged during discovery and excluded from migration; the customer recreates them in Dynamics 365 UI post-migration. Picklist-type custom fields map to OptionSet fields in Dynamics 365 with the same option labels.
Ortto
Custom Field (Accounts)
Microsoft Dynamics 365 Sales
Custom Field on Account
1:1Ortto custom fields on Accounts (up to 25) map to custom fields on Dynamics 365 Account. Field type conversion applies where Ortto field types (text, number, date, dropdown) need to map to Dynamics 365 field types (Single-Line Text, Whole Number, Date Only, OptionSet). Fields exceeding Dynamics 365 character limits are truncated with a warning flag in the reconciliation report.
| Ortto | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| People (Contacts) | Lead or Contact (split required)1:many | Fully supported | |
| Accounts (Organizations) | Account1:1 | Fully supported | |
| Tag | Multi-Select Picklist or Topiclossy | Fully supported | |
| Audience (Segment) | Marketing List or Saved View1:1 | Fully supported | |
| Campaign | Campaign1:1 | Fully supported | |
| Activity (email, form submission, custom event) | ActivityPointer (Task, Email, Custom Activity)1:1 | Fully supported | |
| Custom Field (People) | Custom Field on Contact or Lead1:1 | Fully supported | |
| Custom Field (Accounts) | Custom Field on Account1: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.
Ortto gotchas
Autopilot to Ortto migration requires a fresh account and new billing
AutopilotJourneys had no annual or quarterly plans; Ortto is month-to-month
API rate limits vary significantly by plan tier
Custom field aggregate type is not supported in the API
Bad request rate limiter can temporarily ban your migration IP
Microsoft Dynamics 365 Sales gotchas
Professional tier 15-table custom table limit blocks migrations
October 2024 pricing increase applies at renewal for all customers
Custom fields must be created in the UI before API writes
Power Platform request limits apply to bulk migrations
Activity records orphaned to inactive owners fail silently
Pair-specific challenges
Migration approach
Discovery and lifecycle split design
We audit the source Ortto environment across plan tier (Professional/Business/Enterprise), People count, Account count, tag taxonomy size, audience definitions, activity volume, and custom field definitions. We pair this with a Microsoft Dynamics 365 Sales edition review (Sales Professional at $65/user or Sales Enterprise at $105/user with Sequences). The critical output of this step is the Lead-Contact split matrix based on Ortto lifecycle stages, which determines how every People record will be routed during migration. We also identify any Ortto regional endpoints (AU/EU) and confirm API credentials and rate limits.
Schema design and Dataverse custom field provisioning
We design the destination schema in the customer's Dynamics 365 environment. This includes creating custom fields on the Lead, Contact, and Account entities that map to Ortto People and Account custom fields, provisioning a MultiSelectOptionSet or Topic structure for the tag taxonomy, and creating any custom Activity entities for behavioral event types not covered by standard Task and Email. Custom fields are deployed via the Dataverse Web API into a Sandbox environment first for validation before any production migration begins.
Sandbox migration and reconciliation
We run a full migration into the customer's Dynamics 365 Sandbox using a representative data sample. The customer's RevOps or CRM admin reconciles record counts (People in, Leads and Contacts out, Accounts in, Activities in), spot-checks 25-50 random records against the Ortto source, and validates that the Lead-Contact split is producing the expected distribution. Any field type mismatches, missing picklist values, or validation rule conflicts are resolved here before production migration begins.
Tag taxonomy export and audience definition capture
We export the complete Ortto tag taxonomy (all tag names and the per-Person tag assignments) and the full audience segment definitions (rules, conditions, and membership). Tags are staged for conversion to Dynamics 365 MultiSelectOptionSet or Topic structure; audience definitions are documented in the written handoff guide with the equivalent Dynamics 365 Marketing List or Saved View construction steps. This step runs in parallel with schema provisioning.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Ortto Organizations), Leads (Ortto People routed to Lead by lifecycle stage), Contacts (Ortto People routed to Contact with AccountId resolved), Tag taxonomy (as MultiSelectOptionSet metadata), Contact tag assignments (as MultiSelectOptionSet values on Contact), Activities (via Dataverse batch API with WhoId and Regarding lookup resolution), Custom Fields (as field values on Lead, Contact, and Account). Each phase emits a row-count reconciliation report before the next phase begins. We enforce Ortto API rate limits and Dataverse batch size limits throughout.
Cutover, validation, and Journey rebuild handoff
We freeze Ortto writes during cutover, run a final delta migration of any records modified during the migration window, then enable Microsoft Dynamics 365 Sales as the system of record. We deliver the Journey documentation, audience reconstruction guide, and segment mapping table to the customer's admin team. We support a three-day hypercare window where we resolve reconciliation issues raised during initial Dynamics 365 usage. We do not rebuild Ortto Journeys as Dynamics 365 Sequences or Power Automate flows inside the migration scope; that is a separate engagement.
Platform deep dives
Ortto
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
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 Ortto and Microsoft Dynamics 365 Sales .
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
Ortto: 10 req/sec (Professional), 30 req/sec (Business/Enterprise); 2000 req/10s and 6000 req/60s per IP; bad-request limiter triggers 15s IP ban after 15 bad requests in 15s.
Data volume sensitivity
Ortto 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 Ortto to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Ortto to Microsoft Dynamics 365 Sales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Ortto
Other ways to arrive at Microsoft Dynamics 365 Sales
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.