Data Migration from Microsoft Dynamics to Bitrix24
Microsoft Dynamics 365 (CRM and Sales) is an enterprise system with a sophisticated data model, deep integration with the Microsoft ecosystem, and high licensing costs. The transition to Bitrix24 occurs during cost optimization, migration away from Western platforms, or reorientation toward the Russian technology stack. This is technically complex migration work: Dynamics features one of the richest object models among CRM systems.
Dynamics 365 Data Architecture
Dynamics 365 stores data in SQL Server (on-premise) or Azure SQL (cloud). Primary entities include:
-
Account— organization (company) -
Contact— individual person -
Lead— lead -
Opportunity— opportunity (deal) -
ActivityPointer— base type for all activities -
PhoneCall,Email,Appointment,Task— concrete activity types (inheriting from ActivityPointer) -
Quote,Order,Invoice— commercial documents
Custom entities (Custom Entity) are created through Power Apps / Customizations and stored in tables named <publisher_prefix>_<entityname>.
Data Extraction: OData API vs Direct SQL
OData API (Web API) — the preferred method, works for both cloud and on-premise:
// Retrieving accounts via Dynamics Web API
$response = $dynamics->get('/api/data/v9.2/accounts', [
'$select' => 'accountid,name,telephone1,emailaddress1,websiteurl',
'$filter' => 'statecode eq 0', // active only
'$top' => 5000,
]);
// Pagination via @odata.nextLink
Direct SQL (on-premise only) — faster for large volumes, but requires knowledge of Dynamics schema. The AccountBase table corresponds to the Account entity, ContactBase to Contact, etc.
Entity Mapping
| Dynamics 365 | Bitrix24 |
|---|---|
| Account | Company |
| Contact | Contact |
| Lead | Lead |
| Opportunity | Deal |
| Task | Task |
| PhoneCall | Activity "Call" |
| Appointment | Activity "Meeting" |
| Activity "Email" | |
| Quote | Invoice (CRM) |
| BusinessUnit | Department |
| SystemUser | User |
Custom Fields and Metadata
Dynamics 365 supports dozens of field types: Lookup, OptionSet, MultiSelectOptionSet, Money, Customer (polymorphic binding to Contact or Account), PartyList (multiple participants).
Obtaining schema via Metadata API:
GET /api/data/v9.2/EntityDefinitions(LogicalName='opportunity')/Attributes
Particular complexity arises from the Customer type (polymorphic — either Contact or Account) and PartyList (e.g., meeting participants — list of multiple entities of different types). In Bitrix24, these concepts are implemented through multiple bindings or custom development.
Business Processes and Power Automate
Workflows in Dynamics (now Power Automate) do not migrate to Bitrix24 — they must be recreated through robots, triggers, and business processes. This is a separate part of the project, often taking as much time as the data migration itself.
Hierarchy and Organization Structure
Dynamics supports BusinessUnit and Team with multi-level hierarchy. In Bitrix24, this is departments. Users migrate with binding to corresponding departments; security roles (Security Roles) are mapped to CRM roles manually.
Integration with Microsoft 365
One of the incentives for using Dynamics is native integration with Outlook, Teams, SharePoint. When moving to Bitrix24, equivalent integrations must be provided:
- Outlook → Bitrix24 Mail or via Exchange connector
- Teams → Bitrix24 Video Calls (or keep Teams for meetings)
- SharePoint → Bitrix24 Drive
Typical Timeframes
| Volume | Customization | Timeframe |
|---|---|---|
| up to 50,000 records, standard entities | Minimal | 4–6 weeks |
| 50,000–200,000 records, custom entities | Medium | 2–4 months |
| 200,000+ records, complex BP, integrations | High | 4–8 months |
Project implementation is recommended starting with a detailed audit of Dynamics customizations and comparative analysis with Bitrix24 capabilities — some functions will require reimagining or replacing the approach.







