Epicor Kinetic連携ガイド SkyPlanner APSによる生産スケジューリング
本ガイドでは、Epicorパートナー、IT部門、技術面から導入を検討する方に向けて、Epicor Kineticと組み合わせてSkyPlanner APSを生産スケジューラとして運用する方法を解説します。設備や人員の実際の能力を考慮して日程を組む構成です。SkyPlannerは、Kinetic標準のRESTサービスを使ってEpicor Kineticと双方向に連携します。
- 製造指図、工程、リソース、購買発注の納入明細を取り込みます。
- 工程の計画日程を製造指図に書き戻します。
- 作業者の時間記録をKineticの工数実績として登録します。
- スケジュールが変更されるたびに、SkyPlannerのWebhookが変更内容を送信します。
SkyPlannerチームが導入支援の一環として、お客様のKinetic環境に合わせて連携を設定し、本稼働後もサポートします。本ガイドは、その作業に参加するパートナーや開発者、または公開仕様に基づくSkyPlannerのREST API(APIリファレンス)を使って独自に開発したい方を対象としています。
Kinetic標準のScheduling and Resource ManagementやAPSモジュールで要件を満たせるか、まだ判断していない場合は、まずEpicor Kineticで生産スケジューリングは可能かをご覧ください。
Kineticが提供する連携手段
Epicorは次のように説明しています。”All Kinetic services, including business objects, processes, reports, BAQs, and Epicor Functions, are accessible through REST endpoints.”(ビジネスオブジェクト、プロセス、レポート、BAQs、Epicor Functionsを含むすべてのKineticサービスに、RESTエンドポイントからアクセスできます。)スケジューリング連携は、Epicorの四つの技術を基盤とします。
- Kinetic REST API v2 (OData v4)。ビジネスオブジェクトは、
Erp.BO.<Name>Svcという名前のサービスとして公開されます。通常のパスは/api/v2/odata/{Company}/Erp.BO.{Svc}/{EntitySet}です。REST v1 も残っていますが、旧仕様のため、連携は v2 で構築してください。利用するリリースのエンティティセットとメソッドは、/api/help/v2/の REST Help で確認してください。 - REST 経由の Business Activity Queries (BAQ)。BAQ は
/api/v2/odata/{Company}/BaqSvc/{BAQ}/Dataで公開されます。JobHead、JobOper、JobMtl、PartWhse、PORelを結合し、一度の呼び出しで計画用データを抽出する際に実用的な取得方法です(コミュニティの実装例)。 - Epicor Functions (EFx)。
/api/v2/efx/{Company}/{Library}/{Function}で呼び出せるサーバー側の関数です。Epicor は、これらの関数について “can be triggered from multiple entry points, including BPMs, REST services, schedules, and application events.”(BPM、REST サービス、スケジュール、アプリケーションイベントなど、複数の起点から実行できる)と説明しています。 - BPMディレクティブ。Method DirectivesとData Directivesは、製造指図や工程の変更時に発火し、データを外部へ送信する関数を呼び出せます。
ファイル連携では、取込にDMT、外部向けのデータ抽出にBAQエクスポートを使用します。EpicorはEpicor Automation Studioも提供しており、これを”a low-code app for integration-led automations”(システム連携を軸とした自動化のためのローコードアプリ)と説明しています。データベースへの直接アクセスは避けてください。REST、BAQs、関数は、オンプレミスでもKinetic Cloudでも同じように動作します。
認証とアクセススコープ
Kinetic REST v2は、連携ごとにアクセスを制御します。各連携には、呼び出し可能なサービスとメソッドを定義したアクセススコープに紐づくAPIキーが割り当てられます。Epicorの説明は次のとおりです。”API keys, access scopes, and standard authentication methods control which services and methods are available to each integration.”(APIキー、アクセススコープ、標準の認証方式によって、各連携で利用できるサービスとメソッドを制御します。)
呼び出し元はAPIキーに加え、Kineticユーザーとしてのサインインも必要です。連携に必要な権限だけを付与した専用ユーザーを使用してください。SkyPlanner側のREST APIはJWT認証を使用し、その仕様はSwagger/OpenAPIで公開されています。
SkyPlannerとの連携では、通常、スコープに以下を含めます。
Erp.BO.JobEntrySvc(JobEntries, JobOpers, GetDatasetForTree)Erp.BO.ResourceGroupSvcおよびErp.BO.ResourceSvcErp.BO.CapabilitySvcErp.BO.PartSvc(Parts, PartWhses)Erp.BO.EmpBasicSvcErp.BO.ScheduleEngineSvc(GetNewParamsForJob, MoveJobItem, ChangeResource)Erp.BO.LaborSvc(Labors, LaborDtls, StartActivity, EndActivityByEmp)- 連携用に公開するBAQsとEFxライブラリ
スコープに含まれていないメソッドは、設定時ではなく実行時にエラーになります。呼び出すメソッドをすべて登録し、APIキーの有効期限を監視してください。結果が空の場合だけでなく、HTTPエラーでもアラートが出るようにします。
変更の検出:BPMディレクティブ、関数、ポーリング
Epicorのドキュメントには汎用の送信用Webhook APIが記載されていないため、Kineticの変更は次の二つの方法のいずれかでSkyPlannerに伝えます。
- イベント駆動。
JobHeadまたはJobOperの BPM Data Directive が Epicor Function を呼び出し、その関数が変更されたジョブを SkyPlanner REST API に送信します。 - 定期ポーリング。変更日時で絞り込むBAQを数分ごと、または毎時実行します。運用管理も障害復旧も、こちらのほうが容易です。
逆方向では、SkyPlannerがWebhookで状態やスケジュールの変更を送信します。お客様のミドルウェアまたはEFxエンドポイントが受信し、Kineticに書き込みます。
データのマッピング
| Kinetic のエンティティ/サービス | SkyPlanner のオブジェクト | 連携方向 | 連携頻度 |
|---|---|---|---|
Part, PartRev (Erp.BO.PartSvc/Parts) | 製品 | Kinetic から SkyPlanner | 初回取り込み後、定期実行 |
PartMtl(製造方法)、JobMtl(ジョブ) | 製品およびオーダーの資材 | Kinetic から SkyPlanner | ジョブと同時 |
PartOpr(製造方法)、JobOper(ジョブ) | 工程 | Kinetic から SkyPlanner | ジョブと同時 |
ResourceGroup, Resource (ResourceGroupSvc, ResourceSvc) | リソースグループ、リソース | Kinetic から SkyPlanner | 初回取り込み時および変更時 |
Capability (CapabilitySvc) | 代替リソース | Kinetic から SkyPlanner | 初回取り込み時および変更時 |
| リソースおよびリソースグループのカレンダー | シフトと例外設定 | Kinetic から SkyPlanner | 初回取り込み後、毎週または変更時 |
EmpBasic (EmpBasicSvc) | 作業者 | Kinetic から SkyPlanner | 初回取り込み時および変更時 |
JobHead (JobEntrySvc/JobEntries) | オーダー | Kinetic から SkyPlanner | BPM + EFx によるリアルタイム連携、または BAQ のポーリング |
BAQ 経由の PartWhse | 在庫 | Kinetic から SkyPlanner | 定期実行 |
発注:BAQ 経由の POHeader、PODetail、PORel | 発注/入荷予定資材(納入予定日) | Kinetic から SkyPlanner | 定期実行、または発注変更時に BPM + EFx 経由で連携 |
| 工程ごとの開始・終了予定日時 | JobOper の日付(EFx 内で ScheduleEngineSvc (MoveJobItem, ChangeResource) を使用して更新) | SkyPlanner から Kinetic | スケジュール変更時に Webhook 経由で連携 |
| 作業時間記録、数量、工程進捗、理由 | Labors/LaborDtls(LaborSvc 経由)、理由コード(Erp.BO.ReasonSvc 経由) | SkyPlanner から Kinetic | Webhook によるリアルタイム連携 |
Epicor では製造オーダーを Job と呼びます。一つの JobHead を SkyPlanner の一つのオーダーに、各 JobOper を工程に対応付けてください。ジョブ番号、組立順序番号、工程順序番号を外部キーとして保持します。
連携パターン
1. マスタデータの初回取り込み。品目、リソースグループ、リソース、対応能力、カレンダー、従業員を取得します。Kinetic のリソースを基に SkyPlanner のリソースを、リソースグループを基にリソースグループを作成します。大量のデータを取得する場合は、$top と $skip でページ分割するか、BAQ で一括取得してください。
2. オーダーの同期。リリース済みかつ確定済みのジョブを、工程・資材とともに送信します。エンティティを個別に取得するのではなく、GetDatasetForTree または BAQ でジョブツリーを取得してください。未確定の MRP ジョブは、確定するまで Kinetic に残します。在庫の取得と併せて、未完了の発注納入明細と納期も同期します。SkyPlanner は発注済み資材を納入日から使用可能として扱い、発注のステータスが Delivered になると在庫を更新します。そのため、スケジューリングでは在庫と入荷予定の両方が考慮されます。
3. スケジュールの書き戻し。SkyPlanner の Webhook が、工程ごとの開始・終了予定日時とリソースを EFx エンドポイント(/api/v2/efx/{Company}/{Library}/{Function})に送信します。関数は Kinetic のスケジュールエンジンを通じて書き込みます。これは Job Entry のスケジューリングやスケジュールボードでも使われるビジネスオブジェクトです(コミュニティの実装例)。処理は次のとおりです。
ScheduleEngine.GetNewParamsForJobが、そのジョブ用のスケジュールエンジンのデータセットを作成します。- 関数でジョブ番号、組立順序番号、工程順序番号、開始予定日時を設定し、
ScheduleEngine.MoveJobItemを呼び出します。 - SkyPlanner がグループ内の別のリソースに工程を割り付けた場合は、
ScheduleEngine.ChangeResourceでそのリソースへ移動します。MoveJobItemだけでは、グループの既定のリソースが使われたままになります。 - 関数でジョブのスケジュールロック(
JobHead.SchedLocked、Job Entry の Lock オプション)を設定します。これにより、Global Scheduling でも SkyPlanner が設定した日付が維持されます。
これらの呼び出しを一つの Epicor Function にまとめると、ジョブ単位で書き込みの原子性を保ち、独自の検証処理も追加できます。カスタム関数を使わない方針の拠点では、Erp.BO.ScheduleEngineSvc を REST で直接呼び出して同じ処理を実行できます。ResourceTimeUsed や JobOper の日付フィールドには、絶対に直接書き込まないでください。エンジンを経由しないため、スケジュールボードの割り付けと不整合が生じます。
4. 製造現場の実績登録。作業者は Mobile Confirmations、Production Timer、Quick Log Mode を使って SkyPlanner に作業を記録します。終了した作業時間記録は、Erp.BO.LaborSvc を通じて Kinetic の作業実績になります。リアルタイムの作業記録には StartActivity と EndActivityByEmp を、事後入力には Labors と Update を使います。拠点で承認が必要な場合は、処理フローとアクセススコープに submitForApproval を含めてください。
5. データの管理主体と競合時のルール。本稼働前に以下を明文化してください。
| データ | 管理主体 |
|---|---|
| 品目、製造方法、リソース、カレンダー、製造指図、MRP、在庫、原価計算 | Kinetic |
| 数量と製造指図のステータス | Kinetic |
| 工程の実行順序、計画日程、グループ内で使用するリソース | SkyPlanner |
SkyPlannerがスケジューリングする製造指図にはスケジュールロックが設定されるため、Global Schedulingはその日程を変更しません。SkyPlannerの計画対象外のリソースには、引き続きKineticのスケジューリングを使用してください。
キー、再試行、データの照合
- 変わらないキー。すべてのレコードにKineticのキーを保持します。工程では製造指図番号、組立連番、工程連番、工数では工数ヘッダーと明細のキーです。書き込みはこのキーに基づくupsertで行うため、同じメッセージを再受信しても、重複作成せず既存レコードを更新します。
- 再試行。どちらのシステムへの書き込みでも、失敗した場合は再試行します。工数はSkyPlannerの時間記録IDごとに一度だけ登録するため、再試行によって時間が二重計上されることはありません。
- データの照合。定期実行するBAQで未完了の製造指図、工程のステータス、数量をSkyPlannerと比較し、不整合を修正します。たとえば、メッセージの送信中にKineticで製造指図がクローズされた場合などが対象です。
- 数量変更と取消。Kineticで数量が変更されると、SkyPlannerのオーダーとその工程が更新されます。一部が完了すれば、残りの加工時間が短くなります。Kineticでクローズまたは削除された製造指図は、次回の同期でスケジュールから除外されます。
導入プロジェクトの内容
通常、導入支援の開始から数週間で実装が完了します。Kineticとの連携プロジェクトでは、以下を行います。
- 開発に着手する前に、製造指図、工程、リソースをCSVまたはExcelでエクスポートし、そのデータで30日間試用します。
- APIキー、アクセススコープ、連携専用ユーザー、連携で読み取るBAQsを設定します。
- マスタデータをマッピングします。能力、リソースグループ、リソース、カレンダー、従業員を、SkyPlannerのワークステーション、グループ、シフト、人員に対応付けます。
- 品目、製造方法(BOMと工程)、リソースを初期投入します。
- ジョブと発注(
PORelの納期)、およびPartWhseの在庫の同期。 - Epicor Function 内で
ScheduleEngineSvc(MoveJobItem, ChangeResource) を使い、工程の予定日を書き戻す処理。ジョブのロックも設定します。 LaborSvcを通じて、製造現場の実績を作業実績として登録。- 現在のKineticのスケジュールと並行してテストし、その後、本稼働に移行します。
Kinetic連携での注意点
- 有限能力の設定箇所は複数あります。Finiteチェックボックスはリソースにあります。有限能力で計画する期間は、リソース、リソースグループ、Site MaintenanceのPlanningタブで設定します。各スケジューリングツールにも独自のFiniteチェックボックスがあります。Kineticの日程を基準として取り込む前に、そもそもリソースの空き状況を考慮した生産スケジューリングで作成された日程かどうかを確認してください。
- Capability、またはResource GroupとResource。工程でCapabilityを指定すると、Resource GroupとResourceは空欄のままになります。Capabilityを指定しない場合はResource Groupを指定し、特定のResourceも指定する場合があります。連携側でも同じフィールドを読み取り、Capabilityに対応する使用可能なリソースを特定する必要があります。
- カレンダーには過去の調整が残っています。リソースカレンダーや従業員数は、標準スケジューラを意図どおりに動かすために調整されていることがよくあります。SkyPlannerには実際のシフトパターンと人員を対応付け、複数人で行う必要がある作業には、SkyPlannerに複数の作業者を割り当てさせてください。
- 日付は CRUD ではなく、エンジンを通じて更新してください。
JobEntrySvcで工程の日付を単に更新しても、再スケジューリングは行われません。あるフォーラムの報告では、JobSchedulingの呼び出しが 200 OK を返しても、ジョブは変更されていませんでした。前述のScheduleEngineの呼び出し手順を使ってください。 - データ管理の徹底が結果を左右します。短すぎる工程時間、未登録の購買リードタイム、未完了のまま放置された製造指図、カレンダーに反映されていない停止時間は、標準・外部を問わずスケジュールの精度を損ないます(Bluesky ERP)。
Kinetic連携の設定担当
Kineticの運用方法は工場ごとに異なります。能力に基づく工順、リソースグループのカレンダー、BAQの設計、BPMディレクティブ、リリースごとの書き戻しメソッドは、拠点によって違います。これらを正しく設定できるかどうかが、計画担当者が信頼できるスケジュールになるか、手直しが必要になるかの分かれ目です。
- SkyPlannerチームが導入支援時に設定し、本稼働後もサポートします。お客様のリソース、製造指図、購買発注の納入明細をマッピングし、BAQによる読み取り、BPMトリガー、書き戻し関数を設定します。SkyPlannerのREST APIとWebhookをKinetic REST v2に接続します。BAQs、BPMs、Kineticのリリースが変わった場合も、サポートを継続します。
- お客様のEpicorパートナー。BAQs、BPMs、Epicor Functionsの開発経験があるパートナーは、公開仕様に基づく同じSkyPlanner REST APIを使って開発できます。このAPIでは、オーダー、製品、資材、工程、時間記録を読み書きできます。
- お客様の社内開発者。Kinetic RESTの経験がある社内チームは、直接開発できます。Automation Studioを利用している場合は、その上での開発も可能です。SkyPlannerのAPIキーがあれば着手でき(連携チュートリアル)、必要に応じてSkyPlannerチームが支援します。製品ドキュメントはSkyPlannerドキュメントで公開しています。
同じAPIとWebhookによる連携方式は、UTUなど、他のERPを使う企業でも本稼働しています。Laboratory & Alliedでは、社内ITチームがSkyPlannerの支援を受けながら、SAP Business Oneとの連携の大部分を自力で構築しました。
どの方法でも、最初の手順は同じです。まずCSVを取り込んで30日間の無料トライアルを行い、スケジュールを検証してから連携を構築します。料金はワークステーション5件を含めて月額199 €から。月払いで、いつでも解約できます。連携費用は、お客様の業務プロセスと要件に合わせ、プラン料金とともに事前にお見積もりするため、開始前に総費用を確認できます。
Kinetic APSのライセンス購入ではなく、この構成を選ぶ理由
技術面から導入を検討する際の比較軸は、対応範囲と効果が出るまでの期間です。次のような場合にSkyPlannerをお選びください。
- 連携範囲を小さく抑えたい。製造指図、工程、リソース、資材を送り、計画日程と工数実績を受け取ります。連携範囲は、上記のデータマッピングがすべてです。
- 次の計画実行を待たずに変更へ対応したい。Arcturusは設備や人員の実際の能力を考慮した生産スケジューリングを数秒で行い、生産状況が変わるとAutopilotが自動で再スケジューリングします。SkyPlannerのWebhookが変更のたびに通知するため、Global Schedulingを実行しなくてもKineticに新しい日程が反映されます。
- 製造現場の作業報告は Kinetic の作業実績に反映させます。作業者はスマートフォンやタブレットで Mobile Confirmations、Production Timer、Quick Log Mode を使って作業を記録します。
LaborSvcによる実績登録も、同じ連携に含まれます。 - 購入資材の入荷が作業開始を左右する。在庫と未納の購買発注納入明細の両方をスケジュールに反映し、資材の実際の入荷予定に合わせて工程を開始できるようにします。
- 制約条件が二つでは収まらない。一つの作業への複数作業者の配置、他の作業で使用中の工具の使用制限、代替ワークステーションや代替要員を、すべて一つのスケジュールで扱えます。段取り時間マトリクスに基づいて切替順序を決め、連携によって結果を書き戻します。
- 着手前に効果を確かめ、短期間で導入したい。トライアルではBAQのエクスポートデータを使い、最大20件のワークステーションで自社のスケジュールを確認できます。クレジットカードは不要です。通常、導入支援の開始から数週間で実装が完了します。
機能やお客様の声をご覧いただくか、デモをご予約ください。
製造業のお客様によるSkyPlannerの評価
2 h毎週削減
「SkyPlannerによって、当社の生産計画はExcelの表計算から、リアルタイムで生産を最適化する仕組みへと変わりました。」
Kalle Kalliomäki、サプライチェーンスペシャリスト
UTU · 配電盤・開閉装置
生産計画にかかる作業時間を毎週2時間削減。新しい作業待ちリストも数秒で生産ラインに届きます。
+90%生産効率
「生産効率が90%向上しました。」
Abdul Rucyinga、IT責任者
Laboratory & Allied · 医薬品製造
生産効率が90%向上。すべてのワークステーションを対象とした三か月分の最適化計画を、30分未満で作成できます。
1,000s製造指図のスケジュールを自動作成
「生産をこれまでとは違う形で管理できるようになり、生産能力の把握もまったく別のレベルになりました。」
Hannu Ryynänen、CEO
Mamec · 産業用ミキサー・ポンプ・ハイテク製品の受託製造
数千件の製造指図のスケジュールを自動で作成し、組織全体で生産状況をリアルタイムに把握できます。
99.2%納期遵守率
「SkyPlannerによってボトルネックを見つけやすくなり、生産管理の見通しがよくなりました。」
Toni Tuori、生産管理責任者
Piristeel · 屋根用安全設備・雨水排水システム
今年の納期遵守率は99.2%に達し、スケジューリングにかかる作業時間も一日あたり最大四時間削減できています。
よくある質問
SkyPlanner APSはEpicor Kineticとどのように連携しますか?
Kinetic REST v2、BAQs、Epicor Functionsを使って双方向に連携します。製造指図、工程、リソース、購買発注リリースをSkyPlannerに取り込み、計画した工程日程と工数をKineticに書き戻します。スケジュールに変更があると、Webhookでその都度通知します。導入時には、SkyPlannerチームがお客様のKinetic環境に合わせて連携を設定します。Epicorパートナーや開発者も同じREST APIを利用できます。
スケジューリングの連携には、KineticのどのAPIを使うべきですか?
REST v2 を使います。ジョブと工程には JobEntrySvc、生産能力には ResourceGroupSvc、ResourceSvc、CapabilitySvc、一括取得には BAQ、作業実績の書き戻しには LaborSvc を使ってください。
Epicor KineticはWebhookに対応していますか?
汎用の送信用Webhook APIはありません。イベントに応じてデータを送信する場合は、Epicor Functionsを呼び出すBPMディレクティブを使用します。または、BAQを定期的にポーリングします。
SkyPlannerで計画した日程をKineticの製造指図に書き戻せますか?
はい。Epicor Function で ScheduleEngine.GetNewParamsForJob を呼び出し、工程ごとに MoveJobItem、リソースが変わった場合は ChangeResource を呼び出します。その後ジョブをロックすることで、Global Scheduling でも日付が維持されます。Erp.BO.ScheduleEngineSvc に対し、REST で直接同じ呼び出しを実行することもできます。
連携の保守は誰が担当しますか?
SkyPlannerチームが導入時に設定し、本稼働後もサポートします。BAQs、BPMs、Kineticのリリースが変更された場合も対応します。
オンプレミスのEpicor Kineticでも利用できますか?
はい。REST API、BAQs、BPMs、Epicor Functionsは、オンプレミスでもKineticのクラウド環境でも同じように動作するため、共通の連携設計で両方に対応できます。
SkyPlanner APSとEpicor Kineticの連携には、どのくらいの期間がかかりますか?
通常、導入作業の開始から数週間以内に実装が完了します。対象は、上記のマッピング、初期データ取り込み、製造指図と購買発注の同期、スケジュールの書き戻し、工数の登録です。現在のスケジュールと並行してテストを行います。