It’s no secret that we’re pretty big fans of the Dynamics 365 suite of products here at Catapult – between Business Central and the Customer Engagement family of products, coupled with the Power Platform and Office 365, you’ve got incredibly versatile and robust enterprise solutions that work beautifully together to do great things and take care of business effectively and intelligently.
But contrary to a lot of ecosystems that close off coding or the ability to build capabilities off of, almost every solution from Microsoft has the ability to code for and expand on within the boundaries of an intentional and thought-out development framework and Business Central is no exception to this rule.
Business Central’s extensibility is easily one of its greatest strengths and differentiators, but is also one of the hardest to market and so greatly underappreciated by any newcomer to the ecosystem. In this post, we’ll focus on this specific aspect of Business Central, but add to the conversation by throwing in some small, but illustrative examples of the sort of things we do with extensions.
One Size Does Not Fits All
Off the proverbial shelf, Business Central has all the necessary pieces to run a small-to-medium business – it has a core general ledger and subledgers for full-cycle accounting, inventory management, project management and jobs, warehousing, manufacturing, assembly, service, and so on and so forth. However, it is software that is designed based on a standard.
You’ve probably heard of the term ‘best practice’ – well, the ‘best’ in that term operates is relative. When it comes to software, the ‘best’ is defined by the design and assumptions of the product. For example, it is ‘best practice’ that you disable direct posting to your control G/L accounts, since the subledger utilizes Posting Groups as a conduit for posting to those accounts (and therefore ensures that the two are reconciled). But not all ERP systems use this concept, making the discussion of ‘best practice’ very much context driven.
The problem is that while businesses generally either do, or can be reasonably convinced to, conform to these standard practices, there are many legitimate cases where the standard doesn’t make sense or does not exist. When discussed and rationalized, these can surface bona fide gaps in the solution. This is where an extension can help.
What Are Extensions?
Just like in a home renovation, an extension builds atop existing structures. Now that can be a simple extension, like adding light fixture to the ceiling (e.g. adding an Instagram Name field on the Customer table), a moderate one linked to existing structure, like building out a deck from your kitchen door (e.g. adding an additional subroutine to populate a Custom Commissions table when SOs are shipped), or a big, stand-alone extension, like constructing a stand-alone guesthouse on your property (e.g. coding an entire investment portfolio tracking and management module).
These extensions sit atop the base system and application, so they need to comply with and stay updated to be compatible with the constantly-updated software, which is why they need to be thoughtfully design and documented by an experienced team (such as ours) that knows best practices when extending the product.
Extensions can be both specific just for you (tenant extensions) or installed from third-parties offering their extensions on the Extension Marketplace (formerly known as AppSource).
But discussions in theory won’t help illustrate the power and potential of extensions. Instead, I’d like to highlight a few examples of extensions to inspire you or to at least spark some discussions internally or with your Microsoft partner.
Vacation Request and Approvals
Here at Catapult, we utilize Jobs and Time Sheets to track and bill our time against the many engagements that we have. However when it came to planning around time off, we used to utilize methods outside of our ERP for requesting and inputting our time-off requests.
But why bother with external systems when you can do it all in-suite? For that, we created a little nifty tool where users can go in and submit their time-off requests, entering the date and then submitting for approval:
There also a little tab that, when expanded, will bring up a Power BI calendar report showing all the vacations so you can plan if you need to be mindful of coverage, etc.:
The best part of this tool is that after selecting the date and number of hours, it will validate to ensure that you aren’t already assigned to tasks for that day and let you know:
Where-after you can view the entries to see what it is you’re assigned to and who the Project Manager is to maybe ask them to reschedule if need be.
The lines then move to your designated vacation approver (set up in the User Setup page), who can then review and either Approve or Reject the lines:
If approved, the lines are then automatically added to the internal planning lines (for reporting purposes) as well as entered into the Time Sheet for that user:
SharePoint List Integration
We had a situation where a client was coming onto Business Central that had been using advanced SharePoint workflows for purchase requisitions and approvals. They had an entire system in place already and had all these locations using the SharePoint sites and wanted to keep using that system without having to pay for hundreds of Team licenses just for the purpose of requisitions.
Utilizing the SharePoint Online API we integrated Business Central so that the A/P team could look up to the related SharePoint approval list and pick the relevant approval line. This then populated a little Factbox where the details of the approval would show up:
After posting, Business Central would write back to SharePoint to update the “Amount Invoiced” field.
Sales Contract Management
Another client of ours wanted to deploy the ability to build out a bit of Contract management around sales and receivables, serving different locations. The contract had to be flexible enough to either bill the main contract customer or the individual locations. Additionally, they wanted to be able to utilize subcontractors to service these individual locations, therefore needing to be able to tie a Vendor to the line as well, spinning off both the A/P and A/R concurrently.
The contract was structured such that there was a header that had all the ‘main’ contract information, then individual lines that designated which locations were being serviced and within each line was a list of the actual individual items/charges that would be included in A/R, A/P, or both:
The contract and individual locations were also dimensions, so all the postings were posted with that dimension, allowing for profitability analysis on multiple levels.
Toggl and CRM Case Integration
Another fun one that we have internally is the integration with the Common Date Model, specifically linking CRM cases with our Time Sheets. For context, we use our CRM for case management, so when our clients log onto the support portal, they log issues in there which creates tickets in our CRM. We added in the Ticket Number to our Time Sheets and Job Ledger Entries so we can pick the related case and then also surface the case number and case title onto our customer invoices.
However, tracking your time can also be a challenge. As a prototype, I built an integration with Toggl, a cloud-based time-tracking system that has a mobile app and Chrome extension, too. Effectively when I start working on a ticket, I click “Start” in my browser and paste in the ticket number, then when I’m done I click “Stop” and Toggl keeps track of the elapsed time:
So then in Business Central, I pull in those lines where I can then tag it with a Job/Job Task/Case No., have it round to the nearest billable increment (e.g. 15 minutes) and push into my time sheet:
Same Shovel for Every Snowflake
Every customer I’ve ever met has had in some way, shape, or form had some uniqueness to them. It’s not uncommon to see that even identically-sized companies in the same industry can be, to varying degrees, snowflakes in and of themselves. But that doesn’t mean that the tools, methodology, and process to address their needs need to be a blank canvas every time – we can use the same shovel for every snowflake, using the standards within Business Central and its development capabilities as true north to guide us through addressing client needs.
While certainly there are many other ways we can address unique needs – including utilizing the Power Platform, Customer Engagement, Office 365, and more – extensions truly elevate Business Central beyond just being ‘software’ but rather being an entire solution platform.