Integraciones / ERP / Epicor Kinetic
Guía de integración de Epicor Kinetic para programar la producción con SkyPlanner APS
Esta guía muestra a los partners de Epicor, los equipos de TI y los responsables técnicos de compras cómo usar SkyPlanner APS para la programación de la producción sobre Epicor Kinetic, respetando la capacidad real de las máquinas y del personal. SkyPlanner se integra con Epicor Kinetic en ambos sentidos mediante los propios servicios REST de Kinetic:
- Se importan tareas, operaciones, recursos productivos y entregas de pedidos de compra.
- Las fechas planificadas de las operaciones se devuelven a las tareas.
- Los registros de tiempo de los operarios se envían a Kinetic como partes de mano de obra.
- Los webhooks de SkyPlanner envían los cambios de la programación en cuanto se producen.
El equipo de SkyPlanner configura la integración según tu entorno Kinetic durante la puesta en marcha y ofrece soporte tras la entrada en producción. Esta guía está dirigida a partners y desarrolladores que quieran participar o desarrollar por su cuenta con la API REST documentada de SkyPlanner (referencia de la API).
Si aún no has determinado si Scheduling and Resource Management de Kinetic o el módulo APS cubren tus necesidades, lee primero ¿Permite Epicor Kinetic programar la producción respetando la capacidad disponible?.
Opciones de integración de Kinetic
Epicor afirma: «All Kinetic services, including business objects, processes, reports, BAQs, and Epicor Functions, are accessible through REST endpoints.» (Todos los servicios de Kinetic, incluidos los objetos de negocio, procesos, informes, BAQs y Epicor Functions, son accesibles a través de endpoints REST). Una integración para la programación de la producción se basa en cuatro tecnologías de Epicor:
- Kinetic REST API v2 (OData v4). Los objetos de negocio se exponen como servicios con el nombre
Erp.BO.<Name>Svc. La ruta habitual es/api/v2/odata/{Company}/Erp.BO.{Svc}/{EntitySet}. REST v1 sigue disponible, pero es una versión heredada: desarrolle la integración sobre v2. Compruebe los conjuntos de entidades y los métodos de su versión en REST Help, en/api/help/v2/. - Business Activity Queries (BAQ) mediante REST. Cada BAQ se expone en
/api/v2/odata/{Company}/BaqSvc/{BAQ}/Data. Es una vía práctica para extraer datos de planificación combinandoJobHead,JobOper,JobMtl,PartWhseyPORelen una sola llamada (ejemplo de la comunidad). - Epicor Functions (EFx). Funciones del lado del servidor que pueden invocarse en
/api/v2/efx/{Company}/{Library}/{Function}. Epicor indica que «can be triggered from multiple entry points, including BPMs, REST services, schedules, and application events.» (pueden activarse desde distintos puntos de entrada, como BPM, servicios REST, programaciones y eventos de la aplicación). - Directivas BPM. Method Directives y Data Directives se activan cuando cambia una tarea u operación y pueden llamar a una función que envía datos al exterior.
Para trabajar con archivos, DMT gestiona las importaciones y las exportaciones BAQ permiten extraer los datos. Epicor también ofrece Epicor Automation Studio, que describe como «a low-code app for integration-led automations» (una aplicación de bajo código para automatizaciones basadas en integraciones). Evita el acceso directo a la base de datos: REST, las BAQs y las funciones operan de la misma manera en instalaciones locales y en Kinetic Cloud.
Autenticación y ámbitos de acceso
Kinetic REST v2 controla el acceso de cada integración. Cada una recibe una clave de API vinculada a un ámbito de acceso que enumera los servicios y métodos a los que puede llamar. Epicor lo explica así: «API keys, access scopes, and standard authentication methods control which services and methods are available to each integration.» (Las claves de API, los ámbitos de acceso y los métodos de autenticación estándar controlan qué servicios y métodos están disponibles para cada integración).
Además de usar la clave de API, quien realiza la llamada debe autenticarse como usuario de Kinetic. Utiliza un usuario exclusivo para la integración, con solo los permisos necesarios. En SkyPlanner, la API REST utiliza autenticación JWT y está documentada en Swagger/OpenAPI.
Para una integración con SkyPlanner, el ámbito suele incluir:
Erp.BO.JobEntrySvc(JobEntries, JobOpers, GetDatasetForTree)Erp.BO.ResourceGroupSvcyErp.BO.ResourceSvcErp.BO.CapabilitySvcErp.BO.PartSvc(Parts, PartWhses)Erp.BO.EmpBasicSvcErp.BO.ScheduleEngineSvc(GetNewParamsForJob, MoveJobItem, ChangeResource)Erp.BO.LaborSvc(Labors, LaborDtls, StartActivity, EndActivityByEmp)- las BAQs y bibliotecas EFx que publiques para la integración
Si un método no está incluido en el ámbito, el fallo se produce durante la ejecución, no durante la configuración. Enumera todos los métodos a los que llames, supervisa la caducidad de la clave de API y configura alertas para los errores HTTP, no solo para los resultados vacíos.
Detección de cambios: directivas BPM, funciones o consultas periódicas
Epicor no documenta ninguna API genérica de webhooks de salida, por lo que los cambios de Kinetic llegan a SkyPlanner de una de estas dos formas:
- Por eventos. Una Data Directive de BPM sobre
JobHeadoJobOperllama a una Epicor Function, que envía la orden modificada a la API REST de SkyPlanner. - Consultas periódicas programadas. Una BAQ filtrada por fecha de modificación se ejecuta cada pocos minutos o cada hora. Esta opción es más sencilla de mantener y de recuperar en caso de fallo.
En el sentido contrario, SkyPlanner envía los cambios de estado y de programación mediante sus webhooks. Tu middleware o un endpoint EFx los recibe y los escribe en Kinetic.
Correspondencia de datos
| Entidad / servicio de Kinetic | Objeto de SkyPlanner | Sentido | Frecuencia |
|---|---|---|---|
Part, PartRev (Erp.BO.PartSvc/Parts) | Producto | De Kinetic a SkyPlanner | Carga inicial y después a intervalos programados |
PartMtl (método de fabricación), JobMtl (orden de producción) | Materiales del producto y de la orden | De Kinetic a SkyPlanner | Junto con la orden |
PartOpr (método de fabricación), JobOper (orden de producción) | Etapas del proceso | De Kinetic a SkyPlanner | Junto con la orden |
ResourceGroup, Resource (ResourceGroupSvc, ResourceSvc) | Grupos de estaciones de trabajo, estaciones de trabajo | De Kinetic a SkyPlanner | Carga inicial y cuando haya cambios |
Capability (CapabilitySvc) | Estaciones de trabajo alternativas | De Kinetic a SkyPlanner | Carga inicial y cuando haya cambios |
| Calendarios de recursos productivos y de grupos de recursos productivos | Turnos y excepciones | De Kinetic a SkyPlanner | Carga inicial y después semanalmente o cuando haya cambios |
EmpBasic (EmpBasicSvc) | Personal | De Kinetic a SkyPlanner | Carga inicial y cuando haya cambios |
JobHead (JobEntrySvc/JobEntries) | Orden | De Kinetic a SkyPlanner | En tiempo real mediante BPM + EFx, o mediante consultas periódicas a una BAQ |
PartWhse mediante BAQ | Existencias | De Kinetic a SkyPlanner | A intervalos programados |
Pedidos de compra: POHeader, PODetail, PORel mediante BAQ | Pedidos de compra / material pendiente de recepción (fecha de entrega prevista) | De Kinetic a SkyPlanner | A intervalos programados, o al cambiar el pedido de compra mediante BPM + EFx |
| Inicio y fin previstos por operación | Fechas de JobOper mediante ScheduleEngineSvc (MoveJobItem, ChangeResource) en una EFx | De SkyPlanner a Kinetic | Al cambiar la programación, mediante webhook |
| Registros de tiempo, cantidades, avance de las operaciones, motivos | Labors / LaborDtls mediante LaborSvc; códigos de motivo mediante Erp.BO.ReasonSvc | De SkyPlanner a Kinetic | En tiempo real mediante webhook |
Epicor denomina Job a la orden de producción. Asocie cada JobHead a una orden de SkyPlanner y cada JobOper a una etapa del proceso. Conserve el número de orden, la secuencia de ensamblaje y la secuencia de operación como clave externa.
Patrones de integración
1. Carga inicial de datos maestros. Lea los artículos, grupos de recursos productivos, recursos productivos, capacidades, calendarios y empleados. Cree las estaciones de trabajo de SkyPlanner a partir de los recursos de Kinetic, y los grupos de estaciones a partir de los grupos de recursos. Pagine las lecturas de gran volumen con $top y $skip, o extraiga los datos en bloque mediante una BAQ.
2. Sincronización de órdenes. Envíe las órdenes liberadas y en firme con sus operaciones y materiales. Obtenga el árbol de la orden con GetDatasetForTree o una BAQ, no entidad por entidad. Mantenga en Kinetic las órdenes de MRP que aún no estén en firme hasta que se confirmen. Junto con la lectura de existencias, sincronice las entregas pendientes de los pedidos de compra y sus fechas de entrega previstas. SkyPlanner considera que el material pedido estará disponible en la fecha de entrega y actualiza las existencias cuando el pedido de compra se marca como Delivered. Así, la programación tiene en cuenta tanto las existencias como las compras pendientes de recepción.
3. Escritura de la programación en Kinetic. El webhook de SkyPlanner envía el inicio, el fin y la estación de trabajo previstos para cada operación a un endpoint de EFx (/api/v2/efx/{Company}/{Library}/{Function}). La función escribe los datos a través del motor de programación de Kinetic, el mismo objeto de negocio que utilizan la programación de Job Entry y los tableros de programación (ejemplo de la comunidad):
ScheduleEngine.GetNewParamsForJobcrea el conjunto de datos que necesita el motor de programación para la orden.- La función establece el número de orden, las secuencias de ensamblaje y de operación y la fecha y hora de inicio previstas. Después llama a
ScheduleEngine.MoveJobItem. - Cuando SkyPlanner ha asignado la operación a otro recurso productivo del grupo,
ScheduleEngine.ChangeResourcela traslada a ese recurso. Por sí solo,MoveJobItemmantiene el recurso predeterminado del grupo. - La función activa el bloqueo de la programación de la orden (
JobHead.SchedLocked, la opción Lock de Job Entry), para que Global Scheduling conserve las fechas de SkyPlanner.
Agrupar estas llamadas en una Epicor Function mantiene la escritura atómica por orden y permite añadir validaciones propias. Si la planta prefiere no utilizar una función personalizada, puede ejecutar la misma secuencia con llamadas REST directas a Erp.BO.ScheduleEngineSvc. Nunca escriba directamente en ResourceTimeUsed ni en los campos de fecha de JobOper: eso omite el motor y deja desajustadas las asignaciones de los tableros.
4. Notificaciones de producción en planta. Los operarios registran su trabajo en SkyPlanner con Mobile Confirmations, Production Timer o Quick Log Mode. Cada registro de tiempo cerrado se convierte en un registro de mano de obra en Kinetic a través de Erp.BO.LaborSvc: StartActivity y EndActivityByEmp para la actividad en tiempo real, o Labors con Update para los registros a posteriori. Si su planta exige aprobación, incluya submitForApproval en el flujo y en el ámbito de acceso.
5. Reglas de responsabilidad sobre los datos y resolución de conflictos. Déjalas por escrito antes de la entrada en producción:
| Datos | Sistema responsable |
|---|---|
| Artículos, métodos de fabricación, recursos productivos, calendarios, tareas, MRP, inventario y cálculo de costes | Kinetic |
| Cantidades y estado de las tareas | Kinetic |
| Secuencia de operaciones, fechas planificadas y recurso productivo dentro del grupo | SkyPlanner |
Las tareas que programa SkyPlanner llevan un bloqueo de programación para que Global Scheduling no modifique sus fechas. Mantén la programación de Kinetic para los recursos productivos que SkyPlanner no planifique.
Claves, reintentos y conciliación
- Claves estables. Cada registro conserva su clave de Kinetic: número de tarea, secuencia de ensamblaje y secuencia de operación para las operaciones; cabecera y detalle de mano de obra para los partes de trabajo. Las escrituras insertan o actualizan según esa clave, de modo que un mensaje repetido actualiza el registro en lugar de duplicarlo.
- Reintentos. Si una escritura falla en cualquiera de los dos sistemas, se reintenta. La mano de obra se registra una sola vez por cada ID de registro de tiempo de SkyPlanner, por lo que un reintento no puede contabilizar las horas dos veces.
- Conciliación. Una BAQ programada compara las tareas abiertas, el estado de las operaciones y las cantidades con SkyPlanner y corrige las discrepancias; por ejemplo, si una tarea se cerró en Kinetic mientras se transmitía un mensaje.
- Cambios de cantidad y cancelaciones. Un cambio de cantidad en Kinetic actualiza la orden y sus fases de proceso en SkyPlanner. Una finalización parcial reduce el tiempo de ejecución restante. Una tarea cerrada o eliminada en Kinetic se retira del programa en la siguiente sincronización.
Qué incluye el proyecto
La implantación suele completarse en cuestión de semanas desde el inicio de la puesta en marcha. Un proyecto de Kinetic incluye:
- Una prueba de 30 días con exportaciones de tareas, operaciones y recursos productivos en CSV o Excel, antes de iniciar cualquier desarrollo.
- La clave de API, el ámbito de acceso, un usuario exclusivo para la integración y las BAQs que esta consulta.
- La correspondencia entre los datos maestros —capacidades, grupos de recursos productivos, recursos productivos, calendarios y empleados— y los puestos de trabajo, grupos, turnos y personal de SkyPlanner.
- La carga inicial de artículos, métodos de fabricación (BOM y operaciones) y recursos productivos.
- Sincronización de órdenes de producción y pedidos de compra (fechas de entrega previstas de
PORel), además de las existencias dePartWhse. - Escritura en Kinetic de las fechas previstas de las operaciones mediante
ScheduleEngineSvc(MoveJobItem, ChangeResource) en una Epicor Function, con el bloqueo de la orden activado. - Envío de las notificaciones de producción en planta como registros de mano de obra mediante
LaborSvc. - Pruebas en paralelo con el programa actual de Kinetic y, después, la entrada en producción.
Puntos críticos de Kinetic
- El respeto de los límites de capacidad se configura en varios lugares. La casilla Finite se encuentra en el recurso productivo. El horizonte en el que se respetan esos límites se establece en el recurso productivo, en el grupo de recursos productivos y en la pestaña Planning de Site Maintenance. Cada herramienta de programación también tiene su propia casilla Finite. Antes de importar las fechas de Kinetic como referencia, comprueba si realmente se calcularon respetando la capacidad disponible.
- Capability o Resource Group y Resource. Cuando una operación especifica una capacidad, el grupo de recursos productivos y el recurso productivo quedan en blanco. En caso contrario, especifica un grupo y, a veces, un recurso productivo concreto. La integración debe leer esos mismos campos y determinar por sí misma qué recursos productivos pueden cubrir cada capacidad.
- Los calendarios arrastran ajustes del pasado. Los calendarios de los recursos productivos y el número de empleados suelen ajustarse para que el programador nativo funcione como se espera. Traslada a SkyPlanner los turnos reales y el personal disponible, y deja que asigne varios operarios a una tarea cuando se necesite un equipo.
- Las fechas se modifican a través del motor, no mediante CRUD. Una simple actualización de las fechas de las operaciones con
JobEntrySvcno reprograma la orden; un caso publicado en el foro muestra una llamada aJobSchedulingque devuelve 200 OK sin modificar la orden. Utilice la secuencia deScheduleEnginedescrita anteriormente. - El rigor en los datos determina el resultado. Los tiempos de operación demasiado optimistas, la falta de plazos de aprovisionamiento, las tareas que se dejan abiertas y las paradas que no figuran en los calendarios perjudican cualquier programa, sea nativo o externo (Bluesky ERP).
Quién configura la integración con Kinetic
No hay dos plantas que utilicen Kinetic de la misma manera. Las rutas de fabricación basadas en capacidades, los calendarios de los grupos de recursos productivos, el diseño de las BAQs, las directivas BPM y los métodos para devolver datos a Kinetic, específicos de cada versión, varían de una planta a otra. Configurarlos bien marca la diferencia entre un programa en el que los planificadores confían y otro que tienen que rehacer.
- El equipo de SkyPlanner la configura durante la puesta en marcha y ofrece soporte tras la entrada en producción. El equipo establece la correspondencia de tus recursos productivos, tareas y entregas de pedidos de compra, y configura las lecturas de BAQ, los disparadores BPM y la función que devuelve los datos a Kinetic. Conecta la API REST y los webhooks de SkyPlanner con Kinetic REST v2. El soporte continúa cuando cambian tus BAQs, BPMs o la versión de Kinetic.
- Tu partner de Epicor. Los partners que ya desarrollan BAQs, BPMs y Epicor Functions pueden trabajar con la misma API REST documentada de SkyPlanner, que permite leer y escribir órdenes, productos, materiales, fases de proceso y registros de tiempo.
- Tus propios desarrolladores. Los equipos internos con experiencia en Kinetic REST pueden desarrollar la integración directamente, o en Automation Studio si lo utilizas. Basta con una clave de API de SkyPlanner para empezar (tutorial de integración), y el equipo de SkyPlanner presta ayuda cuando es necesario. La documentación del producto es pública y está disponible en la documentación de SkyPlanner.
Este mismo patrón de API y webhooks ya funciona en producción con otros ERP, por ejemplo en UTU. En Laboratory & Allied, el equipo interno de TI desarrolló la integración con SAP Business One en gran medida por su cuenta, con la ayuda de SkyPlanner.
Todas las opciones empiezan igual: utiliza primero la prueba gratuita de 30 días con importaciones CSV, valida el programa y después desarrolla la integración. El precio parte de 199 € al mes con 5 puestos de trabajo, facturación mensual y cancelación en cualquier momento. La integración se presupuesta de antemano según tus procesos y necesidades, junto con tu plan, para que conozcas el coste total antes de empezar.
Por qué elegir esta solución en lugar de contratar Kinetic APS
Para un responsable técnico de compras, la comparación se centra en el alcance y el tiempo necesario para obtener resultados. Elige SkyPlanner cuando:
- Necesitas una integración acotada. Se envían tareas, operaciones, recursos productivos y materiales. Se reciben fechas planificadas y partes de mano de obra. La correspondencia de datos descrita arriba cubre todo el alcance.
- El programa debe reaccionar entre ejecuciones. Arcturus genera el programa de producción en segundos respetando la capacidad real de las máquinas y del personal, y Autopilot reprograma automáticamente cuando cambia la producción. Los webhooks de SkyPlanner envían cada cambio para que Kinetic reciba las nuevas fechas sin ejecutar Global Scheduling.
- Los registros de planta deben alimentar los registros de mano de obra de Kinetic. Los operarios registran su trabajo desde un teléfono o una tableta con Mobile Confirmations, Production Timer y Quick Log Mode. El envío mediante
LaborSvcforma parte de la misma integración. - Los materiales comprados condicionan el inicio de tus tareas. Tanto las existencias como las entregas pendientes de los pedidos de compra alimentan el programa, de modo que las operaciones empiezan cuando está prevista la llegada real del material.
- Tienes más de dos restricciones. Un solo programa contempla varios operarios en una tarea, herramientas bloqueadas mientras se utilizan en otra y puestos de trabajo y personal alternativos. Una matriz de tiempos de preparación establece la secuencia de los cambios, y la integración devuelve el resultado a Kinetic.
- Quieres comprobar los resultados antes de iniciar el proyecto y completarlo en poco tiempo. La prueba muestra tu propio programa a partir de una exportación BAQ, con hasta 20 puestos de trabajo y sin tarjeta de crédito. La implantación suele completarse en cuestión de semanas desde el inicio de la puesta en marcha.
Consulta las funcionalidades y las opiniones de clientes o reserva una demo.
Opiniones de fabricantes sobre SkyPlanner
2 hahorradas cada semana
“Con SkyPlanner hemos pasado de planificar la producción en hojas de Excel a optimizarla en tiempo real.”
Kalle Kalliomäki, especialista en cadena de suministro
UTU · Cuadros eléctricos y aparamenta
La planificación de la producción ahorra 2 horas de trabajo a la semana, y cada nueva cola de trabajo llega a la línea en segundos.
+90%de eficiencia en la producción
“La eficiencia en la producción ha aumentado un 90%.”
Abdul Rucyinga, responsable de TI
Laboratory & Allied · Fabricación farmacéutica
La eficiencia en la producción ha aumentado un 90%, y elaborar un plan optimizado de tres meses para todos los puestos de trabajo lleva menos de 30 minutos.
1.000sde órdenes de fabricación programadas automáticamente
“Ahora controlamos la producción de otra manera, y nuestro conocimiento de la capacidad está a un nivel completamente distinto.”
Hannu Ryynänen, director general
Mamec · Mezcladores industriales, bombas y fabricación por contrato de alta tecnología
Miles de órdenes de fabricación se programan automáticamente, y toda la organización dispone de una visión de la producción en tiempo real.
99,2%de cumplimiento de plazos de entrega
“SkyPlanner nos ha dado la visibilidad necesaria para identificar los cuellos de botella y ha aportado claridad a la gestión de la producción.”
Toni Tuori, responsable de producción
Piristeel · Sistemas de seguridad para cubiertas y evacuación de aguas pluviales
El cumplimiento de plazos de entrega ha alcanzado el 99,2% este año, y la programación ahorra hasta cuatro horas de trabajo al día.
Preguntas frecuentes
¿Cómo se integra SkyPlanner APS con Epicor Kinetic?
La integración es bidireccional y utiliza Kinetic REST v2, BAQs y Epicor Functions. SkyPlanner recibe las órdenes de fabricación, las operaciones, los recursos productivos y las entregas programadas de los pedidos de compra. A su vez, devuelve las fechas previstas de las operaciones y los datos de mano de obra, y los webhooks envían los cambios de programación en cuanto se producen. Durante la puesta en marcha, el equipo de SkyPlanner adapta la integración a su configuración de Kinetic. Su partner de Epicor o sus desarrolladores pueden utilizar la misma API REST.
¿Qué API de Kinetic debe utilizar una integración para la programación de la producción?
REST v2. Utilice JobEntrySvc para las órdenes y operaciones; ResourceGroupSvc, ResourceSvc y CapabilitySvc para la capacidad; BAQ para las lecturas masivas; y LaborSvc para enviar a Kinetic el trabajo registrado.
¿Epicor Kinetic admite webhooks?
No dispone de una API genérica de webhooks salientes. Los envíos activados por eventos se realizan mediante directivas BPM que llaman a Epicor Functions. La alternativa es consultar una BAQ a intervalos programados.
¿Puede SkyPlanner escribir las fechas programadas en las órdenes de fabricación de Kinetic?
Sí. Una Epicor Function llama a ScheduleEngine.GetNewParamsForJob, a MoveJobItem por cada operación y a ChangeResource cuando ha cambiado el recurso productivo. Después bloquea la orden para que Global Scheduling conserve las fechas. Las mismas llamadas también pueden ejecutarse directamente mediante REST sobre Erp.BO.ScheduleEngineSvc.
¿Quién mantiene la integración?
El equipo de SkyPlanner la configura durante la puesta en marcha y ofrece soporte tras la entrada en producción, también cuando cambian sus BAQs, sus BPMs o su versión de Kinetic.
¿Funciona con Epicor Kinetic instalado en servidores propios?
Sí. La API REST, las BAQs, los BPMs y Epicor Functions funcionan igual en instalaciones locales y en Kinetic en la nube, por lo que un mismo diseño de integración sirve para ambos entornos.
¿Cuánto se tarda en integrar SkyPlanner APS con Epicor Kinetic?
La implementación suele completarse en unas semanas desde el inicio de la puesta en marcha. Incluye la correspondencia de datos, la carga inicial, la sincronización de órdenes de fabricación y pedidos de compra, la escritura de la programación en Kinetic y el registro de mano de obra descritos anteriormente. Todo se prueba en paralelo con su programación actual.