Here are the
most common “surprise” cost buckets I see in real Business Central (BC) projects, plus
practical ways to budget and contract so you don’t get caught after the proposal is signed.
1) Data migration is usually the #1 hidden cost (time + rework)
Even when “migration” is listed in a proposal, the
real cost overrun tends to come from what’s inside it:
- Data cleansing & master-data fixes (duplicates, invalid dimensions/UoM, bad item/vendor/customer masters). This is often underestimated and becomes a parallel project.
- Historical scope decisions (“we must keep every transaction forever”) drive cost dramatically; full history is slower and increases reconciliation work.
- Reconciliation scripts and repeated test migrations (dev → test → UAT → dress rehearsal → prod). These iterations are the difference between a smooth cutover and weeks of post-go-live fire-fighting—but they’re real billable effort.
- Inventory and costing setup validation (lot/serial, costing method, warehouse setup) is particularly expensive to fix if wrong after go-live.
Budgeting lesson: treat migration as
(a) data readiness + (b) ETL/mapping + (c) reconciliation + (d) cutover rehearsal, not one line item. Demand a written migration plan with owners, acceptance criteria, and reconciliation checks.
2) Integrations: the proposal often covers “build,” not “operate”
Integrations are frequently quoted as a one-time build, but the
ongoing and “edge case” costs are where budgets blow up:
- Rebuilding/adjusting integrations because BC APIs differ from legacy NAV/web services, and auth patterns often change.
- Integration testing under real business exceptions (partial shipments, backorders, returns, credit memos, cancellations). This is usually under-scoped in initial estimates.
- Monitoring, retries, and failure handling (dead-letter queues, replay tooling, alerting). If not built in, your support costs spike later. (This is a common post-go-live pain point in integrated BC stacks.
- SaaS constraints: BC SaaS has restrictions (no direct SQL access, app sandboxing, limitations on some extensions) that can force redesign vs a “quick port.”
Budgeting lesson: ask your partner to quote integrations in two parts:
1)
Implementation (build + test)
2)
Run cost (monitoring, incident response, vendor coordination, and change windows)
Also insist on a clear
support RACI (who owns WMS connector failures? eCommerce sync gaps? API auth? ISV bugs?. Third‑party ISV dependency without clear RACI is a repeat source of friction and surprise spend.
3) Customizations and AL development: “small changes” compound fast
Common overruns come from:
- Rebuilding legacy customizations as AL extensions (often not 1:1; requires redesign).
- Reports/BI refactoring (Jet/SSRS/Power BI changes, role-tailored reporting rebuilds) that aren’t fully captured in initial fit/gap.
- Upgrade/compatibility work if customizations are heavy—especially if you don’t enforce a “minimize custom code” policy early.
Budgeting lesson: require a formal “keep / replace with standard / rebuild / retire” review for
every customization (and price them by category).
4) ISV apps: licenses are only the start
ISV costs aren’t just “$X/user/month”:
- Implementation/configuration fees and data migration into the ISV
- Sandbox environments for the ISV
- Support contracts (you may need premium support for business-critical add-ons)
- Coordinated upgrades and regression testing across Microsoft + partner + ISV
If you need specialized functions (e‑invoicing, EDI, niche WMS, transport rating), the ISV route is common—but it increases vendor coordination and SLA complexity.
Budgeting lesson: price each ISV as a mini‑project with (license + implementation + support + upgrade testing).
5) Training & user adoption: underfunded early = expensive later
Training is often listed, but the underestimate is usually:
- Role-based training for finance vs warehouse vs purchasing
- UAT time by real users using real transactions (not demo scripts)
- Ongoing enablement after go-live as processes change
Partners commonly recommend training
before go-live to reduce support load, and a structured UAT with real-world exceptions.
Budgeting lesson: explicitly budget for:
- super-user time (often the biggest hidden “internal cost”)
- training content + delivery + follow-up clinics
6) Post‑go‑live “hypercare” and support: often missing or too light
This is one of the easiest places to get surprised:
- You will need a stabilization period (often 1–4+ weeks) for reconciliations, fixes, and user support.
- If support terms, SLAs, and handover aren’t explicit, cost and friction show up after delivery.
Budgeting lesson: contract for:
- a defined hypercare window + response targets
- a backlog/ticket triage process
- explicit SLAs and escalation paths
7) Azure & “platform” costs: small at first, then jump at scale
Even if BC is SaaS, you often add Azure for integrations and reporting:
- API Management, Service Bus/queues, Functions, Logic Apps
- Storage for files/integration staging
- Monitoring/logging (Log Analytics) and alerting
- Data egress (outbound bandwidth) can become a material monthly bill depending on traffic patterns
- “Idle” resources and misconfigurations (unattached storage, over-provisioned services) cause cost surprises without FinOps guardrails
Budgeting lesson: include a
FinOps line item (tagging, budgets, alerts, monthly cost review) from day one.
8) Power Automate / Power Platform (if used): consumption and governance costs
Many BC teams add Power Automate for approvals, notifications, EDI-ish flows, etc. Hidden costs include:
- Cloud/AI consumption costs at scale (Dataverse capacity, automation volume, Copilot/AI credits where used) and cost surprises when pilots scale rapidly
- Governance overhead if citizen development grows (environment strategy, ALM, connector approvals)
Budgeting lesson: treat Power Platform as production software: governance + telemetry + caps/alerts.
A budgeting approach that avoids surprises (practical)
1) Split your budget into 3 buckets
1)
One-time delivery: implementation + migration + integrations + testing + training
2)
Recurring run-rate: BC licenses + ISV subscriptions + Azure consumption + support contract
3)
Risk/contingency: reserve for data cleanup, unexpected integration rework, performance tuning, additional training
2) Force clarity in the proposal/contract
Ask for these deliverables explicitly (or expect overruns later):
- Full inventory + fit/gap + “keep/retire” customization matrix
- Data migration plan (scope, cleansing tasks, reconciliation checklist, cutover rehearsals)
- Integration runbooks + monitoring plan + ownership/RACI (partner vs internal vs ISVs)
- Post-go-live hypercare scope + SLA + escalation paths
3) Control the biggest cost driver: scope creep
Use a change control rule: anything new is either (a) swapped with something else or (b) goes to Phase 2.
Two quick questions (so I can tailor a realistic cost checklist)
1) Are you targeting
Business Central SaaS or
on‑prem? (SaaS vs on‑prem changes customization and integration constraints materially.
2) What are your top external systems:
WMS, eCommerce, CRM, payroll, EDI, banking, BI?
If you answer those, I can give you a
line-item “hidden cost checklist” you can paste into an RFP and use to compare partner proposals apples-to-apples.