POおよびPO変更内容のERPへの統合

CoupaのPOおよびPO変更をERPに統合するためのステップバイステップの手順。

はじめに

また、このドキュメントをMicrosoft Wordドキュメントとしてダウンロードすることもできます。Coupa発注書からERP.docx

一般的なAPI設定に関する考慮事項

制限されたペイロード-フィールドとAPIフィルター

CoupaのAPIは、デフォルトで多くのデータを返します(たとえば、関連付けられたオブジェクトの完全なオブジェクト)。APIリターンペイロードは非常に大きく、したがって遅くなる可能性があります。これは、リソースの不必要な消費は言うまでもなく、余分なデータを必要としない顧客にとっては問題になる可能性があります。

物事を簡単にするために、Coupaには「フィールド」パラメーターとAPIフィルターの概念があり、オブジェクトのスキーマ全体とすべての関連付けの代わりに、制限されたJSONまたはXML応答を返します。

この記事で説明するユースケース

このドキュメントの前提は、ERPの発注書番号がCoupa発注書番号によって決まるということです。この記事では、Coupa発注書をERPに統合するための3つの異なるオプション(作成と更新の両方)について説明します。 

これらのオプションは、Coupaからインテグレーションを監視する方法を変更します。

3つのオプションでは、Coupa POはエクスポートフラグに基づいてERPにプッシュされます。

エラーが発生した場合、発注書の統合では、Coupa UIで発注書を手動で変更する必要があります。この変更によりエクスポートフラグがリセットされ、発注書は次の実行で考慮されます

ヒント

Coupaは、Coupaサポートに連絡し、このオプションを有効にすることをお勧めします。すべての変更に対してPO最終エクスポートをリセットします。この設定はUIにのみ適用されます。APIを使用した変更では、エクスポート済みのステータスは変更されません。

APIのための専用連携と連絡先の作成

オプション2と3では、次を作成する必要があります。

  1. 実装する各APIオーケストレーションの専用統合
    integration-01.png
  2. インテグレーションごとに1つまたは複数のインテグレーション連絡先があり、インテグレーションに失敗した場合はアラートが表示されます
    integration-02.png
ヒント

Coupaは、Coupaサポートに連絡し、このオプションを有効にすることをお勧めします。文書タイプ別インテグレーション履歴へのリンクを有効にする。この設定では、設定ページにリンクが追加され、ドキュメントタイプごとに完全な統合履歴が表示されます

オプション1:カスタムフィールドに基づいたシンプルなモニタリング

説明

このシナリオでは、各POに対して、1つまたは複数のPOヘッダーのカスタムフィールドに現在の統合ステータスを追加します。Integration Statusという名前のカスタムフィールドcf - integration - statusを追加しました。標準発注書データテーブルを使用して、次のURLでドキュメントの統合ステータスをフォローアップします。https ://<your instance hostname>/order_headers

po-integration-01.png

オーケストレーションダイアグラム

po-orchistration.png

手順/APIコールの詳細

手順1

ERPで作成/更新するCoupa発注書のリストと詳細を取得します。
選択基準には、エクスポートフラグPOステータスが含まれます。ERPでPOの更新を処理するには、
クエリパラメータshow_deleted_linesが必要になる場合があります

方法

取得

API

https :/// api<your instance hostname>/purchase_orders/

質問パラメータ

filter =<your API filter name>
offset = 10
exported = false
show_deleted_lines = true *
status [in] = issued, canceled, closed

サンプルURL

https :/// api<your instance hostname>/purchase_orders? filter =& offset<your API filter name> = 10 & exported = false&show_deleted_lines = true&status [in ]= issued, canceled, closed

クエリ本文のサンプル

該当なし

回答本文のサンプル

step-1.png

メモ

* = show_deleted_lines = trueはPO変更のためのものです

手順2

個々のPOをエクスポート済みとしてマーク

方法

プット

API

https :/// api<your instance hostname>/purchase_orders/<Purchase Order id>

質問パラメータ

exported = true
fields = [" id ", "exported "]

サンプルURL

https :/// api<your instance hostname>/purchase_orders<Purchase Order id> /? exported = true&fields =[" id "," exported "]

質問本文のサンプル

該当なし*

回答本文サンプル



{

	"id <Purchase Order id>":,

	"exported ": true

	}
メモ

*このコールでは、URLに「? exported = true」を含めると、ペイロードは必要ありません。そこでERPで発注書の作成/更新が行われます。
 

手順3

レポート用カスタムフィールドを更新する

方法

プット

API

https :/// api<your instance hostname>/purchase_orders/<Purchase Order id>

質問パラメータ

fields =[" id "," exported ",{" custom_fields ":{}}]

サンプルURL

https :/// api<your instance hostname>/purchase_orders<Purchase Order id> /? fields = [" id ", "exported ", {" custom_fields ": {}}]

質問本文のサンプル



{" custom - fields ": {

		"<your custom-field name>":"正常終了:POがERPに正しく複製されました"

}}

または



{" custom - fields ": {

		"<your custom-field name>":"エラー:POがERPに正しく複製されました"

}}

回答本文サンプル



{" id <Purchase Order id>":,

		"exported ": true,

		"custom - fields ": {

				"<your custom-field name>":"正常終了:POがERPに正しく複製されました"

}}

または



{" id <Purchase Order id>":,

		"exported ": true,

		"custom - fields ": {

				"<your custom-field name>":"エラー:POがERPに正しく複製されました"

}}

オプション2:インテグレーション履歴を使用した高度なモニタリング

説明

このシナリオでは、POごとに次のことを行います。

  • ドキュメントの以前の統合履歴レコードを解決する
  • 連携履歴記録を作成する
  • エラーが発生した場合に統合連絡先にアラートを作成する

各文書には、インテグレーション履歴の詳細が含まれています。

 po-history-01.png

po-history-02.png

標準PO連携履歴データテーブルを使用して、ドキュメントの連携ステータスをフォローアップします。この情報は、https :/// integration_history_records<your instance hostname>/purchase_ordersで確認できます。

po-int-records-01.png

レスポンスコードのフィルターを使用して、正常に複製されたドキュメントと失敗したドキュメントを区別することができます。

po-int-records-02.png

オーケストレーションダイアグラム

po-int-orchistration.png

手順/APIコールの詳細

手順1

ERPで作成/更新するCoupa発注書のリストと詳細を取得します。
選択基準には、エクスポートフラグPOステータスが含まれます。ERPでPOの更新を処理するには、
クエリパラメータshow_deleted_linesが必要になる場合があります

方法

取得

API

https :/// api<your instance hostname>/purchase_orders/

質問パラメータ

filter =<your API filter name>
offset = 10
exported = false
show_deleted_lines = true
status [in] = buyer_hold, issued, canceled, closed, soft_closed

サンプルURL

https :/// api<your instance hostname>/purchase_orders? filter =& offset = 10<your API filter name> & exported = false&show_deleted_lines = true&status [in ]= buyer_hold, issued, canceled, closed, soft_closed

質問本文のサンプル

該当なし

回答本文のサンプル

step-2.png

 

手順2

個々のPOをエクスポート済みとしてマーク

方法

プット

API

https :/// api<your instance hostname>/purchase_orders/<Purchase Order id>

質問パラメータ

exported = true
fields = [" id ", "exported "]

サンプルURL

https :/// api<your instance hostname>/purchase_orders<Purchase Order id> /? exported = true&fields =[" id "," exported "]

クエリ本文のサンプル

該当なし

回答本文サンプル



{

		"id <Purchase Order id>":,

		"exported ": true

}

ここで、ERPで発注書の作成/更新が行われます。

手順3 a

未解決の連携履歴記録を取得する

方法

取得

API

https :///api<your instance hostname>/integration_history_records

質問パラメータ

resolved = false
document -
type = OrderHeader document - id =<Purchase Order id>
fields = [" id "," document - id "," status "," resolved "]

サンプルURL

https :// api<your instance hostname>/integration_history_records? resolved = false&document - type = OrderHeader&document - id<Purchase Order id> =& fields = [" id ", "document - id "," status ", "resolved "]

質問本文のサンプル

該当なし

回答本文サンプル



[

		{

				"id <Old Integration History Record id>":,

				"document - id <Purchase Order id>":,

				"status ":"エラー",

				"RESOLVED ": FALSE

		}

]

手順3 b

以前の連携履歴記録を解決する

方法

プット

API

https ://<your instance hostname>/api/integration_history_records<Old Integration History Record id> // resolve

Query Params

fields = [" id ", "document - id "," status ", "resolved "]

サンプルURL

https :// api<your instance hostname>/integration_history_records<Old Integration History Record id> // resolve? fields = [" id ", "document - id "," status ", "resolved "]

質問本文のサンプル

該当なし

回答本文のサンプル



[

		{

				"id <Old Integration History Record id>":,

				"document - id <Purchase Order id>":,

				"status ":"エラー",

				"resolved ": true

		}

]

手順4 a

インテグレーション履歴の作成(成功)

方法

プット

API

https :///api<your instance hostname>/integration_history_records

Query Params

fields = [" id ", "document - id "," status "]

サンプルURL

https :///api<your instance hostname>/integration_history_records? fields = [" id ", "document - id "," status "]

質問本文のサンプル



{

		"document - type ":"OrderHeader ",

		"document - id <Purchase Order id>":,

		"document - status ":<Purchase Order status>"ドキュメントステータス",

		"contact - alert - type ":"機能的",

		"status ":"成功",

		"integration ": {" code<Customer Integration id> ": ""},

		"RESPONSES ": [

				{

						"response - code ":"Success -1234 ",

						"response - message ":「ERPへの統合はうまくいった」

				}

		]

}

回答本文のサンプル



{

		"id <New Integration History Record id>":,

		"document - id <Purchase Order id>":,

		"status ":"正常に完了しました"

}

手順4 b

インテグレーション履歴の作成(エラー)とインテグレーション連絡先へのアラート

方法

プット

API

https :///api<your instance hostname>/integration_history_records/create_alert

質問パラメータ

fields = [" id ", "document - id "," status "]

サンプルURL

https :///api<your instance hostname>/integration_history_records/create_alert? fields = [" id ", "document - id "," status "]

質問本文のサンプル



{

		"document - type ":"OrderHeader ",

		"document - id <Purchase Order id>":,

		"document - status ":<Purchase Order status>"ドキュメントステータス",

		"contact - alert - type ":"機能的",

		"status ":"エラー",

		"integration ": {" code<Customer Integration id> ": ""},

		"RESPONSES ": [

				{

						"response - code ":"Failure - CC ",

						"response - message ":"1行目:コストセンターCA 234は注文のため閉じられています"

				},

				{

						"response - code ":"失敗日",

						"response - message ":"Line 2:納期は過去にはできません」

				}

		]

}

回答本文のサンプル



{

		"id <New Integration History Record id>":,

		"document - id <Purchase Order id>":,

		"status ":"エラー"

}

オプション3 :Coupa統合の完全なモニタリングを活用

説明

このシナリオでは、インテグレーション実行を作成して

  • インテグレーションのステータス(保留中/開始済み/エラー/成功/失敗)
  • 処理されたPOの合計数
  • 成功とエラーの数
  • 統合エラーのリストとそのステータス(解決済みかどうか)

各POについて:

  • ドキュメントの以前の統合履歴レコードを解決する
  • 連携履歴記録を作成する
  • エラーが発生した場合は、統合エラーと統合連絡先へのアラートを作成します。

インテグレーションのすべてのインテグレーション実行は、https :/// integrations<your instance hostname><your integration id> // integration_runsで監視できます。

po-api-integration-01.png

標準PO統合エラーデータテーブルを使用して、統合エラーの解決保留中のすべてのPOを一覧表示します。: https ://<your instance hostname>/integration_errorsにあります
po-integration-errors.png

標準POインテグレーション履歴データテーブルを使用して、正常にインテグレーションされたすべてのPOを一覧表示します。次の場所にあります。https<your instance hostname> :/// integration_history_records/purchase_orders

po-integration-records.png
オーケストレーションダイアグラム

orchestration-3.png

手順/APIコールの詳細

手順1

連携実行の作成

方法

投稿

API

https ://<your instance hostname>/api/integration_runs

質問パラメータ

該当なし

質問本文のサンプル



{

		"integration ": {

				"code ": "{{ integration_code }}"

		}}

回答本文のサンプル



{

		"id <Integration Run ID>":,

		...

}

手順2

ERPで作成/更新するCoupa発注書のリストと詳細を取得します。
選択基準には、エクスポートフラグPOステータスが含まれます。ERPでPOの更新を処理するには、
クエリパラメータshow_deleted_linesが必要になる場合があります

方法

取得

API

https :/// api<your instance hostname>/purchase_orders/

質問パラメータ

filter =<your API filter name>
offset = 10
exported = false
show_deleted_lines = true
status [in] = buyer_hold, issued, canceled, closed, soft_closed

サンプルURL

https :/// api<your instance hostname>/purchase_orders? filter =& offset = 10<your API filter name> & exported = false&show_deleted_lines = true&status [in ]= buyer_hold, issued, canceled, closed, soft_closed

質問本文のサンプル

該当なし

回答本文のサンプル

step-3.png

手順3

連携実行を開始する

方法

プット

API

https ://<your instance hostname>/api/integration_runs<Integration Run ID> // run

質問パラメータ

該当なし

質問本文のサンプル



{

		"total_records ": <Total Number of POs from Step 2>

}

回答本文のサンプル



{

		"id <Integration Run ID>":,

		...

}

手順4

個々のPOをエクスポート済みとしてマーク

方法

プット

API

https :/// api<your instance hostname>/purchase_orders/<Purchase Order id>

質問パラメータ

exported = true
fields = [" id ", "exported "]

サンプルURL

https :/// api<your instance hostname>/purchase_orders<Purchase Order id> /? exported = true&fields =[" id "," exported "]

質問本文のサンプル

該当なし

回答本文のサンプル



{

		"id <Purchase Order id>":,

		"exported ": true

}

ここで、ERPで発注書の作成/更新が行われます。

手順5 a

未解決の連携履歴記録を取得する

方法

取得

API

https :///api<your instance hostname>/integration_history_records

質問パラメータ

resolved = false
document - type
= OrderHeader document - id =<Purchase Order id>
fields = [" id ", "document - id "," status ", "resolved "]

サンプルURL

https :// api<your instance hostname>/integration_history_records? resolved = false&document - type = OrderHeader&document - id<Purchase Order id> =& fields = [" id ", "document - id "," status ", "resolved "]

質問本文のサンプル

該当なし

回答本文サンプル



[

		{

				"id <Old Integration History Record id>":,

				"document - id <Purchase Order id>":,

				"status ":"エラー",

				"RESOLVED ": FALSE

		}

]

手順5 b

以前の連携履歴記録を解決する

方法

プット

API

https ://<your instance hostname>/api/integration_history_records<Old Integration History Record id> // resolve

Query Params

fields = [" id ", "document - id "," status ", "resolved "]

サンプルURL

https :// api<your instance hostname>/integration_history_records<Old Integration History Record id> // resolve? fields = [" id ", "document - id "," status ", "resolved "]

クエリ本文のサンプル

該当なし

回答本文サンプル



[

		{

				"id <Old Integration History Record id>":,

				"document - id <Purchase Order id>":,

				"status ":"エラー",

				"resolved ": true

		}

]

手順6 a

未解決のインテグレーションエラーレコードを取得する

方法

取得

API

https ://<your instance hostname>/api/integration_errors

質問パラメータ

resolved = false document -
type = OrderHeader document
- id =<Purchase Order id>

サンプルURL

https :///api<your instance hostname>/integration_errors? resolved = false&document - type = OrderHeader&document - id =<Purchase Order id>

質問本文のサンプル

該当なし

回答本文のサンプル



[

		{

				"id <Old Integration Error Record id>":,

				"document - type ":" OrderHeader ",

				"document - id <Purchase Order id>":,

				"status ":"エラー",

		"RESOLVED ": FALSE

		...

		}

]

手順6 b

以前の連携履歴記録を解決する

方法

プット

API

https ://<your instance hostname>/api/integration_errors<Old Integration Error Record id> // resolve

質問パラメータ

該当なし

質問本文のサンプル

該当なし

回答本文サンプル



[

		{

				"id <Old Integration Error Record id>":,

				"document - id <Purchase Order id>":,

				"status ":"エラー",

				"resolved ": true

				...

		}

]

手順7 a

インテグレーション履歴の作成(成功)インテグレーション
実行を参照する必要があります

方法

プット

API

https :///api<your instance hostname>/integration_history_records

Query Params

fields = [" id ", "document - id "," status "]

サンプルURL

https :///api<your instance hostname>/integration_history_records? fields = [" id ", "document - id "," status "]

クエリ本文のサンプル



{

		"document - type ":"OrderHeader ",

		"document - id <Purchase Order id>":,

		"document - status ":<Purchase Order status>"ドキュメントステータス",

		"contact - alert - type ":"機能的",

		"status ":"成功",

		"integration ": {" code<Customer Integration id> ": ""},

		"integration - run ":<Integration Run ID> {" id ":},

		"RESPONSES ": [

				{

						"response - code ":"Success -1234 ",

						"response - message ":「ERPへの統合はうまくいった」

				}

		]}

回答本文のサンプル



{

		"id <New Integration History Record id>":,

		"document - id <Purchase Order id>":,

		"status ":"正常"

}

手順7 b

インテグレーションエラーの作成とインテグレーション連絡先へのアラート
インテグレーション実行を参照する必要があります

方法

プット

API

https :///api<your instance hostname>/integration_errors/create_alert

Query Params

該当なし

クエリ本文のサンプル



{

		"document - type ":"OrderHeader ",

		"document - id <Purchase Order id>":,

		"document - status ":<Purchase Order status>"ドキュメントステータス",

		"contact - alert - type ":"機能的",

		"status ":"エラー",

		"integration - run - id ":<Integration Run ID>"統合実行ID ",

		"RESPONSES ": [

				{

						"response - code ":"Failure - CC ",

						"response - message ":"1行目:コストセンターCA 234は注文のため閉じられています"

				},

				{

						"response - code ":"失敗日",

						"response - message ":"Line 2:納期は過去にはできません」

				}

		]

}

回答本文のサンプル



{

		"id <New Integration Error Record id>":,

		"document - id <Purchase Order id>":,

		"status ":"エラー"

		 ...

}

手順8

連携実行が正常に終了しました

方法

プット

API

https ://<your instance hostname>/api/integration_runs<Integration Run ID> // success

質問パラメータ

該当なし

質問本文のサンプル

該当なし

回答本文のサンプル



{

		"id <Integration Run ID>":,

		"STATUS ":"成功"

		...

}

インテグレーション実行中に一般的な障害が発生した場合

ステップx

インテグレーション実行の失敗を報告する

方法

プット

API

https ://<your instance hostname>/api/integration_runs<Integration Run ID> // fail

Query Params

該当なし

クエリ本文のサンプル

該当なし

回答本文のサンプル



{

		"id <Integration Run ID>":,

		"STATUS ":"失敗"

		...

}

 

関連アイテム


Coupa Core API

CoupaのRESTful APIは、お客様のデータをCoupaプラットフォームで読み取り、編集し、統合するための堅牢なアクセスを提供します。

APIの開始

Coupa APIの使用に関する一般情報、およびCSVの使用を検討するタイミング。

OAuth 2.0およびOIDCへの移行

Coupaは従来のAPIキーを廃止し、OAuth 2.0 / OIDCの使用を必要としています。R34以降、新しいAPIキーは発行されず、R35ではAPIキーはサポートされなくなります。

リソース

参照データ、トランザクションデータ、共有リソースなど、オブジェクトのタイプ別にAPIエンドポイントを整理しました。