A Business Central extension for guarding companies that turns site post requirements into rosters, captures patrol and incident logs, and drives attendance-based payroll input and contract invoicing from the same data. Built to order by ECOSIRE against your contracts and pay rules. 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 Business Central extension for guarding companies that turns site post requirements into rosters,
captures patrol and incident logs, and drives attendance-based payroll input and contract invoicing from the same data. Built to order by
ECOSIRE against your contracts and pay rules.
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.
Guarding companies live or die on two numbers: hours contracted at each post, and hours actually stood. Dynamics 365 Business Central handles the money side of that business well — customers, contracts as sales documents, recurring invoicing, resources, jobs and the general ledger — but it has no concept of a post. There is no table that says "Gate 2 at the Marina warehouse needs one licensed officer, 19:00–07:00, seven nights, and the relief must not push anyone past 48 hours in a rolling week." So operations runs the roster in Excel or a standalone guard-tour app, payroll re-keys the hours, and finance invoices from a spreadsheet that nobody reconciles back to the contract. The gaps show up as unbilled overtime, billed-but-unworked hours a client eventually disputes, and a licence expiry nobody caught until an audit.
ECOSIRE builds a Business Central AL extension that closes that loop inside the system where the invoice already lives. We add first-class Guard Site, Site Post and Post Requirement tables keyed to the Customer and to the contract line, so a post carries its own coverage pattern, required certifications, bill rate and pay rate. Guards are modelled as an extension of Resource (or of Employee where you run Business Central payroll), with licence and certification expiry dates that a job queue entry checks nightly. The Roster Line table holds planned versus actual start/end, a relief reason code, and a status flow — Planned, Confirmed, Worked, No-Show, Relieved — enforced in a codeunit rather than by page validation, so the same rules apply to a mobile check-in arriving through an API page as to a dispatcher editing the roster list page.
Technically it is a standard AL extension — per-tenant for a single company, or packaged as an AppSource app if you want to resell it — built with table and page extensions on Customer, Resource, Job and Sales Line, event subscribers rather than base-application modification, and its own permission sets separating Dispatcher, Payroll and Finance. Patrol and incident capture is exposed as API pages on REST API v2.0 (OData v4), so a guard-tour scanner, an NFC checkpoint app or a Power App on Dataverse posts checkpoint hits and incident records straight into Business Central with the site, post and roster line already resolved. Billing runs the other direction: a codeunit aggregates worked hours by post and contract period, applies the post's bill rate plus overtime and public-holiday multipliers, and generates sales invoice lines with drill-down back to the exact shifts — so a client query about one line on a 400-hour invoice is answered in two clicks. The same aggregation, on the pay-rate side, produces a payroll input export in whatever layout your provider accepts. Job queue entries handle nightly roster gap detection, licence-expiry alerts and unbilled-hours reporting.
This is a build-to-order product, not a download. There is no AppSource listing to install today; we build the extension against your Business Central version, your contract structures and your actual pay and overtime rules, because the difference between a 12-hour night post in the Gulf and a UK licensed site is entirely in those rules. Typical delivery is two to four weeks from confirmed scope, on current Business Central release waves, SaaS or on-premises. We start with a scoping call, write the specification, build and unit-test the extension, deploy to your sandbox for UAT with your own roster and contract data, then go live with a rollback plan and a documented handover.
You receive the AL source, a git repository, permission sets, technical documentation and a user guide, plus a post-go-live support window. Nothing is locked, obfuscated, or dependent on ECOSIRE remaining in the picture.
Owns coverage across dozens of client sites and answers for every unfilled post. Needs a roster that knows what each post actually requires, flags gaps before the shift starts, and proves who stood where when a client disputes an invoice.
Invoices clients monthly from hours that arrive as spreadsheets. Needs contract invoicing generated from the same worked-hours record payroll uses, with drill-down to individual shifts so client queries stop turning into credit notes.
Re-keys attendance from rosters into a payroll system every cycle. Needs attendance-driven payroll input with overtime and holiday rules already applied, and an exception list instead of a full manual reconciliation.
Accountable for guards being licensed and certified for the posts they cover. Needs expiry tracking tied to assignment, so an officer with a lapsed licence cannot be confirmed onto a post that requires it.
| Criterion | ECOSIRE | Custom Build | Competitor | Dynamics 365 Business Central Native |
|---|---|---|---|---|
| Post and coverage modelling | Site, post and post-requirement tables built to your contract structures, with certification prerequisites and rate cards per post | Achievable, but the data model is designed from scratch and usually simplified on the first pass | Fixed post model assuming the vendor's home market; unusual coverage patterns get forced into notes fields | No concept of a post; sites approximated with customers, jobs or dimensions |
| Roster to invoice traceability | Invoice lines generated from worked hours with drill-down to the constituent shifts | Depends entirely on whether the developer was briefed to build the link | Often exports a summary into Business Central, so the invoice line has no shift-level backing | Hours typed manually onto sales lines; no underlying shift record to drill into |
| Attendance-driven payroll input | One worked-hours record drives pay-rate aggregation with overtime and holiday multipliers, exported in your provider's layout | Commonly deferred to phase two and left as a manual export | Payroll export exists but usually only to the vendor's chosen providers | Hours re-keyed from spreadsheets into payroll |
| Patrol and incident capture | API pages on REST API v2.0 / OData v4 for scanners, NFC and Power Apps, resolved to site, post and roster line | Buildable; the integration surface is the part most often under-specified | Strong if you adopt the vendor's own app; weak or absent if you keep existing devices | None — patrol data lives in a separate tour system |
| Upgrade safety on release waves | Table/page extensions and event subscribers only, retested against each new wave | Varies with the developer's discipline; base-app changes still happen and hurt at upgrade | Vendor-managed upgrades, but on the vendor's timetable rather than yours | Upgrades cleanly, because there is nothing there to break |
| Source code and ownership | Full AL source plus git repository handed over; no lock-in | You own it, assuming the contract said so and the repository was actually handed over | Compiled app under subscription; no source access | Not applicable |
| Time and cost to a working system | Two to four weeks from confirmed scope, fixed against a written specification | Longer, because discovery, data model and rate-card rules are all designed from zero | Fast to install, then weeks of fitting your contracts into the vendor's assumptions | Available immediately, but the operational gap stays in spreadsheets |
| Compliance and licence control | Expiry tracking tied to assignment, blocking confirmation onto posts requiring a lapsed certification, with nightly job queue alerts | Usually delivered as a report rather than an enforced control | Certification fields common; enforcement at the point of assignment less so | No certification model beyond free text on the resource card |
Typical delivery is two to four weeks from confirmed scope. This is a build-to-order extension, not an existing AppSource download — there is nothing to install today. The clock starts once we have agreed the specification: your site and post structures, contract and rate-card rules, overtime and public-holiday handling, and how patrol data will reach Business Central. Wider scope, such as a bespoke mobile check-in front end or an unusual payroll export, moves the estimate; we tell you that before you commit, not afterwards.
Every build includes a post-go-live support window for defect fixes and configuration adjustments, agreed in writing before we start. Because the extension uses table/page extensions and event subscribers rather than base-application modification, Business Central release waves apply cleanly; we retest against a new major wave and supply a compatibility update as part of an ongoing support arrangement if you want one. You also receive the AL source and git repository, so you are never dependent on ECOSIRE to keep it running.
Partly, and we use those objects where they fit. Jobs, resources and resource planning can record time against a customer engagement. What they do not model is a post — a location-specific coverage requirement with its own certification prerequisites, rate card, relief rules and working-time ceiling. Nor do they capture patrol checkpoints and incidents, or turn attendance into both a payroll input and a contract invoice from one record. That is the gap this extension fills, built on top of the standard objects rather than beside them.
In most cases yes. Patrol checkpoint hits, check-in/check-out events and incident records are exposed as API pages on REST API v2.0 (OData v4), so any system that can call an authenticated REST endpoint posts into Business Central with the site, post and roster line resolved on arrival. If your device fleet speaks a proprietary format, we build a small integration codeunit to translate it. Power Platform and Dataverse connectivity is available where you would rather build the front end in Power Apps.
Yes. The extension is standard AL and targets current Business Central release waves in both deployment models. On-premises builds can additionally use approaches unavailable in SaaS if your environment requires them, though we default to a SaaS-compatible design so you keep the option of moving to the cloud later. Tell us your version and deployment model at the scoping call and we build against exactly that.
No. The extension owns attendance and the hours calculation: worked hours by guard, aggregated against pay rates with your overtime, night and public-holiday multipliers applied. It then produces a payroll input file in the layout your provider accepts, or posts to Business Central payroll where you run it there. Your payroll system stays where it is; what changes is that nobody re-keys hours, and payroll and invoicing come from the same worked-hours record instead of two spreadsheets that drift apart.
The AL source code, the git repository with full commit history, technical documentation, permission sets, and the user guide. Nothing is obfuscated or licence-locked. Your internal team or any AL developer can extend and maintain it. We are happy to keep supporting it, but that should be your choice rather than a consequence of how the code was delivered.

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 Business Central extension for guarding companies that turns site post requirements into rosters, captures patrol and incident logs, and drives attendance-based payroll input and contract invoicing from the same data. Built to order by ECOSIRE against your contracts and pay rules.