CRM migration
Field-level mapping, validation, and rollback between Property Shell and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Property Shell
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
11 of 12
objects map 1:1 between Property Shell and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
48–72 hours
Overview
Property Shell is a CRM built for property developers and project marketers — it tracks projects, lots or units, developer contacts, contract terms, and development stages (DA Approved, On Market, Under Contract, Settled) with built-in marketing automation for buyer journeys. Dynamics 365 Sales is Microsoft's enterprise CRM — its Professional tier limits custom tables to 15, while Enterprise and Premium offer unlimited customization via Dataverse tables. A Property Shell to Dynamics 365 Sales migration carries contacts, companies, projects, and custom properties into Dataverse tables and fields. We map Property Shell's property-specific objects to custom Dataverse tables, preserving development stage names as custom pick-list values rather than overwriting Dynamics 365's native Opportunity stage field. Owner resolution uses email matching against Microsoft 365 identities. A delta-pickup window (24–48 hours) captures any final changes during cutover. We run a sample migration with field-level diff before committing the full dataset. Workflows and automations do not migrate — these must be rebuilt in Power Automate using an exported reference document. Reports and dashboards are not carried over and require rebuilding in Dynamics 365 reporting tools or Power BI. Integrations must be reconnected separately. FlitStack sequences the migration so foreign-key dependencies resolve in order: Accounts first, then Contacts, then Opportunities, then Units and Contracts with attachments.
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
Property Shell platform overview
Scorecard, SWOT, gotchas, and pricing for Property Shell.
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 Property Shell 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.
Property Shell
Contact
Microsoft Dynamics 365 Sales
Contact (Dataverse)
1:1Property Shell contacts migrate as Dataverse Contacts. Standard fields (name, email, phone, address) map directly. Custom contact properties (enquiry source, preferred contact method, email subscription status) migrate as custom fields on the Contact table. Owner resolved by email match against Microsoft 365 users.
Property Shell
Company / Developer
Microsoft Dynamics 365 Sales
Account (Dataverse)
1:1Property Shell's Company object maps to Dynamics 365 Account. Developer-type property companies preserve their developer_type as a custom pick-list field (DeveloperType__c) on the Account. Primary contact links are resolved after the Contact records are created, using the primary_contact_id lookup from Property Shell.
Property Shell
Project
Microsoft Dynamics 365 Sales
Opportunity + custom Project__c table
1:1Property Shell Projects map to a custom Project__c Dataverse table in addition to a standard Opportunity record per project. The Opportunity captures deal-level financial fields (contract_value, budget_amount, deposit_amount); the Project__c table captures property development fields (development_address, settlement_date, project_stage) that have no native Opportunity equivalent.
Property Shell
Unit / Lot
Microsoft Dynamics 365 Sales
Custom LotUnit__c table
1:1Property Shell's Lot or Unit object has no direct Dynamics 365 equivalent — it requires a custom LotUnit__c Dataverse table. Fields like lot_number, area_sqm, lot_price, and sales_status migrate as custom columns. The sales_status pick-list maps to a custom pick-list defined in Dynamics 365, not to the native Opportunity Stage field.
Property Shell
Development Stage
Microsoft Dynamics 365 Sales
Custom pick-list on LotUnit__c
1:1Property Shell stores development stages (DA Approved, Site Works Complete, On Market, Under Contract, Settled) as a pick-list on each Unit record. These stages are not equivalent to Dynamics 365 Opportunity stages — they map to a custom pick-list field (DevelopmentStage__c) on the LotUnit__c table, with value-by-value mapping. Stage-entry timestamps migrate as custom datetime fields.
Property Shell
Contract
Microsoft Dynamics 365 Sales
Custom Contract__c table + Note
many:1Property Shell contract records contain both structured fields (contract_number, title, parties, dates) and file attachments. The structured fields merge into a custom Contract__c Dataverse table linked to the LotUnit__c record. Contract documents are re-uploaded as Dataverse Files attached to the Contract__c record — original filenames and MIME types are preserved.
Property Shell
Contract Attachment
Microsoft Dynamics 365 Sales
Dataverse Files
1:1Contract PDF files and display-suite assets attached to Property Shell contract records are downloaded and re-uploaded to Dataverse Files linked to the Contract__c record. Files exceeding Dynamics 365's 128 MB per-file limit are flagged for chunked upload. The original file size and creation date are stored as metadata on the file record.
Property Shell
Owner / User
Microsoft Dynamics 365 Sales
SystemUser (resolved by email)
1:1Property Shell owner records are resolved by email match against Microsoft 365 user accounts in Dynamics 365. Unmatched owners are flagged before migration — the team either creates a Microsoft 365 account first or assigns records to a designated fallback owner. Property Shell user metadata (role, last_login) is preserved as custom fields on the Contact record for reference.
Property Shell
Lead (enquiry without conversion)
Microsoft Dynamics 365 Sales
Lead (Dataverse)
1:1Property Shell enquiries that have not been converted to contacts map to Dynamics 365 Lead records. The enquiry_source property migrates as a custom field (EnquirySource__c) to preserve the origin channel for each lead. Lifecycle stage equivalents are stored as a custom pick-list (LeadType__c) on the Lead record, allowing segmentation by enquiry status without relying on the native lead quality scoring fields.
Property Shell
Marketing Automation / Workflow
Microsoft Dynamics 365 Sales
Power Automate (must rebuild)
1:1Property Shell's built-in marketing automation, enquiry funnels, and nurture journeys do not have a migration path to Dynamics 365. They must be rebuilt in Power Automate or Dynamics 365 Customer Insights Journeys. FlitStack exports the workflow definitions and trigger/action logs as a JSON reference document for the rebuild project.
Property Shell
Report / Dashboard
Microsoft Dynamics 365 Sales
Dynamics 365 Reports + Power BI (must rebuild)
1:1Property Shell's reporting and metrics dashboards do not carry over. The underlying data migrates, but the report definitions, chart configurations, and scheduled delivery settings require rebuilding using Dynamics 365's native report designer or Power BI. FlitStack provides a data dictionary of the migrated schema to accelerate the rebuild.
Property Shell
Integration / Third-party connection
Microsoft Dynamics 365 Sales
Power Platform connectors (must rebuild)
1:1Property Shell integrations with third-party tools (Zapier, PropertyGuru, Campaign Monitor, Mailchimp) must be disconnected before migration and re-established in Dynamics 365 using Power Automate connectors or native integration settings. Integration endpoints, authentication credentials, and trigger configurations are documented during discovery so your team can rebuild each connection in the Power Platform admin center after go-live.
| Property Shell | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Contact | Contact (Dataverse)1:1 | Fully supported | |
| Company / Developer | Account (Dataverse)1:1 | Fully supported | |
| Project | Opportunity + custom Project__c table1:1 | Fully supported | |
| Unit / Lot | Custom LotUnit__c table1:1 | Fully supported | |
| Development Stage | Custom pick-list on LotUnit__c1:1 | Fully supported | |
| Contract | Custom Contract__c table + Notemany:1 | Fully supported | |
| Contract Attachment | Dataverse Files1:1 | Fully supported | |
| Owner / User | SystemUser (resolved by email)1:1 | Fully supported | |
| Lead (enquiry without conversion) | Lead (Dataverse)1:1 | Fully supported | |
| Marketing Automation / Workflow | Power Automate (must rebuild)1:1 | Fully supported | |
| Report / Dashboard | Dynamics 365 Reports + Power BI (must rebuild)1:1 | Fully supported | |
| Integration / Third-party connection | Power Platform connectors (must rebuild)1: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.
Property Shell gotchas
No documented public API for data export
Highly customised per-customer schema requires pre-migration field audit
Interactive Maps are visualisation-layer only and cannot be migrated
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 schema profiling
FlitStack extracts Property Shell's full object schema via API — all custom properties, pick-list values, relationship metadata, and owner records. We profile record counts per object, identify multi-table relationship chains (Project → Unit → Contract → Attachment), and flag pick-list value sets that require value-by-value mapping. The discovery output is a Migration Scope Document that your team reviews before we begin field mapping. At this stage we also identify which Dynamics 365 license tier is required to accommodate your custom schema.
Schema design and Dynamics 365 configuration
Based on the discovery output, we design the Dataverse custom tables and fields needed for your migration: LotUnit__c, Contract__c, Project__c, and custom fields on Account and Contact. We produce a Dynamics 365 setup plan listing every table to create, every pick-list to populate, and every relationship to configure — including the DevelopmentStage__c and SalesStatus__c pick-lists. Your Dynamics admin creates the schema (or FlitStack creates it via the Dataverse API with your admin's OAuth credentials) before data movement begins. This step prevents the common failure mode of data landing before the destination fields exist.
Owner resolution and user seeding
We extract Property Shell owner records and match them against Microsoft 365 user accounts in your Dynamics 365 tenant by email address. Owners with no matching Microsoft 365 account are flagged in a Pre-Migration Owner Report. Your team either provisions a Microsoft 365 account for each unmatched owner before migration day or designates a fallback owner. No record is loaded without a valid Dynamics 365 owner; this prevents orphaned records that appear in reports but have no assigned user.
Data migration in dependency order
We sequence the migration to respect Dataverse foreign-key constraints: Accounts first (no dependencies), then Contacts (depends on Account), then Project__c and Opportunity (depends on Account), then LotUnit__c (depends on Project__c), then Contract__c (depends on Account, LotUnit__c, and Project__c), and finally Annotations (file attachments) linked to their parent records. Each batch is validated after loading — record counts, required-field completeness, and pick-list validity are checked before the next batch begins. Contract PDF files are downloaded from Property Shell and re-uploaded to Dataverse Files with original filenames and MIME types preserved.
Sample migration with field-level diff
Before the full migration runs, we migrate a representative sample — typically 100–500 records spanning contacts, accounts, projects, units, contracts, and a sample of attachments. We generate a field-level diff comparing source values against destination values for every mapped field, including custom pick-lists and datetime stamps. You review the diff and confirm the mapping is correct. DevelopmentStage__c and SalesStatus__c value mappings are validated here. No full migration commits until you sign off on the sample.
Delta pickup, cutover, and audit delivery
The full migration runs and a delta-pickup window opens — typically 24 to 48 hours — to capture any Property Shell records created or modified during the cutover period. FlitStack maintains scoped read access to Property Shell throughout; your team keeps working in the platform. After the delta window closes, we run a final reconciliation comparing total record counts per object in both systems. We deliver a complete Migration Audit Log listing every record created, updated, or skipped, plus a Power Automate rebuild reference document for your workflow reconstruction project. One-click rollback is available if reconciliation reveals discrepancies above your defined tolerance threshold.
Platform deep dives
Property Shell
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
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 Property Shell and Microsoft Dynamics 365 Sales .
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
Property Shell: Not publicly documented.
Data volume sensitivity
Property Shell 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 Property Shell to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Property Shell 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 Property Shell
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.