How do you actually get data out of Sage 300 CRE?
Not with a connector, because there isn’t one. Sage 300 CRE stores each company as a folder of Pervasive-engine .DAT files — one file per table, prefixed by module, so Job Cost, Accounts Payable, Contracts, Billing, General Ledger, Payroll, Equipment Cost and Property Management each contribute their own master and transaction files. Power BI cannot read that folder, and neither can any other modern reporting tool without a translation layer in between. Choosing that layer is the first real decision of the project, and it is worth making deliberately, because changing it later means rebuilding every query.
Four routes are actually used in the field. In most cases we recommend the first, connect Power BI with the standard SQL Server connector (opens in new tab), and treat the rest as fallbacks for specific constraints.
Sage 300 CRE extraction routes and when each one is the right choice
| Route |
What it gives you |
When we use it |
| Sage SQL Replicator |
A one-way, read-only copy of the Sage data folder inside a Microsoft SQL Server database, refreshed by a Sage service |
The default. Reporting queries hit the replica rather than live accounting files, indexes make a multi-year cost history usable, and Power BI just sees SQL Server |
| Pervasive ODBC connection |
Direct query access to the data folder through the ODBC driver Sage installs |
Small datasets, or a proof of concept before the replicator is stood up. Watch the driver architecture — a 32-bit DSN is invisible to 64-bit Power BI Desktop, which is where most first attempts fail |
| Scheduled inquiry or report exports |
Sage inquiries, report designs or Excel add-in queries written out to a folder on a schedule |
Where IT will not open database access at all, or a field exists only inside an established report. Workable, but it is the export habit with a timer on it |
| An existing SQL or Fabric copy |
Sage data already landed in SQL Server, Microsoft Fabric or a warehouse by an internal pipeline |
Always our first question — it is faster to refresh, cheaper to model, and already joinable to whatever else you report on |
Two practical notes on the replicator route. It needs a SQL Server instance somewhere, and while SQL Server Express is free it caps a single database at 10 GB, which a contractor with a decade of cost transactions and payroll detail can reach; sizing that early avoids an unpleasant surprise in year two. And the replica is a copy, so the interesting question becomes how often it syncs and whether your refresh window sits after it, not before. If you already run SQL Server for other systems, our SQL Server Power BI dashboard page covers connecting Power BI to it directly, including when import beats DirectQuery (opens in new tab).
Which Sage 300 CRE modules end up in the model?
Only the ones your reporting questions need, but the WIP schedule alone reaches into four. Sage keeps each module’s masters and transactions in its own files, and the work of the build is reassembling them into a star schema — a small number of fact tables at consistent grain surrounded by shared dimensions — instead of a web of many-to-many joins that slows to a crawl the first time someone opens a two-year view.
How Sage 300 CRE module data lands in the Power BI semantic model
| Sage 300 CRE source |
What it carries |
Role in the model |
| Job Cost masters |
Job, extra, cost code and cost type structures with contract amount, estimate, status, project manager and job type |
The job hierarchy dimension every other fact hangs from, flattened to levels and a path for roll-up and security |
| Job Cost transactions |
Actual cost postings by job, cost code and cost type, with accounting date and source module |
The cost fact — the denominator of percent complete and the basis of every burn and trend page |
| Estimates and change orders |
Original estimate, approved changes and the resulting revised budget and revised contract |
Budget fact at the same grain as cost, so variance is a subtraction rather than a lookup |
| Commitments |
Subcontracts and purchase orders with committed amount, invoiced to date and retainage held |
Commitment fact — what turns cost to complete from an estimate into a number with evidence behind it |
| Contracts and Billing |
Contract items and progress billings, including AIA-style schedules of values and retainage receivable |
Billing fact — the other half of the WIP schedule and the source of the over- and under-billing split |
| Accounts Payable |
Vendors, invoices, retainage payable, due dates and compliance items such as insurance expiry |
AP fact plus a vendor dimension, driving cash timing, subcontractor spend and compliance exception lists |
| General Ledger |
Accounts, fiscal periods and posted balances by entity |
The tie-out layer — how job-level reporting is proven back to the financial statements each period |
| Property Management |
Properties, units, leases, tenants, recurring charges and tenant receivables |
Lease and charge facts on the shared calendar and entity dimensions, for rent roll, occupancy and AR ageing |
The structure follows Microsoft’s star schema modeling guidance (opens in new tab), and the general craft is covered on our Power BI data modeling and DAX page. The detail that causes most rework here is the cost type and cost code standard. Most contractors have accumulated codes across decades, several mean the same thing to accounting, and one or two behave differently from how they read. We map them with your controller during scoping and keep the mapping as data, so next year’s additions are rows to add rather than queries to reopen.
Can it produce the WIP schedule and the over/under billing report?
Yes — that is usually the first thing built, and it is the measure set that justifies the project. Percentage of completion is calculated cost-to-cost: cost to date divided by estimated cost at completion. Earned revenue is the revised contract amount multiplied by that percentage. Compared with what has actually been billed, the difference falls into either a contract asset or a contract liability — the under- and over-billing columns your CPA works from under ASC 606.
Core measures we build over the Sage 300 CRE model
| Measure |
How it is defined |
Why it is written this way |
| Percent complete |
Cost to date over estimated cost at completion, by job and by phase |
Cost-to-cost is what the WIP schedule is built on; a field-judgement percentage kept in a workbook cannot be audited |
| Cost at completion |
Cost to date plus remaining commitment plus the forecast of uncommitted work still to come |
Splitting committed from uncommitted shows how much of the forecast is contractual and how much is judgement |
| Earned revenue |
Revised contract amount, including approved change orders, times percent complete |
Using the revised rather than the original contract is the difference between a WIP that ties and one that argues with the ledger |
| Over-billing |
Billings to date in excess of earned revenue, floored at zero and reported per job |
A contract liability under ASC 606, and the number that tells you how much of your cash is borrowed from future work |
| Under-billing |
Earned revenue in excess of billings to date, floored at zero and reported per job |
A contract asset, and usually the earliest visible sign that billing has fallen behind production on a job |
| Gross profit fade |
Estimated gross profit at completion this period against the original estimate, by job |
Fade is gradual, so it only shows up as a trend — a single-period margin number hides it entirely |
| Remaining commitment |
Committed amount on subcontracts and purchase orders less invoiced to date |
Makes cost to complete defensible and flags a job where the commitment is exhausted before the work is |
| Retainage held and receivable |
Retainage payable in AP and retainage receivable in Billing, tracked separately from invoice amounts |
Retainage is the cash question owners ask most and the one the standard invoice reports answer least clearly |
| Backlog |
Revised contract value less earned revenue, by job, division and expected completion period |
Turns a pipeline conversation into a schedule, since backlog with no completion date attached is not a forecast |
The WIP is where the definitions get tested. Contractors reasonably disagree about whether unapproved change orders belong in the revised contract, whether committed-but-uninvoiced cost counts toward percent complete, and how to treat a job that is over-billed and behind schedule at the same time. We do not invent answers to those; we write down the one your controller and CPA already use, implement it as documented DAX, and validate every column against the WIP your team produced last quarter before anything is signed off.
Where does Sage 300 CRE’s own reporting stop?
Sage 300 CRE ships a genuine reporting layer — inquiries, report designs, and the Excel-based query add-ins many firms have layered on top — and for questions inside the platform, in Sage’s own shape of the data, it remains the right tool. The requests that reach us are the ones that cross a boundary: across modules, across several years, or onto a screen in front of people who do not have a Sage login and should not be given one.
Reporting inside Sage 300 CRE compared with a custom Power BI semantic model
| What you are trying to do |
Reporting inside Sage 300 CRE |
Custom Power BI model |
| Check a job cost inquiry today |
Its core strength — live, in context, already secured |
Possible, but not a reason to build a model |
| WIP across every open job, monthly |
Assembled from several inquiries into a workbook by hand |
One page, recalculated on refresh, with the same formula every period |
| Margin fade across two years of jobs |
Hard — history is per job, not trended across the portfolio |
Snapshotted estimates make period-over-period fade a chart rather than an archaeology project |
| Job cost beside property performance |
Separate modules, separate reports |
Shared calendar and entity dimensions put the build and the asset on one page |
| A pack for PMs and owners |
Needs each viewer to hold a Sage login and know which inquiry to run |
One published report, secured by job or division, in tools they already use |
| Where the logic lives |
Inside report designs and workbooks on individual desktops |
In a model file in your own tenant, documented and owned outright |
The honest answer is usually both. Keep Sage reporting for running the accounting, and build the model for the numbers that decide bonding capacity, staffing and which jobs to bid next.
How do refresh and security work with an on-premises server?
Sage 300 CRE almost always runs on a server inside your network, so the Power BI service reaches it through the Microsoft on-premises data gateway (opens in new tab): installed on a machine that stays on, registered to your tenant, and given read-only credentials to the replicated SQL Server database. Nothing is exposed to the internet and no inbound firewall rule is opened. Our step-by-step Power BI gateway setup guide walks through the installation and the data source registration that trips people up.
Refresh cadence follows how the data actually moves. Job cost posts through the day, so a nightly refresh after the replicator sync suits most contractors, with an extra midday run during a heavy billing week — all inside Microsoft’s documented data refresh limits (opens in new tab). Where years of cost transactions have accumulated, we configure incremental refresh (opens in new tab) so each cycle re-reads only a recent window rather than the whole history.
Visibility is handled with row-level security in the Power BI service (opens in new tab), driven from a mapping of viewers to jobs, project managers, divisions or properties and evaluated against the flattened job hierarchy. A project manager sees their own jobs, a division lead sees their branch of the structure, and the controller sees everything. Payroll detail stays out of the shared model unless you specifically ask for it, since a job cost report and an employee pay register are not the same audience.
What does the build cost, and how long does it take?
Prepaid Flex hours that never expire: Starter 20 hours at $125/hr ($2,500), Growth 40 hours at $115/hr ($4,600), Power 80 hours at $100/hr ($8,000), with hourly work from $100/hour on the largest block. A first build covering job cost, committed cost and a WIP schedule from an existing SQL Replicator database usually fits a Starter block. Standing the extraction up from scratch, adding Property Management, or reconciling several years of historical estimates typically needs Growth, because agreeing the WIP definitions across the controller, the project managers and the CPA takes discussion as well as development.
Most tasks ship within 3–5 business days of scope approval, and you get a scope and hours estimate before anything starts. Our guide to Power BI dashboard development cost covers what moves the number, how prepaid Flex hours work explains the model in full, and custom Power BI dashboard development describes the wider service this build sits inside.
Who is this for, and what is out of scope?
General contractors, specialty subcontractors and developers running Sage 300 CRE with enough job history to trend and no dedicated analytics engineer — typically the point where the WIP takes a week to assemble and two people quote different cost-to-complete figures in the same meeting. Controllers, CFOs and operations directors are the people who usually get in touch.
Writing back to Sage is out of scope: this is a read-only reporting build, and cost entry, billing and payroll processing stay where they are. Estimating detail that never leaves a takeoff tool is out of scope too, unless it is exported somewhere we can read on a schedule. If field production and RFIs matter more than the accounting, our Procore Power BI dashboard page covers that source system, and residential builders running jobs in Buildertrend should start with the Buildertrend Power BI dashboard build instead. Contact is form-only — send your request and we’ll reply with a scope estimate.