第23章 ServiceNow への接続

インテグレーションは ServiceNow テーブルからレコードを取得したり、ServiceNow がテーブルを更新するために使用する ServiceNow インポートセットにレコードを追加することができます。インテグレーションで ServiceNow に接続するには、ServiceNow コネクションを作成した後、そのコネクションをインテグレーションに追加します。詳細は以下を参照してください。

23.1. ServiceNow コネクションの作成

インテグレーションで、所属企業の ServiceNow インスタンスに接続するには、ServiceNow コネクションを作成する必要があります。

前提条件

  • 所属企業の ServiceNow 管理者がユーザーの ServiceNow アカウントを作成済みである必要があります。
  • ServiceNow インスタンスの URL と、ServiceNow のユーザー名およびパスワードを知っている必要があります。
  • ServiceNow 管理者が ServiceNow クライアント ID およびクライアントシークレットも作成した場合、これらの値を知っている必要があります。

手順

  1. Fuse Online の左パネルで Connections をクリックし、利用可能なコネクションを表示します。
  2. Create Connection をクリックし、Fuse Online コネクターを表示します。
  3. ServiceNow コネクターをクリックします。
  4. この ServiceNow コネクションを設定します。

    1. Instance Name フィールドに、レコードの取得先または取得元となる ServiceNow インスタンスの名前を入力します。たとえば、ServiceNow インスタンスの URL が https://abc12345.service-now.com である場合、インスタンス名は abc12345 になります。
    2. User Name フィールドに ServiceNow ユーザー名を入力します。
    3. User Password フィールドに ServiceNow パスワードを入力します。
    4. 任意で、ServiceNow 管理者からクライアント ID を受け取った場合は Client ID フィールドにそのクライアント ID を入力します。
    5. 任意で、ServiceNow 管理者からクライアントシークレットを受け取った場合は Client Secret フィールドにそのクライアントシークレットを入力します。
    6. Validate をクリックします。Fuse Online は即座にコネクションを検証しようとし、検証の成功または失敗を示すメッセージを表示します。検証に失敗した場合は、必要に応じて設定の詳細を更新し、再度検証を行います。
    7. 検証に成功したら Next をクリックします。
  5. Name フィールドに、このコネクションを別のコネクションと区別するために使用する名前を入力します。たとえば、ServiceNow Con 1 を入力します。
  6. Description は任意のフィールドで、このコネクションに関する便利な情報を入力します。たとえば、ServiceNow connection that uses administrative credentials. を入力します。
  7. Save をクリックし、作成したコネクションが利用可能になったことを確認します。上記の例の名前を入力した場合は、インテグレーションに追加できるコネクションとして ServiceNow Con 1 が表示されます。

23.2. ServiceNow からレコードを取得してインテグレーションの実行をトリガー

ServiceNow からレコードを受信したときにインテグレーションの実行をトリガーするには、ServiceNow コネクションを最初のコネクションとしてシンプルなインテグレーションに追加します。

前提条件

  • ServiceNow コネクションが作成されている必要があります。
  • レコードを取得するテーブルの名前を知っている必要があります。
  • 必要なレコードのみを取得する ServiceNow クエリーがすでに定義されている必要があります。ServiceNow クエリーの詳細は、ServiceNowの「Encoded query strings」を参照してください。

手順

  1. Fuse Online パネルの左側にある Integrations をクリックします。
  2. Create Integration をクリックします。
  3. Choose a connection ページで、インテグレーションを開始するために使用する ServiceNow コネクションをクリックします。
  4. Choose an action ページで Retrieve Record を選択し、選択した ServiceNow テーブルからレコードを取得します。
  5. Retrieve Record アクションを設定します。

    1. Table name をクリックし、レコードを取得するテーブルを選択します。
    2. Query to filter the result set フィールドに ServiceNow クエリーを入力します。たとえば、インシデントに関するレコードを保持するテーブルでの state=1^impact=2 クエリーについて考えてみましょう。このクエリーは中程度の影響 (state=1) を持つ新しいインシデント (impact=2) のレコードを返します。クエリーを入力せず、テーブルのレコードが変更しないと、コネクションは同じレコードを毎回取得します。
    3. Limit of elements per page フィールドに、コネクションが取得する最大レコード数を入力します。本リリースでは、値を入力する必要があり、1000 以下の値を入力することが推奨されます。ページネーションはサポートされません。
    4. Period フィールドにレコードを取得する頻度を指定します。デフォルト毎分です。そのため、デフォルトでは Fuse Online はこのインテグレーションを 60 秒ごとに実行します。
    5. Next をクリックします。

結果

Fuse Online は、取得したレコードの構造を定義する JSON スキーマを生成します。これにより、データマッピングが必要な場合にインテグレーションで次のコネクションの前にデータマッピングステップを追加することができます。

Fuse Online は最後のコネクションの選択を要求します。

23.3. ServiceNow でのインポートセットの作成

Fuse Online インテグレーションでは、ServiceNow コネクションは直接 ServiceNow テーブルを更新できません。インテグレーションで ServiceNow データを更新するには、ServiceNow テーブルの更新をステージングするインポートセットが事前に必要になります。

多くの場合で、ServiceNow 管理者が ServiceNow インバウンド Web サービスを作成することが、最も簡単にインポートセットを作成する方法になります。これにより、ServiceNow インポートセットが暗黙的に作成されます。インポートセットは、Web サービスの作成時に管理者が選択する ServiceNow ターゲットテーブルを基にしています。ServiceNow コネクションはこのインポートセットを更新し、ServiceNow はインポートセットを使用して対応する ServiceNow テーブルを更新します。

前提条件

ServiceNow の管理者権限が必要です。

ServiceNow の手順

  1. ServiceNow で web services を検索します。
  2. 結果の System Web Services > Inbound を選択し、Create New をクリックします。
  3. Create Web Service ページで以下を行います。

    1. Label フィールドで Web サービスの表示名を指定します。Web サービスのインポートセットにもこの名前が使用されます。
    2. Target table フィールドに、このサービスが更新する ServiceNow テーブルを選択します。
    3. Copy fields from target table を選択します。これにより、ターゲットテーブルと同じスキーマを持つインポートセットが作成されます。インポートセットはターゲットテーブルを更新するためのステージングエリアです。
    4. Create transform map を選択します。このマップによって、ServiceNow がインポートセットからターゲットテーブルにデータをコピーまたは変換することができます。
  4. Create をクリックします。
  5. 次の表示の Related LinksAuto Map Matching Fields をクリックし、選択したターゲットテーブルにあるフィールドのリストを表示します。
  6. correlation (相関) または coalesce (結合) フィールドとなるターゲットテーブルフィールドを 1 つ選択します。

    インポートセットのレコードにある correlation フィールドの値が、ターゲットテーブルの corelation フィールドの値と一致する場合、ServiceNow は新しいレコードを作成せずに、ターゲットテーブルのレコードを更新します。

  7. Coalesce を選択し、選択したフィールドを correlation フィールドとして特定します。correlation フィールドがない場合、ServiceNow はインポートセットの各レコードをターゲットテーブルとして追加します。
  8. Update をクリックします。
  9. 変換マップ (transform map) が作成されたことを確認します。

    1. ServiceNow で transform map を検索します。
    2. System Import SetsTransform Maps をクリックし、変換マップのリストを表示します。
    3. このリストで、作成した Web サービスのラベルに指定した値が名前になっている変換マップがあることを確認します。

その他のリソース

ServiceNow ドキュメントの「Import sets

23.4. インテグレーションの間またはインテグレーションを終了するためにレコードを ServiceNow にコピー

フローの途中でレコードを ServiceNow にコピーしたり、シンプルなインテグレーションを終了するためにレコードを ServiceNow にコピーすることができます。これには、ServiceNow コネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。

前提条件

  • ServiceNow コネクションが作成されている必要があります。
  • フローを作成または編集することになり、Fuse Online でインテグレーションに追加するよう要求されます。または、Fuse Online で最後のコネクションを選択するよう要求されます。
  • レコードの追加先となる ServiceNow インポートセットの名前を知っている必要があります。ServiceNow 管理者は適切なインポートセットを特定することができます。インポートセットが存在しない場合は、「ServiceNow でのインポートセットの作成」を参照してください。
  • 追加のレコードを処理するよう ServiceNow インポートセットが設定されている必要があります。

手順

  1. Add to Integration ページで、コネクションの追加先のプラス記号をクリックします。Fuse Online が最後のコネクションを選択するよう要求する場合は、このステップをスキップします。
  2. インテグレーションを追加する ServiceNow コネクションをクリックします。
  3. Add Record アクションを選択します。
  4. Import Set フィールドをクリックし、レコードに追加するインポートセットを選択します。
  5. Next をクリックします。

結果

Fuse Online はコネクションをフローに追加します。

通常、このコネクションの前にデータマッパーステップが必要になります。インテグレーションビジュアライゼーションで、Fuse Online はコネクション上に Data Type Mismatch を表示します。ほとんどのインテグレーションでは、ソースフィールドを ServiceNow テーブルの correlation フィールドとして使用されるターゲットフィールドにマップする必要があります。

23.5. Salesforce から ServiceNow へのインテグレーションの例

この例では、2 つのシンプルなインテグレーションについて説明します。

  • 1 つのインテグレーションは、Salesforce から新しいケースを取得し、インシデントとして ServiceNow に追加します。
  • もう 1 つのインテグレーションでは、Salesforce から更新されたケースを取得し、ServiceNow の対応するインシデントを更新します。

ServiceNow における前提条件

両方のインテグレーションの前提条件として、ServiceNow の管理者がインバウンド Web サービスを作成する必要があります。これは、インテグレーションがデータを ServiceNow に追加するために必要な ServiceNow インポートセットを暗黙的に作成します。この例では、以下の条件が適用されます。

  • Web サービスの名前は Cases from Salesforce です。
  • サービスのターゲットテーブルは Incidents です。このテーブルには更新するデータが含まれます。
  • Copy fields from target table が選択されているため、インポートセットには Incidents テーブルと同じスキーマがあります。インポートセットの名前も Cases from Salesforce になります。
  • Create transform map が選択されているため、ServiceNow は Cases from Salesforce インポートセットを Incidents ターゲットテーブルにコピーおよび変換します。
  • correlation_Id フィールドが選択され、その後に Coalesce が選択されているため、インポートセットでは correlation フィールドは correlation_Id になります。

Fuse Online での手順の概要

Fuse Online で Salesforce および ServiceNow コネクションを作成します。

以下のステップのとおり、2 つのインテグレーションは、Salesforce コネクションで実行されるアクション以外は同じになります。インテグレーションを作成するには、これらのステップを 2 回実行し、1 回目は各インテグレーションを作成します。

  1. Salesforce コネクションを最初のコネクションとして追加します。

    • 新しいケースを取得するインテグレーションを作成するには、On create アクションを選択します。
    • 更新されたケースを取得するインテグレーションを作成するには、On update アクションを選択します。
  2. アクションが操作する Case オブジェクトを選択します。この Salesforce コネクションは、選択したアクションに応じて、新しい Case オブジェクトまたは更新された Case オブジェクトを返します。
  3. ServiceNow コネクションを最後のコネクションとして追加します。
  4. Create Record アクションを選択した後、インテグレーションが更新するインポートセットとして Cases from Salesforce を選択します。

    この ServiceNow コネクションは、新しいまたは更新された Salesforce ケースを Cases from Salesforce インポートセットに追加します。

  5. 以下をマップするデータマッパーステップを追加します。

    • Salesforce ケース id から ServiceNow インポートセットの correlation_Id
    • Salesforce subject から ServiceNow short_description
    • Salesforce description から ServiceNow description
  6. インテグレーションに名前を付け、公開します。

    • 新しいケースを取得するインテグレーションでは、On SF Create Case を使用します。
    • 更新されたケースを取得するインテグレーションでは、On SF Update Case を使用します。

インテグレーションの動作確認

両方のインテグレーションが実行しているときに、インテグレーションの動作を確認することができます。

  1. Salesforce でケースを作成します。
  2. Fuse Online で On SF Create Case インテグレーションの概要を表示します。Activity タブをクリックし、Fuse Online がインテグレーションを 1 度実行したことを確認します。
  3. ServiceNow で、Incidents テーブルを表示します。Salesforce で指定した件名と説明のある新しいインシデントが表示されるはずです。
  4. Salesforce に戻り、作成したケースの件名を変更して、そのケースを更新します。
  5. Fuse Online で On SF Update Case インテグレーションの概要を表示します。Activity タブをクリックし、Fuse Online がインテグレーションを 1 度実行したことを確認します。
  6. ServiceNow で Incidents テーブルを表示し、これまで新規だったインシデントのエントリーを展開します。このインシデントに更新された short_description の値があることが確認できるはずです。ServiceNow は、correlation_Id の値のインポートセットエントリーをチェックします。この値がすでに Incidents テーブルに存在する場合、ServiceNow はその値があるインシデントを更新します。