ERP migration
Field-level mapping, validation, and rollback between NetSuite and Microsoft Dynamics 365 Business Central. We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Business Central.
NetSuite
Source
Microsoft Dynamics 365 Business Central
Destination
Compatibility
13 of 18
objects map 1:1 between NetSuite and Microsoft Dynamics 365 Business Central.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Moving from NetSuite to Microsoft Dynamics 365 is a structural migration, not a record copy. NetSuite's unified multi-entity database represents subsidiaries as intra-account entities with native intercompany eliminations; Dynamics 365 requires a separate Company database per legal entity with explicit posting group configuration. We resolve that split during discovery, map each NetSuite subsidiary to a distinct Dynamics 365 Company with mandatory VAT or posting groups, and sequence open AR/AP as fresh journal entries rather than historical invoice replay. Custom fields (custbody_*, custrecord_*, custentity_*) are discovered via SuiteQL against the NetSuite metadata endpoint and mapped to Dynamics extension fields before migration. Historical journal entries require either prior-period balance carry-forward or full replay with original exchange rates preserved. SuiteBuilder workflows and SuiteScripts do not migrate; we deliver a written inventory of every active automation for your Dynamics partner or admin to rebuild in Power Automate or AL-based workflows post-migration.
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
NetSuite platform overview
Scorecard, SWOT, gotchas, and pricing for NetSuite.
Destination platform
Microsoft Dynamics 365 Business Central platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Business Central.
Data migration guide
The complete Dynamics 365 Business Central migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Dynamics 365 Business Central migration checklist
Pre- and post-cutover tasks for moving onto Microsoft Dynamics 365 Business Central.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a NetSuite object lands in Microsoft Dynamics 365 Business Central, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
NetSuite
Chart of Accounts (Accounts)
Microsoft Dynamics 365 Business Central
Chart of Master Data (G/L Account)
1:1NetSuite Accounts (account type codes 0-24: Bank, AR, Inventory, Fixed Assets, AP, Income, COGS, Expense) map to Dynamics G/L Entries. NetSuite account numbers (acctNumber) become Dynamics G/L Account numbers; account names become posted descriptions. Exchange gains/losses accounts require separate mapping for currency revaluation rows. We validate that Dynamics posting groups are assigned for each account before import to avoid rejection at first posting.
NetSuite
Subsidiary
Microsoft Dynamics 365 Business Central
Company (Legal Entity)
1:manyNetSuite's subsidiary model is the central complexity in this migration. One NetSuite account with N subsidiaries must split into N separate Dynamics 365 Companies (each a legal entity with its own fiscal calendar, VAT registration, and chart of accounts). Each subsidiary maps to a distinct Company with mandatory Business Central posting groups or F&O legal entities. Intercompany accounts in NetSuite (elimination subsidiaries) require explicit Dynamics intercompany posting group configuration during setup. The subsidiary-to-company map is built during discovery and validated against the destination's legal entity requirements before any transaction data moves.
NetSuite
Customer
Microsoft Dynamics 365 Business Central
Customer
1:1NetSuite Customers map to Dynamics Customers with address, contact, payment terms, and tax registration fields preserved. Customer currency assignments in NetSuite become Dynamics Customer posting groups. Credit limits migrate as-is but require reconfiguration of Dynamics credit management workflows. Customer-specific pricing matrices map to Dynamics Customer Price Groups if the customer uses tiered or volume pricing.
NetSuite
Vendor
Microsoft Dynamics 365 Business Central
Vendor
1:1NetSuite Vendors map to Dynamics Vendors with the same address, contact, and payment term fields. Tax ID and VAT registration from NetSuite become Dynamics Tax Registration numbers. 1099 vendor flags migrate to the corresponding Dynamics tax document settings. Vendor-specific discounts require mapping to Vendor Price Groups in Dynamics.
NetSuite
Item (Inventory Assembly, Non-Inventory, Service, Description)
Microsoft Dynamics 365 Business Central
Item (Inventory Item, Service Item, Non-Stock Item)
1:1NetSuite item types (Inventory Assembly, Non-Inventory, Service, Description Only) map directly to Dynamics item types. BOM/assembly relationships in NetSuite become Dynamics bill of materials entries. Lot/serial number tracking, location assignments, and landed cost fields migrate to Dynamics warehouse configuration. Pricing matrices become Dynamics Sales Prices linked to Customer Price Groups. We resolve the item-company relationship (multi-subsidiary items must be created per Dynamics legal entity).
NetSuite
Sales Order / Invoice
Microsoft Dynamics 365 Business Central
Sales Order / Sales Invoice
1:1Open NetSuite Sales Orders migrate as Dynamics Sales Orders with the original order date and customer price group preserved. Closed or fulfilled orders migrate as Sales Invoices for AR aging purposes. Invoice PDFs attach as document attachments. Historical paid invoices do not migrate as closed records; the customer's choice (carry forward open AR only, or replay full history) determines whether we create posted Sales Invoice records or carry-forward balance journal entries.
NetSuite
Vendor Bill / Purchase Order
Microsoft Dynamics 365 Business Central
Purchase Invoice / Purchase Order
1:1Open NetSuite Vendor Bills migrate as Dynamics Purchase Invoices with original posting dates preserved for aging. Closed and paid vendor bills similarly follow the carry-forward or replay strategy agreed upon during scoping. PO matching (NetSuite's built-in 2- or 3-way match) becomes Dynamics invoice approval workflows configured post-migration.
NetSuite
Journal Entry
Microsoft Dynamics 365 Business Central
General Journal
1:1Historical journal entries are the highest-risk migration object. NetSuite journals carry prior-period adjustments, intercompany eliminations, and currency revaluation rows with original posting dates and exchange rates. We offer two strategies: (1) Full replay: create Dynamics General Journal lines with original posting dates and rates preserved, maintaining audit trail; (2) Balance carry-forward: create a single opening-balance journal per subsidiary at a designated go-live date, carrying forward net balances rather than replaying each historical row. The choice is captured in the migration contract before sequencing begins.
NetSuite
Open AR / Open AP
Microsoft Dynamics 365 Business Central
Customer Ledger Entries / Vendor Ledger Entries
lossyOutstanding receivables and payables migrate as open ledger entries in Dynamics, not as recreated invoice records. We extract open invoice amounts, due dates, aging bucket assignments, payment terms, and currency from NetSuite, then create Customer or Vendor Ledger Entries with the original document dates. Reminder levels and finance charge settings require post-migration configuration in Dynamics.
NetSuite
Custom Record Types (custrecord_*)
Microsoft Dynamics 365 Business Central
Custom Tables (Extension Tables)
1:1NetSuite Custom Records are user-defined record types with custom fields (custrecord_*, custcol_*). Every NetSuite environment has a unique custom record schema discovered via SuiteQL. We export the full custom record registry, map each custom record type to a Dynamics extension table, and create the destination schema in the Dynamics development environment before migration. Lookup relationships between custom records and standard objects require careful resolution of the internalId-to-GUID mapping during import.
NetSuite
Custom Fields (custbody_*, custentity_*, custitem_*)
Microsoft Dynamics 365 Business Central
Extension Fields (AL Table Extension)
1:1NetSuite attaches custom fields to nearly every standard object using prefix conventions (custbody_*, custcol_*, custentity_*, custitem_*). We run a metadata discovery pass via SuiteQL to enumerate all active custom fields per account, then create equivalent Dynamics AL extension fields. Custom fields on transaction lines (custcol_*) require special handling in Dynamics OData or API payloads. Field types (text, date, checkbox, list, currency) are mapped to their Dynamics equivalents before schema deployment.
NetSuite
Tax Codes and Jurisdictions
Microsoft Dynamics 365 Business Central
Tax Setup (Tax Groups, VAT Business Posting Groups)
lossyNetSuite tax codes define nexus, rates, and filing jurisdictions referenced by internalId on transaction lines. We preserve the full tax code registry and map each code to Dynamics Tax Groups and Tax Business Posting Groups. Nexus assignments in NetSuite become Tax Area configurations in Dynamics. E-invoicing compliance settings (PEPPOL, EU EN 16931) are documented separately for F&O and BC EU localization packs.
NetSuite
Employee
Microsoft Dynamics 365 Business Central
Worker (Human Resources)
1:1NetSuite Employee records (from the HR module) include compensation history, PTO balances, and benefits enrollment. We map employees to Dynamics 365 Human Resources Worker records. Effective-dated compensation rows require careful sequencing to maintain correct historical pay records. Benefits enrollment migrates as Worker Benefit records if the HR module is included in scope; otherwise it is flagged as a manual post-migration task.
NetSuite
Project / PSA
Microsoft Dynamics 365 Business Central
Projects
1:1NetSuite SuiteProjects Pro records (project billing, time entries, resource allocations, milestones) map to Dynamics Projects. Project financials must be separated from standard G/L transactions. We map project status, billing method, and cost prices from NetSuite to Dynamics Project dimensions and pricing structures. Time entries migrate as project journal lines. Fixed-price project milestones map to Dynamics contract lines with billing schedules.
NetSuite
Saved Search
Microsoft Dynamics 365 Business Central
Views / Reports
lossyNetSuite Saved Searches are reporting objects that do not have a direct Dynamics equivalent. We do not migrate Saved Searches as functional objects. Instead, we deliver a written inventory of every active Saved Search with its criteria, columns, filters, and recipient list, so the customer's Dynamics admin or partner can rebuild them as Dynamics Views, Power BI reports, or RDL-based SQL Server Reporting Services reports. This inventory is included in the standard migration deliverables.
NetSuite
SuiteBuilder Workflows / SuiteScripts
Microsoft Dynamics 365 Business Central
Power Automate / AL Workflows
lossyNetSuite SuiteBuilder workflows and SuiteScript 2.x automations do not migrate. They are structurally incompatible with Dynamics 365's automation model (Power Automate for cloud flows, AL-based workflows for server-side events). We deliver a written inventory of every active workflow and scheduled script with its trigger conditions, actions, and recommended Power Automate or AL equivalent. The customer's Dynamics partner or admin rebuilds these post-migration as a separate engagement.
NetSuite
File Cabinet Documents
Microsoft Dynamics 365 Business Central
SharePoint / Record Links
1:1NetSuite File Cabinet documents attached to records are extracted as file content with metadata (file name, created date, attached record type and ID). We deliver them as a file package with a manifest mapping each file to its source record. The customer's admin uploads to SharePoint (connected to Dynamics via native SharePoint integration) or attaches directly to Dynamics records post-migration. Large binary files (BDC, images) are chunked and retried under export rate limits.
NetSuite
Users and Roles
Microsoft Dynamics 365 Business Central
Users and Security Groups
1:1NetSuite role-based permissions (where one employee can have multiple active roles) map to Dynamics Security Groups and Permission Sets. We extract role assignments from NetSuite, map each role to the nearest Dynamics security group equivalent, and flag any elevated-role assignments (OneWorld roles, SuiteCloud Plus access) that require additional permission set configuration. Active NetSuite users map to active Dynamics users provisioned by the customer's admin before migration.
| NetSuite | Microsoft Dynamics 365 Business Central | Compatibility | |
|---|---|---|---|
| Chart of Accounts (Accounts) | Chart of Master Data (G/L Account)1:1 | Fully supported | |
| Subsidiary | Company (Legal Entity)1:many | Fully supported | |
| Customer | Customer1:1 | Fully supported | |
| Vendor | Vendor1:1 | Fully supported | |
| Item (Inventory Assembly, Non-Inventory, Service, Description) | Item (Inventory Item, Service Item, Non-Stock Item)1:1 | Fully supported | |
| Sales Order / Invoice | Sales Order / Sales Invoice1:1 | Fully supported | |
| Vendor Bill / Purchase Order | Purchase Invoice / Purchase Order1:1 | Fully supported | |
| Journal Entry | General Journal1:1 | Fully supported | |
| Open AR / Open AP | Customer Ledger Entries / Vendor Ledger Entrieslossy | Fully supported | |
| Custom Record Types (custrecord_*) | Custom Tables (Extension Tables)1:1 | Fully supported | |
| Custom Fields (custbody_*, custentity_*, custitem_*) | Extension Fields (AL Table Extension)1:1 | Fully supported | |
| Tax Codes and Jurisdictions | Tax Setup (Tax Groups, VAT Business Posting Groups)lossy | Fully supported | |
| Employee | Worker (Human Resources)1:1 | Fully supported | |
| Project / PSA | Projects1:1 | Fully supported | |
| Saved Search | Views / Reportslossy | Fully supported | |
| SuiteBuilder Workflows / SuiteScripts | Power Automate / AL Workflowslossy | Fully supported | |
| File Cabinet Documents | SharePoint / Record Links1:1 | Fully supported | |
| Users and Roles | Users and Security Groups1:1 | Mapping required |
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.
NetSuite gotchas
API concurrency limits gate extraction throughput
Subsidiary-to-company mapping is structural, not cosmetic
Service tier transaction-line limits block migration mid-flight
Custom records and custom fields have no standard schema
Historical journal entries require strict sequencing
Microsoft Dynamics 365 Business Central gotchas
Named-user licensing has no concurrent-use relief
API rate limits throttle large-volume migrations
Historical posted transactions require selective migration scoping
NAV-to-Business Central cloud migration requires partner coordination
Custom fields and AL extensions require separate migration handling
Pair-specific challenges
Migration approach
Discovery and migration strategy workshop
We audit the NetSuite account across service tier (Standard through Ultimate), subsidiary count, custom record types, custom field registry, transaction history depth, SuiteBuilder workflow inventory, and SuiteScript count. We pair this with a Dynamics 365 edition decision: Business Central (Essentials or Premium) for companies under ~200 users with straightforward multi-company structures; Finance and Operations for large enterprises with discrete or process manufacturing, advanced warehouse management, or 40+ legal entities. The discovery output is a written migration scope, subsidiary-to-company map draft, and a journal carry-forward strategy recommendation.
Custom field and custom record schema discovery
We run a metadata discovery pass against the NetSuite account's SuiteQL endpoint to enumerate every active custom record type, custom field, and custom list. We also extract the custom field usage matrix (which fields appear on which record types, including transaction line-level custcol_* fields). This discovery data drives the Dynamics AL extension schema creation in step 3. Without this step, custom fields are invisible to the migration map and either get dropped or require emergency post-discovery remediation.
Dynamics schema provisioning and subsidiary-to-company mapping validation
We provision the Dynamics 365 environment with the target schema: Companies per subsidiary, G/L Account structure per company, Tax Groups, Item types, Customer and Vendor posting groups, and AL extension fields for every custom field discovered in step 2. The subsidiary-to-company map is validated by a Dynamics-functional consultant before any data import. We run a sandbox migration (Full Copy or Partial Copy Sandbox in F&O; Sandbox in Business Central) to validate the schema and posting group assignments against a representative data sample before production migration begins.
Master data migration in dependency order
We migrate master data in strict dependency order: (1) G/L Accounts and fiscal calendars, (2) Tax codes and posting groups, (3) Items and price lists, (4) Customers and Vendors, (5) Employees (if HR in scope). Each phase emits a row-count reconciliation report. Any NetSuite record with a missing required Dynamics field (e.g., a subsidiary that wasn't mapped to a Company) is held in a remediation queue and resolved before the next phase begins.
Transaction migration with journal carry-forward or full replay
We migrate open AR and AP as ledger entries with original document dates and aging buckets. Closed transactions follow the agreed carry-forward strategy. Journal entries are migrated either as full historical replay (with original posting dates and exchange rates) or as opening-balance carry-forward entries per subsidiary, depending on the strategy selected in discovery. Transaction migration uses the Dynamics OData v4 API (Business Central) or Data Management Framework (F&O) with batch sizing tuned to avoid throttling. We monitor API responses and apply exponential backoff if throttling headers appear.
Custom record and custom field migration
After master data and transactions are validated, we migrate custom record types (NetSuite Custom Records to Dynamics extension tables) and custom field values (attached to standard objects as AL extension fields). Custom record lookups are resolved at migration time by matching NetSuite internalId references to the Dynamics GUIDs of the imported parent records. We validate custom field completeness by comparing record counts between source and destination for each custom record type.
Cutover, delta migration, and automation rebuild handoff
We freeze NetSuite writes during the cutover window, run a final delta migration of any records modified during the migration period, then enable Dynamics 365 as the system of record. We deliver the SuiteBuilder Workflow and SuiteScript inventory document to the customer's admin and Dynamics partner. We provide a two-week hypercare window to resolve reconciliation issues. We do not rebuild NetSuite automations as Power Automate or AL workflows inside the migration scope; that is a separate engagement.
Platform deep dives
NetSuite
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Business Central
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. All 8 core objects map 1:1 between NetSuite and Microsoft Dynamics 365 Business Central.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across NetSuite and Microsoft Dynamics 365 Business Central.
Object compatibility
All 8 core objects map 1:1 between NetSuite and Microsoft Dynamics 365 Business Central.
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
NetSuite: 15 concurrent requests (default); up to 55 on Tier 5 with SuiteCloud Plus; 1,000 records per request; 60-second and 24-hour frequency windows per account.
Data volume sensitivity
NetSuite 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 NetSuite to Microsoft Dynamics 365 Business Central migration scoping. Not seeing yours? Book a call.
Walk through your NetSuite to Microsoft Dynamics 365 Business Central migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave NetSuite
Other ways to arrive at Microsoft Dynamics 365 Business Central
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.