Інтеграції / ERP / Oracle NetSuite
Посібник з інтеграції NetSuite для календарного планування виробництва в SkyPlanner APS
Цей посібник пояснює партнерам NetSuite, адміністраторам і фахівцям, які оцінюють технічні рішення, як підключити SkyPlanner APS до Oracle NetSuite для планування виробництва з урахуванням реальних можливостей обладнання та персоналу. SkyPlanner обмінюється даними з NetSuite в обох напрямках через вебсервіси REST і SuiteQL:
- До SkyPlanner надходять виробничі замовлення, технологічні маршрути, робочі центри, номенклатура й замовлення на закупівлю.
- Запланований час початку й завершення записується в завдання виробничих операцій.
- Зареєстровані години та виготовлена кількість передаються назад як Work Order Completions або Assembly Builds.
- Вебхуки SkyPlanner передають зміни в графіку одразу після їх внесення.
NetSuite відповідає за номенклатуру, BOM, технологічні маршрути, виробничі замовлення, запаси й розрахунок собівартості. SkyPlanner планує виробництво за допомогою рушія Arcturus, формуючи графік з урахуванням реальних можливостей обладнання та персоналу. Команда SkyPlanner налаштовує інтеграцію з вашим обліковим записом під час впровадження та підтримує її після запуску. Інтеграція працює зі стандартними записами NetSuite й не залежить від Advanced Manufacturing SuiteApp.
SkyPlanner уже працює в інтеграції з NetSuite у компанії UTU — виробника електрощитів і розподільних пристроїв з міста Улвіла у Фінляндії. UTU запустила SkyPlanner у вересні 2025 року, інтегрувавши його з Oracle NetSuite та своєю системою розрахунку заробітної плати. Щоб оцінити бізнес-переваги, почніть зі сторінки про календарне планування виробництва для NetSuite та статті «Чи підтримує NetSuite планування виробництва?».
Ключове рішення для проєкту: REST і OAuth 2.0
Oracle визначила напрям розвитку. Починаючи з версії 2026.1, нові інтеграції слід будувати на вебсервісах SuiteTalk REST з OAuth 2.0. З версії 2027.1 створювати нові інтеграції на SOAP або Token-Based Authentication (TBA) вже не можна. У версії 2028.2 кінцеві точки SOAP буде вимкнено. Будь-яку інтеграцію для календарного планування, розробку якої починають сьогодні, слід будувати на REST.
| Засіб NetSuite | Що це | Роль в інтеграції з APS |
|---|---|---|
| SuiteTalk REST record API | /services/rest/record/v1/<recordType>, версія відповідає випуску NetSuite; !transform для реєстрації виконання виробничих замовлень, відпуску матеріалів і складання виробів | Запис: дати завдань технологічних операцій і виробничих замовлень (PATCH), реєстрація виконання, відпуску матеріалів і складання виробів (transform) |
| SuiteQL через REST | POST /services/rest/query/v1/suiteql із Prefer: transient, до 100 000 результатів на запит, посторінкове отримання через limit/offset | Масове зчитування: номенклатура, технологічні маршрути, робочі центри, відкриті виробничі замовлення, запаси |
| SuiteScript 2.1 RESTlets | Власні кінцеві точки get/post/put/delete | Функції, яких бракує в REST, об’єднані набори даних, наприклад виробниче замовлення з усіма його технологічними операціями |
| SuiteScript User Event / Map-Reduce | Серверні скрипти в NetSuite | Вихідні сповіщення про зміни |
| CSV Import Assistant | Збережені зіставлення полів для імпорту | Разові завантаження; не для постійної синхронізації |
| SuiteTalk SOAP | Застарілий засіб, лише TBA | Не використовуйте для нових розробок |
Автентифікація
Для планувальника з міжсерверною взаємодією використовуйте OAuth 2.0 Client Credentials (machine-to-machine). Шлях у меню адміністратора: Setup > Integration > Manage Authentication > OAuth 2.0 Client Credentials (M2M) Setup. Завантажте публічний сертифікат і прив’яжіть його до сутності, ролі та запису інтеграції. Кожен запис інтеграції може містити щонайбільше п’ять активних сертифікатів.
Створіть окрему роль для інтеграції: з правами перегляду номенклатури, редакцій BOM, технологічних маршрутів і робочих центрів та правами редагування виробничих замовлень, документів завершення виробництва й відпуску матеріалів. SkyPlanner REST API (довідник API) використовує JWT, тому проміжне ПЗ зберігає облікові дані для обох систем.
Події: стандартного вебхука немає
У документації Oracle не описано вбудованого вихідного вебхука. Робоча схема — скрипт SuiteScript User Event для Work Order (afterSubmit), який ставить вихідний виклик у чергу через N/task або скрипт Map/Reduce, а сам виклик виконує через N/https. Ніколи не виконуйте вихідні виклики синхронно в afterSubmit: виклик відбувається під час збереження даних користувачем, тому повільна кінцева точка затримує збереження або призводить до його збою.
Події User Event охоплюють не всі способи внесення змін. Масові оновлення та імпорт CSV можуть їх оминати. Доповніть скрипт обробки подій регулярним опитуванням через SuiteQL за полем lastmodifieddate для звірки даних, щоб нічого не пропустити. У зворотному напрямку запис запускають власні вебхуки SkyPlanner, тож NetSuite отримує нові дати відразу після зміни плану.
Зіставлення даних: з NetSuite до SkyPlanner
| Запис NetSuite (ідентифікатор REST) | Об’єкт SkyPlanner | Напрямок | Періодичність |
|---|---|---|---|
Assembly Item (assemblyItem), Inventory Item (inventoryItem) | Продукція / матеріал | NetSuite → SkyPlanner | Початкове завантаження, далі щодня або в разі змін |
BOM Revision (bomRevision), компоненти BOM | Багаторівнева структура виробу, потреби в матеріалах | NetSuite → SkyPlanner | У разі змін |
Manufacturing Routing (manufacturingRouting, підсписки routingStep, routingComponent) | Технологічні операції: послідовність, робочий центр, час налагодження, час виконання | NetSuite → SkyPlanner | У разі змін |
| Manufacturing Work Center (Group із позначкою робочого центру): Machine Resources, Labor Resources, Work Calendar | Робочі центри, групи робочих центрів, зміни | NetSuite → SkyPlanner, подальше ведення в SkyPlanner | Початкове завантаження |
Work Order (workOrder): номенклатура, кількість, місце зберігання, Production Start/End Date, статус; пов’язане Sales Order для визначення строку виконання | Замовлення / виробниче завдання зі строком виконання та пріоритетом | NetSuite → SkyPlanner | Майже в реальному часі через User Event, а також опитування для звірки даних |
Manufacturing Operation Task (manufacturingOperationTask) | Запланована технологічна операція | NetSuite → SkyPlanner, дати — SkyPlanner → NetSuite | Майже в реальному часі |
Наявні запаси за місцями зберігання (SuiteQL), Item Receipts (itemReceipt) | Залишки запасів для календарного планування з урахуванням матеріалів | NetSuite → SkyPlanner | Кожні 15–60 хвилин або під час надходження |
Рядки Purchase Order (purchaseOrder): номенклатура, кількість, очікувана дата надходження, статус | Замовлення на закупівлю / очікувані матеріали (очікувана дата поставки). Вважаються доступними на дату поставки; запаси оновлюються, коли замовленню на закупівлю присвоюють статус Delivered | NetSuite → SkyPlanner | Кожні 15–60 хвилин або в разі змін |
| Планові початок і завершення кожної технологічної операції | PATCH manufacturingOperationTask/{id} (startDate, endDate) і PATCH workOrder/{id} (Production Start/End Date) | SkyPlanner → NetSuite | У разі зміни розкладу, через вебхук SkyPlanner |
| Mobile Confirmations, записи обліку часу, Production Timer | POST workOrder/{id}/!transform/workOrderCompletion: діапазон startOperation/endOperation, виготовлена кількість, трудовитрати в рядках operation, ідентифікатор запису обліку часу SkyPlanner як зовнішній ідентифікатор | SkyPlanner → NetSuite | Для кожного підтвердження або пакетно |
| Витрата матеріалів | POST workOrder/{id}/!transform/workOrderIssue або isBackflush під час реєстрації виконання | SkyPlanner → NetSuite | Для кожного підтвердження |
| Виконане замовлення (облікові записи без WIP) | POST workOrder/{id}/!transform/assemblyBuild | SkyPlanner → NetSuite | Після виконання замовлення |
| Замовлення закрито | Work Order Close (workOrderClose) | У NetSuite, фінансовим відділом | За замовчуванням не автоматизовано |
Схеми інтеграції
1. Початкове завантаження основних даних. Спочатку зчитайте через SuiteQL робочі центри, потім номенклатуру, редакції BOM і технологічні маршрути. Маршрути посилаються на робочі центри, тому послідовність важлива. Під час пробного періоду експортуйте ті самі дані в CSV та імпортуйте їх у SkyPlanner. Так графік перевіряють ще до написання коду.
2. Синхронізація замовлень. Завантажуйте виробничі замовлення зі статусами Released та In Process. Заздалегідь вирішіть, чи включати замовлення зі статусом Planned. Якщо так, враховуйте їх як попередній попит. У тому самому циклі синхронізуйте відкриті замовлення на закупівлю, щоб під час планування кожного виробничого завдання перевіряти не лише запаси, а й очікувані надходження матеріалів.
3. Зворотний запис розкладу. Коли розклад змінюється, вебхук SkyPlanner передає нові дати технологічних операцій проміжному ПЗ. Воно надсилає PATCH /services/rest/record/v1/manufacturingOperationTask/{id} (довідник записів Oracle) із startDate та endDate для кожної зміненої технологічної операції. Ще один запит PATCH оновлює заголовок запису workOrder, задаючи Production Start and End Date. Записуйте лише дати та, якщо використовуєте, власне поле послідовності. Ніколи не записуйте назад кількості або дані BOM. Щоб оновити багато технологічних операцій в одній транзакції, невеликий RESTlet зберігає весь їхній список одним викликом. За замовчуванням використовується record API.
4. Підтвердження з виробничого цеху. Оператори реєструють виконану роботу в SkyPlanner Mobile Confirmations. Проміжне ПЗ передає кожне підтвердження через перетворення Work Order за допомогою POST /services/rest/record/v1/workOrder/{id}/!transform/workOrderCompletion, передаючи startOperation, endOperation, виготовлену кількість і зареєстрований час у рядках технологічних операцій. Виробничі замовлення без WIP натомість закриваються через !transform/assemblyBuild. Для Work Order Completion через REST потрібна функція Manufacturing Work In Process. Проведення за запасами та витратами залишаються в NetSuite.
5. Ідемпотентність і повторні спроби. Кожен запис про завершення містить ID запису обліку часу SkyPlanner як зовнішній ID у NetSuite. Зовнішні ID унікальні в межах типу запису, тому повторно надісланий вебхук відхиляється як дублікат, а кількість і вартість не проводяться вдруге. Запис даних відбувається через чергу. Невдалий виклик — через ліміт одночасних запитів, заблокований запис чи прострочений сертифікат — повторюється та фіксується в журналі. Усі помилки, які залишаються після повторних спроб, бачить команда SkyPlanner, що підтримує інтеграцію.
6. Розподіл відповідальності за дані. NetSuite визначає, що виготовляти: номенклатуру, кількість, BOM, технологічний маршрут і місце розташування. SkyPlanner визначає, коли й де: послідовність технологічних операцій, робочий центр, початок і завершення. Дати, змінені в NetSuite, перезаписуються під час наступного зворотного запису, тому заблокуйте Production Start/End Date за допомогою налаштування форми або робочого процесу.
Типові етапи проєкту
Зазвичай впровадження завершується протягом кількох тижнів після початку роботи, навіть у великих компаніях. Проєкт інтеграції з NetSuite охоплює такі етапи:
- Пробна робота з власними даними: експорт робочих центрів, технологічних маршрутів і відкритих виробничих замовлень зі збережених пошуків у CSV та імпорт у SkyPlanner протягом 30-денного пробного періоду.
- Зіставлення основних даних: встановлення відповідностей між записами NetSuite та об’єктами SkyPlanner, зіставлення користувацьких полів, одиниць виміру й визначення моделі WIP або non-WIP для кожної номенклатурної позиції.
- Початкове завантаження: номенклатура, редакції BOM, технологічні маршрути й робочі центри через SuiteQL, а потім налаштування змін, операторів та альтернативних робочих центрів у SkyPlanner.
- Синхронізація виробничих замовлень і замовлень на закупівлю: виробничі замовлення зі статусами Released та In Process, а також відкриті замовлення на закупівлю з очікуваними датами надходження; синхронізацію забезпечують скрипти User Event і періодичне опитування для звіряння даних.
- Зворотний запис графіка: передавання запланованих дат технологічних операцій у виробничі замовлення та завдання операцій із налаштуванням OAuth 2.0 M2M у тестовому й робочому середовищах.
- Підтвердження з виробничого цеху: створення Work Order Completions, документів відпуску матеріалів або Assembly Builds на основі Mobile Confirmations і записів обліку часу.
- Тестування паралельно з поточним планом: використання графіка SkyPlanner поряд із чинним процесом запуску замовлень у виробництво та порівняння результатів.
- Запуск: перехід до планування в SkyPlanner і блокування полів дат у NetSuite.
Упорядковані технологічні маршрути й одна дочірня компанія дають змогу обмежити обсяг робіт. Кілька дочірніх компаній, зворотне списання матеріалів у WIP і користувацькі форми потребують додаткового зіставлення даних.
Підводні камені NetSuite
- Виробничі замовлення без технологічних маршрутів. Якщо у виробничому замовленні немає Manufacturing Routing, у ньому немає й технологічних операцій для планування. Oracle говорить те саме про власний інструмент планування виробництва: “Work orders not associated with a NetSuite routing should not be scheduled.” (Виробничі замовлення, не пов’язані з технологічним маршрутом NetSuite, не слід включати до графіка.) Знайдіть їх за допомогою SuiteQL до запуску.
- Робочі центри містять мало даних. Робочий центр у NetSuite — це Group із двома кількісними показниками, Machine Resources і Labor Resources (обидва за замовчуванням дорівнюють 0), та одним Work Calendar, зазвичай “Default Work Calendar”. Завантажте робочі центри один раз, а потім ведіть окремі робочі центри, зміни для кожного працівника, інструменти, матрицю часу переналагодження й альтернативні робочі центри в SkyPlanner.
- Якість даних у Setup Time і Run Rate. NetSuite використовує ці поля для планування без урахування виробничих потужностей, тому помилкові значення залишаються непоміченими. Планування виробництва з урахуванням реальних можливостей обладнання та персоналу виявляє їх уже в перший день.
- WIP чи non-WIP. У разі використання Manufacturing WIP випуск продукції проводиться через Work Order Issue, Work Order Completion і Work Order Close. Без WIP використовується Assembly Build. Для позицій WIP інтеграція створює документи завершення виробництва, а для решти — документи складання, тому модель для кожної позиції визначається під час зіставлення даних.
- Advanced Manufacturing у тому самому обліковому записі. Якщо в обліковому записі також використовується Advanced Manufacturing SuiteApp, його записи Manufacturing Work Bench мають точно відповідати технологічному маршруту: послідовності операцій, назві операції та робочому центру. Визначте, яка система встановлює дати операцій. Два планувальники для тих самих виробничих замовлень — це два плани, що конкурують між собою.
- Ліміти одночасних запитів. Для викликів вебсервісів і RESTlet діє спільний ліміт одночасних запитів облікового запису: його визначає рівень обслуговування, а кожна ліцензія SuiteCloud Plus додає 10. Паралельне опитування окремих записів швидко вичерпує цей ліміт. Для читання використовуйте SuiteQL із розбиттям на сторінки, а запити на запис ставте в чергу.
- Оновлення тестового середовища стирає налаштування M2M. Прив’язки OAuth 2.0 Client Credentials видаляються під час оновлення тестового середовища й не копіюються між обліковими записами. Прострочений або відкликаний сертифікат зупиняє синхронізацію до створення нової прив’язки. Налаштуйте сповіщення про помилки автентифікації.
Інтеграція з NetSuite: хто її налаштовує та підтримує
Роботи охоплюють зіставлення ваших записів, технологічних маршрутів і робочих центрів, а також налаштування обмежень, які NetSuite не зберігає як дані для календарного планування: матриці часу переналагодження, інструментів, кількості операторів та альтернативних ресурсів. Вебхуки SkyPlanner передають зміни графіка назад одразу після їх внесення, зокрема й зміни, внесені Autopilot.
- Команда SkyPlanner налаштовує інтеграцію під час впровадження та підтримує її після запуску. Кожне підприємство використовує NetSuite по-своєму: WIP або non-WIP, користувацькі форми, скрипти, власні правила побудови технологічних маршрутів. Команда зіставляє ваші записи та з’єднує SkyPlanner REST API і вебхуки з NetSuite REST, SuiteQL та RESTlets. Підтримка охоплює скрипт User Event і проміжне ПЗ та враховує зміни у ваших налаштуваннях NetSuite.
- Ваш партнер NetSuite може долучитися. Партнери знають ваші користувацькі форми, скрипти та ролі. Вони працюють зі SkyPlanner REST API, який охоплює замовлення, продукцію, матеріали, замовлення на закупівлю, етапи технологічного процесу й записи обліку часу. API має документацію Swagger/OpenAPI та автентифікацію JWT. Відкрита документація: документація SkyPlanner.
- Ваші розробники можуть створювати власні рішення на цій основі. Типовий розподіл: скрипт User Event усередині NetSuite та невеликий сервіс проміжного ПЗ поза ним. Для початку достатньо ключа API (посібник з інтеграції), а команда SkyPlanner допоможе за потреби.
Спочатку перевірте графік під час 30-денного безкоштовного пробного періоду на даних CSV — до 20 робочих центрів, без банківської картки. Тоді інтеграція почнеться з графіка, який уже відповідає потребам підприємства.
Після підключення рушій Arcturus формує графік на основі актуальних виробничих замовлень NetSuite та перевіряє наявність матеріалів у запасах і очікувані надходження за замовленнями на закупівлю. Оператори реєструють роботу через Mobile Confirmations, Production Timer і Quick Log Mode, а NetSuite відображає стан справ у виробничому цеху без ручного введення даних. Вартість SkyPlanner починається від 199 € на місяць за 5 робочих центрів, з щомісячною оплатою та можливістю скасувати підписку будь-коли. Вартість інтеграції розраховується заздалегідь відповідно до ваших процесів і потреб разом із тарифним планом, тож ви знаєте повну вартість ще до початку роботи. Зверніться до відділу продажів, щоб визначити обсяг робіт з інтеграції NetSuite, або перегляньте можливості та історії клієнтів.
Відгуки виробників про SkyPlanner
2 годекономії щотижня
«Завдяки SkyPlanner ми перейшли від планування виробництва в таблицях Excel до його оптимізації в реальному часі».
Kalle Kalliomäki, фахівець із ланцюгів постачання
UTU · Електрощити та розподільні пристрої
Планування виробництва заощаджує 2 години робочого часу щотижня, а нова черга завдань надходить на лінію за лічені секунди.
+90%ефективності виробництва
«Ефективність виробництва зросла на 90%».
Abdul Rucyinga, керівник ІТ-відділу
Laboratory & Allied · Фармацевтичне виробництво
Ефективність виробництва зросла на 90%, а створення оптимізованого плану на три місяці для всіх робочих центрів займає менше ніж 30 хвилин.
99,2%надійності поставок
«Завдяки SkyPlanner ми бачимо вузькі місця, а управління виробництвом стало прозорішим».
Toni Tuori, керівник виробництва
Piristeel · Системи безпеки для покрівель і водостічні системи
Цього року надійність поставок досягла 99,2%, а календарне планування заощаджує до чотирьох годин робочого часу на день.
6 місяцівнаперед відділ продажів бачить вільні потужності
«SkyPlanner створює надійну основу для всього планування виробництва».
Anu Järvinen, керівниця виробництва
Fredman Operations · Пакувальний папір для контакту з харчовими продуктами
Відділ продажів бачить вільні потужності на шість місяців наперед. Відповіді на запити щодо зміни графіка, які раніше потребували години чи більше, тепер надходять за лічені секунди.
Поширені запитання
Як SkyPlanner APS підключається до NetSuite?
В обох напрямках, через NetSuite REST record API, SuiteQL і, за потреби, RESTlets. Дати технологічних операцій записуються за допомогою PATCH для manufacturingOperationTask. Трудовитрати та випуск продукції реєструються через перетворення workOrderCompletion або assemblyBuild. Команда SkyPlanner налаштовує інтеграцію під час впровадження й підтримує її після запуску, а ваш партнер NetSuite або власні розробники можуть розширювати її за допомогою документованого REST API.
Чи потрібен нам Advanced Manufacturing SuiteApp для роботи зі SkyPlanner?
Ні. SkyPlanner самостійно планує виробництво з урахуванням реальних можливостей обладнання та персоналу на основі стандартних Work Orders, Manufacturing Routings і Work Centers. Якщо в обліковому записі також використовується Advanced Manufacturing, під час визначення обсягу проєкту узгоджують, яка система задаватиме дати технологічних операцій.
Як уникнути повторного проведення, якщо подію надіслано двічі?
Кожен запис Work Order Completion містить ідентифікатор запису часу SkyPlanner як зовнішній ідентифікатор. NetSuite забезпечує унікальність зовнішніх ідентифікаторів у межах кожного типу записів, тому повторно надіслану подію відхиляє, а не проводить кількість і витрати ще раз. Невдалі операції запису ставляться в чергу, повторюються та фіксуються в журналі.
Чи можна використовувати TBA або SOAP замість REST і OAuth 2.0?
Для нових інтеграцій обирайте REST з OAuth 2.0. Починаючи з версії 2027.1 Oracle припиняє створення нових інтеграцій на TBA та SOAP, а у версії 2028.2 вимикає всі кінцеві точки SOAP. Інтеграція SkyPlanner на основі REST і OAuth 2.0 працюватиме й після обох цих змін.
Як SkyPlanner дізнається про нові виробничі замовлення в NetSuite?
У NetSuite немає задокументованого стандартного механізму вихідних вебхуків. Скрипт User Event для Work Order ставить сповіщення в чергу під час збереження. Періодичне опитування через SuiteQL виявляє зміни, які скрипт пропустив, зокрема імпорт CSV і масові оновлення.
Чи можна протестувати SkyPlanner на даних NetSuite до створення інтеграції?
Так. Експортуйте робочі центри, технологічні маршрути та відкриті виробничі замовлення у форматі CSV, імпортуйте їх у SkyPlanner протягом 30-денного пробного періоду й порівняйте отриманий виробничий графік, що враховує реальні можливості обладнання та персоналу, зі своїм поточним планом. Почніть безкоштовний пробний період або запишіться на демонстрацію.
Скільки триває проєкт інтеграції з NetSuite?
Впровадження зазвичай завершується протягом кількох тижнів після початку підключення, навіть у великих компаніях. Уже під час пробного періоду графік будується на даних CSV, а UTU вже сьогодні використовує SkyPlanner разом із NetSuite (відгук UTU).