CRM migration
Field-level mapping, validation, and rollback between Formitize and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Formitize
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
11 of 12
objects map 1:1 between Formitize and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
72–96 hours
Overview
Formitize operates as a field-service and business-management platform where Clients, Contacts, and Jobs form the operational core, supplemented by Assets, Smart Tables, and custom variables that extend the data model per industry pack. Dynamics 365 Sales structures its universe around Accounts, Contacts, Leads, and Opportunities—built on Dataverse with its own rules for lookups, ownership, and custom table creation. The migration challenge is threefold: collapsing Formitize's Client-Contact hierarchy into Dynamics 365's Account-Contact parent-child model, translating Formitize Jobs (which carry status, location, and client associations) into either Dynamics 365 Opportunities or the Case entity depending on their commercial nature, and mapping Formitize custom variables and Smart Table exports to Dataverse custom columns with type-aware conversions. FlitStack AI uses Formitize's REST API to export Clients, Contacts, Jobs, Assets, and Smart Table records, transforms them according to the field mapping plan, and bulk-upserts into Dynamics 365 via the Dataverse Web API. Workflows, form builders, Zapier integrations, and document-management logic do not migrate—they must be rebuilt in Power Automate and Power Apps post-cutover. A 24–48 hour delta-pickup window captures any records modified during the cutover window.
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
Formitize platform overview
Scorecard, SWOT, gotchas, and pricing for Formitize.
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 Formitize 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.
Formitize
Client
Microsoft Dynamics 365 Sales
Account
1:1Formitize Client maps directly to Dynamics 365 Account. The Client name becomes Account.Name; billing address maps to Address fields; website/domain maps to Website field. Parent-child Client hierarchies map to Account.ParentAccountId where present. Multi-location Clients map as separate Account records linked by the parent field.
Formitize
Contact
Microsoft Dynamics 365 Sales
Contact
1:1Formitize Contact maps 1:1 to Dynamics 365 Contact. Each Contact requires an AccountId lookup to its parent Client (resolved as Account). Name, email, phone, job title, and address fields map directly. Formitize Contact custom variables migrate as Dataverse custom columns on the Contact table.
Formitize
Job
Microsoft Dynamics 365 Sales
Opportunity
1:1Formitize Job is the core commercial record in Formitize but has no direct Dynamics 365 equivalent—it's a blend of Opportunity and Case. We translate Job.name or Job.reference to Opportunity.Name, Job.amount or total line items to Opportunity.Amount, Job.status to Opportunity.StageName via value mapping, and Job.closedate to Opportunity.CloseDate. If Jobs are service-only with no sales value, they map to the Case entity instead.
Formitize
Job (service-only)
Microsoft Dynamics 365 Sales
Incident (Case)
1:manyJobs that contain no commercial amount, invoice, or quote data—purely service or compliance records—are identified by Formitize Job Type and routed to Dynamics 365 Case (Incident) instead of Opportunity. The Case.Title receives the Job name; Case.AccountId links to the Account. Cases are routed by Formitize priority using Dynamics 365 Case Type and Priority Option Sets.
Formitize
Asset
Microsoft Dynamics 365 Sales
Asset
1:1Formitize Asset maps to Dynamics 365 Asset (field-service entity) when the destination includes Field Service. For Sales-only deployments, Asset data migrates as a custom table (new_asset) in Dataverse with fields for name, client/account link, location zone, GPS coordinates (as custom lat/long columns), and custom attribute columns mirroring Formitize Asset custom fields.
Formitize
Smart Table
Microsoft Dynamics 365 Sales
Custom Table (Dataverse)
1:1Formitize Smart Tables are arbitrary data grids exported from Formitize's reporting module. Each Smart Table becomes a custom Dataverse table. Column headers map as table columns with appropriate Dataverse data types (string, integer, decimal, datetime, boolean, OptionSet). Lookup columns in Smart Tables resolve to corresponding Account or Contact records by key field matching.
Formitize
Contact Custom Variable
Microsoft Dynamics 365 Sales
Contact (custom column)
1:1Formitize Contact Custom Variables—user-defined fields on Contacts such as birthday, client_rating, or referral_source—migrate as Dataverse custom columns on the Contact table. Each variable becomes a column with the type closest to its Formitize data type (text → string, number → integer or decimal, date → datetime). The exact column names are sourced from the Formitize Custom Fields API export.
Formitize
Client Custom Variable
Microsoft Dynamics 365 Sales
Account (custom column)
1:1Client-level custom variables (industry_pack extensions, billing tier, zone assignments) migrate as Dataverse custom columns on the Account table. Zone-related variables may map to Option Set values if zone lists are finite, or remain as free-text custom columns for manual categorization in Dynamics 365.
Formitize
Document
Microsoft Dynamics 365 Sales
Note (with file attachment)
1:1Formitize Documents attached to Jobs, Clients, or Contacts are downloaded from Formitize storage and re-uploaded as Dynamics 365 Note records with file attachments. Document titles become Note.Subject; the attachment binary re-stored under Note.Body or as a SharePoint-connected file if the destination tenant has SharePoint integration enabled.
Formitize
User (owner)
Microsoft Dynamics 365 Sales
User (OwnerId)
1:1Formitize Users are matched to Dynamics 365 Users by email address. Unmatched users are flagged before migration; the destination admin either creates the user in Dynamics 365 first or assigns their records to a fallback owner. This resolution runs before any record insert to satisfy Dynamics 365 OwnerId NOT NULL constraint.
Formitize
Quote / Invoice
Microsoft Dynamics 365 Sales
Quote / Order
1:1Formitize Quotes and Invoices associated with Jobs migrate as Dynamics 365 Quotes and SalesOrders linked to the corresponding Opportunity (mapped from the Job). Line items translate to QuoteDetail and SalesOrderDetail records. Invoice status and totals map to the respective Dynamics 365 entity fields. Outstanding invoice amounts and balances become custom financial fields on the Order.
Formitize
Workflow
Microsoft Dynamics 365 Sales
Power Automate
1:1Formitize Workflows (multi-stage compliance and process automation) have no migration path to Dynamics 365. The workflow definitions, triggers, and stage configurations cannot be exported from Formitize's API. We provide a Workflow Export Summary document listing every active Formitize workflow by name, trigger type, and stages so your Dynamics 365 admin can recreate them in Power Automate from scratch.
| Formitize | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Client | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Job | Opportunity1:1 | Fully supported | |
| Job (service-only) | Incident (Case)1:many | Fully supported | |
| Asset | Asset1:1 | Fully supported | |
| Smart Table | Custom Table (Dataverse)1:1 | Fully supported | |
| Contact Custom Variable | Contact (custom column)1:1 | Fully supported | |
| Client Custom Variable | Account (custom column)1:1 | Fully supported | |
| Document | Note (with file attachment)1:1 | Fully supported | |
| User (owner) | User (OwnerId)1:1 | Fully supported | |
| Quote / Invoice | Quote / Order1:1 | Fully supported | |
| Workflow | Power Automate1: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.
Formitize gotchas
Limited bulk export mechanism complicates migration scoping
Custom field schemas are per-account, not organizational templates
Workflow definitions do not transfer between platforms
Asset zone and GPS data requires explicit extraction
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
Audit Formitize data and build the migration schema plan
FlitStack AI connects to Formitize via API using scoped read credentials and exports the full record inventory: Clients, Contacts, Jobs, Assets, Smart Tables, Quotes, Invoices, and custom variable definitions. We produce a Migration Schema Plan that documents every Formitize field, its inferred Dataverse type, the proposed column name, and any transformation logic. This plan is reviewed with your admin before any data moves. Smart Table schema is inferred from row data exports and validated against a sample of 50+ rows per table to confirm column type consistency.
Create Dataverse custom tables and columns for non-standard Formitize objects
Before data ingestion, FlitStack creates the required Dataverse custom tables and columns to host Formitize data that has no native Dynamics 365 equivalent. This includes custom datetime columns for original create dates, custom text columns for Formitize IDs, custom OptionSets for zone and job-type value mappings, and custom tables for Smart Table exports. Custom column creation uses the Dataverse Web API and requires a Dynamics 365 user with Environment Maker or System Customizer privileges. We deliver a pre-flight checklist confirming all custom schema is live in the target environment before the migration run begins.
Resolve Formitize Users to Dynamics 365 Users by email
FlitStack exports all Formitize Users and attempts to match each one to a Dynamics 365 User record by email address. Unmatched users are flagged in a Resolution Report with the Formitize user name, email, and role. Your Dynamics 365 admin either creates the missing user in the destination tenant or assigns those records to a fallback owner. No record is inserted without a valid OwnerId. Owner resolution runs before the main migration phase so that every record lands with the correct Dynamics 365 owner from day one.
Run sample migration with field-level diff before the full cutover
A representative sample—typically 200–500 records across Clients, Contacts, Jobs, and Assets—migrates first. FlitStack generates a field-level diff report comparing every source field value against the destination field value. You verify that job statuses map to the correct Opportunity StageName values, that Location Zone data lands in the custom column, and that owner resolution is complete. Approval of the diff report gates the full migration run. Any mapping errors discovered at this stage are corrected in the migration schema before the full volume runs.
Execute full migration with delta-pickup window and audit log
The full record set migrates in sequenced batches respecting Dataverse API throughput limits. A 24–48 hour delta-pickup window opens at the cutover point and captures any Formitize records created or modified during the migration run. Every operation is logged to the FlitStack audit log: record count, error codes, and retry history. If reconciliation identifies missing or mismatched records, one-click rollback reverts the Dataverse environment to its pre-migration state. The rollback uses the audit log to undo inserts and restore original values, allowing a clean re-run without data contamination.
Platform deep dives
Formitize
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 Formitize 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
Formitize: Not publicly documented.
Data volume sensitivity
Formitize 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 Formitize to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Formitize 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 Formitize
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.