Se connecte aux systèmes ERP et MES comme

Intégrations / ERP / Oracle NetSuite

Guide d’intégration de NetSuite à SkyPlanner APS pour l’ordonnancement de la production

Ce guide explique aux partenaires NetSuite, aux administrateurs et aux acheteurs techniques comment connecter SkyPlanner APS à Oracle NetSuite pour l’ordonnancement de production, en respectant la capacité réelle des machines et du personnel. L’intégration entre SkyPlanner et NetSuite fonctionne dans les deux sens, via les services web REST et SuiteQL :

  • Les ordres de fabrication, gammes de fabrication, postes de charge, articles et commandes d’achat sont importés dans SkyPlanner.
  • Les dates et heures de début et de fin planifiées sont inscrites dans les tâches des opérations de fabrication.
  • Les heures enregistrées et les quantités produites sont renvoyées sous forme de Work Order Completions ou d’Assembly Builds.
  • Les webhooks SkyPlanner transmettent les modifications du planning dès qu’elles surviennent.
Diagramme de Gantt de SkyPlanner APS montrant les opérations réparties entre les postes de travail, avec une liste des ordres en dessous.

NetSuite reste le système de référence pour les articles, nomenclatures, gammes de fabrication, ordres de fabrication, stocks et calculs des coûts. SkyPlanner assure l’ordonnancement de production à l’aide du moteur Arcturus, en tenant compte de la capacité réelle des ressources. L’équipe SkyPlanner configure l’intégration dans votre compte lors de la mise en place et en assure le support après la mise en production. L’intégration utilise les enregistrements standard de NetSuite et ne dépend pas de l’Advanced Manufacturing SuiteApp.

SkyPlanner est déjà intégré à NetSuite chez UTU, fabricant de tableaux et d’appareillages électriques à Ulvila, en Finlande. UTU a mis SkyPlanner en production en septembre 2025, avec une intégration à Oracle NetSuite et à son système de paie. Pour en évaluer l’intérêt économique, consultez d’abord la page sur l’ordonnancement de la production avec NetSuite et l’article NetSuite propose-t-il un ordonnancement de production respectant la capacité réelle des ressources ?.

Le choix qui structure le projet : REST et OAuth 2.0

Oracle a fixé le cap. À partir de la version 2026.1, il est recommandé de concevoir les nouvelles intégrations avec les services web SuiteTalk REST et OAuth 2.0. À partir de la version 2027.1, aucune nouvelle intégration ne sera possible avec SOAP ou Token-Based Authentication (TBA). Les points de terminaison SOAP seront désactivés dans la version 2028.2. Toute intégration d’ordonnancement lancée aujourd’hui doit donc utiliser REST.

Option NetSuiteDescriptionRôle dans une intégration APS
API d’enregistrements SuiteTalk REST/services/rest/record/v1/<recordType>, dont la version suit celle de NetSuite ; !transform pour les déclarations de production, les sorties de composants et les assemblages des ordres de fabricationÉcriture : dates des tâches d’opération et des ordres de fabrication (PATCH), déclarations de production, sorties de composants et assemblages (transform)
SuiteQL via RESTPOST /services/rest/query/v1/suiteql avec Prefer: transient, jusqu’à 100 000 résultats par requête, pagination par limit/offsetLecture en masse : articles, gammes de fabrication, postes de charge, ordres de fabrication ouverts, stocks
RESTlets SuiteScript 2.1Points de terminaison get/post/put/delete personnalisésBesoins non couverts par REST, charges utiles regroupant plusieurs données, comme un ordre de fabrication avec toutes ses opérations
SuiteScript User Event / Map-ReduceScripts exécutés côté serveur dans NetSuiteNotifications de modification sortantes
CSV Import AssistantCorrespondances de champs enregistrées pour l’importChargements ponctuels ; pas de synchronisation continue
SuiteTalk SOAPTechnologie historique, TBA uniquementNe démarrez aucun nouveau développement sur cette base

Authentification

Pour un outil d’ordonnancement fonctionnant de serveur à serveur, utilisez OAuth 2.0 Client Credentials (machine-to-machine). Le chemin d’accès dans l’administration est Setup > Integration > Manage Authentication > OAuth 2.0 Client Credentials (M2M) Setup. Vous chargez un certificat public, puis l’associez à une entité, à un rôle et à l’enregistrement d’intégration. Chaque enregistrement d’intégration peut contenir au maximum cinq certificats actifs.

Créez un rôle dédié à l’intégration : accès en lecture aux articles, révisions de nomenclature, gammes de fabrication et postes de charge ; accès en modification aux ordres de fabrication, déclarations de production et sorties de composants. L’API REST de SkyPlanner (référence de l’API) utilise JWT : le middleware conserve donc les deux jeux d’identifiants.

Événements : aucun webhook standard

La documentation d’Oracle ne décrit aucun webhook sortant natif. La solution consiste à utiliser un script SuiteScript User Event sur Work Order (afterSubmit) qui met en file d’attente un appel sortant via N/task ou un script Map/Reduce, puis effectue cet appel avec N/https. N’effectuez jamais d’appel sortant synchrone dans afterSubmit : l’appel s’exécute pendant l’enregistrement effectué par l’utilisateur. Un point de terminaison lent ralentit donc cet enregistrement ou le fait échouer.

Les événements User Event ne couvrent pas toutes les voies de modification. Les mises à jour en masse et les imports CSV peuvent les contourner. Complétez le script événementiel par une interrogation SuiteQL périodique sur lastmodifieddate pour réconcilier les données sans rien manquer. Dans l’autre sens, les webhooks de SkyPlanner déclenchent la réécriture des données : NetSuite reçoit ainsi les nouvelles dates dès que le planning change.

Correspondance des données : de NetSuite vers SkyPlanner

Enregistrement NetSuite (identifiant REST)Objet SkyPlannerSensFréquence
Assembly Item (assemblyItem), Inventory Item (inventoryItem)Produit / matièreNetSuite → SkyPlannerChargement initial, puis chaque jour ou à chaque modification
BOM Revision (bomRevision), composants de nomenclatureStructure produit multiniveau, besoins en matièresNetSuite → SkyPlannerÀ chaque modification
Manufacturing Routing (manufacturingRouting, sous-listes routingStep, routingComponent)Étapes de fabrication : séquence, poste de travail, temps de réglage, temps d’exécutionNetSuite → SkyPlannerÀ chaque modification
Manufacturing Work Center (Group défini comme poste de charge) : Machine Resources, Labor Resources, Work CalendarPostes de travail, groupes de postes de travail, horaires d’équipeNetSuite → SkyPlanner, puis gestion dans SkyPlannerChargement initial
Work Order (workOrder) : article, quantité, site, Production Start/End Date, statut ; Sales Order associé pour la date d’échéanceOrdre / opération avec date d’échéance et prioritéNetSuite → SkyPlannerEn quasi-temps réel via User Event, avec interrogation périodique de réconciliation
Manufacturing Operation Task (manufacturingOperationTask)Opération ordonnancéeNetSuite → SkyPlanner, dates SkyPlanner → NetSuiteEn quasi-temps réel
Stock physique par site (SuiteQL), Item Receipts (itemReceipt)Niveaux de stock pour un ordonnancement tenant compte des matièresNetSuite → SkyPlannerToutes les 15 à 60 minutes ou à chaque réception
Lignes de Purchase Order (purchaseOrder) : article, quantité, date de réception prévue, statutCommandes fournisseurs / matières attendues (date de livraison prévue). Les matières sont considérées comme disponibles à la date de livraison ; le stock est mis à jour lorsque la commande fournisseur passe au statut DeliveredNetSuite → SkyPlannerToutes les 15 à 60 minutes ou à chaque modification
Début et fin prévus par opérationPATCH manufacturingOperationTask/{id} (startDate, endDate) et PATCH workOrder/{id} (Production Start/End Date)SkyPlanner → NetSuiteÀ chaque modification du planning, via un webhook SkyPlanner
Mobile Confirmations, relevés de temps, Production TimerPOST workOrder/{id}/!transform/workOrderCompletion : plage startOperation/endOperation, quantité produite, temps de main-d’œuvre sur les lignes operation, identifiant du relevé de temps SkyPlanner comme identifiant externeSkyPlanner → NetSuiteÀ chaque déclaration ou par lots
Consommation de matièresPOST workOrder/{id}/!transform/workOrderIssue, ou isBackflush sur la déclaration de productionSkyPlanner → NetSuiteÀ chaque déclaration
Ordre terminé (comptes sans gestion des en-cours WIP)POST workOrder/{id}/!transform/assemblyBuildSkyPlanner → NetSuiteÀ la fin de l’ordre
Ordre clôturéWork Order Close (workOrderClose)Dans NetSuite, par le service financierNon automatisé par défaut

Schémas d’intégration

1. Chargement initial des données de base. Avec SuiteQL, lisez d’abord les postes de charge, puis les articles, les révisions de nomenclature et les gammes de fabrication. Les gammes font référence aux postes de charge : l’ordre de chargement compte donc. Pendant l’essai, exportez ces mêmes données au format CSV et importez-les dans SkyPlanner. Le planning est ainsi validé avant d’écrire la moindre ligne de code.

2. Synchronisation des ordres. Récupérez les ordres de fabrication aux statuts Released et In Process. Décidez dès le départ si les ordres au statut Planned doivent aussi être inclus. Si c’est le cas, traitez-les comme une demande provisoire. Synchronisez les commandes d’achat ouvertes dans le même cycle : l’ordonnancement vérifie ainsi chaque opération en tenant compte des stocks et des réceptions de matières à venir, et non des seuls stocks.

3. Réécriture des dates du planning. Quand le planning change, un webhook SkyPlanner transmet les nouvelles dates des opérations au middleware. Celui-ci envoie PATCH /services/rest/record/v1/manufacturingOperationTask/{id} (référence Oracle de l’enregistrement) avec startDate et endDate pour chaque opération modifiée. Un PATCH supplémentaire sur l’en-tête workOrder définit les champs Production Start et End Date. N’écrivez que les dates et, si vous en utilisez un, un champ de séquence personnalisé. Ne réécrivez jamais de quantités ni de données de nomenclature. Pour mettre à jour de nombreuses opérations dans une seule transaction, un petit RESTlet enregistre toute la liste des opérations en un seul appel. L’API d’enregistrements reste la solution par défaut.

4. Déclarations en atelier. Les opérateurs saisissent leur travail dans SkyPlanner Mobile Confirmations. Le middleware transmet chaque déclaration au moyen des transformations de Work Order avec POST /services/rest/record/v1/workOrder/{id}/!transform/workOrderCompletion, en renseignant startOperation, endOperation, la quantité produite et le temps saisi sur les lignes d’opération. Les ordres de fabrication sans gestion des en-cours WIP se terminent quant à eux avec !transform/assemblyBuild. Work Order Completion via REST nécessite la fonctionnalité Manufacturing Work In Process. Les écritures de stock et de coûts restent dans NetSuite.

5. Idempotence et nouvelles tentatives. Chaque déclaration de production utilise l’identifiant du relevé de temps SkyPlanner comme identifiant externe dans NetSuite. Les identifiants externes sont uniques par type d’enregistrement : un webhook rejoué est donc rejeté comme doublon, au lieu de comptabiliser deux fois les quantités et les coûts. Les écritures passent par une file d’attente. Tout appel en échec (limite d’appels simultanés, enregistrement verrouillé, certificat expiré) fait l’objet d’une nouvelle tentative et est journalisé. Les échecs persistants sont visibles par l’équipe SkyPlanner chargée du support de l’intégration.

6. Répartition des responsabilités. NetSuite fait autorité sur ce qui est fabriqué : article, quantité, nomenclature, gamme de fabrication et site. SkyPlanner fait autorité sur le moment et les ressources : séquence des opérations, poste de travail, début et fin. Les dates modifiées dans NetSuite sont écrasées lors de la prochaine réécriture. Verrouillez donc les champs Production Start/End Date en personnalisant le formulaire ou à l’aide d’un workflow.

Étapes habituelles du projet

La mise en œuvre est généralement achevée en quelques semaines après le début de l’accompagnement, même dans les grandes entreprises. Un projet NetSuite comprend les étapes suivantes :

  • Essai avec vos propres données : exportation au format CSV des postes de charge, gammes de fabrication et ordres de fabrication ouverts à partir de recherches enregistrées, puis importation dans SkyPlanner pendant l’essai de 30 jours.
  • Correspondance des données de base : association des enregistrements NetSuite aux objets SkyPlanner, prise en compte des champs personnalisés, des unités et du modèle avec ou sans WIP pour chaque article.
  • Chargement initial : articles, révisions de nomenclature, gammes de fabrication et postes de charge via SuiteQL, puis configuration des horaires d’équipe, des opérateurs et des postes de travail de remplacement dans SkyPlanner.
  • Synchronisation des ordres et des commandes d’achat : les ordres de fabrication aux statuts Released et In Process et les commandes d’achat ouvertes avec leurs dates de réception prévues sont synchronisés au moyen de scripts User Event et d’interrogations périodiques qui rapprochent les données.
  • Réécriture du planning : transfert des dates planifiées des opérations vers les ordres de fabrication et les tâches d’opération, avec configuration d’OAuth 2.0 M2M dans les environnements sandbox et de production.
  • Déclarations de l’atelier : création de Work Order Completions, de sorties de composants ou d’Assembly Builds à partir de Mobile Confirmations et des relevés de temps.
  • Tests en parallèle du planning actuel : exécution du planning SkyPlanner en parallèle du processus de lancement actuel, puis comparaison des résultats.
  • Mise en production : passage de la planification à SkyPlanner et verrouillage des champs de date dans NetSuite.

Des gammes de fabrication bien tenues et une seule filiale permettent de limiter le périmètre. Plusieurs filiales, la post-consommation en mode WIP et les formulaires personnalisés demandent davantage de travail de mise en correspondance.

Les pièges à éviter avec NetSuite

  • Ordres de fabrication sans gamme. Un ordre de fabrication sans Manufacturing Routing ne contient aucune opération à ordonnancer. Oracle le précise aussi pour son propre outil d’ordonnancement de production tenant compte de la capacité réelle des ressources : « Work orders not associated with a NetSuite routing should not be scheduled. » (Les ordres de fabrication qui ne sont pas associés à une gamme NetSuite ne doivent pas être ordonnancés.) Repérez-les avec SuiteQL avant la mise en production.
  • Des postes de charge peu détaillés. Dans NetSuite, un poste de charge est un Group comportant deux compteurs, Machine Resources et Labor Resources (tous deux à 0 par défaut), et un Work Calendar, généralement « Default Work Calendar ». Chargez les postes de charge une fois, puis gérez dans SkyPlanner les postes de travail individuels, les horaires par personne, les outils, la matrice des temps de changement et les postes de travail de remplacement.
  • Qualité des valeurs Setup Time et Run Rate. L’ordonnancement à capacité infinie de NetSuite utilise ces champs, mais comme il ne tient pas compte de la capacité, les valeurs erronées passent inaperçues. Un ordonnancement de production qui respecte la capacité réelle des ressources les révèle dès le premier jour.
  • Avec ou sans WIP. Avec Manufacturing WIP, la production est comptabilisée via Work Order Issue, Work Order Completion et Work Order Close. Sans WIP, c’est un Assembly Build qui est utilisé. L’intégration crée des Work Order Completions pour les articles WIP et des Assembly Builds pour les autres. Le modèle de chaque article fait donc partie des correspondances à définir.
  • Advanced Manufacturing sur le même compte. Si le compte utilise aussi l’Advanced Manufacturing SuiteApp, ses enregistrements Manufacturing Work Bench doivent correspondre exactement à la gamme : séquence des opérations, nom de l’opération et poste de charge. Décidez quel système fixe les dates des opérations. Deux outils d’ordonnancement sur les mêmes ordres de fabrication produisent deux plannings concurrents.
  • Limites d’appels simultanés. Les appels aux services web et aux RESTlets partagent une même limite d’appels simultanés par compte, définie par le niveau de service et augmentée de 10 par licence SuiteCloud Plus. Des interrogations parallèles, enregistrement par enregistrement, atteignent vite cette limite. Utilisez SuiteQL avec pagination pour les lectures et placez les écritures dans une file d’attente.
  • L’actualisation de la sandbox efface la configuration M2M. Les associations OAuth 2.0 Client Credentials sont effacées lors de l’actualisation de la sandbox et ne sont pas copiées entre les comptes. Un certificat expiré ou révoqué interrompt la synchronisation jusqu’à la création d’une nouvelle association. Configurez des alertes en cas d’échec d’authentification.

Intégration NetSuite : qui la configure et en assure le support ?

Le travail comprend la mise en correspondance de vos enregistrements, gammes de fabrication et postes de charge, ainsi que la prise en compte des contraintes que NetSuite ne stocke pas sous une forme exploitable pour l’ordonnancement : matrice des temps de changement, outils, effectifs d’opérateurs et ressources de remplacement. Les webhooks SkyPlanner renvoient les modifications du planning dès qu’elles surviennent, y compris celles effectuées par Autopilot.

  1. L’équipe SkyPlanner configure l’intégration lors de la mise en place et en assure le support après la mise en production. Chaque usine utilise NetSuite différemment : avec ou sans WIP, formulaires personnalisés, scripts, conventions pour les gammes de fabrication. L’équipe établit les correspondances entre vos enregistrements et connecte l’API REST et les webhooks SkyPlanner à NetSuite REST, SuiteQL et aux RESTlets. Son support couvre le script User Event et le middleware, et accompagne les évolutions de votre configuration NetSuite.
  2. Votre partenaire NetSuite peut participer. Les partenaires connaissent vos formulaires personnalisés, vos scripts et vos rôles. Ils s’appuient sur l’API REST de SkyPlanner, qui couvre les ordres, produits, matières, commandes d’achat, étapes de fabrication et relevés de temps. Cette API dispose d’une documentation Swagger/OpenAPI et utilise l’authentification JWT. Documentation publique : documentation SkyPlanner.
  3. Vos propres développeurs peuvent s’appuyer sur cette base. Une répartition courante consiste à placer le script User Event dans NetSuite et un petit service middleware à l’extérieur. Une clé API suffit pour commencer (tutoriel d’intégration), et l’équipe SkyPlanner vous aide au besoin.

Validez d’abord le planning pendant l’essai gratuit de 30 jours, à partir de données CSV, avec jusqu’à 20 postes de travail et sans carte bancaire. L’intégration part ainsi d’un planning déjà adapté à l’usine.

Une fois la connexion établie, le moteur Arcturus ordonnance les ordres de fabrication NetSuite actualisés et vérifie la disponibilité des matières à partir des stocks et des commandes d’achat attendues. Les opérateurs enregistrent leur travail avec Mobile Confirmations, Production Timer et Quick Log Mode, et NetSuite reflète la réalité de l’atelier sans saisie manuelle. SkyPlanner est proposé à partir de 199 € par mois, avec 5 postes de travail inclus, une facturation mensuelle et une résiliation possible à tout moment. L’intégration fait l’objet d’un devis préalable adapté à vos processus et à vos besoins, en même temps que votre abonnement : vous connaissez ainsi le coût total avant de commencer. Contactez notre équipe commerciale pour cadrer votre intégration NetSuite, ou consultez les fonctionnalités et les témoignages clients.

Les avis des industriels sur SkyPlanner

Kalle Kalliomäki, spécialiste de la chaîne logistique chez UTU, dans l’atelier de fabrication de tableaux électriques à Ulvila

2 hgagnées chaque semaine

« Avec SkyPlanner, nous sommes passés de la planification de la production sur des feuilles Excel à l’optimisation de la production en temps réel. »

Kalle Kalliomäki, spécialiste supply chain
UTU · Tableaux et appareillages électriques

La planification de la production permet de gagner 2 heures de travail par semaine, et une nouvelle file d’opérations est transmise à la ligne en quelques secondes.

Lire le témoignage d’UTU

Opérateurs en tenue de salle blanche sur une ligne de remplissage de flacons dans l’usine pharmaceutique de Laboratory & Allied à Nairobi

+90%d’efficacité en production

« L’efficacité en production a augmenté de 90%. »

Abdul Rucyinga, responsable informatique
Laboratory & Allied · Fabrication pharmaceutique

L’efficacité en production a augmenté de 90%, et il faut moins de 30 minutes pour établir un planning optimisé sur trois mois couvrant tous les postes de travail.

Lire le témoignage de Laboratory & Allied

Vue aérienne de l’usine Piristeel de fabrication d’équipements de sécurité pour toiture à Kauhava

99,2%de respect des délais de livraison

« SkyPlanner nous a donné la visibilité nécessaire pour repérer les goulots d’étranglement et a clarifié la gestion de la production. »

Toni Tuori, responsable de production
Piristeel · Équipements de sécurité pour toiture et systèmes d’évacuation des eaux pluviales

Le taux de respect des délais de livraison a atteint 99,2% cette année, et l’ordonnancement permet de gagner jusqu’à quatre heures de travail par jour.

Lire le témoignage de Piristeel

Anu Järvinen, responsable de production chez Fredman Operations, à côté d’une cellule robotisée de palettisation à Rauma

6 moisde visibilité sur la capacité disponible pour les commerciaux

« SkyPlanner fournit une base fiable pour toute la planification de la production. »

Anu Järvinen, responsable de production
Fredman Operations · Papiers d’emballage aptes au contact alimentaire

Les commerciaux voient la capacité disponible six mois à l’avance. Les demandes de modification du planning, qui nécessitaient une heure ou plus, obtiennent désormais une réponse en quelques secondes.

Lire le témoignage de Fredman Operations

FAQ

Comment SkyPlanner APS se connecte-t-il à NetSuite ?

Dans les deux sens, via l’API d’enregistrements REST de NetSuite, SuiteQL et, si nécessaire, des RESTlets. Les dates des opérations sont écrites avec PATCH sur manufacturingOperationTask. Les temps de main-d’œuvre et les quantités produites sont transmis par la transformation workOrderCompletion ou assemblyBuild. L’équipe SkyPlanner configure l’intégration lors de la mise en route et en assure le support après la mise en production. Votre partenaire NetSuite ou vos propres développeurs peuvent aussi s’appuyer sur l’API REST documentée pour la développer.

Faut-il disposer de la SuiteApp Advanced Manufacturing pour utiliser SkyPlanner ?

Non. SkyPlanner assure lui-même l’ordonnancement de production en tenant compte de la capacité réelle des ressources, à partir des objets standard Work Orders, Manufacturing Routings et Work Centers. Si le compte utilise aussi Advanced Manufacturing, le cadrage détermine quel système fixe les dates des opérations.

Comment éviter les doubles enregistrements lorsqu’un événement est envoyé deux fois ?

Chaque Work Order Completion utilise l’identifiant du relevé de temps SkyPlanner comme identifiant externe. NetSuite impose l’unicité des identifiants externes pour chaque type d’enregistrement : un événement renvoyé est donc rejeté, sans enregistrer une seconde fois la quantité et le coût. Les écritures qui échouent sont mises en file d’attente, retentées et journalisées.

Peut-on utiliser TBA ou SOAP à la place de REST et OAuth 2.0 ?

Pour toute nouvelle intégration, prévoyez REST avec OAuth 2.0. Oracle n’autorisera plus de nouvelles intégrations TBA et SOAP à partir de la version 2027.1 et désactivera tous les points de terminaison SOAP dans la version 2028.2. Une intégration SkyPlanner fondée sur REST et OAuth 2.0 continuera de fonctionner au-delà de ces deux échéances.

Comment SkyPlanner est-il informé des nouveaux ordres de fabrication dans NetSuite ?

NetSuite ne propose aucun webhook sortant standard documenté. Un script User Event sur Work Order met une notification en file d’attente lors de l’enregistrement. Une interrogation périodique via SuiteQL récupère les modifications que le script n’a pas détectées, comme les imports CSV et les mises à jour en masse.

Peut-on tester SkyPlanner avec les données de NetSuite avant de développer l’intégration ?

Oui. Exportez les postes de charge, les gammes de fabrication et les ordres de fabrication ouverts au format CSV, puis importez-les dans SkyPlanner pendant l’essai de 30 jours. Comparez ensuite le planning issu de l’ordonnancement de production, qui respecte la capacité réelle des ressources, à votre planning actuel. Démarrez l’essai gratuit ou réservez une démo.

Combien de temps prend un projet d’intégration avec NetSuite ?

La mise en œuvre s’achève généralement en quelques semaines après le début de l’accompagnement, même dans les grandes entreprises. Dès l’essai, l’ordonnancement fonctionne à partir des données CSV. UTU utilise déjà SkyPlanner avec NetSuite (témoignage d’UTU).