A build-to-order Dynamics 365 Business Central extension that adds first-expiry-first-out dispensing, near-expiry alerting and returns, keyboard-fast counter billing, supplier scheme costing and configurable regulatory registers. ECOSIRE builds it for your Business Central version, installs it, and hands over the AL source. Built to order by ECOSIRE for Dynamics 365 BC (build-to-order) — indicative price from $499.00 USD; request a quote for a scoped proposal.
Illustrative previewA build-to-order Dynamics 365 Business Central extension that adds first-expiry-first-out dispensing,
near-expiry alerting and returns, keyboard-fast counter billing, supplier scheme costing and configurable regulatory registers.
ECOSIRE builds it for your Business Central version, installs it, and hands over the AL source.
No DIY setup — a working app, built, installed and supported by ECOSIRE.
Start with a one-time build price. We scope it with you at kickoff.
ECOSIRE builds, configures and installs it on your Dynamics 365 Business Central.
You go live in about 2–4 weeks, with a post-launch support window.
A pharmacy loses money in two places that Dynamics 365 Business Central does not watch on its own: the batch that quietly reaches its expiry date on the shelf, and the supplier scheme whose bonus quantity never reaches the cost of the goods you actually sold. Business Central ships genuine item tracking — lot numbers, expiration dates, item tracking lines, and expiration-date checks on posting — but it stops at the level of a distributor. There is no first-expiry-first-out suggestion when a counter assistant scans a strip, no near-expiry worksheet that proposes returns to the supplier while the credit window is still open, no representation of a "buy 10 get 1 free" scheme in the costing chain, and no concept of a schedule-wise sale register that a drug inspector will ask for. Counter staff also cannot work at the pace a queue demands on a standard Sales Order page, which is built for a keyboard-patient back office, not a Saturday evening rush.
Pharmacy Retail Management is an AL extension that ECOSIRE builds for your Business Central tenant to close exactly those gaps. Batch and expiry control is layered on top of native item tracking rather than replacing it: table extensions on Item, Item Ledger Entry and Tracking Specification carry the pharmacy attributes (schedule class, pack size, strip conversion, supplier batch reference), while an event subscriber on the item tracking assist-edit proposes the correct lot by earliest expiry and refuses lots already past their date or inside a configurable quarantine window. A dedicated counter page — a single-screen card with barcode entry, running total, substitution lookup and a keyboard-first layout — posts through the standard sales posting codeunits, so your general ledger, VAT and inventory valuation stay exactly where Microsoft put them. Nothing about the posting routine is forked.
On the purchase side, a scheme table extension records bonus quantity, slab discounts and free-goods lines against purchase lines, and a costing codeunit distributes that value across the received batch so the unit cost you see is the cost you actually paid. A margin-by-batch page then reports realised margin per lot, per supplier and per schedule category, drawing on posted value entries rather than a parallel set of numbers. A job queue entry runs nightly to rebuild near-expiry buckets you define (for example 90, 60 and 30 days), writes a Near-Expiry Worksheet with proposed supplier return lines, and can send the summary through Power Automate. Regulatory registers are defined as configurable register templates over posted ledger entries, exported to Excel or read externally through API pages published on REST API v2.0 and OData v4, which also makes the data available to Power BI and Dataverse without a separate integration project.
This is a build-to-order product, not an existing Microsoft AppSource download. Nothing installs until you request a quotation and we agree the scope. We start with a short scoping call to confirm your Business Central version and deployment (SaaS or on-premises), your counter workflow, your supplier scheme types, and which registers your regulator actually requires — because a register that is correct in one jurisdiction is worthless in another. We then build the extension against your version, install it to your sandbox for UAT with your own item and batch data, and only move to production once you sign off. Typical delivery is two to four weeks from confirmed scope, and you receive the full AL source in your own git repository at handover.
Runs two to twenty counters and already lives in Business Central for accounting. Loses margin to expired stock and to supplier schemes nobody reconciles. Needs the expiry write-off number to fall, and needs to see which supplier's schemes are actually worth taking, without hiring an in-house AL developer.
Legally accountable for what leaves the counter. Needs schedule-wise and controlled-substance registers that can be produced on demand for an inspection, needs expired lots to be impossible to dispense rather than merely discouraged, and needs an audit trail showing who overrode what and why.
Negotiates bonus-quantity and slab schemes with distributors and currently reconciles them in a spreadsheet. Needs the free goods reflected in landed unit cost so reported margin is real, plus a near-expiry worksheet that proposes returns while the supplier credit window is still open.
Owns the tenant and answers for every extension installed in it. Needs an AL extension built on event subscribers rather than base-object changes, with documented object ranges, permission sets, API pages and an upgrade codeunit — and the source in a repository they control.
| Criterion | ECOSIRE | Custom Build | Competitor | Dynamics 365 Business Central Native |
|---|---|---|---|---|
| Batch and expiry control at the counter | Item tracking wired into a fast POS-style sales page with FEFO batch suggestion and hard blocks on expired lots | Achievable, but the FEFO picking logic and counter page are the bulk of the build effort | Usually strong on tracking, weaker on the pharmacy counter workflow itself | Lot no. and expiration date exist on item tracking lines, but no FEFO suggestion and no counter-speed entry |
| Near-expiry visibility | Job queue entry recalculates expiry buckets nightly and writes a Near-Expiry Worksheet plus supplier return proposals | Report and job queue codeunit must be written and tuned per pharmacy | Often a static report with fixed day bands you cannot change | Item Expiration Date is filterable in Item Ledger Entries; no buckets, no worksheet, no alerting |
| Supplier schemes and real margin | Scheme table extension on purchase lines (bonus qty, slab discounts) feeding landed unit cost and a margin-by-batch page | Costing interplay with Business Central's average/FIFO valuation is the hard part and is easy to get wrong | Typically discounts only; bonus-quantity schemes rarely modelled | Line and invoice discounts, item charges; free-goods schemes must be keyed manually |
| Regulatory sale registers | Configurable register definitions (schedule/controlled categories) posted from ledger entries, exported to Excel or via API page | Register formats change by jurisdiction; each variation is another change request | Locked to the markets the publisher targets | No pharmacy register concept; would be built from raw ledger queries |
| Integration surface | API pages on REST API v2.0 for dispensing, batch and register data, usable from Power Automate and Dataverse | Depends entirely on whether the developer bothered to expose API pages | Publisher-defined endpoints; extension usually not permitted | Standard v2.0 endpoints for items, sales and vendors only |
| Fit to your workflow | Scoped to your counter steps, schemes and registers before any AL is written | Fully bespoke, and fully your cost to specify, build and maintain | You adapt the pharmacy to the app, or pay for a customisation on top | You adapt the pharmacy to standard sales order and item tracking pages |
| Upgrade and release-wave handling | Built on event subscribers and extension objects; retested against each release wave in your sandbox | Retesting each wave is an unbudgeted internal task that usually slips | Publisher upgrades on their schedule, which may not match your go-live | Microsoft handles it, because there is nothing extra to upgrade |
| Source code and exit | Full AL source handed over in your git repository, with the app.json and permission sets | You own the code, and the knowledge sits with whoever wrote it | Compiled app only; no source, ongoing subscription | Not applicable |
This is build-to-order, so nothing is downloadable today. Typical delivery is two to four weeks from confirmed scope — that is, from the point where we have agreed the counter workflow, scheme types, register formats and your Business Central version in writing. Wider scope, unusual regulatory registers, or a hardware integration (label printers, barcode scanners, fiscal devices) can extend that, and we will tell you before you commit rather than after.
We build against the version you actually run. The extension targets current Business Central release waves on SaaS, and we also build for on-premises deployments — the AL object model is the same, though on-premises installs need your own object ID range and a deployment step through the Business Central Administration Shell rather than the admin centre. We confirm your version, localisation and any other installed extensions during the scoping call, because object ID collisions and event conflicts are cheaper to find then.
No, and deliberately so. The extension sits on top of native item tracking (lot numbers, expiration dates, item tracking lines) and posts through the standard sales posting codeunits. Your inventory valuation, VAT and general ledger behave exactly as Microsoft intended. We add pharmacy-specific fields via table and page extensions and hook behaviour in through event subscribers, so nothing in the base application is modified.
Because the extension is built on event subscribers and extension objects rather than modified base objects, most release waves require no change at all. During your support window we retest the extension against the next release wave in your sandbox and fix anything the wave breaks. After the window, we offer an annual maintenance option covering the same retest, or you can maintain it yourself — you hold the full AL source, so you are not locked in.
The quotation includes a post-go-live support window covering defect fixes and configuration adjustments on the delivered scope — an expiry bucket that needs a different day band, a register column your inspector asked for, a scheme type that behaves differently than the example we were given. New capability outside the agreed scope is quoted separately, so you always know which side of the line a request falls on before work starts.
Yes. We publish API pages on the Business Central REST API v2.0 surface for the dispensing, batch and register data, which makes the same data reachable from Power BI, Power Automate, Dataverse and any external client that can speak OData v4. That is part of the build rather than a later add-on, so a head-office dashboard or a loyalty app does not need a separate integration project.
Yes. At handover you receive the complete AL source — app.json, table and page extensions, codeunits, permission sets, translations and the build pipeline configuration — in a private git repository that you own. Another developer can pick it up and continue, which is the practical difference between this and a compiled AppSource subscription.

A true finite-capacity APS engine for Dynamics 365 Business Central that builds optimized, executable schedules respecting machines, labor, tooling and material availability simultaneously. Built, installed and supported by ECOSIRE as a per-tenant AL extension.

A build-to-order AL extension that supercharges Business Central's native MRP/MPS with demand-driven forecasting, bulk SKU parameter management, and supply-vs-demand pegging — so planners replan thousands of items in minutes. Built, installed as a per-tenant extension, and supported by ECOSIRE.


A custom-built AL extension that adds an AI Copilot to Business Central — natural-language queries over your ledger data, anomaly and fraud detection, cash-flow forecasting and automated variance narratives. Built, installed per-tenant and supported by ECOSIRE.
A build-to-order Dynamics 365 Business Central extension that adds first-expiry-first-out dispensing, near-expiry alerting and returns, keyboard-fast counter billing, supplier scheme costing and configurable regulatory registers. ECOSIRE builds it for your Business Central version, installs it, and hands over the AL source.