あらゆるERPと連携

SkyPlannerのオープンREST APIは、社内ERPを含むERP、MES、運用システムと連携します。自社で構築することも、当社チームの支援を受けることもできます。

単体でも動作 — ERP連携はオプションで、必須ではありません。

連携プロジェクトを相談

以下のようなERP・MESシステムと連携

システム連携 / ERP / Odoo

Odoo連携ガイド SkyPlanner APSで生産スケジューリング

このガイドでは、Odooパートナー、開発者、IT責任者に向けて、Odoo ManufacturingとSkyPlanner APSの連携方法を解説します。導入効果やOdooのPlanボタンで既にできることについては、Odooの生産スケジューリングとOdooは設備や人員の実際の能力を考慮した生産スケジューリングに対応しているか?をご覧ください。

各リソースに割り付けられた作業と、その下のオーダー一覧を表示したSkyPlanner APSのガントチャート。

製品、部品表、工程、製造オーダー、在庫、原価計算の正本データは、引き続きOdooで管理します。SkyPlannerはそのデータを基にArcturusエンジンでスケジュールを作成し、Odooと次のように双方向で連携します。

  • 製造オーダー、製造指図、BoMの工程、作業区、購買オーダーを取り込みます。
  • 開始・終了予定日時と作業区を mrp.workorder に書き戻します。
  • 進捗と記録した作業時間を、OdooのTime Logsとして書き戻します。
  • SkyPlannerのWebhookが、スケジュールの変更を発生時にプッシュ通知します。

SkyPlannerチームが導入支援の一環として、Odooの標準外部APIを使った連携を設定します。ご利用のバージョン、ホスティング環境、カスタマイズに合わせて構成し、本稼働後もサポートします。このガイドは、連携作業に参加したいパートナーや開発者、またはドキュメントが公開されているSkyPlannerのREST API(APIリファレンス)を使って自ら開発したい方を対象としています。製品、資材、購買オーダーの扱いについては、公開のSkyPlannerドキュメントで説明しています。

最初に確認すること:Odooのプランとホスティング環境

まず、お客様が利用しているOdooの環境を確認します。それによって連携方法が決まります。

利用環境外部APIカスタムモジュール利用できる連携方法
Odoo Online、One App FreeまたはStandard利用不可利用不可CSV/XLSXを使うか、Customプランへ移行
Odoo Online、Customプラン利用可利用不可外部API
Odoo.sh(Customプラン)利用可利用可外部API、必要に応じてモジュールを追加
オンプレミス、CommunityまたはEnterprise利用可利用可外部API、必要に応じてモジュールを追加

OdooのAPIドキュメントには、外部APIへのアクセスは”only available on Custom Odoo pricing plans”(Customプランでのみ利用可能)とあり、One App FreeやStandardでは利用できません。また、料金ページでは、StandardはOdoo Onlineでホストされ、”without custom modules”(カスタムモジュールなし)と説明されています。開発の途中ではなく、初期ヒアリングの段階で確認してください。

Odooの連携方法

連携方法対応バージョン認証スケジューリング連携での用途
External JSON-2 API:POST /json/2/<model>/<method>19.0で新規導入Authorization: bearer <key> にAPIキーを指定。X-Odoo-Database ヘッダーは任意新規構築時の標準。読み取りには search_read、日時の書き戻しには write を使用
外部XML-RPC / JSON-RPC:/xmlrpc/2、/jsonrpc、サービスは common、object19.0まで対応。廃止予定ログイン名とパスワードまたはAPIキーで common.authenticate を実行後、execute_kw を使用16.0〜18.0を利用する顧客に必要
モジュール内のカスタムコントローラー全バージョンルートごとに設定。例:auth='bearer'ペイロードをまとめ、製造オーダー(MO)と関連する製造指図を一回の呼び出しで取得
自動化ルール:「Send Webhook Notification」(Webhook通知を送信)17.0以降のドキュメントに記載指定URLへのPOST送信製造オーダーと製造指図の作成・編集時にプッシュ送信
レコードのインポート(CSV、XLSX)とエクスポート全バージョンユーザーセッショントライアル用データの取り込みと、マスタデータの単発の取り込み

廃止への対応は今から計画してください。Odooは、Odoo 22(2028年秋)とOdoo Online 21.1(2027年冬)でXML-RPCとJSON-RPCを廃止する予定です。19.0ではJSON-2を使って構築し、旧バージョンのデータベース向けのRPC処理は一つのアダプターに集約してください。アップグレード時の変更を一か所に抑えられます。@route(type='jsonrpc') を使うカスタムコントローラーは、この廃止の影響を受けません。

認証

ManufacturingとInventoryへの読み取り権限、製造指図への書き込み権限を持つ連携専用ユーザーを作成します。Preferences > Account Security > New API Keyから、そのユーザーのキーを生成してください。19.0ではキーの有効期間が最長三か月のため、ミドルウェアにはキーのローテーションと認証失敗時のアラートが必要です。これらがないと、キーの期限切れによる同期停止に気づけません。SkyPlanner側のREST APIはJWTを使用するため、ミドルウェアで両方の認証情報を保持します。

JSON-2の各呼び出しは個別のSQLトランザクションで実行されるため、複数の呼び出しに分かれた書き込みはアトミックではありません。製造指図ごとに書き込み、それぞれの結果を記録してください。

イベント

Odooは自動化ルールを通じて変更をプッシュ送信します。mrp.production または mrp.workorder に対し、トリガーを「On create and edit」(作成・編集時)、アクションを「Send Webhook Notification」(Webhook通知を送信)に設定すると、選択したフィールドを含むPOSTが指定URLに送信されます。ルールはStudioで作成するか、開発者モードのAutomation Rulesフォームから作成します。インポートによる変更やルールで拾えなかった変更も取得できるよう、search_read による定期ポーリングを併用し、write_date を条件に変更を抽出してください。逆方向では、SkyPlannerのWebhookがスケジュールと状態の変更を発生時にプッシュ送信します。

フィールド名はバージョンによって異なります。19.0では、各データベースのモデル、フィールド、メソッドが /doc に一覧表示されます。旧バージョンでは fields_get を呼び出してください。記憶に頼らず、これらの情報を基にマッピングします。

データの対応付け:OdooからSkyPlannerへ

OdooのモデルSkyPlannerのオブジェクト連携方向連携頻度
product.product / product.template (default_code, uom_id, qty_available)製品または資材Odoo → SkyPlanner初回取り込み後、毎日または変更時
mrp.bom (product_tmpl_id, product_qty, produce_delay), mrp.bom.line (product_id, product_qty, operation_id), mrp.bom.byproduct多階層の製品構成、工程ごとの資材所要量Odoo → SkyPlanner変更時
mrp.routing.workcenter(Operationsタブ:workcenter_id、sequence、time_mode、time_cycle_manual、blocked_by_operation_ids)工程とその順序・加工時間Odoo → SkyPlanner変更時
mrp.workcenter (resource_calendar_id, time_efficiency, time_start, time_stop, alternative_workcenter_ids)リソース、効率、段取り・後片付け、代替リソースOdoo → SkyPlanner、その後はSkyPlannerで管理初回取り込み時
mrp.workcenter.capacity (capacity)サイクル当たりの生産数、製品別の段取り時間・後片付け時間Odoo → SkyPlanner初回取り込み時
resource.calendar, resource.calendar.attendance, resource.calendar.leavesシフトと休暇Odoo → SkyPlanner初回取り込み時。休暇は変更時にも連携
mrp.production (product_id, product_qty, date_deadline, priority, state, workorder_ids)納期と優先度を含むオーダーOdoo → SkyPlanner確定時のWebhookとポーリングを併用
mrp.workorder (operation_id, workcenter_id, duration_expected, state)リソースに割り当てた作業Odoo → SkyPlannerWebhookとポーリングを併用
stock.quant、stock.move(構成品の在庫移動)資材の制約を反映したスケジューリングに使う、手持在庫と資材所要量Odoo → SkyPlanner定期実行。例:15〜60分ごと
purchase.order (partner_id, state), purchase.order.line (product_id, product_qty, date_planned, qty_received)購買オーダーと入荷予定資材。入荷予定日から使用可能として扱うOdoo → SkyPlanner購買オーダーの確定・編集時のWebhookと、同じ定期ポーリングを併用
開始・終了予定日時とリソースmrp.workorder.date_start, date_finished, workcenter_idSkyPlanner → Odooスケジュール変更時にSkyPlannerのWebhookで連携
Mobile Confirmations、作業時間記録mrp.workcenter.productivity(Time Logs:workcenter_id、workorder_id、date_start、date_end、loss_id)SkyPlanner → Odoo実績報告ごと
完了数量、工程の完了製造指図の qty_producing を設定後、button_finish を実行。製造オーダーでは button_mark_done を実行SkyPlanner → Odoo、またはOdoo Shop Floorで処理実績報告ごと

連携パターン

まずマスタデータを取り込む

作業区とカレンダーを先に取り込み、続いて製品、BoM、作業区を参照する工程を取り込みます。30日間のトライアルでは、同じ一覧をCSVでエクスポートして取り込みます。Odooのインポート・エクスポートツールは、どのリストビューでも使えます。

オーダーを同期する

状態が confirmed または progress の製造オーダーを、関連する製造指図とともに取り込みます。ドラフトの製造オーダーは対象外にするか、仮の需要として扱います。独自のBOMを持つサブアセンブリは、個別の子製造オーダーとして取り込まれる場合があります。Odooは各製造オーダーを個別に計画します。これらをSkyPlannerの子製品にマッピングし、親製品の着手前にサブアセンブリが完成するようにしてください。

スケジュールを書き戻す

スケジュールが変わると、SkyPlannerのWebhookをきっかけに連携処理が動き、ORMの write メソッドを呼び出して、変更対象の各 mrp.workorder を更新します。Odoo 19.0では、製造指図ごとに一回、以下のJSON-2リクエストを送信します。

“ POST /json/2/mrp.workorder/write Authorization: bearer <api-key> {"ids": [4711], "vals": {"date_start": "2026-11-03 06:00:00", "date_finished": "2026-11-03 09:30:00", "workcenter_id": 7}} “

JSON-2は、ids と context に加え、各メソッド引数を名前で受け取ります。そのため、write(vals) の引数は vals キーとして渡します。16.0〜18.0では、同じ処理をXML-RPCまたはJSON-RPC経由で execute_kw(db, uid, key, 'mrp.workorder', 'write', [[4711], vals]) として呼び出します。16.0の日時キーは date_planned_start と date_planned_finished です。日時はUTCで送信します。書き戻しを正しく行うため、次のルールを守ってください。

  • 両方の日時を同じ呼び出しで送信します。
  • エンジンが代替設備を選んだ場合にのみ workcenter_id を追加します。
  • 書き込むのはスケジューリング用のフィールドだけにし、数量やBoMは決して変更しないでください。

日時を書き込むとOdoo側の作業区の予約枠も移動するため、Odooの計画ビューにSkyPlannerの計画が表示されます。

製造現場の実績をOdooへ返す。作業者はSkyPlanner Mobile Confirmationsで作業を記録します。連携処理は報告ごとに create を呼び出し、mrp.workcenter.productivity のレコードを作成します。JSON-2では、POST /json/2/mrp.workcenter.productivity/create に vals_list を渡します。workorder_id、workcenter_id、date_start、date_end と、loss_id(タイプはProductive)を設定すると、Odooに作業時間と原価が計上されます。

工程が完了すると、連携処理が生産数量を設定し、製造指図の button_finish を呼び出します。最後の製造指図が完了すると、製造オーダーは button_mark_done を実行できる状態になります。各実績報告は一度だけ登録し、OdooのレコードIDをSkyPlannerの作業時間記録とともに保持します。そのため、Webhookを再試行してもTime Logsのレコードが重複して作成されることはありません。

EnterpriseのShop Floorアプリを使う工場では、連携の向きが逆になります。SkyPlannerが製造指図の状態と qty_produced を読み取り、生産状況が変わるとAutopilotが自動で再スケジューリングします。

データの管理主体。本稼働前に、次の管理ルールを文書化してください。

データ管理主体
製品、BoM、工程、数量、MOの状態Odoo
製造指図の実行順序、開始・終了時刻、作業区の選択SkyPlanner
段取り・切替時間のマトリクス、工具と作業者の要件、代替リソースSkyPlanner
作業区のカレンダーとTime Off要件定義で選定した一つのシステム
Time Logs、在庫、原価計算Odoo(SkyPlannerの実績報告を取り込む)

SkyPlannerでスケジュールするMOについては、計画担当者はOdooのPlanとUnplanを操作しないようにします。操作すると、Odooが独自に作業枠を予約し、SkyPlannerで設定した日時を上書きしてしまいます。

一般的なプロジェクトの流れ

実装は通常、導入支援の開始から数週間以内に完了します。その前に、実際のOdooデータをCSVでエクスポートし、30日間の無料トライアルで使用します。プロジェクトには次の作業が含まれます。

  1. マスタデータのマッピング:バージョンごとのOdooモデルとフィールド(/doc または fields_get で確認)、計量単位、カレンダーとTime Offをどちらのシステムで管理するかを定義します。
  2. データの整備:作業区のカレンダー、Setup Time、Cleanup Timeを整備し、BoMの工程の所要時間をComputedではなくFixedに設定します。
  3. 初回取り込み:製品、カレンダー付きの作業区、BoMとその工程を取り込みます。
  4. 製造オーダーと購買オーダーの同期:確定済み・進行中の製造オーダーと関連する製造指図、および入荷予定日を含む purchase.order の明細を同期します。
  5. スケジュールの書き戻し:mrp.workorder の日時と作業区を書き戻し、Odoo側でAPIキーをローテーションします。
  6. 製造現場からの実績報告:Time Logsと製造指図の完了をOdooに書き戻します。
  7. 現行計画と並行してテストを実施し、その後、本稼働に移行します。

Odooで注意すべき点

  • 日時フィールドの名称変更。16.0までは、date_planned_start と date_planned_finished に予定日時、date_start/date_finished に実績日時が格納されていました。17.0以降は、date_start と date_finished が予定日時です。16.0のプロジェクトからマッピングを流用すると、17+では警告もなく実績を予定として読み取ってしまいます。
  • 製造指図の日時は作業区の予約と連動。19.0では、date_start と date_finished(mrp.workorder のフィールド)は、作業区カレンダー上の resource.calendar.leaves レコード(leave_id)から計算されます。製造指図の日時を書き込むと、その予約が更新されます。このテーブルには絶対に直接書き込まないでください。
  • 着手済みの製造指図があると計画解除できない。Odooでは「Some work orders have already started」(一部の製造指図がすでに開始されています)の状態では、製造オーダーの計画解除ができません。書き戻し時には progress または done の製造指図を除外し、未着手のものだけを移動してください。
  • 所要時間の変動。Computedに設定された工程は、直近の製造指図(デフォルトでは10件)を基に所要時間を算出し、Time Efficiencyで補正します。トライアル中はFixedに設定するか、入力値が変動することを前提にしてください。工程は各BoMに属し、共通の工順マスタはないため、BoMごとにデータの整備が必要です。
  • カレンダーの不備。すべての作業区に稼働時間カレンダーが必要です。Odoo標準のスケジューラーは最大700日先まで検索し、枠が見つからないと”Impossible to plan the workorder”(製造指図を計画できません)と表示して停止します。初回取り込みの前にカレンダーを修正してください。
  • 計量単位。mrp.bom.line には独自の product_uom_id があり、製品の在庫単位と異なる場合があります。資材の利用可否を確認する前に単位を換算してください。

Odoo連携の設定を担当するのは

Odooの運用は工場ごとに異なります。BoMの工程、作業区のカレンダー、代替作業区、カスタムモジュールもそれぞれです。その環境に合わせてデータを正しく対応付けることに、SkyPlannerチームの専門知識が生きます。

  1. SkyPlannerチームが設定します。導入支援の際にお客様のOdoo環境に合わせて構成し、本稼働後もサポートします。連携にはSkyPlannerのREST APIとWebhook、OdooのJSON-2またはRPC APIを使用します。これが標準の進め方です。
  2. ご契約のOdooパートナーも参加できます。パートナーはお客様の環境やカスタムモジュールを把握しており、ドキュメントが公開されている同じREST APIを使って開発できます。このAPIはオーダー、製品、資材、工程、作業時間記録の読み書きに対応し、JWT認証を使用します。Swagger/OpenAPIのドキュメントも用意されています。
  3. 自社の開発者も同様に開発できます。通常はOdooと併用する小規模なミドルウェア、またはOdoo.shやオンプレミス環境のモジュールとして実装します。APIキーがあれば着手でき(連携チュートリアル)、必要に応じてSkyPlannerチームが支援します。

同じ方式は、ほかのERPとの連携でも本番運用されています。Laboratory & Alliedでは、社内ITチームがSkyPlannerの支援を受けながら、SAP Business Oneとの連携の大部分を自ら構築しました。UTUは、ERPのNetSuiteとSkyPlannerを併用しています。

連携が効果を生む理由

連携によって日々の業務で効果を得る鍵は、データの書き戻しです。これが稼働すると、次のことが実現します。

  • Odooの製造指図に実行可能な日時を反映。Arcturus AIエンジンは未完了のすべての製造オーダーの作業順序を数秒で決定します。算出した日時とリソースの割り当て先が mrp.workorder に反映され、Odooの計画画面に表示されます。
  • 手作業での再計画が不要に。生産に変更が生じると、Autopilotが自動でスケジュールを組み直し、Webhookが新しい日時をOdooに送信します。
  • 製造現場の実績まで連携。作業者はスマートフォンやタブレットでMobile Confirmations、Production Timer、Quick Log Modeを使って作業を記録します。Time Logsは在庫と原価計算のためにOdooへ送信されます。EnterpriseだけでなくCommunityでも、スケジューリングと作業の実行管理を一つのツールで行えます。
  • Odooでは扱えない制約もスケジュールに反映。段取り時間マトリクスでは、製品の組み合わせごとに、作業順序に応じた段取り替え時間を設定します。工具は設備間で共有する有限のリソースとして扱い、一つの作業に複数の作業者を同時に割り当てることもできます。通常使う設備や人員が利用できない場合、エンジンは代替の設備や人員を選びます。mrp.workorder に書き戻す日時は、これらすべての制約を満たしています。
  • 資材の入荷に合わせた計画。手持ち在庫とOdooの未完了の購買オーダーを基に、資材の状況を反映したスケジュールを作成します。発注済みの部品はPOの納入日に使用可能とみなされ、POがDeliveredになると在庫が更新されます。各作業について、倉庫にある資材と入荷予定の資材を照合します。

連携作業に着手する前に、スケジュールを評価できます。CSVエクスポートを使って30日間の無料トライアルを始め、実際のOdooの製造指図をガントチャートで確認してください。最大20のワークステーションを利用でき、クレジットカードは不要です。料金は5つのワークステーションを含めて月額199 €から。月払いで、いつでも解約できます。連携費用はお客様の工程や要件に合わせ、ご利用プランとともに事前にお見積もりするため、開始前に総費用を把握できます。機能や導入事例をご覧いただくか、デモをご予約ください。

製造業のお客様によるSkyPlannerの評価

Ulvilaの配電盤製造現場に立つ、UTUのサプライチェーンスペシャリストKalle Kalliomäki

2 hを毎週削減

「SkyPlannerによって、当社の生産計画はExcelのスプレッドシートから、リアルタイムで生産を最適化する仕組みへと進化しました。」

Kalle Kalliomäki、サプライチェーンスペシャリスト
UTU · 配電盤・開閉装置

生産計画にかかる作業時間を毎週2時間削減し、新しい作業順序を数秒でラインに届けています。

UTUの評価を読む

ナイロビにあるLaboratory & Alliedの医薬品工場で、クリーンルーム用作業服を着用してボトル充填ラインで働く作業者

+90%生産効率の向上

「生産効率が90%向上しました。」

Abdul Rucyinga、IT部門責任者
Laboratory & Allied · 医薬品製造

生産効率が90%向上。すべてのワークステーションを対象に、三か月分の最適化された計画を30分未満で作成できます。

Laboratory & Alliedの導入事例を読む

ロホヤにあるMamecの工場内に立つ同社CEOのHannu Ryynänen

1,000s件の製造指図を自動でスケジューリング

「生産をこれまでとは違う形で管理できるようになり、生産能力の把握もまったく別のレベルになりました。」

Hannu Ryynänen、CEO
Mamec · 産業用ミキサー、ポンプ、ハイテク製品の受託製造

数千件の製造指図を自動でスケジューリングし、組織全体で生産状況をリアルタイムに把握できます。

Mamecの導入事例を読む

カウハバにあるPiristeelの屋根用安全設備工場の航空写真

99.2%納期遵守率

「SkyPlannerのおかげでボトルネックが見えるようになり、生産管理が明確になりました。」

Toni Tuori、生産管理責任者
Piristeel · 屋根用安全設備・雨水排水システム

今年の納期遵守率は99.2%に達し、スケジューリングによって一日あたり最大四時間の業務時間を削減しています。

Piristeelの導入事例を読む

よくある質問

Odoo Onlineでも連携できますか?

Customプランであれば、外部API経由で連携できます。One App FreeとStandardでは外部APIを利用できず、Standardではカスタムモジュールも使えないため、これらのプランではCSV/XLSXのインポートとエクスポートに限られます。

JSON-2とXML-RPCのどちらを使うべきですか?

Odoo 19.0以降ではJSON-2を使います。16.0から18.0では引き続きXML-RPCとJSON-RPCが必要ですが、どちらもOdoo 22で廃止される予定です。

スケジュールはどのようにOdooに書き戻されますか?

ORMの write メソッドを使い、各 mrp.workorder に書き戻します。19.0では POST /json/2/mrp.workorder/write に ids と vals を渡します。16.0〜18.0では、XML-RPCまたはJSON-RPC経由で execute_kw を使い、write を呼び出します。書き戻す値は date_start、date_finished(16.0では date_planned_start と date_planned_finished)、および変更があった場合の workcenter_id です。これに連動してOdooの作業区予約も移動するため、Odooの計画画面にSkyPlannerの日時が表示されます。

作業者が登録した実績はどのようにOdooに反映されますか?

Time Logsとして反映されます。連携処理が、製造指図に紐づく mrp.workcenter.productivity レコードを、開始・終了日時とProductiveのロス理由で作成します。工程が完了したら button_finish を呼び出します。各実績報告は一度だけ登録されるため、再試行しても作業時間が重複計上されることはありません。

本稼働後は誰が連携を保守しますか?

SkyPlannerチームが導入時に連携を設定し、本稼働後もサポートします。Odooの設定変更に伴う連携の変更にも対応します。パートナーや社内の開発者が連携を構築する場合は、REST APIの仕様書とSkyPlannerのドキュメントに基づいて開発し、必要に応じてSkyPlannerチームが支援します。

すでに開始した製造指図はどう扱われますか?

書き戻し時には変更しません。Odooでは、製造指図が進行中または完了済みになると、そのMOの計画を解除できません。SkyPlannerは状態と進捗を読み取り、それらを動かさずに残りの作業をスケジューリングします。

Odooとの連携にはどのくらいの期間がかかりますか?

通常、導入支援の開始から数週間以内に実装が完了します。まずはCSVでエクスポートしたデータを使って30日間のトライアルを行えば、API連携の開発に着手する前に、自社のOdooデータでスケジュールを検証できます。