Business Central Extensions -- What They Are and How They Fit
What Is a Business Central Extension?
Microsoft Dynamics 365 Business Central (BC) is Bestway's enterprise resource planning (ERP) system. It handles financials, sales, service, warehouse, and purchasing out of the box. But every business has unique workflows that the standard product doesn't cover -- that's where extensions come in.
An extension is a self-contained package of custom code that adds or modifies functionality in BC without changing the base application. Think of it like an app on your phone: it plugs into the platform, does a specific job, and can be updated or removed independently.
Each extension in this repository was built to solve a specific operational need at Bestway.
How Extensions Fit Into Bestway Operations
Service Management
The BestwayUSA (Core) extension is the foundation -- 190+ custom objects covering service orders, sales processes, warehouse operations, and reporting. Every other service-related extension depends on it. The CSM API Toolkit exposes service order data to external systems via a read-only API, and the Service Order Lockout extension prevents two CS agents from editing the same service order simultaneously.
Phone and Email Integration
The BC Dialing Application receives inbound call and email events from Nextiva, creates or finds the matching Customer record in BC, and syncs call summaries, recordings, and transcripts via Azure Blob Storage. The E164 Phone Format extension standardizes phone numbers across Customer records to the international E.164 format, with bulk migration tooling to clean up historical data.
Purchasing and Notifications
The PO Email Notification extension sends automated emails when Purchase Orders are released, Warehouse Receipts are created, and Warehouse Receipts are posted -- keeping vendors and internal stakeholders informed without manual follow-up.
Warehouse and Shipping
Three carrier label extensions (Costco, DSG, Walmart) generate retailer-specific shipping labels for warehouse operations, each integrating with the Dynamic Ship third-party extension.
Reporting and Utilities
The Quarterly Commissions Report calculates sales rep commissions. The CMS FAQ Management extension synchronizes FAQ data between an external CMS and BC. Additional utility extensions handle change tracking, date filter removal, and eShop integration modifications.
The Dependency Chain
Extensions can depend on each other. When Extension B depends on Extension A, Extension A must be installed first, and changes to Extension A can affect Extension B. Here's how our extensions relate:

The majority of our extensions are standalone -- they can be deployed, updated, or removed independently without affecting anything else in the environment. The notable exception is BestwayUSA (Core), which is a dependency for the CSM API Toolkit and the legacy Data API extension.
How Extensions Are Developed, Tested, and Deployed
Development
Extensions are written in AL, Microsoft's language for Business Central customization. Development happens in VS Code with the AL Language extension. Each extension lives in its own folder in the repository with its own app.json configuration, reserved object ID ranges, and documentation.
Testing
Testing happens at multiple levels:
- Automated AL tests run inside the BC sandbox using BC's built-in Test Tool (currently covering the CSM API Toolkit)
- Automated browser tests use Python and Playwright to interact with the BC web client, verifying UI behavior end-to-end (currently covering Service Order Lockout and PO Email Notification)
- UAT test plans are generated as Word documents for structured manual testing by stakeholders and QA
Deployment
Extensions are first deployed to a sandbox environment for testing. Once verified, they're packaged as .app files and deployed to Production via BC's Extension Management page or the Admin Center. Every deployment includes version documentation, stakeholder notification, and post-deployment verification.
Change Tracking
Every extension maintains a two-tier change documentation system:
- CHANGELOG.md -- a summary index with categorized entries per version
- CHANGE-v{version}.md -- detailed narrative documents covering background, root cause analysis, deployment notes, and known limitations
This ensures that both developers and non-technical stakeholders can understand what changed, why, and what to watch for.
Extension Ownership and Contacts
| Extension | Publisher / Vendor | Internal Owner | Notes |
|---|---|---|---|
| BestwayUSA (Core) | Innovia Consulting | IT Department | Core platform -- changes coordinated through Innovia |
| CSM API Toolkit | Bestway USA (in-house) | Phil McCaffrey | In-house development and testing |
| CSM API Tests | Bestway USA (in-house) | Phil McCaffrey | Test suite for CSM API |
| Service Order Lockout | Sataware Technologies | Phil McCaffrey | Vendor-built, internally maintained |
| BC Dialing Application | Cambay Solutions | Phil McCaffrey | Active development -- Nextiva integration |
| E164 Phone Format | Bestway USA (in-house) | Phil McCaffrey | In-house development |
| PO Email Notification | Sataware Technologies | Phil McCaffrey | Vendor-built, internally maintained |
| CMS FAQ Management | Sataware Technologies | Phil McCaffrey | Vendor-built, under review |
| Carrier Labels (3) | BestwayUSAHG | IT Department | Costco, DSG, Walmart -- warehouse operations |
| Quarterly Commissions | Sataware Technologies | IT Department | Depends on eShop |
| Data API & Reporting | Bestway USA HG | IT Department | Legacy -- 20+ dependencies |
For questions about a specific extension, start with the internal owner listed above. For vendor-related issues (bugs, feature requests, deliverables), the internal owner coordinates with the vendor.
Escalation Path
- Extension-specific questions -- contact the internal owner
- Cross-extension or platform issues -- IT Department
- Vendor accountability or contract issues -- Sr. VP Operations
Monitoring and Telemetry

All instrumented extensions send telemetry to Azure Application Insights. Extension-level telemetry captures events emitted by each extension's code. Environment-level telemetry captures all BC platform events including page views, lock timeouts, and user sessions. Both feed into Log Analytics workspaces for querying and alerting.