Skip to main content

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:

Extension Landscape

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:

  1. CHANGELOG.md -- a summary index with categorized entries per version
  2. 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

ExtensionPublisher / VendorInternal OwnerNotes
BestwayUSA (Core)Innovia ConsultingIT DepartmentCore platform -- changes coordinated through Innovia
CSM API ToolkitBestway USA (in-house)Phil McCaffreyIn-house development and testing
CSM API TestsBestway USA (in-house)Phil McCaffreyTest suite for CSM API
Service Order LockoutSataware TechnologiesPhil McCaffreyVendor-built, internally maintained
BC Dialing ApplicationCambay SolutionsPhil McCaffreyActive development -- Nextiva integration
E164 Phone FormatBestway USA (in-house)Phil McCaffreyIn-house development
PO Email NotificationSataware TechnologiesPhil McCaffreyVendor-built, internally maintained
CMS FAQ ManagementSataware TechnologiesPhil McCaffreyVendor-built, under review
Carrier Labels (3)BestwayUSAHGIT DepartmentCostco, DSG, Walmart -- warehouse operations
Quarterly CommissionsSataware TechnologiesIT DepartmentDepends on eShop
Data API & ReportingBestway USA HGIT DepartmentLegacy -- 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

  1. Extension-specific questions -- contact the internal owner
  2. Cross-extension or platform issues -- IT Department
  3. Vendor accountability or contract issues -- Sr. VP Operations

Monitoring and Telemetry

Telemetry Architecture

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.