Epicor Open Jobs Query Generator (Erp.JobHead SQL for BAQ and SSMS)
Open-job lists are the most requested Epicor report: what is released, not complete and due soon. This generator builds a clean T-SQL query against Erp.JobHead (and optionally Erp.JobOper) that you can paste into SSMS for a quick check or use as the blueprint for a BAQ.
Fill in
SQL LIKE pattern. Use % for all parts.
Open jobs query
-- Open released jobs for company EPIC06, plant MfgSys
-- Read-only. Run in SSMS against a non-production copy first.
SELECT
jh.Company,
jh.Plant,
jh.JobNum,
jh.PartNum,
jh.PartDescription,
jh.ProdQty,
jh.StartDate,
jh.DueDate,
jh.JobFirm,
jh.JobReleased,
jh.JobComplete,
jh.JobClosed
FROM Erp.JobHead AS jh
WHERE jh.Company = 'EPIC06'
AND jh.Plant = 'MfgSys'
AND jh.JobClosed = 0
AND jh.JobComplete = 0
AND jh.JobReleased = 1
AND jh.DueDate <= '2026-12-31'
AND jh.PartNum LIKE 'BRK%'
ORDER BY jh.DueDate, jh.JobNum;Firm-job note
-- Firm filter selected: Any -- If you chose Firm only, add this line to the WHERE clause: -- AND jh.JobFirm = 1
Operations per open job (optional join)
SELECT jo.JobNum, jo.AssemblySeq, jo.OprSeq, jo.OpCode, jo.OpComplete FROM Erp.JobOper AS jo JOIN Erp.JobHead AS jh ON jh.Company = jo.Company AND jh.JobNum = jo.JobNum WHERE jh.Company = 'EPIC06' AND jh.JobClosed = 0 AND jo.OpComplete = 0 ORDER BY jo.JobNum, jo.AssemblySeq, jo.OprSeq;
Table and column names are standard Erp schema names, but verify them in the Data Dictionary Viewer for your Kinetic version. In a BAQ, build the same joins visually in Query Builder and add the criteria in the Criteria tab rather than pasting raw SQL. Always filter on Company.
Ask Epicor for open jobs in plain English
Optional: see a read-only natural-language layer over your Epicor job data.
Optional. The tool and every export work without this. No spam.
How to use the generator
Enter your company ID, plant, a due-date cut-off and a part pattern, then copy the code blocks. The first block lists open released jobs, the second shows how to restrict to firm jobs, and the third joins Erp.JobOper to list incomplete operations. Run it against a test or reporting copy first. If you build a BAQ instead, recreate the joins in Query Builder, set the criteria as parameters, and publish the BAQ so it can be used in dashboards and Excel.
What the job flags mean
A job is open when JobClosed is false. JobComplete means production is finished but the job may still need closing. JobReleased means it is on the shop floor and can collect labor. JobFirm marks the job as firm so MRP will not reschedule or delete it. The query uses all three so planners see work that is genuinely active. See the Epicor job lifecycle flags reference for the full list of related fields.
- JobClosed = 0: the job is not closed
- JobComplete = 0: production not yet marked complete
- JobReleased = 1: released to the floor
- JobFirm = 1: protected from MRP rescheduling
Common mistakes
The most frequent error is forgetting the Company filter, which returns jobs from every company and slows the query. Another is using DueDate when the planner cares about StartDate, or comparing dates to text in the wrong format. Do not write back to Erp tables with SQL; use business objects or DMT so BPMs, security and audit fire. Large joins to LaborDtl can be heavy, so add date limits.
Frequently Asked Questions
Can I paste this SQL straight into a BAQ?
Not directly. BAQs are built in Query Builder from tables, joins and criteria, not raw SQL. Use the generated query as a guide: add Erp.JobHead, set the same filters in the criteria, and add the columns to the Display Fields tab.
Is it safe to run on production?
The query is read-only, but a broad query on a busy database can still cost resources. Run it against a reporting copy if you have one, filter on Company and dates, and avoid joining large transaction tables without limits.
Why are closed jobs still showing?
Check that JobClosed = 0 is in the WHERE clause and that you are not filtering only on JobComplete. A complete job is not necessarily closed. Also confirm the plant filter matches the plant on the job header.
Does it work on Epicor 10 and Kinetic?
The Erp.JobHead and Erp.JobOper tables exist across Epicor 10 and Kinetic with these core columns. Custom UD columns and any version-specific additions should be confirmed in your Data Dictionary Viewer before use.
If you want planners to ask for open jobs in plain English instead of maintaining BAQs, Netray can put a read-only natural-language layer over your Epicor data, on-prem if required.
Related Tools
Epicor Job Lifecycle Flags Reference
Lookup table of the job status flags on Erp.JobHead and related tables, what they mean and how to use them in BAQs.
EpicorEpicor Business Object Service Reference
Lookup table of common Erp.BO services with their main table, primary key and standard method names.
EpicorEpicor BAQ OData REST URL Builder
Builds Epicor REST v2 OData URLs and curl commands for BAQs and business object services, with API key header and filters.
EpicorEpicor BPM Custom Code Block Generator
Generates a C# custom code block for an Epicor method directive that validates a field on a temp table and raises an error or message.
More Epicor tools
See all- Epicor Kinetic Customization Change Request Form Template
- Epicor Kinetic Go-Live Cutover Plan Template
- Epicor Kinetic User Access Request Form Template
- Epicor Kinetic BPM Directive Inventory Worksheet
- Epicor Kinetic Scheduled Task Register Worksheet
- Epicor Kinetic Custom Report Inventory Worksheet
- Epicor Kinetic Data Migration Mapping Worksheet
- Epicor Kinetic Data Load Effort Calculator
- Epicor Business Object Services Reference
New to Epicor ERP? Start with the Epicor ERP guide and toolkit, or plan with Training Path Builder, ERP Certification Study Planner, Upgrade Path Planner.
Keep exploring
Free tools
- Epicor BAQ Query Template GeneratorFill in company, days back and status filters to get a starter SQL for an open jobs BAQ, plus a design checklist for the Query Builder.
- Epicor Job Material Shortage SQL GeneratorBuild a query that lists unissued job material for released, open jobs so planners can chase shortages.
- Epicor BAQ Performance Tuning ChecklistWork through a practical list of checks when a BAQ, dashboard or BPM lookup runs slowly in Epicor Kinetic.
ERP fixes and how-tos
- Epicor Kinetic Dashboard Examples (Shop Floor, Sales, Purchasing) and How to Add FiltersPractical Epicor Kinetic dashboard examples for shop floor, sales and purchasing, with the tables to query and how to add filters and parameters.
- How to Create a BAQ in Epicor KineticCreate a BAQ in Epicor Kinetic Query Builder: pick tables, set joins, display fields, criteria, calculated fields, test, and use it in dashboards and reports.
- How to Add AI to Epicor Kinetic On-Premises Without Moving Your DataReference architecture for a private AI assistant on Epicor Kinetic on-premises: BAQ and REST v2 access, SQL replica, local LLM, roles, audit and rollout.
AI on your ERP
- Epicor Kinetic AI for Metal Fabrication: Jobs, Heat Numbers and Outside Processing in Plain EnglishPrivate AI on Epicor Kinetic for metal fabricators: ask about jobs, nests, heat numbers and outside processing in plain English, grounded in live data.
- Private AI for Epicor Kinetic Cloud, Outside the Multi-Tenant BoundaryRun a private LLM on Epicor Kinetic private cloud or Kinetic Cloud data via BAQs, REST v2 and Data Fabric, keeping sensitive manufacturing data off shared AI.
Integrations
- How to use Claude with Epicor KineticUse Claude with Epicor Kinetic through an MCP connector, the Anthropic API, AWS Bedrock or Google Vertex, plus the private on-prem alternative for sensitive data.
- How to connect Power BI to Epicor KineticConnect Power BI to Epicor Kinetic using BAQ OData feeds, a data warehouse or a SQL replica, with an on-prem gateway, key dashboards and natural-language Q&A.