CRM migration
Field-level mapping, validation, and rollback between Lofty and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Lofty
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
7 of 10
objects map 1:1 between Lofty and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
5–7 business days
Overview
Lofty CRM centers on Leads as the primary entity, with property and transaction data embedded directly within each record. Microsoft Dynamics 365 Sales uses a relational model — Accounts, Contacts, Leads, and Opportunities as separate tables — meaning Lofty's nested real estate records must decompose into multiple related Dynamics records. FlitStack AI begins every migration with a schema design pass that identifies how Lofty's lead objects map to Dynamics tables, what custom Dataverse tables are required for property and transaction metadata, and what pick-list values need explicit value-by-value mapping before any data moves. The migration carries all standard objects (leads, contacts, companies, activities) plus Lofty's custom fields into corresponding Dynamics 365 fields or custom Dataverse tables. Automations, workflows, and lead-routing sequences do not migrate — they must be rebuilt in Power Automate. FlitStack AI exports your Lofty workflow definitions as a reference document before the migration runs so your team has a rebuild starting point. The migration uses Lofty's Open API v2.0 with paginated date-range queries (Lofty enforces a 90-day maximum per request window) to extract records, with Dynamics 365 Dataverse Web API or Data Export Service as the destination write path. A test migration with field-level diff validates the mapping before the full run commits. A 24–48 hour delta window captures any in-flight records created or modified during cutover.
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
Lofty platform overview
Scorecard, SWOT, gotchas, and pricing for Lofty.
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 Lofty 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.
Lofty
Lead
Microsoft Dynamics 365 Sales
Lead
1:1Lofty Lead maps 1:1 to Dynamics 365 Lead. Core fields (name, email, phone, source, status, owner) migrate directly without transformation. Lofty's embedded property and transaction metadata decomposes into separate custom Dataverse tables that are related back to the lead record via explicit lookup relationships. The original Lofty lead ID is preserved in a custom string field for reconciliation and delta-run de-duplication against the source system.
Lofty
Lead (with property embedded)
Microsoft Dynamics 365 Sales
Custom Table: Property__c (Dataverse)
1:manyLofty embeds property address, bedrooms, bathrooms, list price, and property type within the lead record. FlitStack AI extracts these into a custom Property Dataverse table with a lookup relationship back to the Lead. Property__c preserves the original Lofty property ID for traceability.
Lofty
Lead (with transaction embedded)
Microsoft Dynamics 365 Sales
Custom Table: Transaction__c (Dataverse) + Opportunity
1:manyLofty transaction fields (status, sale price, commission, close date) split into a custom Transaction__c table linked to the Lead and into a corresponding Dynamics 365 Opportunity record representing the commercial event. Dual-write ensures both the real estate context and the sales pipeline stage are preserved.
Lofty
Custom Fields (Lead)
Microsoft Dynamics 365 Sales
Custom Fields on Lead + Property__c + Transaction__c
1:1Lofty allows up to 50 custom fields per type (text, date, number, currency, single-select, multi-select). Each custom field is evaluated for its data type: pick-list fields map to Dataverse choice columns; numeric and currency fields map to decimal/currency columns; text fields map to text. All custom fields carry a Source_Field_Name__c reference field for reconciliation.
Lofty
Contact
Microsoft Dynamics 365 Sales
Contact
1:1Lofty contact records (distinct from leads) map directly to Dynamics 365 Contacts. Name, email, phone, address, and company fields migrate without transformation. Owner resolved by email match against Dynamics users. The original Lofty contact ID is stored in a custom string field for traceability and cross-reference validation after the migration completes.
Lofty
Activity (call, email, task)
Microsoft Dynamics 365 Sales
Activity (Task or Email)
1:1Lofty engagement logs (calls, emails, notes) map to Dynamics 365 Tasks with the original timestamp, owner, and description preserved. Meeting records map to Dynamics Events with start/end times intact. Lofty's 64-bit activity IDs stored as strings in a custom Source_ID__c field.
Lofty
Owner / Agent
Microsoft Dynamics 365 Sales
User (OwnerId)
1:1Lofty owner and agent records resolve by email match to existing Dynamics 365 users. Unmatched owners are flagged before migration; your team either creates a corresponding Dynamics user first or assigns those records to a fallback owner. Active/inactive status in Lofty carries over as a custom flag.
Lofty
Tags / Segments
Microsoft Dynamics 365 Sales
Custom Field: Tags__c (text) or multi-select choice
many:1Lofty lead tags and segments are collected from the source and either concatenated into a single Tags__c text field (pipe-delimited) or mapped to a multi-select choice column in Dataverse if Dynamics 365 Sales Enterprise is in use. Tags lose their native filter functionality and become read-only reference data in Dynamics.
Lofty
Lead Status (Lofty pick-list)
Microsoft Dynamics 365 Sales
Lead.Status (Dynamics pick-list)
1:1Lofty lead status values (New, Contacted, Qualified, etc.) require explicit value-by-value mapping to Dynamics 365 Lead Status pick-list values. Custom Lofty status values are created as new Status option values in Dynamics before migration runs. Status reason codes also require individual mapping.
Lofty
Workflow / Automation
Microsoft Dynamics 365 Sales
Power Automate Flow
1:1Lofty workflows and automation sequences do not have an export mechanism. FlitStack AI documents the workflow definitions from the Lofty UI as a written reference for your Dynamics admin to rebuild in Power Automate. No automation data is migrated; the rebuild is a manual step after go-live.
| Lofty | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Lead | Lead1:1 | Fully supported | |
| Lead (with property embedded) | Custom Table: Property__c (Dataverse)1:many | Fully supported | |
| Lead (with transaction embedded) | Custom Table: Transaction__c (Dataverse) + Opportunity1:many | Fully supported | |
| Custom Fields (Lead) | Custom Fields on Lead + Property__c + Transaction__c1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Activity (call, email, task) | Activity (Task or Email)1:1 | Fully supported | |
| Owner / Agent | User (OwnerId)1:1 | Fully supported | |
| Tags / Segments | Custom Field: Tags__c (text) or multi-select choicemany:1 | Fully supported | |
| Lead Status (Lofty pick-list) | Lead.Status (Dynamics pick-list)1:1 | Fully supported | |
| Workflow / Automation | Power Automate Flow1: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.
Lofty gotchas
API date-range queries capped at 90 days
64-bit integer IDs risk JavaScript precision loss
Starter tier custom field cap breaks complex schemas
Data export requires $500 fee unless handled during subscription
Documentation site migration disrupts integration references
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
Schema design and custom Dataverse table setup
FlitStack AI reviews the Lofty export schema to identify which embedded fields require decomposition into custom Dataverse tables. We deliver a schema design document specifying every custom table (Property__c, Transaction__c, etc.), its columns, data types, and relationship cardinality back to the Lead and Opportunity records. This document also lists every Dynamics 365 StatusCode and LeadSource pick-list value that needs to be created before migration so the value-mapping step runs against an already-configured destination schema.
Owner and user resolution by email
Lofty owner and agent records are matched by email address against existing Dynamics 365 users. Unmatched owners are flagged with a pre-migration report — your team either creates a corresponding Dynamics user first or assigns a fallback owner before migration begins. This step prevents records from landing without an OwnerId, which is a required field in Dynamics 365 for most record types and causes validation failures if left unresolved.
Staged data extraction from Lofty
Lofty's 90-day API windowing requires staged extraction for historical data. FlitStack AI runs multiple date-segmented API queries to pull all records in chronological passes, storing Lofty entity IDs as strings to preserve full 64-bit precision. All custom field values are captured in the raw export alongside standard fields. The extraction output is a structured dataset ready for transformation mapping before the Dynamics write phase.
Sample migration with field-level diff
A representative slice of 100–300 records migrates first — spanning leads with embedded property data, contacts, and activities. FlitStack AI generates a field-level diff report comparing source values against the Dynamics destination fields for each record. You verify that property metadata landed in the correct Property__c table, transaction statuses mapped to the right StatusCode values, and owner resolution assigned records as expected. Approval of the sample migration gates the full run.
Full migration with delta-pickup and rollback
The full record set migrates to Dynamics 365 Sales using Dataverse Web API for standard records and custom table API writes for Property__c and Transaction__c. A 24–48 hour delta-pickup window then captures any Lofty records created or modified after the initial extraction snapshot. An audit log records every create, update, and skip operation. One-click rollback reverts the Dynamics environment to its pre-migration state if reconciliation against the Lofty export finds material discrepancies.
Platform deep dives
Lofty
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 Lofty 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
Lofty: Not publicly documented on developer.lofty.com — we implement exponential backoff and respect 429 responses as rate limit signals.
Data volume sensitivity
Lofty 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 Lofty to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Lofty 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 Lofty
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.