CRM migration
Field-level mapping, validation, and rollback between Moskit and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Moskit
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
5 of 9
objects map 1:1 between Moskit and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Moskit CRM to Microsoft Microsoft Dynamics 365 Sales is a cross-locale, cross-platform migration that requires resolving schema differences, API behavioral constraints, and Brazilian Portuguese label preservation. Moskit stores person-level records as Contacts, organizations as Companies (Empresas), sales tracks as Deals (Negócios), and time-bound activities as Atividades, with Projects spawned directly from Deals. Microsoft Dynamics 365 Sales uses the standard Account-Contact-Lead-Opportunity model with Activity, Note, and Task objects. We extract via Moskit's REST API using bearer-token auth, probe conservatively for undocumented rate limits, and load via the Dynamics 365 Dataverse API with batch chunking. Portuguese field labels from Moskit are preserved as-is in Dynamics custom fields with a field-label translation glossary delivered alongside the migration package. Projects from Moskit are not native to Microsoft Dynamics 365 Sales ; we migrate them as custom records linked to Opportunities via a custom reference field. WhatsApp Business conversation metadata (timestamps, participant count, message count) migrates as activity notes, but full message history lives in WhatsApp infrastructure and is flagged as a data gap in the scoping report.
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
Moskit platform overview
Scorecard, SWOT, gotchas, and pricing for Moskit.
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 Moskit 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.
Moskit
Contact
Microsoft Dynamics 365 Sales
Contact
1:1Moskit Contact records (pessoa-level, storing name, email, phone, custom properties) map directly to Dynamics 365 Contact. We extract all standard fields plus any custom properties discovered per object via schema queries run during extraction. The Contact's primary email address becomes the EmailAddress1 field used as the dedupe key on import. We preserve Brazilian Portuguese field labels as custom field display names and deliver a Portuguese-to-English field label glossary so Dynamics admins can navigate without BR-language fluency.
Moskit
Company (Empresa)
Microsoft Dynamics 365 Sales
Account
1:1Moskit Company records (organização-level, linked to Contacts via a foreign key relationship) map to Dynamics 365 Account. The Company domain, address, industry classification, and custom fields all migrate to equivalent Account fields. Account is imported before Contact so that AccountId is resolved at the moment of Contact insert, satisfying the required Lookup relationship.
Moskit
Deal (Negócio)
Microsoft Dynamics 365 Sales
Opportunity
1:1Moskit Deals (Negócios) map to Dynamics 365 Opportunity. The dealstage property maps to StageName, and the Moskit pipeline assignment maps to a Microsoft Dynamics 365 Sales Process or Record Type configured before migration. Deal monetary value migrates to Amount; closed-won and closed-lost dates migrate to CloseDate and a custom closed_reason__c field. Custom deal properties discovered during schema extraction migrate as custom Opportunity fields.
Moskit
Pipeline Stage
Microsoft Dynamics 365 Sales
Opportunity Stage
lossyMoskit pipelines contain custom-named stages with stage-order sequencing. We map stage names and order to Microsoft Dynamics 365 Sales Process stage values, and migrate stage-level probability percentages to StageProbability. If Moskit uses a stage naming convention in Portuguese, we preserve the Portuguese name in a custom field for audit and configure an English-language StageName that aligns with the customer's chosen Microsoft Dynamics 365 Sales Process.
Moskit
Activity (Atividade)
Microsoft Dynamics 365 Sales
Task and Event
1:1Moskit Activities (Atividades) represent tasks, calls, meetings, and notes linked to Deals or Contacts. Activity type labels in Portuguese (e.g., Tarefa, Ligação, Reunião) map to Dynamics 365 Task and Event objects based on activity type. Timestamps, owners, descriptions, and linked record references migrate. Activity type labels are translated in the field label glossary. The activity's linked Deal or Contact reference is resolved at migration time by querying the destination record's Dynamics ID.
Moskit
Project (Projeto)
Microsoft Dynamics 365 Sales
Custom Project Entity (Opportunity-linked)
1:manyMoskit Projects are deal-centric and spawned from Deal records. Microsoft Dynamics 365 Sales has no native standalone Project object. We migrate Projects as a custom Dataverse entity with a lookup to Opportunity. The Project's deal reference is resolved in two passes: first importing Deals (storing source Moskit deal ID in a custom field), then Projects with the deal reference remapped to the corresponding destination Opportunity ID. Task-level detail within Projects migrates as custom Project Task records on the same custom entity.
Moskit
Custom Properties (per object)
Microsoft Dynamics 365 Sales
Custom Fields (per entity)
lossyMoskit allows custom fields on Contacts, Companies, Deals, and Activities. We query each object type individually during schema discovery to enumerate its custom field definitions (Moskit does not expose a bulk custom-field enumeration endpoint). Each custom field is type-mapped to the closest Dynamics 365 field type (text to Single Line of Text, picklist to Option Set, date to Date Only, number to Whole Number or Decimal). Custom fields are deployed to the destination Dynamics 365 environment via Dataverse API before any record data is loaded.
Moskit
User (Usuário)
Microsoft Dynamics 365 Sales
User
1:1Moskit User records (name, email, role, active/inactive status) are exported and matched to Dynamics 365 User records by email address. Inactive Moskit users are included with an IsActive flag set to false in a custom field so they can be provisioned correctly in Dynamics 365. Any Moskit Owner without a matching Dynamics User goes to a reconciliation queue for the customer's admin to provision before record import resumes.
Moskit
WhatsApp Conversation Metadata
Microsoft Dynamics 365 Sales
Note (Activity-linked)
lossyMoskit's WhatsApp Business sync stores conversation references linked to Contact records, but the actual message content lives in WhatsApp's infrastructure. We extract conversation metadata (timestamps, participant count, message count, conversation status) as Note records linked to the Contact in Dynamics 365. We flag this gap explicitly in the scoping report so the customer can decide whether to export WhatsApp data separately from WhatsApp Business Manager. Full message history does not migrate.
| Moskit | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company (Empresa) | Account1:1 | Fully supported | |
| Deal (Negócio) | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Activity (Atividade) | Task and Event1:1 | Fully supported | |
| Project (Projeto) | Custom Project Entity (Opportunity-linked)1:many | Fully supported | |
| Custom Properties (per object) | Custom Fields (per entity)lossy | Fully supported | |
| User (Usuário) | User1:1 | Fully supported | |
| WhatsApp Conversation Metadata | Note (Activity-linked)lossy | 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.
Moskit gotchas
No published API rate limit documentation
WhatsApp conversation sync is a linked feature, not standalone data
Deal-to-Project linkage must be explicitly preserved
Custom field definitions vary by object and are not enumerated in bulk
Brazilian Portuguese field labels may cause mapping mismatches
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 audit
We audit the source Moskit environment across objects in scope (Contacts, Companies, Deals, Activities, Projects), custom property definitions per object, pipeline stages, owner list, and WhatsApp conversation metadata volume. We generate an API key from Moskit's Marketplace module and run schema-discovery queries per object type to enumerate all custom fields before pulling record data. The discovery output is a written migration scope, a source-field catalog with Portuguese labels, and a preliminary field-mapping draft for each object.
Destination schema design and custom entity provisioning
We design the Microsoft Dynamics 365 Sales destination schema including standard entities (Account, Contact, Lead, Opportunity, Task, Event, Note) and any custom entities required for Projects. Custom fields from Moskit are provisioned as typed Dataverse columns before data import. We create a Portuguese-to-English field label glossary in parallel and deliver it with the schema design for customer sign-off. If the customer uses Portuguese-language Dynamics 365, we coordinate label localization options with their tenant settings.
Owner and user reconciliation
We extract every distinct Moskit Owner referenced on Contact, Company, Deal, and Activity records and match by email against the destination Dynamics 365 User table. Owners without a matching User go to a reconciliation queue. The customer's Dynamics 365 admin provisions any missing Users (active or inactive matching the original Moskit owner status) before record import begins. OwnerId references are required on most standard objects, so this step gates all subsequent imports.
Sandbox migration and reconciliation
We run a full migration into a Dynamics 365 Sandbox environment using production-like data volumes. The customer's RevOps or CRM lead reconciles record counts across all object types, spot-checks 20-40 records per object against the source Moskit data, and verifies that Portuguese labels, deal stage values, and custom field data all landed correctly. Any mapping corrections are documented and applied before production migration begins. This step also validates that the two-pass deal-before-project sequencing correctly populates the Project-Opportunity lookup.
Production migration in dependency order
We run production migration in record-dependency order: Users (validated from reconciliation), Accounts (from Moskit Companies), Contacts (with AccountId resolved), Opportunities (with AccountId, OwnerId, and Sales Process resolved), Activities (Tasks and Events via Dataverse API with batch chunking), and finally Projects (second pass with Opportunity ID remapped from the Deal lookup table). WhatsApp conversation metadata lands as Notes during the Activities phase. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and handoff
We freeze Moskit writes during cutover, run a final delta migration of any records modified during the migration window, then set Microsoft Dynamics 365 Sales as the system of record. We deliver the Portuguese-to-English field label glossary, the Project-Opportunity linkage map, and the WhatsApp conversation metadata inventory to the customer. We do not rebuild Moskit automations as Dynamics 365 Power Automate flows inside the migration scope; that work is documented separately for the customer's admin team as a post-migration rebuild task.
Platform deep dives
Moskit
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Moskit and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Moskit and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between Moskit and Microsoft Dynamics 365 Sales .
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
Moskit: Not publicly documented.
Data volume sensitivity
Moskit 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 Moskit to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Moskit 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 Moskit
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.