Integraciones / ERP / Oracle NetSuite
Guía de integración de NetSuite para la programación de la producción con SkyPlanner APS
Esta guía explica a los partners, administradores y responsables de compras técnicas de NetSuite cómo se conecta SkyPlanner APS con Oracle NetSuite para programar la producción respetando la capacidad real de las máquinas y del personal. La integración entre SkyPlanner y NetSuite es bidireccional y utiliza servicios web REST y SuiteQL:
- Se importan órdenes de fabricación, rutas de fabricación, centros de trabajo, artículos y pedidos de compra.
- Las fechas y horas de inicio y fin previstas se escriben en las tareas de las operaciones de fabricación.
- Las horas registradas y las cantidades producidas se envían de vuelta como Work Order Completions o Assembly Builds.
- Los webhooks de SkyPlanner envían los cambios de la programación en cuanto se producen.
NetSuite es el sistema de referencia para los artículos, las BOM, las rutas de fabricación, las órdenes de fabricación, el inventario y el cálculo de costes. SkyPlanner elabora la programación de la producción con el motor Arcturus, respetando la capacidad real de las máquinas y del personal. El equipo de SkyPlanner configura la integración con tu cuenta durante la puesta en marcha y ofrece soporte tras la entrada en producción. La integración trabaja con registros estándar de NetSuite y no depende de Advanced Manufacturing SuiteApp.
SkyPlanner ya funciona integrado con NetSuite en UTU, fabricante de cuadros eléctricos y aparamenta en Ulvila, Finlandia. UTU entró en producción en septiembre de 2025, con SkyPlanner integrado con Oracle NetSuite y su sistema de nóminas. Para evaluar su encaje en el negocio, empieza por la página de programación de la producción para NetSuite y el artículo ¿Permite NetSuite programar la producción respetando la capacidad real?.
La decisión que define el proyecto: REST y OAuth 2.0
Oracle ha marcado el rumbo. A partir de 2026.1, las nuevas integraciones deben desarrollarse sobre los servicios web SuiteTalk REST con OAuth 2.0. Desde 2027.1, no se permiten nuevas integraciones con SOAP ni con Token-Based Authentication (TBA). Los endpoints SOAP se desactivan en 2028.2. Cualquier integración para la programación que se inicie hoy debe basarse en REST.
| Opción de NetSuite | Qué es | Función en una integración con APS |
|---|---|---|
| API de registros de SuiteTalk REST | /services/rest/record/v1/<recordType>, con versiones vinculadas a las de NetSuite; !transform para registrar finalizaciones, consumos de materiales y ensamblajes de órdenes de fabricación | Escritura: fechas de tareas de operación y órdenes de fabricación (PATCH), finalizaciones, consumos de materiales y ensamblajes (transform) |
| SuiteQL a través de REST | POST /services/rest/query/v1/suiteql con Prefer: transient, hasta 100.000 resultados por consulta y paginación mediante limit/offset | Lecturas masivas: artículos, rutas de fabricación, centros de trabajo, órdenes de fabricación abiertas y existencias |
| RESTlets de SuiteScript 2.1 | Endpoints personalizados de get/post/put/delete | Cubrir funciones no disponibles en REST y combinar datos en un mismo envío, como una orden de fabricación con todas sus operaciones |
| SuiteScript User Event / Map-Reduce | Scripts que se ejecutan en el servidor de NetSuite | Envío de notificaciones de cambios a sistemas externos |
| CSV Import Assistant | Asignaciones de campos guardadas para la importación | Cargas puntuales; no sirve para la sincronización continua |
| SuiteTalk SOAP | Tecnología heredada, solo con TBA | No iniciar nuevos desarrollos con esta opción |
Autenticación
Para un sistema de programación que se comunique de servidor a servidor, utiliza OAuth 2.0 Client Credentials (máquina a máquina). La ruta de administración es Setup > Integration > Manage Authentication > OAuth 2.0 Client Credentials (M2M) Setup. Sube un certificado público y vincúlalo a una entidad, un rol y el registro de integración. Cada registro de integración admite un máximo de cinco certificados activos.
Crea un rol específico para la integración: permisos de consulta para artículos, revisiones de BOM, rutas de fabricación y centros de trabajo; y permisos de edición para órdenes de fabricación, notificaciones de producción y salidas de materiales. La API REST de SkyPlanner (referencia de la API) utiliza JWT, por lo que el middleware almacena ambas credenciales.
Eventos: no hay un webhook estándar
La documentación de Oracle no describe ningún webhook nativo de salida. El patrón que funciona es un script SuiteScript User Event sobre Work Order (afterSubmit) que pone en cola una llamada saliente mediante N/task o un script Map/Reduce, y realiza la llamada con N/https. Nunca haga llamadas síncronas desde afterSubmit: se ejecutan durante el guardado del usuario, por lo que un endpoint lento retrasa el guardado o hace que falle.
Los eventos de usuario no cubren todas las vías de modificación. Las actualizaciones masivas y las importaciones CSV pueden omitirlos. Combine el script de eventos con una consulta periódica de conciliación en SuiteQL sobre lastmodifieddate para no pasar por alto ningún cambio. En sentido contrario, los webhooks de SkyPlanner activan la escritura de datos en NetSuite, que recibe las nuevas fechas en cuanto cambia el programa.
Mapeo de datos: de NetSuite a SkyPlanner
| Registro de NetSuite (ID REST) | Objeto de SkyPlanner | Sentido | Frecuencia |
|---|---|---|---|
Assembly Item (assemblyItem), Inventory Item (inventoryItem) | Producto / material | NetSuite → SkyPlanner | Carga inicial y, después, a diario o cuando haya cambios |
BOM Revision (bomRevision), componentes de la BOM | Estructura multinivel del producto, necesidades de materiales | NetSuite → SkyPlanner | Cuando haya cambios |
Manufacturing Routing (manufacturingRouting, sublistas routingStep, routingComponent) | Etapas del proceso: secuencia, estación de trabajo, tiempo de preparación y tiempo de ejecución | NetSuite → SkyPlanner | Cuando haya cambios |
| Manufacturing Work Center (Group marcado como centro de trabajo): Machine Resources, Labor Resources, Work Calendar | Estaciones de trabajo, grupos de estaciones de trabajo y turnos | NetSuite → SkyPlanner; después, el mantenimiento se realiza en SkyPlanner | Carga inicial |
Work Order (workOrder): artículo, cantidad, ubicación, Production Start/End Date, estado; Sales Order vinculado para la fecha de entrega | Orden / tarea con fecha de entrega y prioridad | NetSuite → SkyPlanner | Casi en tiempo real mediante User Event, más consultas periódicas de conciliación |
Manufacturing Operation Task (manufacturingOperationTask) | Operación programada | NetSuite → SkyPlanner; fechas: SkyPlanner → NetSuite | Casi en tiempo real |
Existencias por ubicación (SuiteQL), Item Receipts (itemReceipt) | Saldos de existencias para programar en función de los materiales | NetSuite → SkyPlanner | Cada 15 a 60 minutos o al recibir materiales |
Líneas de Purchase Order (purchaseOrder): artículo, cantidad, fecha prevista de recepción y estado | Pedidos de compra / materiales pendientes de recibir (fecha prevista de entrega). Se consideran disponibles en la fecha de entrega; las existencias se actualizan cuando el pedido de compra se marca como Delivered | NetSuite → SkyPlanner | Cada 15 a 60 minutos o cuando haya cambios |
| Inicio y fin previstos de cada operación | PATCH manufacturingOperationTask/{id} (startDate, endDate) y PATCH workOrder/{id} (Production Start/End Date) | SkyPlanner → NetSuite | Cuando cambie el programa, mediante un webhook de SkyPlanner |
| Mobile Confirmations, registros de tiempo, Production Timer | POST workOrder/{id}/!transform/workOrderCompletion: rango startOperation/endOperation, cantidad completada, tiempo de mano de obra en las líneas operation e ID del registro de tiempo de SkyPlanner como ID externo | SkyPlanner → NetSuite | Con cada confirmación o por lotes |
| Consumo de materiales | POST workOrder/{id}/!transform/workOrderIssue, o isBackflush en la finalización | SkyPlanner → NetSuite | Con cada confirmación |
| Orden finalizada (cuentas sin WIP) | POST workOrder/{id}/!transform/assemblyBuild | SkyPlanner → NetSuite | Al finalizar la orden |
| Orden cerrada | Work Order Close (workOrderClose) | En NetSuite, a cargo del departamento financiero | No se automatiza de forma predeterminada |
Patrones de integración
1. Carga inicial de datos maestros. Lee primero los centros de trabajo y, después, los artículos, las revisiones de BOM y las rutas de fabricación mediante SuiteQL. Las rutas de fabricación hacen referencia a los centros de trabajo, así que el orden importa. Durante la prueba, exporta esos mismos datos a CSV e impórtalos en SkyPlanner. La programación se valida antes de escribir código.
2. Sincronización de órdenes. Importa las órdenes de fabricación con estado Released e In Process. Decide desde el principio si también se incluirán las órdenes con estado Planned. Si las incluyes, trátalas como demanda provisional. Sincroniza los pedidos de compra abiertos en el mismo ciclo para que la programación compruebe cada tarea teniendo en cuenta tanto las existencias como los materiales pendientes de recibir, y no solo las existencias.
3. Escritura del programa en NetSuite. Cuando cambia el programa, un webhook de SkyPlanner envía las nuevas fechas de las operaciones al middleware. El middleware envía PATCH /services/rest/record/v1/manufacturingOperationTask/{id} (referencia de registros de Oracle) con startDate y endDate para cada operación modificada. Otro PATCH sobre la cabecera de workOrder establece Production Start y End Date. Escriba únicamente fechas y, si lo utiliza, un campo personalizado de secuencia. Nunca escriba cantidades ni datos de la BOM de vuelta en NetSuite. Para actualizar muchas operaciones en una sola transacción, un pequeño RESTlet guarda la lista completa de operaciones en una sola llamada. La API de registros sigue siendo la opción predeterminada.
4. Confirmaciones en planta. Los operarios registran su trabajo en SkyPlanner Mobile Confirmations. El middleware envía cada confirmación mediante las transformaciones de Work Order con POST /services/rest/record/v1/workOrder/{id}/!transform/workOrderCompletion, incluyendo startOperation, endOperation, la cantidad completada y el tiempo registrado en las líneas de operación. Las órdenes de fabricación sin WIP se cierran con !transform/assemblyBuild en su lugar. Work Order Completion a través de REST requiere la función Manufacturing Work In Process. La contabilización de inventario y costes sigue realizándose en NetSuite.
5. Idempotencia y reintentos. Cada notificación de producción lleva el ID del registro de tiempo de SkyPlanner como ID externo de NetSuite. Los ID externos son únicos por tipo de registro, de modo que un webhook reenviado se rechaza como duplicado en lugar de contabilizar dos veces las cantidades y los costes. Las escrituras pasan por una cola. Si una llamada falla por un límite de concurrencia, un registro bloqueado o un certificado caducado, se reintenta y queda registrada. El equipo de SkyPlanner que da soporte a la integración puede ver cualquier fallo que persista.
6. Reglas sobre qué sistema controla cada dato. NetSuite determina qué se fabrica: artículo, cantidad, BOM, ruta de fabricación y ubicación. SkyPlanner determina cuándo y dónde: secuencia de operaciones, estación de trabajo, inicio y fin. Las fechas modificadas en NetSuite se sobrescriben en la siguiente escritura de retorno, así que bloquea Production Start/End Date mediante una personalización del formulario o un flujo de trabajo.
Fases habituales del proyecto
La implantación suele completarse en unas semanas desde el inicio de la puesta en marcha, incluso en grandes empresas. Un proyecto con NetSuite incluye:
- Prueba con tus propios datos: exportación a CSV de centros de trabajo, rutas de fabricación y órdenes de fabricación abiertas a partir de búsquedas guardadas, e importación en SkyPlanner durante la prueba de 30 días.
- Mapeo de datos maestros: correspondencia entre los registros de NetSuite y los objetos de SkyPlanner, campos personalizados, unidades y modelo WIP o sin WIP de cada artículo.
- Carga inicial: artículos, revisiones de BOM, rutas de fabricación y centros de trabajo mediante SuiteQL; después, configuración de turnos, operarios y estaciones de trabajo alternativas en SkyPlanner.
- Sincronización de órdenes y pedidos de compra: órdenes de fabricación con estado Released e In Process, junto con pedidos de compra abiertos y sus fechas de recepción previstas, mediante scripts User Event y consultas periódicas de conciliación.
- Escritura de retorno de la programación: envío de las fechas previstas de las operaciones a las órdenes de fabricación y a las tareas de operación, con OAuth 2.0 M2M configurado en los entornos de pruebas y de producción.
- Notificaciones de planta: Work Order Completions, salidas de materiales o Assembly Builds a partir de Mobile Confirmations y los registros de tiempo.
- Pruebas en paralelo con el plan actual: ejecución de la programación de SkyPlanner en paralelo con el proceso actual de lanzamiento de órdenes para comparar los resultados.
- Entrada en producción: traslado de la planificación a SkyPlanner y bloqueo de los campos de fecha en NetSuite.
Unas rutas de fabricación depuradas y una sola filial mantienen el alcance acotado. Trabajar con varias filiales, consumo retroactivo de materiales en WIP y formularios personalizados exige más trabajo de mapeo.
Puntos críticos de NetSuite
- Órdenes de fabricación sin ruta. Una orden de fabricación sin Manufacturing Routing no tiene operaciones que programar. Oracle indica lo mismo sobre su propio sistema de programación de la producción, que tiene en cuenta la capacidad real: «Work orders not associated with a NetSuite routing should not be scheduled.» (No deben programarse órdenes de fabricación que no estén asociadas a una ruta de fabricación de NetSuite). Localízalas con SuiteQL antes de la entrada en producción.
- Los centros de trabajo tienen pocos datos. Un centro de trabajo de NetSuite es un Group con dos campos de cantidad, Machine Resources y Labor Resources (ambos con valor predeterminado 0), y un Work Calendar, normalmente «Default Work Calendar». Carga los centros de trabajo una vez y, después, mantén en SkyPlanner las estaciones de trabajo individuales, los turnos de cada persona, las herramientas, la matriz de tiempos de preparación y las estaciones de trabajo alternativas.
- Calidad de los datos de Setup Time y Run Rate. La programación a capacidad infinita de NetSuite utiliza estos campos, pero, al no tener en cuenta la capacidad, los valores incorrectos pasan inadvertidos. Una programación de la producción que respeta la capacidad real de las máquinas y del personal los pone de manifiesto desde el primer día.
- Con WIP o sin WIP. Con Manufacturing WIP, la producción se contabiliza mediante Work Order Issue, Work Order Completion y Work Order Close. Sin WIP, se utiliza un Assembly Build. La integración registra las notificaciones de producción de los artículos WIP y los ensamblajes del resto, por lo que el modelo de cada artículo forma parte del mapeo.
- Advanced Manufacturing en la misma cuenta. Si la cuenta también utiliza Advanced Manufacturing SuiteApp, sus registros de Manufacturing Work Bench deben coincidir exactamente con la ruta de fabricación: secuencia de operaciones, nombre de la operación y centro de trabajo. Decide qué sistema fija las fechas de las operaciones. Dos sistemas de programación sobre las mismas órdenes de fabricación generan dos planes que compiten entre sí.
- Límites de concurrencia. Los servicios web y las llamadas a RESTlet comparten un único límite de concurrencia de la cuenta, determinado por el nivel de servicio más 10 por cada licencia SuiteCloud Plus. Las consultas periódicas en paralelo, registro a registro, lo alcanzan rápidamente. Utiliza SuiteQL con paginación para las lecturas y pon las escrituras en cola.
- La actualización del entorno de pruebas borra la configuración M2M. Las asociaciones de OAuth 2.0 Client Credentials se eliminan al actualizar el entorno de pruebas y no se copian entre cuentas. Un certificado caducado o revocado detiene la sincronización hasta que se crea una nueva asociación. Configura alertas para los fallos de autenticación.
Integración con NetSuite: quién la configura y da soporte
El trabajo incluye el mapeo de tus registros, rutas de fabricación y centros de trabajo, además de las restricciones que NetSuite no almacena como datos utilizables para la programación: matriz de tiempos de preparación, herramientas, número de operarios y recursos alternativos. Los webhooks de SkyPlanner envían de vuelta los cambios de la programación en cuanto se producen, incluidos los que realiza Autopilot.
- El equipo de SkyPlanner la configura durante la puesta en marcha y ofrece soporte tras la entrada en producción. Cada planta utiliza NetSuite de forma distinta: con WIP o sin WIP, formularios personalizados, scripts y criterios propios para las rutas de fabricación. El equipo mapea tus registros y conecta la API REST y los webhooks de SkyPlanner con NetSuite REST, SuiteQL y RESTlets. El soporte cubre el script User Event y el middleware, y se adapta a los cambios en tu configuración de NetSuite.
- Tu partner de NetSuite puede participar. Los partners conocen tus formularios personalizados, scripts y roles. Trabajan con la API REST de SkyPlanner, que abarca órdenes, productos, materiales, pedidos de compra, etapas de proceso y registros de tiempo. Dispone de documentación Swagger/OpenAPI y autenticación JWT. Documentación pública: documentación de SkyPlanner.
- Tus propios desarrolladores pueden trabajar sobre esta base. Una distribución habitual consiste en ejecutar el script User Event dentro de NetSuite y un pequeño servicio de middleware fuera. Basta con una clave de API para empezar (tutorial de integración), y el equipo de SkyPlanner presta ayuda cuando hace falta.
Primero valida la programación durante la prueba gratuita de 30 días, con datos en CSV, hasta 20 estaciones de trabajo y sin tarjeta de crédito. Así, la integración parte de una programación que ya se ajusta a la planta.
Una vez establecida la conexión, el motor Arcturus programa a partir de las órdenes de fabricación actualizadas de NetSuite y comprueba la disponibilidad de materiales en existencias y en pedidos de compra pendientes de recibir. Los operarios registran su trabajo con Mobile Confirmations, Production Timer y Quick Log Mode, y NetSuite refleja la actividad de la planta sin introducir datos manualmente. SkyPlanner está disponible desde 199 € al mes con 5 estaciones de trabajo incluidas, facturación mensual y cancelación en cualquier momento. El presupuesto de la integración se prepara de antemano según tu proceso y tus necesidades, junto con tu plan, para que conozcas el coste total antes de empezar. Habla con ventas para definir el alcance de tu integración con NetSuite, o consulta las funcionalidades y los clientes.
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 cada semana, y las nuevas colas de trabajo llegan a la línea en segundos.
+90%de eficiencia en producción
“La eficiencia en producción ha aumentado un 90%.”
Abdul Rucyinga, responsable de TI
Laboratory & Allied · Fabricación de productos farmacéuticos
La eficiencia en producción ha aumentado un 90%, y preparar un plan optimizado de tres meses para todas las estaciones de trabajo lleva menos de 30 minutos.
99,2%de cumplimiento de plazos de entrega
“SkyPlanner nos ha dado visibilidad 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 de 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.
6 mesesde capacidad disponible que ventas puede consultar
“SkyPlanner proporciona una base fiable para toda la planificación de la producción.”
Anu Järvinen, responsable de producción
Fredman Operations · Papeles para envases aptos para el contacto con alimentos
El equipo de ventas ve la capacidad disponible con seis meses de antelación, y las solicitudes de cambios en la programación que antes requerían una hora o más se responden en segundos.
Preguntas frecuentes
¿Cómo se conecta SkyPlanner APS con NetSuite?
En ambos sentidos, mediante la API de registros REST de NetSuite, SuiteQL y, cuando sea necesario, RESTlets. Las fechas de las operaciones se escriben con PATCH sobre manufacturingOperationTask. La mano de obra y la producción obtenida se registran mediante la transformación workOrderCompletion o assemblyBuild. El equipo de SkyPlanner configura la integración durante la puesta en marcha y presta soporte tras la entrada en producción. Su partner de NetSuite o sus propios desarrolladores pueden ampliarla a partir de la API REST documentada.
¿Necesitamos Advanced Manufacturing SuiteApp para usar SkyPlanner?
No. SkyPlanner realiza por sí mismo la programación de la producción, respetando la capacidad real de las máquinas y del personal, a partir de los objetos estándar Work Orders, Manufacturing Routings y Work Centers. Si la cuenta también utiliza Advanced Manufacturing, durante la definición del alcance se decide qué sistema establece las fechas de las operaciones.
¿Cómo se evitan los registros duplicados si un evento se envía dos veces?
Cada Work Order Completion lleva el ID del registro de tiempo de SkyPlanner como ID externo. NetSuite garantiza que los ID externos sean únicos para cada tipo de registro, por lo que rechaza los eventos reenviados en lugar de volver a registrar la cantidad y el coste. Las operaciones de escritura fallidas se ponen en cola, se reintentan y quedan registradas.
¿Podemos usar TBA o SOAP en lugar de REST y OAuth 2.0?
Para las nuevas integraciones, utilice REST con OAuth 2.0. Oracle dejará de permitir nuevas integraciones con TBA y SOAP a partir de 2027.1 y desactivará todos los endpoints SOAP en 2028.2. Una integración de SkyPlanner basada en REST y OAuth 2.0 seguirá funcionando tras ambas fechas.
¿Cómo detecta SkyPlanner las nuevas órdenes de fabricación de NetSuite?
NetSuite no dispone de un webhook de salida estándar documentado. Un script User Event en Work Order pone una notificación en cola al guardar. Una consulta periódica con SuiteQL detecta los cambios que el script no captura, como las importaciones CSV y las actualizaciones masivas.
¿Podemos probar SkyPlanner con datos de NetSuite antes de desarrollar la integración?
Sí. Exporte los centros de trabajo, las rutas de fabricación y las órdenes de fabricación abiertas en formato CSV, impórtelos en SkyPlanner durante la prueba de 30 días y compare la programación de la producción, que respeta la capacidad real de las máquinas y del personal, con su plan actual. Inicie la prueba gratuita o reserve una demostración.
¿Cuánto dura un proyecto de integración con NetSuite?
La implementación suele completarse en unas semanas desde el inicio de la puesta en marcha, incluso en grandes empresas. Durante la prueba ya se puede programar la producción con datos CSV, y UTU ya utiliza SkyPlanner con NetSuite (testimonio de UTU).