ServiceNow : Configuration de l'intégration avec les Histoires XOps

Vue d'ensemble

XOps prend en charge la synchronisation bidirectionnelle entre les histoires XOps et une plateforme de gestion des services externe. Cette intégration aide à maintenir l'alignement des activités d'enquête entre les plateformes, afin que les mises à jour effectuées sur une plateforme se reflètent sur l'autre.

Pour plus d'informations, consultez Créer des intégrations bidirectionnelles avec les plateformes de gestion des services.

Configurer l'intégration ServiceNow

Pour configurer l'intégration ServiceNow, complétez ces cinq étapes.

Étape 1 : Créer des champs personnalisés

Créez des champs à remplir lors d'un ticket dans l'application de gestion Cato (CMA).

Pour créer des champs personnalisés :

  1. Connectez-vous à la plateforme ServiceNow.
  2. Ouvrir n'importe quel incident.
  3. Depuis la bannière supérieure, cliquez avec le bouton droit et naviguez vers Configurer > Constructeur de formulaire.
  4. Si nécessaire, acceptez d'essayer le constructeur de formulaire et sélectionnez la vue par défaut.
  5. Cliquez sur Ajouter un nouveau champ dans la Table des incidents.
  6. Ajoutez ces champs :

    • ID de compte CMA

      • Type : Entier
      • Propriétés : Lecture seule, Obligatoire, Actif
    • ID d'histoire CMA

      • Type : Chaîne
      • Propriétés : Lecture seule, Obligatoire, Actif

Étape 2 : Créer une clé API de service dans la CMA

Les clés API de service permettent une intégration évolutive avec des outils et services externes et sont créées dans ce format : R=<...>|K=<...>. Pour plus d'informations et des informations détaillées sur la création d'une clé API de service, consultez Génération de clés API pour l'API Cato.

Une fois la clé API de service créée, copiez-la et enregistrez-la afin de pouvoir l'entrer dans la plateforme ServiceNow.

Étape 3 : Stocker la clé API de manière sécurisée dans une propriété du système sécurisé

Dans la plateforme ServiceNow, créez une propriété du système sécurisée pour stocker la clé API.

Pour créer une propriété du système sécurisée :

  1. Accédez à https://<your instance>.service-now.com/sys_properties_list.do
  2. Cliquez sur Nouveau.
  3. Dans le formulaire Nouveau record de propriétés système, ajoutez ces détails :

    SN5.png
    • Nom : cma_prod_api_key
    • Type : Mot de passe2
    • Valeur : La clé API de service que vous avez créée à l'étape 2
  4. Cliquez sur Soumettre.

Étape 4 : Créer un message REST

Créez un message REST pour envoyer des détails des incidents ServiceNow à Cato :

Pour créer un message REST :

  1. Dans votre plateforme ServiceNow, naviguez vers Tous > Services Web système > Sortant > Message REST.
  2. Cliquez sur Nouveau.
  3. Dans le formulaire Message REST, ajoutez ces détails :

    • Nom : Ajoutez un nom pour le message REST
    • Point de terminaison : https://<your Cato account name>.cc.catonetworks.com/api/v1/graphql2
    • Type d'authentification : Pas d'authentification
    • Méthodes HTTP : Cliquez sur Nouveau et ajoutez ces détails :

      • Nom : Ajoutez un nom
      • Méthode HTTP : POST
      • Point de terminaison : https://<your Cato account name>.cc.catonetworks.com/api/v1/graphql2
  4. Cliquez sur Soumettre.

Étape 5 : Créer une règle métier

Créez une règle métier pour déclencher le message REST.

Pour créer une règle métier :

  1. Dans votre plateforme ServiceNow, naviguez vers Tous > Définitions système > Règle métier.
  2. Cliquez sur Nouveau.
  3. Dans le formulaire Nouvelle record de règle métier, ajoutez ces détails :

    SN6.png
    • Nom : Ajoutez un nom pour la règle métier
    • Table : Incident
    • Quand : Après
    • Mettre à jour : Vrai (Cochez la case)
    • Condition de filtre : Changements de commentaires
  4. Dans l'onglet Avancé, ajoutez ce script :

    (function executeRule(current, previous) {
      try {
        var lastComment = current.comments.getJournalEntry(1) || '';
        lastComment = stripJournalHeader(lastComment);
        if (!lastComment) {
          gs.info("Webhook GraphQL : Commentaire vide, ignorer " + current.number);
          return;
        }
        var accountId = current.u_cma_account_id;
        var storyId = current.u_cma_story_id;
            gs.info("Webhook GraphQL : accountId " + accountId + " histoire " + storyId);
        if (!accountId || !storyId) {
          gs.error("Webhook GraphQL : Identifiant de compte/de récit manquant pour " + 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('Mettre à jour les commentaires de l'histoire XDR 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(); // peut être changé en Async - seulement à des fins de débogage
            var eccSysId = r.executeAsync();
        gs.info("Webhook GraphQL en file d'attente, ECC sys_id=" + eccSysId);
        var status = response.getStatusCode();
        var responseBody = response.getBody();
      // Journalisation sécurisée (voir la section suivante pour le masquage)
         gs.info("Webhook GraphQL : statut=" + status);
         gs.info("Webhook GraphQL : responseBody=" + responseBody);
      } catch (ex) {
        gs.info("Webhook GraphQL : Échec : " + 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. Cliquez sur Soumettre.

Dépannage

Vous pouvez identifier les problèmes et les erreurs à :

  • Journaux du système : Accédez à Journaux du système >Tout et recherchez les messages contenant Webhook GraphQL.
  • Enregistrement ECC : Accédez à https://<instance>.service-now.com/sys_ecc_queue_list.do et localisez l'enregistrement ECC avec le ECC sys_id enregistré.

Problèmes courants

Voici une liste de problèmes courants et leur cause :

Problème Cause
Commentaire non envoyé Texte du commentaire vide
Identifiants de compte/récit manquants Champs personnalisés non remplis
L'API retourne 400 Format de demande incorrect
L'API retourne 401 Clé API invalide

Cet article vous a-t-il été utile ?

Utilisateurs qui ont trouvé cela utile : 0 sur 0

0 commentaire