Epicor Kinetic · Reporting
What is a BAQ in Epicor Kinetic? A plain-English guide for beginners
Applies to: Epicor Kinetic and Epicor ERP 10.2. Menu names, tab names, and button labels vary slightly between releases and between SaaS Cloud and On-Premises deployments. What you can see and do also depends on your security group permissions. Always test new queries in a pilot or staging environment before relying on them in production.
Short answer
A BAQ (Business Activity Query) is a saved query that you build inside Epicor Kinetic to read data from the ERP database. You pick the tables, link them together, choose the columns, and set filters in a designer screen instead of writing a full SQL statement by hand. Once saved, a BAQ can feed grids, dashboards, reports, Excel exports, and API calls.
Key facts
- BAQ stands for Business Activity Query.
- A standard BAQ is read-only. It retrieves data; it does not change it.
- A BAQ returns rows and columns. It is not a report layout.
- BAQs are stored in the Epicor database rather than as standalone files on your computer (though you can export and import them as .baq files or via Solution Workbench).
- Business tables in Epicor live in the "Erp" schema (such as Erp.JobHead and Erp.OrderDtl), while system and framework tables live in the "Ice" schema (such as Ice.SysUserFile and Ice.UD01).
What a BAQ is and is not
A BAQ is:
- A saved definition of "which data to fetch, from which tables, with which filters."
- A reusable data source that many other Epicor features can read from.
A BAQ is not:
- A formatted, printable document. Turning BAQ results into a paginated, formatted document is the job of a report layout (SSRS). A BAQ only supplies the data.
- A replacement for a data warehouse. For multi-year trend analysis across many systems, a BI platform is usually the better tool.
- A shortcut for changing data. A standard BAQ cannot write to the database.
The parts of a BAQ
Tab and button names differ slightly by release, but most BAQs are built from the same building blocks:
| Building Block | What It Does |
|---|---|
| Tables and joins | Choose the main table (for example Erp.JobHead) and link related tables on the Phrase Build tab (Classic) or the Query Diagram canvas (Kinetic browser UX). |
| Display fields | The columns that appear in the results. Select only the columns you actually need. |
| Criteria (filters) | Conditions that limit the rows returned, for example JobHead.JobClosed = false. Criteria can be fixed values or values supplied when the query is run. |
| Calculated fields | New columns built from an expression, such as combining two fields or using a CASE statement. Expressions use SQL-style syntax. |
| Sort and group | Control row order and summarize rows (totals, counts). |
| Sub-queries | A query used inside another query, for more advanced logic. |
Inner join vs. left Outer join (the most common beginner mistake)
- Inner Join: returns a row only when a matching record exists in both tables. If the related record is missing, the row disappears from the results.
- Left Outer Join: keeps every row from the first table, even when no matching record exists in the second table. The missing values show as empty.
If a BAQ "loses" records that you know exist, an inner join on optional data is the first thing to check.
How to build a simple BAQ (general steps)
- Open the BAQ designer. Use the menu search and type "BAQ". The screen has been labeled differently across releases, so search rather than relying on a fixed menu path.
- Create a new query. Enter a Query ID and a description. Many teams add a company prefix to custom query IDs so they are easy to tell apart from queries shipped by Epicor. This is a naming convention, not a requirement.
- Add the main table and any related tables on the Phrase Build tab (or Query Diagram canvas in the Kinetic browser UX). Choose the join type deliberately (see above).
- Select the display fields you need.
- Add criteria to limit the data, such as open jobs only or a date range.
- Run the designer's built-in test function and check the results against a known source. For example, compare a count of open jobs with what Job Tracker shows.
- Save the query and set its sharing and security options according to your company's standards.
Where BAQs are used
- Application Studio grids and data views in the Kinetic interface.
- Dashboards.
- BAQ-based reports (SSRS layouts that read from a BAQ).
- Excel export from results grids.
- REST API calls through the Epicor REST BaqSvc endpoint, where API access is enabled and permitted for your deployment.
BAQ vs. Tracker vs. SSRS report
| Need | Usually Best Tool |
|---|---|
| Look up one job, part, or customer | Standard Tracker |
| Recurring custom list with filters and Excel | BAQ shown in a grid or dashboard |
| Formal printed or customer-facing document | SSRS report (can be fed by a BAQ) |
| Years of trend data across systems | BI platform |
Good habits for fast, safe BAQs
- Filter early. Add criteria so the query does not read an entire large table.
- Return only the columns you need.
- Be careful when joining large transaction tables such as Erp.LaborDtl, Erp.PartTran, Erp.OrderDtl, or Erp.JobOper. Always apply criteria such as a date range or status.
- Test with realistic data volumes, not just a handful of records.
- Document each custom BAQ: who owns it, what it is for, and who uses it.
A note on updatable BAQs: Epicor allows a BAQ to be set up so that edits made in a grid are written back through business objects. This is an advanced capability. Treat it like development work that needs review and testing. Never use direct SQL to change Epicor data.
FAQ
What does BAQ stand for in Epicor?
Business Activity Query.
Do I need to know SQL to build a BAQ?
Not for basic queries, because the designer handles table selection and joins visually. Calculated fields use SQL-style expressions, and understanding tables, keys, and joins makes BAQs far easier to build and troubleshoot.
Is a BAQ the same as an SSRS report?
No. A BAQ supplies data. An SSRS report formats data into a printable layout. A report can be built on top of a BAQ, but they are separate things.
Is a BAQ the same as a Tracker?
No. Trackers are inquiry screens that come with Epicor. A BAQ is a query you define yourself, and it can power your own grids, dashboards, and reports.
Can a BAQ change data in Epicor?
A standard BAQ cannot. Only a BAQ specifically configured as updatable can write data, and it does so through business objects, not directly to the database tables.
Why does my BAQ return fewer rows than I expect?
The most common causes are an inner join on optional related data, criteria that are too strict, or a company or site limitation. Check the joins and criteria first.
Why is my BAQ slow?
Usually because it reads too much data: large tables with no filters, many joined tables, or unnecessary columns. Add criteria, remove unused fields, and retest.
Where can I find table and field names?
See our SQL schema cheat sheet article, and verify names against your own release.
References
Cross-check against official Epicor documentation matching your release and hosting model:
- Epicor Kinetic help: Business Activity Query (BAQ) Designer
- Epicor Kinetic help: Application Studio Overview
- Epicor Kinetic help: REST API guide