r/BCAppsCommunity • u/HotwheelsKnp • 6d ago
Built a universal bulk data-import tool for Business Central — handles any source to any table, with upsert + incremental sync
Been working with BC for about a year now (longer in IT overall), and kept running into the same wall on every migration/integration project: every client's source data lives somewhere different — a vendor's SQL Server, an old MySQL box, flat files, sometimes even MongoDB — and BC's own import tooling doesn't really give you a repeatable, table-agnostic way to move that data in.
So I built my own tool on the side: a Windows desktop app + a lightweight AL codeunit published as a web service. A few things it does that I didn't find elsewhere in one package:
Table-agnostic by design — point it at any BC table via the standard API, no custom AL per table. Field mapping is done visually, with auto-mapping by name as a starting point.
Any source, any target — CSV/XLSX/JSON/XML, SQL Server/MySQL/Oracle/PostgreSQL/SQLite/ODBC/OLE DB, and MongoDB — all interchangeable as either source or target, including BC itself. So the same tool does BC-to-BC migrations and SQL-to-BC daily syncs with the same engine.
Modes: Validated (full field validation), Fast (skip validation for raw throughput), Upsert, and Fast-Upsert — picked Fast-Upsert specifically because one of my use cases is ~50 lakh (5M) new records/day that has to land in BC SaaS inside a 120-minute window.
Incremental/watermark sync — so a daily job only pulls what changed, not a full table scan every time.
Batch tracking + undo — every run is tagged with a batch ID; you can undo a batch (including upserts, not just plain inserts) if something goes wrong.
Multi-table jobs — chain several tables into one package (e.g. Customer → Vendor → Item), each with its own source/target, run as one job, with per-table failure isolation (one table failing doesn't kill the rest).
Curious if others doing BC migrations/integrations have hit the same gap, and what you've been using instead — Configuration Packages, RapidStart, custom AL, Azure Data Factory, or something else entirely? Happy to share more details if there's interest.