外部システム連携 / ERP / Oracle NetSuite
NetSuite連携ガイド SkyPlanner APSで生産スケジューリング
このガイドでは、NetSuiteパートナー、管理者、技術面から導入を検討する方に向けて、SkyPlanner APSをOracle NetSuiteと接続し、設備や人員の実際の能力を考慮した生産スケジューリングを行う方法を解説します。SkyPlannerはREST WebサービスとSuiteQLを通じて、NetSuiteと双方向に連携します。
- 製造指図、工順、作業区、品目、発注書を取り込みます。
- 計画開始時刻と計画終了時刻を製造工程タスクに書き込みます。
- 記録された作業時間と生産数量を、Work Order CompletionsまたはAssembly Buildsとして書き戻します。
- スケジュールが変更されるたびに、SkyPlannerのWebhookが変更内容を送信します。
品目、BOM、工順、製造指図、在庫、原価計算はNetSuiteで管理します。SkyPlannerはArcturusエンジンで生産スケジューリングを行い、設備や人員の実際の能力に収まるスケジュールを作成します。SkyPlannerチームが導入時にお客様のアカウントに合わせて連携を設定し、稼働後もサポートします。NetSuiteの標準レコードを使用するため、Advanced Manufacturing SuiteAppには依存しません。
フィンランドのウルヴィラにある配電盤・開閉装置メーカーUTUでは、すでにSkyPlannerとNetSuiteを連携して運用しています。UTUは2025年9月に本稼働を開始し、SkyPlannerをOracle NetSuiteおよび給与計算システムと連携しました。導入効果を検討する際は、まずNetSuiteでの生産スケジューリングとNetSuiteで生産スケジューリングはできるか?をご覧ください。
プロジェクトを左右する選択:RESTとOAuth 2.0
Oracleは今後の方針を示しています。2026.1以降、新規連携はOAuth 2.0を使用するSuiteTalk REST Webサービスで構築すべきとされています。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) |
| REST経由のSuiteQL | 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(マシン間認証)を使用します。管理画面での設定場所は、Setup > Integration > Manage Authentication > OAuth 2.0 Client Credentials (M2M) Setupです。公開証明書をアップロードし、エンティティ、ロール、連携レコードに紐付けます。連携レコードごとに、有効な証明書を最大五つ保持できます。
連携専用のロールを作成します。品目、BOMリビジョン、工順、作業区には閲覧権限を、製造指図、完了、出庫には編集権限を付与してください。SkyPlanner REST API(APIリファレンス)はJWTを使用するため、ミドルウェアで両方の認証情報を保持します。
イベント:標準のWebhookはない
Oracleのドキュメントには、標準機能として外部に通知を送るWebhookの記載はありません。実装では、Work OrderのSuiteScript User Eventスクリプト(afterSubmit)から、N/taskまたはMap/Reduceスクリプトを使って外部呼び出しをキューに入れ、N/httpsで送信します。afterSubmit内で同期的に外部を呼び出してはいけません。ユーザーの保存処理中に実行されるため、エンドポイントの応答が遅いと、保存の遅延や失敗につながります。
User Eventでは、すべての変更経路をカバーできません。一括更新やCSVインポートでは、イベントが実行されない場合があります。変更を取りこぼさないよう、イベントスクリプトに加え、SuiteQLでlastmodifieddateを定期的にポーリングしてデータを照合します。逆方向の書き戻しはSkyPlanner独自のWebhookを起点に行うため、計画が変わるとすぐに新しい日付がNetSuiteに反映されます。
データマッピング:NetSuiteからSkyPlannerへ
| NetSuiteレコード(REST id) | 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のWebhook経由で連携 |
| Mobile Confirmations、作業時間記録、Production Timer | POST workOrder/{id}/!transform/workOrderCompletion:startOperation~endOperationの範囲、完了数量、operation明細の作業時間。SkyPlannerの作業時間記録IDを外部IDとして使用 | 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のWebhookが新しい工程日付をミドルウェアに送信します。ミドルウェアは、変更された工程ごとにPATCH /services/rest/record/v1/manufacturingOperationTask/{id}(Oracleのレコードリファレンス)を送信し、startDateとendDateを指定します。さらに、workOrderヘッダーへのPATCHで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で完了処理を行います。REST経由のWork Order Completionには、Manufacturing Work In Process機能が必要です。在庫と原価の計上は引き続きNetSuiteで行います。
5. 冪等性と再試行。各完了レコードでは、SkyPlannerのタイムログIDをNetSuiteの外部IDとして使用します。外部IDはレコードタイプごとに一意なので、Webhookが再送されても重複として拒否され、数量や原価が二重計上されません。書き込みはキューを経由します。同時実行数の上限、レコードのロック、証明書の期限切れなどで呼び出しに失敗した場合は、再試行してログに記録します。それでも失敗する処理は、連携をサポートするSkyPlannerチームが確認できます。
6. 管理の分担。何を作るか、つまり品目、数量、BOM、工順、拠点はNetSuiteで管理します。いつ、どこで作るか、つまり工程順序、リソース、開始・終了はSkyPlannerで管理します。NetSuiteで日付を編集しても、次の書き戻しで上書きされます。そのため、フォームのカスタマイズまたはワークフローでProduction Start/End Dateをロックしてください。
標準的なプロジェクトの進め方
大企業でも、通常は導入支援の開始から数週間以内に実装が完了します。NetSuite連携プロジェクトには、次の作業が含まれます。
- 自社データでのトライアル:保存検索から作業区、工順、未完了の製造指図をCSVでエクスポートし、30日間のトライアル中にSkyPlannerへインポートします。
- マスタデータのマッピング:NetSuiteのレコードとSkyPlannerのオブジェクトの対応、カスタムフィールド、単位、品目ごとのWIPまたは非WIPモデルを定義します。
- 初期取り込み:SuiteQLで品目、BOMリビジョン、工順、作業区を取り込み、その後SkyPlannerでシフト、作業者、代替リソースを設定します。
- 製造指図と発注書の同期:User Eventスクリプトと整合性確認用のポーリングにより、ReleasedおよびIn Processの製造指図と、入荷予定日を含む未完了の発注書を同期します。
- スケジュールの書き戻し:工程の計画日付を製造指図と工程タスクに書き戻します。サンドボックス環境と本番環境でOAuth 2.0 M2Mを設定します。
- 製造現場の実績報告:Mobile Confirmationsとタイムログから、Work Order Completions、出庫、またはAssembly Buildsを登録します。
- 現行計画と並行してテスト:現在の製造指図リリース手順と並行して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か非WIPか。Manufacturing WIPを使用する場合、生産実績はWork Order Issue、Work Order Completion、Work Order Closeを通じて計上します。WIPを使用しない場合はAssembly Buildを使用します。連携では、WIP品目には完了レコードを、それ以外には組立レコードを登録するため、品目ごとのモデルもマッピングに含めます。
- 同じアカウントでのAdvanced Manufacturingの利用。同じアカウントでAdvanced Manufacturing SuiteAppも使用している場合、そのManufacturing Work Benchレコードの工程順序、工程名、作業区は、工順と完全に一致していなければなりません。どちらのシステムで工程の日付を設定するか決めてください。同じ製造指図に二つのスケジューラを使えば、二つの計画が競合します。
- 同時実行数の上限。WebサービスとRESTletの呼び出しには、共通のアカウント単位の同時実行数上限が適用されます。上限はサービス階層で決まり、SuiteCloud Plusライセンスごとに10が加算されます。レコード単位で並列にポーリングすると、すぐに上限に達します。読み取りにはページングを使用したSuiteQLを使い、書き込みはキューに入れてください。
- サンドボックスのリフレッシュでM2M設定が消える。OAuth 2.0のクライアント認証情報のマッピングは、サンドボックスのリフレッシュ時に消去され、アカウント間でもコピーされません。証明書が期限切れまたは失効すると、新しいマッピングを作成するまで同期が停止します。認証失敗時にはアラートが出るようにしてください。
NetSuite連携の設定とサポートの担当
作業には、お客様のレコード、工順、作業区へのマッピングに加え、NetSuiteではスケジューリング用データとして保持していない制約の設定も含まれます。段取り時間マトリクス、工具、作業者数、代替リソースなどがその対象です。Autopilotによる変更も含め、スケジュールが変更されるたびにSkyPlannerのWebhookが変更内容を送り返します。
- SkyPlannerチームが導入時に設定し、本稼働後もサポートします。WIPの使用有無、カスタムフォーム、スクリプト、工順の運用ルールなど、NetSuiteの使い方は工場ごとに異なります。チームがお客様のレコードをマッピングし、SkyPlanner REST APIとWebhookをNetSuite REST、SuiteQL、RESTletsに接続します。User Eventスクリプトとミドルウェアもサポート対象で、NetSuiteの設定変更にも対応します。
- お客様のNetSuiteパートナーも参加できます。パートナーは、お客様のカスタムフォーム、スクリプト、ロールを熟知しています。オーダー、製品、資材、発注書、工程、タイムログを扱うSkyPlanner REST APIを使って作業できます。Swagger/OpenAPIドキュメントが用意されており、認証にはJWTを使用します。公開ドキュメント:SkyPlannerドキュメント。
- 自社の開発者も連携を構築できます。一般的には、NetSuite内にUser Eventスクリプトを、外部に小規模なミドルウェアサービスを配置します。APIキーがあれば着手でき(連携チュートリアル)、必要に応じてSkyPlannerチームが支援します。
まずは30日間の無料トライアルで、CSVデータを使ってスケジュールを検証してください。最大20リソースまで利用でき、クレジットカードは不要です。工場に適したスケジュールを確認したうえで、連携に着手できます。
接続後は、ArcturusエンジンがNetSuiteの最新の製造指図からスケジュールを作成し、在庫と入荷予定の発注書から資材を確認します。作業者はMobile Confirmations、Production Timer、Quick Log Modeで作業を記録し、手入力なしで製造現場の状況がNetSuiteに反映されます。SkyPlannerは5リソースを含め月額199 €から利用でき、月次請求で、いつでも解約できます。連携費用は、お客様の業務プロセスと要件に合わせて、ご利用プランとともに事前に見積もります。そのため、開始前に総費用を確認できます。NetSuite連携の要件定義については営業担当にご相談ください。機能や導入事例もご覧いただけます。
製造業のお客様によるSkyPlannerの評価
2時間を毎週削減
「SkyPlannerによって、当社の生産計画はExcelのスプレッドシートからリアルタイムの生産最適化へと進化しました。」
Kalle Kalliomäki、サプライチェーンスペシャリスト
UTU · 配電盤・開閉装置
生産計画にかかる業務時間を毎週2時間削減し、新しい作業リストを数秒でラインに伝えられます。
+90%生産効率
「生産効率が90%向上しました。」
Abdul Rucyinga、IT部門責任者
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を使って連携を拡張できます。
SkyPlannerを使うにはAdvanced Manufacturing SuiteAppが必要ですか?
いいえ。SkyPlannerは、標準のWork Orders、Manufacturing Routings、Work Centersをもとに、設備や人員の実際の能力を考慮した生産スケジューリングを自ら行います。同じアカウントでAdvanced Manufacturingも利用している場合は、どちらのシステムで工程日程を設定するかを要件定義で決めます。
同じイベントが二度送信された場合、二重計上をどう防ぎますか?
各Work Order Completionには、外部IDとしてSkyPlannerのtimelog IDを設定します。NetSuiteでは外部IDの一意性がレコードタイプごとに保たれるため、再送されたイベントは拒否され、数量や原価が再び計上されることはありません。書き込みに失敗したデータはキューに入れられ、再試行されるとともにログに記録されます。
RESTとOAuth 2.0の代わりにTBAやSOAPを使えますか?
新規の連携は、RESTとOAuth 2.0を使う前提で計画してください。Oracleは2027.1からTBAとSOAPによる新規連携を停止し、2028.2ではすべてのSOAPエンドポイントを無効化します。RESTとOAuth 2.0で構築したSkyPlanner連携は、どちらの時点を過ぎても引き続き動作します。
SkyPlannerはNetSuiteの新しい製造指図をどのように検知しますか?
NetSuiteには、標準の送信用Webhookとして文書化されたものはありません。Work Orderに設定したUser Eventスクリプトが、保存時に通知をキューに入れます。SuiteQLによる定期ポーリングで、CSVインポートや一括更新など、スクリプトで検知できなかった変更を拾います。
連携を構築する前に、NetSuiteのデータでSkyPlannerを試せますか?
はい。作業区、工順、未完了の製造指図をCSVでエクスポートし、30日間のトライアル中にSkyPlannerへインポートしてください。実際の能力を考慮した生産スケジューリングの結果を、現在の計画と比較できます。無料トライアルを開始するか、デモを予約してください。
NetSuiteとの連携プロジェクトにはどのくらいかかりますか?
大企業でも、通常はオンボーディング開始から数週間で導入が完了します。トライアル中からCSVデータを使ってスケジューリングでき、UTUではすでにSkyPlannerとNetSuiteを連携して運用しています(UTUの導入事例)。