SAP Concurをデータパイプラインソースとして設定する
SAP Concurをデータパイプラインソースとして設定し、SAP Concur APIから経費レポート、請求書、ユーザー、リスト、および関連する出張と経費のレコードを抽出して送信先に同期します。
このガイドを使用して、機能と前提条件の確認、SAP Concur認証情報の生成、SAP Concurのデータパイプラインソースとしての接続、パイプラインの設定を行い、サポートされるオブジェクト、同期モード、スキーマ処理、機密データ処理、制限事項について理解します。
サポートされている機能
SAP Concurをパイプラインソースとして使用する場合、次の機能がサポートされます。
- クラウド接続: https経由でSAP Concur APIに接続します。 SAP Concurはクラウドホスト型プラットフォームであるため、オンプレミスエージェントは不要です。 コネクターは各リクエストを、割り当てられたSAP Concurデータセンターに自動的にルーティングします。
- プロダクションとサンドボックスのサポート: 実装インスタンス設定を使用して、プロダクションインスタンスまたは実装(サンドボックス)インスタンスに接続します。
- オブジェクトレベルの選択: パイプラインを設定するときに、同期するサポート対象オブジェクトを選択します。
- 同期モード:
report、payment_request、travel_requestオブジェクトは増分同期されます。 その他のすべてのオブジェクトはフル同期を使用します。 - 削除追跡: オブジェクトの一部には、ソース駆動の論理削除シグナルがあります。 完全同期オブジェクトは、送信先側のスナップショット比較を通じて削除を反映します。
- スキーマドリフト処理: ソースで新しく追加されたフィールドを自動同期するかブロックするかを選択します。
- フィールドレベルのデータ保護:転送先に到達する前に、フィールド値をそのままレプリケートするか、機密値をハッシュ化します。
- 設定可能な同期頻度:時間ベースまたはcronベースのスケジュールで同期をスケジュールします。 最小間隔は15分です。
前提条件
SAP Concurをデータパイプラインソースとして設定する前に、次の要件を満たしてください。
- 同期する予定のモジュールのライセンスが付与されたSAP Concurアカウント。 SAP Concurでは、Expense、Invoice、Travel、Requestが個別のモジュールとしてライセンス付与されます。 詳細については、モジュールライセンスを参照してください。
- SAP Concur内のOAuth 2.0アプリケーション。クライアントIDとクライアントシークレット、および最低限
EXPRPTスコープが必要です。 設定手順については、OAuth 2.0アプリケーションを作成するを参照してください。 - 選択した認証方法の認証情報:
- 認可コード付与: ブラウザーのサインインフローを通じてコネクションを認可できるSAP Concurユーザーに加え、クライアントIDとクライアントシークレットを保存するWorkatoのCustom OAuth profiles。
- パスワード付与: SAP Concurのユーザー名とパスワードに加え、OAuthアプリケーションのクライアントIDとクライアントシークレット。
- リフレッシュトークン付与: 会社リクエストトークンから生成されたリフレッシュトークンに加え、OAuthアプリケーションのクライアントIDとクライアントシークレット。
コネクションタイプによってオブジェクトの可用性が決まります
選択した認証タイプによって、コネクションがユーザー型か会社型かが設定されるため、コネクションで同期できるオブジェクトが決まります。 ユーザー型コネクションではuserオブジェクトを同期できず、会社型コネクションではpayment_typeオブジェクトを同期できません。 詳細については、コネクションタイプによってオブジェクトの可用性が決まりますを参照してください。
サポートされるコネクションタイプ
SAP Concurデータパイプラインでは、次の付与タイプによるOAuth 2.0認証がサポートされます。
- 認可コード付与: SAP Concurのブラウザーサインインフローを通じてコネクションを認可します。 Workatoにユーザー名とパスワードを保存せずに、サインインユーザーとして認証するには、この方法を選択します。
- パスワード付与: SAP Concurのユーザー名とパスワードに加え、OAuthアプリケーションのクライアントIDとクライアントシークレットを使用して認証します。 パスワード付与コネクションはユーザー型です。
payment_typeオブジェクトを同期するには、この方法を使用します。 - リフレッシュトークン付与: 会社リクエストトークンから生成されたリフレッシュトークンに加え、OAuthアプリケーションのクライアントIDとクライアントシークレットを使用して認証します。 リフレッシュトークン付与コネクションは会社型です。
userオブジェクトを同期するには、この方法を使用します。
コネクションのトークンタイプによって、同期できるオブジェクトが決まります。 userとpayment_typeの両方を同期できる単一のコネクションはありません。 詳細については、コネクションタイプによってオブジェクトの可用性が決まりますを参照してください。
SAP Concurに接続する
SAP Concurに接続するには、次の手順を実行します。
SAP Concurに接続する
SAP Concurコネクターでは、次のOAuth 2.0認証タイプがサポートされています。
必須スコープ
SAP Concurに接続する際は、EXPRPTスコープを追加する必要があります。 このスコープがない場合、SAP ConcurはForbidden Requestエラーを返します。
OAuth 2.0アプリケーションの作成
すべての認証方法で、SAP ConcurインスタンスにOAuth 2.0アプリケーションが必要です。 OAuth 2.0アプリケーションを作成するには、次の手順を完了するか、OAuth 2.0 Application Management Toolドキュメントを参照してください:
管理者資格情報を使用してSAP Concurインスタンスにサインインします。
Administration > Company > Authentication Adminに移動します。
メニューからOAuth 2.0 Application Managementを選択します。
Create new appをクリックします。
App Nameフィールドに、Workato Integrationなど、アプリケーションを説明する名前を入力します。
App Descriptionフィールドにアプリケーションの説明を入力します。
App Stageフィールドで環境を選択します。 Development、テスト、またはプロダクションを選択します。
Application Typeフィールドでアプリケーションタイプを選択します。 Web Services (WS) ClientまたはIntegration with Concur Solutions (ICS) Clientを選択します。
Allowed Grantsフィールドで、インテグレーションに必要なgrantを選択します。 password grant認証またはrefresh token grant認証の場合はpasswordとrefresh_tokenを選択し、authorization code grant認証の場合はauthorization_codeを選択します。
authorization code grant認証の場合は、Redirect URIsフィールドにhttps://www.workato.com/oauth/callbackを入力します。 このフィールドは、authorization_codeを選択した場合にのみ表示されます。
インテグレーションで許可するスコープを設定します。 少なくともEXPRPTを含める必要があります。 使用する予定のトリガーとアクションで必要な追加スコープを確認するには、トリガーとアクション別の必須スコープセクションを参照してください。
または、Enter Manuallyをクリックし、次のスコープをコピーして貼り付けることで、コネクターのすべての機能を有効にできます。
ATTEND
CONFIG
expense.report.read
expense.report.readwrite
EXPRPT
identity.user.core.read
identity.user.coreenterprise.writeonly
identity.user.coresensitive.read
identity.user.enterprise.read
identity.user.externalID.writeonly
identity.user.ids.read
identity.user.sap.read
IMAGE
INVPMT
INVVEN
LIST
openid
spend.list.read
spend.list.write
spend.listitem.delete
spend.listitem.read
spend.listitem.write
spend.user.general.read
spend.user.general.writeonly
travel.user.general.read
travel.user.private.read
user.provision.read
user.provision.write
user.read
user.writeSubmitをクリックします。
Client IDとClient Secretを安全な場所に記録します。 これらの値は、Workatoでコネクションを確立するために必要です。
資格情報の保存
クライアントシークレットは一度だけ表示されます。 client secretを紛失した場合は、client secretを再生成するか、新しいアプリケーションを作成する必要があります。
リフレッシュトークングラント
プロダクションインスタンスには、refresh token grant認証方法を使用します。 リフレッシュトークン資格情報を受け取るには、Concurアカウントマネージャーにお問い合わせください。
会社リクエストトークンの生成
company request tokenは、管理者が外部アプリをSAP Concurに接続するために使用する、一時的な1回限りの認証パスワードです。
会社リクエストトークンを生成するには、次の手順を実行します。
SAP Concur管理パネルに移動し、Administration > Company > Authentication Adminをクリックします。
メニューからCompany Request Tokenを選択します。
前のセクションで作成したOAuthアプリケーションのApp ID(Client ID)を入力します。
Submitをクリックします。
成功ダイアログに表示される次の情報を記録します。
- Company UUID: 会社の一意の識別子。
- Company Request Token: 24時間で有効期限が切れる一時トークン。
トークンの有効期限
会社リクエストトークンは24時間後に有効期限が切れます。 24時間以内に次の手順を完了しない場合は、トークンを再生成する必要があります。
OKをクリックしてダイアログを閉じます。
リフレッシュトークンの取得
会社リクエストトークンを使用してリフレッシュトークンを取得するには、次の手順を実行します。
PostmanやcURLなど、任意のAPIクライアントを開きます。
SAP Concur Environmentに一致するエンドポイントを使用して、SAP Concur OAuth2トークンリソースへのPOSTリクエストを作成します。
- プロダクション:
https://us.api.concursolutions.com/oauth2/v0/token - 実装(テスト):
https://us-impl.api.concursolutions.com/oauth2/v0/token
x-www-form-urlencoded形式で、次のパラメーターを使用してリクエスト本文を設定します:
- client_id: OAuthアプリケーションのClient ID
- client_secret: OAuthアプリケーションのClient Secret
- username: Company Request TokenステップのCompany UUID
- password: Company Request TokenステップのCompany Request Token
- grant_type:
password - credtype:
authtoken
Postman設定の例:
Postman設定
リクエストを送信します。
refresh_token値を安全な場所に記録します。 この値は、WorkatoでSAP Concurコネクションを確立するために必要です。
リフレッシュトークングラントを使用したSAP Concurへの接続
リフレッシュトークングラント認証を使用してSAP Concurに接続するには、次の手順を実行します。
作成 > コネクションをクリックするか、Cを2回押します。
SAP Concurを検索し、アプリとして選択します。
コネクション名フィールドにコネクションの名前を入力します。 このコネクションに、接続先のSAP Concurインスタンスを識別できる一意の名前を付けます。
SAP Concurへの接続
最初のLocationドロップダウンメニューを使用して、コネクションを保存するプロジェクトまたはフォルダを選択します。
Implementation instanceドロップダウンメニューを使用して、Concur実装サーバーに接続するかどうかを選択します。 実装サーバーに接続する場合は、Yesを選択します。 既存のコネクションでは、デフォルトでNoになります。
Authentication typeドロップダウンメニューを使用して、Refresh token grantを選択します。
2つ目のLocationドロップダウンメニューを使用して、Concur実装サーバーの場所を選択します。
アプリケーションのclient IDをClient IDフィールドに入力します。
アプリケーションのclient secretをClient secretフィールドに入力します。
アプリケーションのrefresh tokenをRefresh tokenフィールドに入力します。
接続をクリックします。
パスワードグラント
サンドボックスインスタンスには、password grant認証方法を使用します。
パスワードグラントを使用したSAP Concurへの接続
パスワードグラント認証を使用してSAP Concurに接続するには、次の手順を実行します。
作成 > コネクションをクリックするか、Cを2回押します。
SAP Concurを検索し、アプリとして選択します。
コネクション名フィールドにコネクションの名前を入力します。 このコネクションに、接続先のSAP Concurインスタンスを識別できる一意の名前を付けます。
SAP Concurへの接続
最初のLocationドロップダウンメニューを使用して、コネクションを保存するプロジェクトまたはフォルダを選択します。
Implementation instanceドロップダウンメニューを使用して、Concur実装サーバーに接続するかどうかを選択します。 実装サーバーに接続する場合は、Yesを選択します。 既存のコネクションでは、デフォルトでNoになります。
Authentication typeドロップダウンメニューを使用して、Password grantを選択します。
SAP ConcurのUsernameを入力します。
SAP ConcurのPasswordを入力します。
2つ目のLocationドロップダウンメニューを使用して、Concur実装サーバーの場所を選択します。
アプリケーションのClient IDを入力します。
アプリケーションのClient secretを入力します。
接続をクリックします。
認可コードグラント
対話型OAuthログインフローを使用してSAP Concurで認証するには、authorization code grant認証方法を使用します。
Verified User Access (VUA)を使用する予定の場合は、authorization code grant認証が必要です。 VUAは、APIキー、basic auth、その他のOAuth 2.0フローを含む他のgrantタイプと互換性がありません。
このオプションには、SAP Concurクライアント資格情報で設定されたcustom OAuth profileが必要です。
custom OAuth profileの設定
認可コードグラント認証には、Workatoのcustom OAuth profileが必要です。 プロファイルにはSAP Concurクライアント資格情報が保存され、コネクションを完了するために必要です。 custom OAuth profileなしで認可コードグラントを選択した場合、またはプロファイルにクライアントIDまたはクライアントシークレットがない場合、Workatoはエラーを返します。
custom OAuth profileを作成するには、次の手順を実行します。
ツール > Custom OAuth profilesに移動します。
+ 新規カスタムプロファイルをクリックします。
SAP Concurを検索し、アプリとして選択します。
プロファイルの名前を入力します。
作成したOAuthアプリケーションのClient IDおよびClient secretを入力します。
保存をクリックします。
最小スコープとデフォルトスコープ
SAP Concur OAuthアプリに、コネクション設定でリクエストするすべてのスコープが含まれていることを確認します。 リクエストしたスコープがOAuthアプリで有効になっていない場合、コネクションは400 Bad Requestエラーで失敗します。
最小必須スコープは、openid、user.read、EXPRPTです。 OAuthアプリに、これらの最小スコープが設定されていることを確認します。 Scopesフィールドを空白のままにすると、Workatoは次のデフォルトスコープをリクエストします:
openiduser.readuser.writeEXPRPTexpense.report.readexpense.report.readwriteLISTspend.list.readspend.list.writespend.listitem.readspend.listitem.writespend.listitem.deleteIMAGEATTENDCONFIGINVPMTINVVENidentity.user.core.readidentity.user.coresensitive.readidentity.user.enterprise.readidentity.user.coreenterprise.writeonlyidentity.user.externalID.writeonlyidentity.user.ids.readuser.provision.readuser.provision.writespend.user.general.readspend.user.general.writeonlytravel.user.general.read
認可コードグラントを使用したSAP Concurへの接続
認可コードグラントを使用してSAP Concurに接続するには、次の手順を実行します。
作成 > コネクションをクリックするか、Cを2回押します。
SAP Concurを検索し、アプリとして選択します。
コネクション名フィールドにコネクションの名前を入力します。
SAP Concurへの接続
最初のLocationドロップダウンメニューを使用して、コネクションを保存するプロジェクトまたはフォルダを選択します。
コネクションタイプドロップダウンメニューを使用して、このコネクションがクラウドかオンプレミスかを指定します。
Implementation instanceドロップダウンメニューを使用して、Concur実装サーバーに接続するかどうかを指定します。 実装サーバーに接続する場合は、Yesを選択します。 デフォルトはいいえです。
Authentication typeドロップダウンメニューを使用して、Authorization code grantを選択します。
2つ目のLocationドロップダウンメニューを使用して、Concur実装サーバーの場所を選択します。
任意です。 Advanced settingsを展開し、Scopesドロップダウンメニューを使用してOAuth 2.0スコープを選択します。 要件については、最小およびデフォルトスコープを参照してください。
Custom OAuth profileドロップダウンメニューを使用して、SAP Concurクライアント資格情報で設定されたcustom OAuth profileを選択します。
接続をクリックします。 SAP Concurにリダイレクトされ、サインインしてアクセスを認可します。
パイプラインの設定
SAP Concurをデータパイプラインソースとして設定するには、次の手順を実行します。
作成 > データパイプラインを選択します。
データパイプライン名フィールドにデータパイプラインの名前を入力します。
データパイプライン設定
ロケーションドロップダウンメニューを使用して、データパイプラインを保存するプロジェクトを選択します。
ビルドを開始をクリックします。
ソースアプリから新規/更新済みレコードを抽出トリガーをクリックします。 このトリガーは、パイプラインがSAP Concurからデータを取得する方法を定義します。
接続済みソースアプリドロップダウンメニューを使用して、SAP Concurを選択します。
このパイプラインで使用するSAP Concurコネクションを選択します。 または、+ 新規コネクションをクリックして新しいコネクションを作成します。
オブジェクトを追加をクリックして、新しいオブジェクトを追加パネルを開きます。
オブジェクトを追加
利用可能なSAP Concurオブジェクトのリストを検索または参照し、同期するオブジェクトを選択して、追加をクリックします。
オブジェクトの可用性はコネクションによって異なります
選択可能なオブジェクトは、コネクションのトークンタイプによって異なります。 ユーザー型コネクションではuserオブジェクトがリストされず、会社型コネクションではpayment_typeオブジェクトがリストされません。 詳細については、コネクションタイプによってオブジェクトの可用性が決まりますを参照してください。
選択した各オブジェクトのスキーマを確認してカスタマイズします。 パイプラインは、同期先がソースと一致するように、選択したオブジェクトのスキーマを自動的に取得します。
任意のオブジェクトを展開して、そのフィールドを表示します。 使用可能なすべてのデータを抽出するにはすべてのフィールドを選択したままにし、データ抽出とスキーマレプリケーションから除外するには特定のフィールドの選択を解除します。
任意です。 オブジェクトを展開し、各フィールドの処理方法を選択して、フィールドレベルのデータ保護を設定します。
- そのまま複製: ソースのデータ値が宛先に同一に複製されます。
- ハッシュ: 宛先に同期する前に、フィールド内の機密データ値をハッシュ化します。
Workatoでは、個人を特定できる情報(PII)やその他の機密フィールドをハッシュ化することを推奨します。 PIIが一般的に含まれるフィールドのリストについては、機密データの処理を参照してください。
さらにオブジェクトを追加するには、もう一度オブジェクトを追加をクリックします。 この手順を繰り返して、追加のSAP Concurオブジェクトをパイプラインに含めます。
スキーマ変更の処理方法を選択ドロップダウンメニューを使用して、スキーマドリフトの処理オプションを選択します。
- 新しいフィールドを自動同期: ソースに追加された新しいフィールドを自動的に検出して同期します。
- 新しいフィールドをブロック: パイプラインの開始後、スキーマを固定します。 新しいフィールドは手動で追加する必要があります。
SAP Concurでは、テナントごとにカスタムフィールド設定が異なり、顧客が時間の経過とともにカスタムフィールドを追加するため、Workatoでは新しいフィールドを自動同期を推奨しています。
パイプラインがSAP Concurから送信先にデータを同期する頻度を決定するには、標準の時間ベースのスケジュールを選択するか、頻度フィールドでカスタムcron式を定義します。
サポートされるオブジェクト
SAP Concurデータパイプラインは、SAP Concur Expense、Invoice、Request、Identity、Lists、Common Locations APIからデータを同期します。 各オブジェクトは、宛先内の個別のテーブルとして同期されます。 子オブジェクトは、個別の正規化テーブルとして同期されます。 各子テーブルは単一列のid主キーを使用し、payment_request_lineのpayment_request_idやlist_itemのlist_idなどの親参照列を保持します。 子テーブルを親に関連付けるには、親参照列で結合します。
次の表は、サポートされるオブジェクトをカテゴリ別に示しています。
経費レポートと経費
次のオブジェクトは、経費レポートと、それに添付された経費エントリ、配賦、明細化、出席者を表します。 expense_entry、allocation、itemization、entry_attendee_associationオブジェクトは経費レポート構造の子レコードであり、テナントスコープで抽出され、個別のテーブルとして同期されます。 これらのオブジェクトにはExpenseモジュールが必要です。
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
report | 増分 | いいえ | 経費レポートヘッダー。 所有者フィールドと承認者フィールドにPIIを含みます。 |
expense_entry | Full sync | はい(宛先で推定) | 個別の経費明細エントリ。 説明フィールドにPIIを含みます。 構造化カスタムフィールドを保持します。 |
allocation | Full sync | はい(宛先で推定) | 経費エントリのコスト配賦。 |
itemization | Full sync | はい(宛先で推定) | 経費エントリの明細化された詳細。 |
attendee | Full sync | はい(宛先で推定) | 経費に関連付けられた出席者。 PIIを含みます。 |
attendee_type | Full sync | はい(ソフト) | 出席者タイプ参照データ。 |
entry_attendee_association | Full sync | はい(宛先で推定) | 経費エントリを出席者にリンクする結合レコード。 |
経費設定
次のオブジェクトは、SAP Concurテナントの経費設定参照データを表します。
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
payment_type | Full sync | はい(ソフト) | 支払タイプ参照データ。 パスワード付与(ユーザー型)コネクションが必要です。 |
expense_group_configuration | Full sync | はい(宛先で推定) | 経費グループ設定参照データ。 |
請求書とベンダー
次のオブジェクトは、支払リクエスト(請求書)とベンダーマスターデータを表します。 これらのオブジェクトにはInvoiceモジュールが必要です。 ベンダーの銀行、グループ、ステータスのオブジェクトは、ベンダーレスポンスを通じて抽出されます。 payment_requestオブジェクトは増分同期されますが、payment_request_lineは実行ごとに完全に再読み込みされます。
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
vendor | Full sync | はい(宛先で推定) | ベンダーマスターレコード。 機密性の高い財務データを含みます。 |
vendor_bank | Full sync | はい(宛先で推定) | ベンダー銀行詳細。 マスクされた銀行口座番号とルーティング番号を含みます。 vendorレスポンスを通じて抽出されます。 |
vendor_group | Full sync | はい(宛先で推定) | ベンダーグループの割り当て。 vendorレスポンスを通じて抽出されます。 |
vendor_status | Full sync | はい(宛先で推定) | ベンダーステータスレコード。 vendorレスポンスを通じて抽出されます。 |
vendor_bank_status | Full sync | はい(宛先で推定) | ベンダー銀行ステータスレコード。 vendorレスポンスを通じて抽出されます。 |
payment_request | 増分 | はい(ソフト) | 請求書支払リクエスト。 ネイティブの削除フィールドを保持します。 |
payment_request_line | Full sync | はい(宛先で推定) | 各支払リクエストの明細項目詳細。 親payment_requestオブジェクトを通じて抽出されます。親のソース側削除フィールドは継承されません。 |
出張リクエスト
次のオブジェクトは出張リクエストを表します。 これにはRequestモジュールが必要です。
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
travel_request | 増分 | いいえ | 出張リクエストレコード。 |
リスト
次のオブジェクトは、カスタムリストとその項目を表します。
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
リスト | Full sync | はい(ソフト) | カスタムリスト定義。 |
list_item | Full sync | はい(ソフト) | 各カスタムリスト内の項目。 listレスポンスを通じて抽出されます。 |
ユーザー
usersオブジェクトは、SAP Concur Identity(SCIM)APIからのユーザーIDレコードを表します。
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
user | Full sync | はい(ソフト) | ユーザーIDレコード。 大量のPIIを含みます。 リフレッシュトークン付与(会社型)コネクションが必要です。 削除は、反転されたactiveステータスから派生します。 |
ロケーション
locationsオブジェクトはロケーション参照データを表します。
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
場所 | Full sync | はい(宛先で推定) | ロケーション参照データ。 |
同期モード
SAP Concurデータパイプラインでは、完全同期と増分同期がサポートされます。 同期モードは、そのオブジェクトについてSAP Concur APIが使用可能な変更時刻フィルターを公開しているかどうかに基づいて、オブジェクトごとに固定されます。
フル同期
完全同期は、実行ごとにオブジェクトの完全なレコードセットを再抽出し、送信先テーブルを上書きします。 ほとんどのSAP Concurオブジェクトは完全同期を使用します。これは、それらのオブジェクト用のSAP Concur APIが変更時刻フィルターを公開していないためです。 これにはuserオブジェクトが含まれます。SAP Concur Identity APIは最終変更日でフィルタリングできないためです。
増分同期
増分同期は、各オブジェクトの最終変更タイムスタンプをカーソルとして使用し、前回の実行以降に作成または更新されたレコードのみを抽出します。 3つのオブジェクトが増分同期されます。
| オブジェクト | カーソル列 |
|---|---|
report | last_modified_date |
payment_request | last_modified_date |
travel_request | last_modified |
その他すべてのオブジェクトは完全同期を使用します。これは、それらのオブジェクト用のSAP Concur APIが使用可能な変更時刻フィルターを公開していないためです。 各オブジェクトの同期モードを確認するには、サポートされるオブジェクトの表を参照してください。
削除追跡
SAP Concurデータパイプラインは、ソース内で削除シグナルを公開するオブジェクトの論理削除を追跡します。 レコードが削除状態になると、次回の同期時にパイプラインは送信先の_workato_is_deleted列をtrueに設定します。 これらのオブジェクトは、サポートされるオブジェクト表ではい(論理)とマークされています。
| オブジェクト | 削除される条件 |
|---|---|
payment_request | 支払リクエストがSAP Concurで削除済みとしてマークされた場合 |
user | ユーザーがSAP Concurで無効化された場合 |
attendee_type, payment_type, list, list_item | レコードがSAP Concurで削除済みとしてマークされた場合 |
これらのオブジェクトには、直接クエリできるSAP Concur削除フィールドも含まれます。attendee_type、payment_type、list、list_itemのis_deleted、およびpayment_requestのis_payment_request_deleted、deleted_date、payment_request_deleted_byです。
SAP Concurは、残りのオブジェクトに対して削除シグナルを公開していません。 これらのオブジェクトは完全同期を使用するため、送信先は各実行を前回の実行と比較して削除を検出し、ソースに表示されなくなったレコードについて_workato_is_deletedをtrueに設定します。
reportオブジェクトとtravel_requestオブジェクトは、この処理の例外です。 reportオブジェクトとtravel_requestオブジェクトはいずれも、SAP Concurが削除シグナルを公開しないまま増分同期されます。つまり、_workato_is_deleted列は含まれず、パイプラインはこれらのオブジェクトの削除を検出できません。
payment_request_lineオブジェクトには、独自のソース側削除シグナルがありません。 完全同期でも、実行間で消えた明細行を検出します。 SAP Concurが削除済みとしてマークした支払リクエストに属する明細行が残っている場合、payment_request_lineをpayment_request_idでpayment_requestに結合し、親の削除状態でフィルタリングすることで、その明細行を特定できます。
スキーマとデータ型の処理
SAP Concurコネクターは、データを送信先にレプリケートする際に、特定のSAP Concurフィールドタイプに固有の処理を適用します。
カスタムフィールド
SAP Concurオブジェクトには、カスタムフィールドスロットが含まれます。 スロット数と各スロットの形状はオブジェクトによって異なります。
report、expense_entry、itemization、allocation、travel_requestでは、カスタムフィールドは構造化オブジェクトです。 コネクターは各スロットをJSON文字列列として保存します。attendee、entry_attendee_association、payment_request、payment_request_line、vendorでは、カスタムフィールドはフラットな文字列です。
オブジェクトごとのスロット数は次のとおりです。
| オブジェクト | カスタムフィールドスロット |
|---|---|
entry_attendee_association | custom1~custom5 |
report, expense_entry, allocation, vendor, travel_request, payment_request_line | custom1~custom20 |
payment_request | custom1~custom24 |
attendee | custom1~custom25 |
itemization | custom1~custom40 |
カスタムフィールドラベルは、SAP Concurでテナントごとに定義されます。 コネクターは、テナント固有のラベルではなく、正規のcustom1からcustomNまでの列名を出力します。
ネストされたオブジェクトと子オブジェクト
SAP Concurコネクターは、子レコードを親レコードにインライン化するのではなく、個別のテーブルとして出力します。 各子テーブルは単一列のid主キーを使用し、親参照列を含みます。 レコード内に残る深くネストされた配列は、JSON文字列列としてシリアル化されます。
テナントごとのスキーマ可変性
SAP ConcurではExpense、Invoice、Requestモジュールが個別にライセンス付与され、各テナントが独自のカスタムフィールドを定義するため、オブジェクトの可用性とカスタムフィールドラベルはテナントごとに異なります。 コアオブジェクトスキーマはテナント間で一貫しています。
合成列
Workatoは、宛先テーブルに次の合成列を追加します:
| 列 | タイプ | 目的 |
|---|---|---|
_workato_is_deleted | ブール値 | ソースに存在しなくなった、または削除されたレコードをマークします。 完全同期モードで同期するすべてのオブジェクトに追加されます。 SAP Concurが削除シグナルを公開している場合にのみ、増分同期オブジェクトに追加されます。 |
_workato_run_id | 文字列 | 最後に行を書き込んだパイプライン実行を識別します。 送信先はこれを使用して、SAP Concurに存在しなくなった行を検出します。 |
_workato_synced_at | タイムスタンプ | パイプラインが最後に宛先へ行を書き込んだ時刻。 |
送信先での列名の大文字小文字
宛先は、テーブルを作成するときに列名の大文字と小文字を調整します。 Snowflakeは列名を大文字で保存し、ほとんどの宛先は小文字で保存します。BigQueryとSQL Serverは、コネクターが出力したとおりに保持します。
機密データの処理
SAP Concurオブジェクトには、個人を特定できる情報(PII)と機密性の高い財務データが含まれる場合があります。 次のオブジェクトには、一般的に機密フィールドが含まれます:
| オブジェクト | 機密フィールド |
|---|---|
user | user_name, name_given_name, name_family_name, name_formatted, name_legal_name, date_of_birth, emails, phone_numbers, addresses, emergency_contacts, enterprise_employee_number, sap_user_uuid |
report | owner_name, owner_login_id, approver_name, approver_login_id |
expense_entry | vendor_description, location_name, description |
attendee | first_name, last_name, company, title |
vendor | vendor_name, tax_id, provincial_tax_id, address1, address2, address3, contact_email, contact_first_name, contact_last_name, contact_phone_number |
vendor_bank | bank_name, account_number, routing_number, name_on_account |
SAP Concurは、userオブジェクトのメールアドレスと電話番号を配列として返します。コネクターはこれらを、たとえばemailsやphone_numbersなどのJSON文字列列として保存します。 単一のプライマリメール列はありません。
パイプライン設定中にフィールドレベルのデータ保護でHashオプションを使用し、PIIが宛先に到達する前に保護します。 詳細については、パイプラインを構成手順を参照してください。
制限事項
SAP Concurをデータパイプラインソースとして使用する場合、次の制限事項が適用されます。
モジュールライセンス
SAP Concurでは、Expense、Invoice、Travel、Requestが個別のモジュールとしてライセンス付与されます。 アカウントは、ライセンス付与されているモジュールのオブジェクトのみを同期できます。 アカウントにライセンス付与されていないモジュールのオブジェクトを選択すると、パイプラインは権限エラーを返します。 Invoice、Travel、Requestカテゴリのオブジェクトを追加する前に、モジュールライセンスを確認してください。
コネクションタイプによってオブジェクトの可用性が決まります
SAP Concurコネクションは単一のトークンタイプを使用します。これにより、コネクションがデータの同期に使用できるオブジェクトが決まります。
- ユーザー型コネクションは
payment_typeオブジェクトを同期できますが、userオブジェクトは同期できません。 パスワード付与はユーザー型コネクションを生成します。 - 会社型コネクションは
userオブジェクトを同期できますが、payment_typeオブジェクトは同期できません。 リフレッシュトークン付与は会社型コネクションを生成します。
単一のコネクションでuserとpayment_typeの両方を同期することはできません。 userとpayment_type用に個別のコネクションを作成し、両方のオブジェクトを同期するには、これらのコネクションを個別のパイプラインで使用する必要があります。
最小同期頻度
サポートされる最小同期間隔は15分です。 これより高い頻度で同期をトリガーすることはできません。
最終更新日: