Integrations / ERP / Epicor Kinetic
Epicor Kinetic Integration Guide for Production Scheduling with SkyPlanner APS
This guide shows Epicor partners, IT teams and technical buyers how to run SkyPlanner APS as the finite capacity scheduler on top of Epicor Kinetic. SkyPlanner integrates with Epicor Kinetic in both directions, on Kinetic’s own REST services:
- Jobs, operations, resources and PO releases flow in.
- Planned operation dates go back to the jobs.
- Operator timelogs post back as Kinetic labor.
- SkyPlanner webhooks push schedule changes as they happen.
The SkyPlanner team configures the integration to your Kinetic setup during onboarding and supports it after go-live. This guide is for partners and developers who want to take part, or to build on SkyPlanner’s documented REST API (API reference) themselves.
If you have not decided yet whether Kinetic’s own Scheduling and Resource Management or the APS module covers your needs, read Does Epicor Kinetic have finite capacity scheduling? first.
Kinetic’s integration surface
Epicor states that “All Kinetic services, including business objects, processes, reports, BAQs, and Epicor Functions, are accessible through REST endpoints.” A scheduling integration is built on four Epicor technologies:
- Kinetic REST API v2 (OData v4). Business objects are exposed as services named
Erp.BO.<Name>Svc. The usual path is/api/v2/odata/{Company}/Erp.BO.{Svc}/{EntitySet}. REST v1 still exists but is legacy, so build on v2. Confirm entity sets and methods for your release in REST Help at/api/help/v2/. - Business Activity Queries (BAQ) over REST. A BAQ is exposed at
/api/v2/odata/{Company}/BaqSvc/{BAQ}/Data. This is the practical read path for planning extracts that joinJobHead,JobOper,JobMtl,PartWhseandPORelin one call (community example). - Epicor Functions (EFx). Server-side functions callable at
/api/v2/efx/{Company}/{Library}/{Function}. Epicor states they “can be triggered from multiple entry points, including BPMs, REST services, schedules, and application events.” - BPM directives. Method and Data Directives fire when a job or operation changes and can call a function that pushes data out.
For files, DMT handles inbound imports and BAQ exports handle outbound extracts. Epicor also offers Epicor Automation Studio, which it describes as “a low-code app for integration-led automations”. Skip direct database access: REST, BAQs and functions work the same on premises and on Kinetic Cloud.
Authentication and access scopes
Kinetic REST v2 controls access per integration. Each integration gets an API key tied to an access scope that lists the services and methods it may call. Epicor puts it this way: “API keys, access scopes, and standard authentication methods control which services and methods are available to each integration.”
On top of the API key, the caller signs in as a Kinetic user. Use a dedicated integration user with only the rights the integration needs. On the SkyPlanner side, the REST API uses JWT authentication and is documented in Swagger/OpenAPI.
For a SkyPlanner integration, the scope typically includes:
Erp.BO.JobEntrySvc(JobEntries, JobOpers, GetDatasetForTree)Erp.BO.ResourceGroupSvcandErp.BO.ResourceSvcErp.BO.CapabilitySvcErp.BO.PartSvc(Parts, PartWhses)Erp.BO.EmpBasicSvcErp.BO.ScheduleEngineSvc(GetNewParamsForJob, MoveJobItem, ChangeResource)Erp.BO.LaborSvc(Labors, LaborDtls, StartActivity, EndActivityByEmp)- the BAQs and EFx libraries you publish for the integration
A method missing from the scope fails at runtime, not at setup. List every method you call, monitor API key expiry, and alert on HTTP errors, not only on empty results.
Change detection: BPM directives, functions or polling
Epicor documents no generic outbound webhook API, so Kinetic changes reach SkyPlanner in one of two ways:
- Event-driven. A BPM Data Directive on
JobHeadorJobOpercalls an Epicor Function, which posts the changed job to the SkyPlanner REST API. - Scheduled polling. A BAQ filtered on change date runs every few minutes or hourly. It is simpler to own and to recover.
In the other direction, SkyPlanner pushes state and schedule changes through its webhooks. Your middleware or an EFx endpoint receives them and writes to Kinetic.
Data mapping
| Kinetic entity / service | SkyPlanner object | Direction | Frequency |
|---|---|---|---|
Part, PartRev (Erp.BO.PartSvc/Parts) | Product | Kinetic to SkyPlanner | Initial load, then scheduled |
PartMtl (method), JobMtl (job) | Materials of product and order | Kinetic to SkyPlanner | With the job |
PartOpr (method), JobOper (job) | Process steps | Kinetic to SkyPlanner | With the job |
ResourceGroup, Resource (ResourceGroupSvc, ResourceSvc) | Workstation groups, workstations | Kinetic to SkyPlanner | Initial load, on change |
Capability (CapabilitySvc) | Alternative workstations | Kinetic to SkyPlanner | Initial load, on change |
| Resource and resource group calendars | Shifts and exceptions | Kinetic to SkyPlanner | Initial load, then weekly or on change |
EmpBasic (EmpBasicSvc) | Personnel | Kinetic to SkyPlanner | Initial load, on change |
JobHead (JobEntrySvc/JobEntries) | Order | Kinetic to SkyPlanner | Real time via BPM + EFx, or BAQ poll |
PartWhse via BAQ | Inventory | Kinetic to SkyPlanner | Scheduled |
Purchase orders: POHeader, PODetail, PORel via BAQ | Purchase orders / incoming material (expected delivery date) | Kinetic to SkyPlanner | Scheduled, or on PO change via BPM + EFx |
| Planned start and end per operation | JobOper dates via ScheduleEngineSvc (MoveJobItem, ChangeResource) in an EFx | SkyPlanner to Kinetic | On schedule change, via webhook |
| Timelogs, quantities, operation progress, reasons | Labors / LaborDtls via LaborSvc; reason codes via Erp.BO.ReasonSvc | SkyPlanner to Kinetic | Real time via webhook |
Epicor calls the production order a Job. Map one JobHead to one SkyPlanner order and each JobOper to a process step. Keep job number, assembly sequence and operation sequence as the external key.
Integration patterns
1. Initial master data load. Read parts, resource groups, resources, capabilities, calendars and employees. Build SkyPlanner workstations from Kinetic resources, and workstation groups from resource groups. Page large reads with $top and $skip, or pull bulk data through a BAQ.
2. Order sync. Send released and firm jobs with their operations and materials. Pull the job tree with GetDatasetForTree or a BAQ, not entity by entity. Leave unfirm MRP jobs in Kinetic until they are firmed. Sync open PO releases with their due dates alongside the stock read. SkyPlanner treats ordered material as available on the delivery date and updates stock when the PO is marked Delivered, so the schedule checks both stock and incoming purchases.
3. Schedule write-back. SkyPlanner’s webhook sends the planned start, end and workstation per operation to an EFx endpoint (/api/v2/efx/{Company}/{Library}/{Function}). The function writes through Kinetic’s schedule engine, the same business object behind Job Entry scheduling and the scheduling boards (community example):
ScheduleEngine.GetNewParamsForJobbuilds the schedule engine dataset for the job.- The function sets job number, assembly and operation sequence and the planned start date and time, then calls
ScheduleEngine.MoveJobItem. - When SkyPlanner placed the operation on another resource in the group,
ScheduleEngine.ChangeResourcemoves it there.MoveJobItemalone keeps the group’s default resource. - The function sets the job’s schedule lock (
JobHead.SchedLocked, the Lock option in Job Entry), so Global Scheduling keeps SkyPlanner’s dates.
One Epicor Function around these calls keeps the write atomic per job and lets you add your own validation. Where a site prefers no custom function, the same sequence runs as direct REST calls to Erp.BO.ScheduleEngineSvc. Never write ResourceTimeUsed or JobOper date fields directly: that bypasses the engine and the board allocations go out of step.
4. Shop-floor confirmations. Operators log work in SkyPlanner with Mobile Confirmations, the Production Timer or Quick Log Mode. Each closed timelog becomes labor in Kinetic through Erp.BO.LaborSvc: StartActivity and EndActivityByEmp for live activity, or Labors with Update for after-the-fact entries. If your site requires approval, include submitForApproval in the flow and the scope.
5. Ownership and conflict rules. Write them down before go-live:
| Data | Owner |
|---|---|
| Parts, methods, resources, calendars, jobs, MRP, inventory, costing | Kinetic |
| Quantities and job status | Kinetic |
| Operation sequence, planned dates, resource within the group | SkyPlanner |
Jobs SkyPlanner schedules carry the schedule lock, so Global Scheduling leaves their dates alone. Keep Kinetic scheduling for any resources SkyPlanner does not plan.
Keys, retries and reconciliation
- Stable keys. Every record carries its Kinetic key: job number, assembly sequence and operation sequence for operations, labor header and detail for labor. Writes are upserts on that key, so a repeated message updates instead of duplicating.
- Retries. A failed write to either side is retried, and labor is posted once per SkyPlanner timelog ID, so a retry cannot double-count hours.
- Reconciliation. A scheduled BAQ compares open jobs, operation status and quantities with SkyPlanner and corrects drift, for example a job closed in Kinetic while a message was in flight.
- Quantity changes and cancellations. A changed quantity in Kinetic updates the order and its process steps in SkyPlanner. A partial completion reduces the remaining run time. A job closed or deleted in Kinetic leaves the schedule on the next sync.
What the project contains
Implementation is normally completed within weeks after onboarding starts. A Kinetic project covers:
- A 30-day trial on CSV or Excel exports of jobs, operations and resources, before any development.
- API key, access scope, a dedicated integration user and the BAQs the integration reads.
- Master data mapping: capabilities, resource groups, resources, calendars and employees to SkyPlanner workstations, groups, shifts and personnel.
- Initial load of parts, methods (BOM and operations) and resources.
- Job sync and purchase order sync (
POReldue dates), plusPartWhsestock. - Schedule write-back of planned operation dates through
ScheduleEngineSvc(MoveJobItem, ChangeResource) in an Epicor Function, with the job lock set. - Shop-floor confirmations posted as labor through
LaborSvc. - Testing in parallel with the current Kinetic schedule, then go-live.
Kinetic pitfalls
- Finite is set in several places. The Finite checkbox lives on the resource. The finite horizon is set on the resource, on the resource group and on the Planning tab in Site Maintenance. Each scheduling tool also has its own finite checkbox. Before you import Kinetic dates as a baseline, check whether they were scheduled finite at all.
- Capability or Resource Group and Resource. When an operation names a capability, its resource group and resource stay blank. Otherwise it names a resource group, sometimes with a specific resource. Your integration must read the same fields and resolve a capability to its eligible resources itself.
- Calendars carry history. Resource calendars and employee headcounts are often tuned to make the native scheduler behave. Map real shift patterns and the actual people into SkyPlanner, and let it assign several operators to a job where a crew is needed.
- Dates go through the engine, not CRUD. A plain
JobEntrySvcupdate of operation dates does not reschedule; one forum report shows aJobSchedulingcall returning 200 OK with the job unchanged. Use theScheduleEnginesequence above. - Data discipline decides the result. Optimistic operation times, missing purchase lead times, jobs left open and downtime missing from calendars degrade any schedule, native or external (Bluesky ERP).
Who configures the Kinetic integration
No two plants run Kinetic the same way. Capability routing, resource group calendars, BAQ design, BPM directives and release-specific write-back methods differ from site to site. Getting them right is the difference between a schedule planners trust and one they rework.
- The SkyPlanner team configures it during onboarding and supports it after go-live. The team maps your resources, jobs and PO releases and sets up the BAQ reads, BPM triggers and the write-back function. It connects SkyPlanner’s REST API and webhooks to Kinetic REST v2. Support continues when your BAQs, BPMs or Kinetic release change.
- Your Epicor partner. Partners who already write BAQs, BPMs and Epicor Functions can work on the same documented SkyPlanner REST API, which reads and writes orders, products, materials, process steps and timelogs.
- Your own developers. In-house teams with Kinetic REST experience can build directly, or in Automation Studio if you run it. A SkyPlanner API key is enough to start (integration tutorial), and the SkyPlanner team assists when needed. Product documentation is public at SkyPlanner docs.
The same API-and-webhook pattern runs in production with other ERPs, for example at UTU. At Laboratory & Allied, the in-house IT team built the SAP Business One integration largely on its own with SkyPlanner’s help.
Every route starts the same way: run the 30-day free trial on CSV imports first, prove the schedule, then build the integration. Pricing is from 199 € per month with 5 workstations, billed monthly, cancel any time. The integration is quoted up front for your process and needs, together with your plan, so you see the full cost before you start.
Why this setup instead of licensing Kinetic APS
For a technical buyer the comparison is scope and time to value. Choose SkyPlanner when:
- The integration should stay small. Jobs, operations, resources and materials go out. Planned dates and labor come back. The data mapping above is the whole scope.
- The schedule must react between runs. Arcturus builds the finite capacity schedule in seconds, and Autopilot reschedules automatically when production changes. SkyPlanner webhooks push each change, so Kinetic gets new dates without a Global Scheduling run.
- Shop-floor reporting should feed Kinetic labor. Operators log work on phone or tablet with Mobile Confirmations, Production Timer and Quick Log Mode, and
LaborSvcposting is part of the same integration. - Purchased material gates your jobs. Stock and open PO releases both feed the schedule, so operations start when material is actually due.
- Your constraints go past two. Several operators on one job, tools blocked while in use elsewhere, and alternative workstations and personnel are all in one schedule. A setting time matrix sequences changeovers, and the integration writes the result back.
- You want proof before the project, and a short project. The trial shows your own schedule on a BAQ export, with up to 20 workstations and no credit card. Implementation is normally completed within weeks after onboarding starts.
See features, customer reviews or book a demo.
SkyPlanner reviews from manufacturers
2 hsaved every week
“SkyPlanner has taken our production planning from Excel spreadsheets to real-time production optimization.”
Kalle Kalliomäki, Supply Chain Specialist
UTU · Electrical switchboards and switchgear
Production planning saves 2 hours of working time every week, and a new work queue reaches the line in seconds.
+90%production efficiency
“Efficiency has gone up 90% in production.”
Abdul Rucyinga, Head of IT
Laboratory & Allied · Pharmaceutical manufacturing
Production efficiency is up 90%, and a three-month optimized plan across all workstations takes under 30 minutes.
1,000swork orders scheduled automatically
“Production is under control in a different way, and our understanding of capacity is on a completely different level.”
Hannu Ryynänen, CEO
Mamec · Industrial mixers, pumps and high-tech contract manufacturing
Thousands of work orders are scheduled automatically, with a real-time view of production for the whole organization.
99.2%delivery reliability
“SkyPlanner has brought visibility to identifying bottlenecks and clarified production management.”
Toni Tuori, Production Manager
Piristeel · Roof safety and rainwater systems
Delivery reliability reached 99.2% this year, and scheduling saves up to four hours of working time per day.
FAQ
How is SkyPlanner APS integrated with Epicor Kinetic?
In both directions, on Kinetic REST v2, BAQs and Epicor Functions. Jobs, operations, resources and PO releases flow into SkyPlanner. Planned operation dates and labor flow back, and webhooks push schedule changes as they happen. The SkyPlanner team configures it to your Kinetic setup during onboarding, and your Epicor partner or developers can use the same REST API.
Which Kinetic API should a scheduling integration use?
REST v2. Use JobEntrySvc for jobs and operations, ResourceGroupSvc, ResourceSvc and CapabilitySvc for capacity, BAQs for bulk reads, and LaborSvc for posting work back.
Does Epicor Kinetic support webhooks?
Not as a generic outbound webhook API. Event-driven pushes run through BPM directives that call Epicor Functions, or you poll a BAQ on a schedule.
Can SkyPlanner write scheduled dates back to Kinetic jobs?
Yes. An Epicor Function calls ScheduleEngine.GetNewParamsForJob, MoveJobItem per operation and ChangeResource when the resource changed, then locks the job so Global Scheduling keeps the dates. The same calls also run directly over REST on Erp.BO.ScheduleEngineSvc.
Who maintains the integration?
The SkyPlanner team configures it during onboarding and supports it after go-live, also when your BAQs, BPMs or Kinetic release change.
Does it work with on-premises Epicor Kinetic?
Yes. The REST API, BAQs, BPMs and Epicor Functions work the same on premises and in Kinetic cloud, so one integration design covers both.
How long does a SkyPlanner APS and Epicor Kinetic integration take?
Implementation is normally completed within weeks after onboarding starts. Scope is the mapping, initial load, job and PO sync, schedule write-back and labor posting listed above, tested in parallel with your current schedule.