--- title: "サービスNow: XOps ストーリーとの統合の設定" slug: "servicenow-configuring-integration-with-xops-stories" updated: 2026-07-30T01:38:18Z published: 2026-07-30T01:38:18Z canonical: "knowledge.catonetworks.com/servicenow-configuring-integration-with-xops-stories" --- > ## Documentation Index > Fetch the complete documentation index at: https://knowledge.catonetworks.com/llms.txt > Use this file to discover all available pages before exploring further. # サービスNow: XOps ストーリーとの統合の設定 ## 概要 XOpsは、XOpsストーリーと外部サービス管理プラットフォーム間の双方向同期をサポートしています。 この統合は、プラットフォーム全体で調査活動を整合性させ、一方のプラットフォームでの更新が他方に反映されることを可能にします。 詳細については、[サービス管理プラットフォームとの双方向統合の作成](/v1/docs/creating-bi-directional-integrations-with-service-management-platforms)をご覧ください。 ## サービスNow 統合の設定 ServiceNowの統合を設定するには、以下のステップを完了します。 ### ステップ 1: カスタム項目の作成 Cato 管理アプリケーション (CMA) でチケットが発行された際に項目を作成します。 **カスタム項目を作成するには:** 1. サービスNow プラットフォームにログインしてください。 2. 任意のインシデントを開きます。 3. 上部のバナーで、右クリックして**設定 > フォームビルダー**に移動します。 4. 必要に応じて、フォームビルダーを試すことに同意し、デフォルトビューを選択します。 5. **インシデントテーブルに新しいフィールドを追加**をクリックします。 6. これらの項目を追加します: - CMA アカウント ID - 種類: 整数 - プロパティ: 読み取り専用、必須、アクティブ - CMA ストーリー ID - 種類: 文字列 - プロパティ: 読み取り専用、必須、アクティブ ### ステップ 2: CMA でサービス API キーを作成する サービス API キーは、外部ツールおよびサービスとのスケーラブルな統合を可能にします。このフォーマットで作成されます: `R=<...>|K=<...>`。 API キーの作成方法と詳細については、[Cato API の API キー生成](/v1/docs/generating-api-keys-for-the-cato-api)を参照してください。 サービス API キーを作成した後、それをコピーして保存し、サービスNow プラットフォームに入力できるようにします。 ### ステップ 3: API キーを安全なシステム プロパティに安全に保存する サービスNow プラットフォームで、API キーを保存するセキュアなシステムプロパティを作成します。 **安全なシステムプロパティを作成するには:** 1. https://.service-now.com/sys_properties_list.doに移動 2. **新規**をクリックします。 3. **システムプロパティの新規レコード**フォームに、この詳細を追加します: ![SN5.png](https://cdn.document360.io/81d0367c-2b69-4ba8-b412-1c8f46ce677e/Images/Documentation/35697265552285.png?sv=2026-02-06&spr=https&st=2026-11-10T17%3A48%3A54Z&se=2026-11-10T18%3A48%3A54Z&sr=c&sp=r&sig=Gzxd6KvM82pJNs3q%2BB9Z%2FTX%2Bryf9Nqqn3geiRvZB14o%3D) - 名前: cma_prod_api_key - タイプ:パスワード - 値: ステップ 2 で作成したサービス API キー 4. **送信する**をクリックします。 ### ステップ 4: REST メッセージを作成する ServiceNowのインシデントからCatoに詳細を送信するためにRESTメッセージを作成します: **RESTメッセージを作成するには:** 1. ServiceNow プラットフォームで、**すべて>システム Web サービス > アウトバウンド > REST メッセージ** に移動します。 2. **新規**をクリックします。 3. **RESTメッセージ**フォームに、この詳細を追加します: - 名前: REST メッセージの名前を追加します - エンドポイント: https://.cc.catonetworks.com/api/v1/graphql2 - 認証の種類: 認証なし - HTTPメソッド:**新規**をクリックし、次の詳細を追加します: - 名前: 名前を追加 - HTTP メソッド: POST - エンドポイント: https://.cc.catonetworks.com/api/v1/graphql2 4. **送信する**をクリックします。 ### ステップ 5: ビジネスルールを作成する ビジネスルールを作成して REST メッセージをトリガーします。 **ビジネスルールを作成するには:** 1. ServiceNow プラットフォームで、**すべて > システム定義 > ビジネスルール** に移動します。 2. **新規**をクリックします。 3. **ビジネスルールの新規レコード**フォームに、この詳細を追加します: ![SN6.png](https://cdn.document360.io/81d0367c-2b69-4ba8-b412-1c8f46ce677e/Images/Documentation/35697286501149.png?sv=2026-02-06&spr=https&st=2026-11-10T17%3A48%3A54Z&se=2026-11-10T18%3A48%3A54Z&sr=c&sp=r&sig=Gzxd6KvM82pJNs3q%2BB9Z%2FTX%2Bryf9Nqqn3geiRvZB14o%3D) - 名前: ビジネスルールの名前を追加します - テーブル: インシデント - タイミング: 後 - 更新: 真(チェックボックスにチェックを入れます) - フィルター条件: コメントの変更 4. **高度な設定**タブで、このスクリプトを追加します: ```plaintext (function executeRule(current, previous) {  try {    var lastComment = current.comments.getJournalEntry(1) || '';    lastComment = stripJournalHeader(lastComment);    if (!lastComment) {      gs.info("GraphQL webhook: 空のコメント、スキップ " + current.number);      return;    }    var accountId = current.u_cma_account_id;    var storyId = current.u_cma_story_id;        gs.info("GraphQL webhook: accountId " + accountId + " story " + storyId);    if (!accountId || !storyId) {      gs.error("GraphQL webhook: accountId/storyId がありません " + current.number);      return;    }    var gqlQuery =      "mutation CreateStoryComment($accountId: ID!, $input: AddStoryCommentInput!) {" + " xdr(accountId: $accountId) {" + " addStoryComment(input: $input) {" + " comment { id type __typename }" + " __typename" + " }" + " __typename" + " }" + "}"; var body = { query: gqlQuery, variables: { accountId: accountId.toString(), input: { type: "USER", storyId: storyId.toString(), text: lastComment } } }; var apiKey = gs.getProperty('cma_prod_api_key'); var r = new sn_ws.RESTMessageV2('Update XDR story comments CMA Prod', 'post'); r.setRequestHeader('Content-Type', 'application/json'); r.setRequestHeader('Accept', 'application/json'); r.setRequestHeader('x-api-key', apiKey); r.setRequestBody(JSON.stringify(body)); //var response = r.execute(); // can be changed to Async - only for debug purposes var eccSysId = r.executeAsync(); gs.info("GraphQL webhook queued, ECC sys_id=" + eccSysId); var status = response.getStatusCode(); var responseBody = response.getBody(); // Safe logging (see next section for masking) gs.info("GraphQL webhook: status=" + status); gs.info("GraphQL webhook: responseBody=" + responseBody); } catch (ex) { gs.info("GraphQL webhook: 失敗:" + ex.message); } function stripJournalHeader(text) { text = text || ''; if (text.indexOf('\n') > -1) { return text.split('\n').slice(1).join('\n').trim(); } return text.trim(); } })(current, previous); ``` 5. **送信する**をクリックします。 ## トラブルシューティング 問題やエラーを次のいずれかで特定することができます: - システムログ: **システムログ > すべて**に移動し、メッセージ `GraphQL webhook` を含むものを検索します。 - ECC レコード: https://.service-now.com/sys_ecc_queue_list.do に移動し、ログに記録された `ECC sys_id` の ECC レコードを見つけます。 ### 一般的な問題 これらは一般的な問題とその原因の一覧です: | 問題 | 原因 | | --- | --- | | コメントが送信されない | コメントが空 | | アカウントまたはストーリーIDが欠落 | カスタム項目が入力されていない | | API が 400 を返す | リクエスト形式が不正 | | API が 401 を返す | API キーが無効 |