フローを設計する
学習の目的
この単元を完了すると、次のことができるようになります。
- フローの設計の準備をする。
- Salesforce で新規作成または更新された取引先を NetSuite の顧客に自動的に同期するフローを設定する。
フローの設計の準備をする
「MuleSoft Composer の基本」で説明したように、フローはシステムとデータを統合するために組み合わせて設定する一連のステップです。フローを設計する前に、フローで実行する必要があるタスクを、フローコンポーネント形式にした適切なステップにマップする必要があります。一連の流れを紙に描き出すと、どのようなフローになるか把握しやすくなります。
このフローの設計での最大の課題は、シンプル項目のみを含む Salesforce の取引先オブジェクトのデータを、シンプル項目とリスト項目の組み合わせを含む NetSuite の顧客エンティティにマップすることです。
具体的には、Salesforce の取引先オブジェクトでは、シンプル項目の 2 つの論理グループを使用して、各取引先の複数のアドレスが処理されます。請求先住所の場合、項目は町名・番地(請求先)、市区郡(請求先)、都道府県(請求先)、郵便番号(請求先)、国(請求先) となります。納入先住所の場合、項目は町名・番地(納入先)、市区郡(納入先)、都道府県(納入先)、郵便番号(納入先)、国(納入先) となります。
NetSuite の顧客エンティティには [addressBookList] 項目が含まれています。この項目は、町名・番地、市区郡、都道府県、郵便番号、国などのシンプル項目で構成されています。これにより、各顧客に複数の住所を入力できます。これらの項目はすべて顧客 UI の [Address (住所)] タブにマップされます。フローをシンプルにするために、[Default Billing (デフォルトの請求先)] 項目を true に設定して、顧客の請求先住所のみを入力します。
Salesforce の住所項目を NetSuite の [addressBookList] 項目にマップする課題に取り組むには、Salesforce の住所項目をリストに変換する必要がありあす。そのために、アクションステップを使用して、トリガー取引先と同じ取引先 ID を使用する取引先をすべて取得し、結果をリストに変換します。次に、このリストを使用して、取引先の住所項目を顧客の addressBookList の対応する項目にマップします。
以下は、前の単元で説明した NTO のユースケースのマッピングの一例です。
タスク | フローコンポーネント |
---|---|
新規作成または更新された取引先を見つける。 |
取引先の新規作成または更新時に Sales Cloud から実行されるトリガー |
トリガー取引先の住所項目をリストに変換する。 |
トリガー取引先と同じ取引先 ID を使用する取引先をすべて取得し、結果をリストに変換するアクションステップ |
対応する顧客 (ある場合) を取得する。 |
トリガー取引先の名前と会社名が同じ NetSuite の顧客をすべて取得するアクションステップ |
NetSuite に対応する顧客が存在するかどうかを判断する。 |
顧客のリストが空 (つまり NetSuite に顧客が存在しない) かどうかを評価する If/Else ブロック |
対応する顧客が存在しない場合 |
If ブロック内:
|
対応する顧客が存在する場合 |
If/Else ブロックの Else ブランチで For Each ブロックを使用して、NetSuite から取得したトリガー取引先の名前と会社名が同じ顧客のリストを反復処理します。 For Each ブロック内:
|
MuleSoft Composer ではデフォルトで作業が検証され、手順の各ステップにアプリケーション内コンテキストヘルプが表示されます。たとえば、システムに接続を追加すると、MuleSoft Composer で接続がテストされるため、正常に機能することを確認したうえで次のステップに進むことができます。また、各ステップ内の必須項目を入力するように MuleSoft Composer から求められます。これでフローのビルドが簡単になります。
フローの作成のベストプラクティスは、数ステップごとにテストを繰り返しながらフローを完成させることです。
次のデモ動画で、MuleSoft Composer を使用して Salesforce を NetSuite、Slack の順に接続する方法をご覧ください。
フローを設計する
Salesforce で新規作成または更新された取引先を NetSuite の顧客と同期するインテグレーションフローを設計する準備が整いました。
次の手順に従ってフローを設計します。
NTO 組織から MuleSoft Composer を起動します。
- Trailhead シミュレーターを起動して、タイトル画面で [開始] をクリックします。
- ユーザー名とパスワードを使用して NTO 組織にログインします。
- アプリケーションランチャーに
Composer
と入力して [MuleSoft Composer] を選択します。
新しいフローを作成します。
- [Create New Flow (新規フローの作成)] をクリックします。
- デフォルトのフロー名の横にある鉛筆アイコンをクリックします。
- フローに
Sync Salesforce Accounts to NetSuite Customers
(Salesforce の取引先を NetSuite の顧客に同期) と名前を付け、[Save (保存)] をクリックします。
NTO 組織を使用してフローのトリガーを作成します。
- [Salesforce] をクリックします。
-
[Add new Salesforce connection (新しい Salesforce 接続を追加)] をクリックし、NTO Sandbox 組織への接続を作成します。
メモ: 初めての Salesforce 接続の場合、このオプションは表示されません。次のステップに進みます。 - この接続に
NTO sandbox org
(NTO Sandbox 組織) と名前を付けます。 -
[This is a sandbox organization (これは Sandbox 組織です)] チェックボックスをオンにして、[Create (作成)] をクリックします。
メモ: 開発者組織を使用する場合は、このチェックボックスの選択をスキップして [Create (作成)] をクリックします。 - NTO Sandbox 組織のユーザー名とパスワードを入力して、[Log In to Sandbox (Sandbox にログイン)] をクリックします。
- [Allow (許可)] をクリックして、MuleSoft Composer に「ID URL サービスにアクセス」、「API を使用してユーザーデータを管理」、「いつでも要求を実行」権限を付与します。MuleSoft Composer で接続が自動的にテストされます。エラーメッセージが表示されていない場合は接続が確立され、フローの最初のステップ (トリガー) が表示されます。
NTO 組織で取引先が作成または更新されるたびにフローを開始するトリガーを設定します。
- [Choose an event that starts this flow (このフローを開始するイベントを選択)] 項目をクリックして、[New or updated record (レコードの新規作成または更新)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Account
(取引先) と入力します。 - [Sample Output (サンプル出力)] セクションを見ると、NTO 組織の取引先の項目と関連付けられているサンプル値が表示されています。これで、正しい組織に接続されていることを確認でき、フローの今後のステップで使用できるデータの構造がわかります。
- [Save (保存)] をクリックしてフローを保存します。
トリガー取引先と同じ取引先 ID を使用する Salesforce の取引先をすべて取得するフローの 2 つ目のステップを作成します。
- プラスアイコンをクリックしてステップを追加します。
- [Salesforce] をクリックして、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
トリガー取引先と同じ取引先 ID を使用する取引先をすべて取得する 2 つ目のステップを設定します。結果は取引先のリストに変換され、フローの後続ステップで取引先の項目 (リスト形式) を顧客の addressBookList の対応する項目にマップできます。
- [Action (アクション)] 項目をクリックして、[Get records (レコードを取得)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Account
(取引先) と入力します。 - [Conditions to filter the objects (オブジェクトを絞り込む条件)] 選択リストで、[All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] を選択します。
- 項目として [Account ID (取引先 ID)]、演算子として [Equals (次の文字列と一致する)]、およびフローのステップ 1 の [Account ID (取引先 ID)] を選択します。
トリガー取引先の名前と会社名が同じ NetSuite の顧客をすべて取得するフローの 3つ目のステップを作成します。
- プラスアイコンをクリックしてステップを追加します。
- [NetSuite] をクリックします。
-
[Add new NetSuite connection (新しい NetSuite 接続を追加)] をクリックします。
メモ: 今回初めて接続する場合はこのオプションが表示されません。次のステップに進みます。 - NetSuite の接続パラメーター値が記載されたテキストファイルを参照して、必須の値を入力し、接続表示名を
NTO NetSuite
にして、[Create (作成)] をクリックします。MuleSoft Composer で接続が自動的にテストされます。エラーメッセージが表示されていない場合は接続が確立され、フローの 3 番目のステップが表示されます。
トリガー取引先の名前と会社名が同じ顧客をすべて取得する 3 つ目のステップを設定します。
- [Action (アクション)] 項目をクリックして、[Get Records (レコードを取得)] を選択します。
- [Record Type (レコードタイプ)] 項目に、
CUSTOMER
(顧客) と入力します。 - [Conditions to filter the objects (オブジェクトを絞り込む条件)] 選択リストで、[All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] を選択します。
- 項目として [Company Name (会社名)]、演算子として [Contains (次の文字列と含む)]、フローのステップ 1 の [Account Name (取引先名)] を選択します。
トリガー取引先に対応する顧客があるかどうかを判断する If/Else ブロックを作成して設定します。
- プラスアイコンをクリックしてステップを追加します。
- スクロールダウンして [If/Else Block (If/Else ブロック)] をクリックします。デフォルトで [All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] が選択されています。
- 項目にフローのステップ 3 の [List of CUSTOMER (顧客のリスト)]、演算子に [Is empty (空)] を選択します。この条件を満たした場合は、取引先に対応する顧客がないことになります。その場合は、If ブランチの後続の 2 つのステップ (NetSuite での顧客の作成、Salesforce での取引先の更新) が実行されます。
NetSuite で関連付けられた取引先 ID を使用して顧客を作成するフローの 4 つ目のステップを If/Else ブロックの If ブランチ内に作成します。
- プラスアイコンをクリックして If ブランチにステップを追加します。
- [NetSuite] をクリックして、[NTO NetSuite] をクリックします。
NetSuite で関連付けられた取引先 ID を使用して顧客を作成する 4 つ目のステップを If ブランチ内に設定します。
- [Action (アクション)] 項目をクリックして、[Create Record (レコードを作成)] を選択します。
- [Type of Record (レコードタイプ)] 項目に、
CUSTOMER
(顧客) と入力します。 - [Add Fields (項目を追加)] をクリックします。
- 検索項目を使用して、次の項目を見つけて選択し、[Add (追加)] をクリックします。
ヒント: 検索する項目のキーワードを入力し、表示された項目の中から適切なものを選択します。キーワードをクリアして、次の項目でこのプロセスを繰り返します。すべての項目を選択したら、[Add (追加)] をクリックします。
この結果、[Addressbook List (アドレスブックリスト)] という別の項目が自動的に追加されます。次に、[Addressbook List (アドレスブックリスト)] を Salesforce の取引先のリストにマップします。- Comments (コメント)
- Company Name (会社名)
- Phone (電話)
- Url
- Record (レコード) > Addressbook List (アドレスブックリスト) > Addressbook (アドレスブック) > Default Billing (デフォルトの請求先)
- Record (レコード) > Addressbook List (アドレスブックリスト) > Addressbook (アドレスブック) > Addressbook Address (アドレスブックの住所)
- Addr 1 (住所 1)
- City (市区郡)
- Country (国)
- State (都道府県)
- Zip (郵便番号)
- Record (レコード) > Custom Field List (カスタム項目リスト) > Salesforce Account ID (Salesforce 取引先 ID)
- Record (レコード) > Custom Form (カスタムフォーム) > InternalId (内部 ID)
- Record (レコード) > Subsidiary (関連子会社) > InternalId (内部 ID)
- 顧客の項目を、フローの先行するステップでキャプチャした対応する項目に次のようにマップします。フローのステップ 2 で作成された取引先のリストを使用し、[Default Billing (デフォルトの請求先)] プロパティを true に設定して取引先の請求先住所を顧客の請求先住所にマップします。
- Comments (コメント) = ステップ 1 の [Account Description (取引先 説明)]
- Company Name (会社名) = ステップ 1 の [Account Name (取引先名)]
- Phone (電話) = ステップ 1 の [Account Phone (取引先 電話)]
- Url = ステップ 1 の [Website (Web サイト)]
- Record (レコード) > Addressbook List (アドレスブックリスト) > Addressbook (アドレスブック) > Addressbook List (アドレスブックリスト) = ステップ 2 の [List of Account (取引先のリスト)]
- Record (レコード) > Addressbook List (アドレスブックリスト) > Addressbook (アドレスブック) > Default Billing (デフォルトの請求先) =
true
- Record (レコード) > Addressbook List (アドレスブックリスト) > Addressbook (アドレスブック) > Addressbook Address (アドレスブックの住所)
- Addr 1 (住所 1) = ステップ 2 の [Billing Street (町名・番地(請求先))]
- City (市区郡) = ステップ 2の [Billing City (市区郡(請求先))]
- Country (国) = ステップ 2 の [Billing Country (国(請求先))]
- State (都道府県) = ステップ 2 の [Billing State/Province (都道府県(請求先))]
- Zip (郵便番号) = ステップ 2 の [Billing Zip/Postal Code (郵便番号(請求先))]
- Record (レコード) > Custom Field List (カスタム項目リスト) > Salesforce Account ID (Salesforce 取引先 ID) = ステップ 1 の [Account ID (取引先 ID)]
- Record (レコード) > Custom Form (カスタムフォーム) > InternalId (内部 ID) =
-2
これは前の単元で確認した Standard Customer Form (標準顧客フォーム) の内部 ID です。 - Record (レコード) > Subsidiary (関連子会社) > InternalId (内部 ID) =
1
。これは前の単元で確認した主関連子会社の最初の値の内部 ID です。
Sales Cloud で関連付けられた顧客の内部 ID を使用してトリガー取引先を更新するフローの 5 つ目のステップを If/Else ブロックの If ブランチ内に作成します。
- プラスアイコンをクリックして If ブランチ内にステップを追加します。
- [Salesforce] をクリックして、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
Sales Cloud で関連付けられた顧客の内部 ID を使用してトリガー取引先を更新する 5 つ目のステップを If ブランチ内に設定します。
- [Action (アクション)] 項目をクリックして、[Update record (レコードを更新)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Account
(取引先) と入力します。[Account ID (取引先 ID)] は必須項目であるため自動的に選択されます。 - [Add Fields (項目を追加)] をクリックします。
- 検索ツールを使用して [NetSuite Customer ID (NetSuite 顧客 ID)] を選択し、[Add (追加)] をクリックします。
- 取引先の項目を、フローの先行するステップでキャプチャした対応する項目に次のようにマップします。
- Account ID (取引先 ID) = ステップ 1 の [Account ID (取引先 ID)]
- NetSuite Customer ID (NetSuite 顧客 ID) = ステップ 4 の [InternalID (内部 ID)]
トリガー取引先に対応する顧客を更新する Else ブランチを If/Else ブロック内に作成します。
- If/Else ブロックの下部にある [Add Else (Else を追加)] をクリックします。
フローのステップ 3 で顧客のリストから取得した各顧客を反復処理する For Each ブロックを Else ブランチ内に作成して設定します。
- Else ブランチのプラスアイコンをクリックします。
- スクロールダウンして [For Each] を選択します。
- [Input list (入力リスト)] 項目で、フローのステップ 3 の [List of CUSTOMER (顧客のリスト)] を選択します。
トリガー取引先に対応する顧客を更新する 6 つ目のステップを For Each ブロック内に作成します。
- プラスアイコンをクリックして For Each ブロック内にステップを追加します。
- [NetSuite] をクリックして、[NTO NetSuite] をクリックします。
トリガー取引先に対応する顧客を更新する 6 つ目のステップを設定します。
- [Action (アクション)] 項目をクリックして、[Update Record (レコードを更新)] を選択します。
- [Type of Record (レコードタイプ)] 項目に、
CUSTOMER
(顧客) と入力します。 - [ID Type (ID 種別)] 項目で、
[INTERNAL (内部)]
を選択します。[Record Id (レコード ID)] は必須項目のため、自動的に選択されます。 - [Add Fields (項目を追加)] をクリックします。
- 検索項目を使用して、次の項目を見つけて選択し、[Add (追加)] をクリックします。[Addressbook List (アドレスブックリスト)] という項目が自動的に追加されます。これは、Salesforce の取引先のリストにマップする NetSuite の [addressBookList] 項目です。
- Comments (コメント)
- Phone (電話)
- Url
- Record (レコード) > Addressbook List (アドレスブックリスト) > Addressbook (アドレスブック) > Default Billing (デフォルトの請求先)
- Record (レコード) > Addressbook List (アドレスブックリスト) > Addressbook (アドレスブック) > Addressbook Address (アドレスブックの住所)
- Addr 1 (住所 1)
- City (市区郡)
- Country (国)
- State (都道府県)
- Zip (郵便番号)
- Record (レコード) > Custom Form (カスタムフォーム) > InternalId (内部 ID)
- Record (レコード) > Subsidiary (関連子会社) > InternalId (内部 ID)
- 顧客の項目を、フローの先行するステップでキャプチャした対応する項目に次のようにマップします。フローのステップ 2 で作成された取引先のリストを使用し、[Default Billing (デフォルトの請求先)] プロパティを true に設定して取引先の請求先住所を顧客の請求先住所にマップします。
- Record Id (レコード ID) = ステップ 3 の [Record (レコード)] > [InternalId (内部 ID)]
- Comments (コメント) = ステップ 1 の [Account Description (取引先 説明)]
- Phone (電話) = ステップ 1 の [Account Phone (取引先 電話)]
- Url = ステップ 1 の [Website (Web サイト)]
- Record (レコード) > Addressbook List (アドレスブックリスト) > Addressbook (アドレスブック) > Addressbook List (アドレスブックリスト) = ステップ 2 の [List of Account (取引先のリスト)]
- Record (レコード) > Addressbook List (アドレスブックリスト) > Addressbook (アドレスブック) > Default Billing (デフォルトの請求先) =
true
- Record (レコード) > Addressbook List (アドレスブックリスト) > Addressbook (アドレスブック) > Addressbook Address (アドレスブックの住所)
- Addr 1 (住所 1) = ステップ 2 の [Billing Street (町名・番地(請求先))]
- City (市区郡) = ステップ 2の [Billing City (市区郡(請求先))]
- Country (国) = ステップ 2 の [Billing Country (国(請求先))]
- State (都道府県) = ステップ 2 の [Billing State/Province (都道府県(請求先))]
- Zip (郵便番号) = ステップ 2 の [Billing Zip/Postal Code (郵便番号(請求先))]
- Record (レコード) > Custom Form (カスタムフォーム) > InternalId (内部 ID) =
-2
これは前の単元で確認した Standard Customer Form (標準顧客フォーム) の内部 ID です。 - Record (レコード) > Subsidiary (関連子会社) > InternalId (内部 ID) =
1
。これは前の単元で確認した主関連子会社の最初の値の内部 ID です。
- フローを保存します。フロー全体は次のようになります。
お疲れさまでした。次の単元では、フローをテストして正常に機能することを確認する方法を学習します。