Intégration avec ServiceNow

En tant que propriétaire d'une application, vous pouvez gérer l'activation des drapeaux en ajoutant un flux de travail supplémentaire grâce à l'intégration de ServiceNow® avec App Configuration.

Vous pouvez associer le flux de processus d'approbation pour toute modification de configuration apportée à App Configuration au niveau de l'environnement. Lorsque vous activez le flux de travaux d'approbation, les modifications sont reflétées uniquement après l'approbation et le déplacement de l'état de la demande de changement à implémenter. Une fois que la demande de changement est à l'état d'implémentation, les changements sont automatiquement reflétés.

Assurez-vous d'avoir une instance ServiceNow avec des privilèges d'administrateur pour mettre à jour la configuration.

Le nom ServiceNow externe suit la norme https://xxx.service-now.com, où xxx est votre nom d'instance. Le nom de l'instance ServiceNow, le nom d'utilisateur et le mot de passe peuvent être récupérés à partir de votre console ServiceNow. Naviguez sur votre profil ServiceNow et allez sur Gérer le mot de passe de l'instance pour obtenir les détails.

Pour intégrer le flux de travaux ServiceNow, procédez comme suit:

  1. Dans le tableau de bord de votre instance du service App Configuration, cliquez sur Paramètres.

  2. Dans la section « Workflows d'approbation », cliquez sur « Créer un workflow ».

  3. À l'étape 1, définissez le périmètre du workflow :

    1. Indiquez le nom du workflow.

    2. Sélectionnez les ressources pour lesquelles vous souhaitez activer le flux de travail.

      • Pour les recouvrements, les suppressions nécessitent une validation.

      • Pour les segments, toute modification ou suppression nécessite une validation.

      • Pour les environnements, la validation peut être déclenchée pour toutes les actions liées aux indicateurs de fonctionnalité, toutes les actions liées aux propriétés et la suppression d'un environnement.

  4. Cliquez sur Suivant.

  5. À l'étape 2, configurez la connexion à une instance d' ServiceNow. Sélectionnez le type d'instance pour l'instance d' ServiceNow, à savoir « External ServiceNow ».

  6. Cliquez sur « Vérifier » pour vérifier la configuration du flux de travail.

  7. Vérifiez les détails du flux de travail, puis cliquez sur Créer pour créer et appliquer le flux de travail.

Flux de travaux externe

Pour le flux de travaux externe, vous trouverez ci-dessous les étapes à suivre.

  1. Saisissez l'adresse URL de l'instance ServiceNow.

  2. Saisissez le nom d'utilisateur à utiliser pour se connecter à l'instance d' ServiceNow.

  3. Entrez le mot de passe à utiliser pour l'authentification du nom d'utilisateur mentionné précédemment pour l'authentification dans l'instance ServiceNow.

  4. Saisissez l'identifiant client nécessaire pour récupérer le jeton d'accès OAuth.

  5. Entrez le secret client requis pour l'authentification de l' ID client fourni précédemment.

L' identifiant et le secret du client sont nécessaires pour accéder à votre instance ServiceNow. Pour la création d'un identifiant et d'un secret client, consultez la documentation du service now sur la création d'un point d'accès à l'API OAuth pour les clients externes.

  1. Saisissez le nom du groupe d'approbation défini dans ServiceNow. Le nom du groupe d'approbation contiendra un ensemble de personnes autorisées à approuver les demandes de changement créées dans le flux de travaux ServiceNow.

  2. Définissez le délai d'expiration de la demande de changement (en heures). Minimum 1 à maximum 999 heures.

  3. Placez le commutateur « Activé » sur ON pour activer le flux de travail pour la portée sélectionnée.

On ne peut créer qu'un seul processus de validation pour une ressource.

Lorsque vous créez un workflow pour un environnement, une validation est requise pour toute modification ou suppression des ressources relevant du périmètre sélectionné lors de la création du workflow (par exemple, tous les indicateurs, toutes les propriétés ou la suppression de l'environnement).

Une demande de modification est créée pour chaque action, et la ressource ne peut être ni modifiée ni supprimée dans cet environnement tant que la demande de modification n'a pas été approuvée. La ressource en attente de validation dans un environnement peut toujours être modifiée dans d'autres environnements.

Pour consulter votre demande de modification, passez la souris sur l'icône CR située à côté du nom de la ressource à modifier. Vous verrez apparaître le lien vers votre demande de modification.

Par exemple, si vous avez sélectionné tous les indicateurs dans le périmètre, le fait d'activer ou de désactiver un indicateur de fonctionnalité dans cet environnement déclenche une demande de modification qui doit suivre le processus de validation.

Les indicateurs de fonctionnalité ou les propriétés qui étaient déjà activés avant l'application du workflow continuent de fonctionner normalement, mais toute modification ultérieure doit être approuvée. Si vous désactivez un indicateur de fonctionnalité, appliquez le workflow, puis essayez de réactiver cet indicateur, son statut passe à « Success! » Le processus de demande de modification a été lancé dans, et une demande de modification a été créée.

Comment ajouter une balise obligatoire à la demande de changement de flux de travaux ServiceNow externe?

Procédez comme suit pour ajouter une balise obligatoire à la demande de changement pour l'intégration de flux de travaux ServiceNow externe:

  1. Connectez-vous à votre instance ServiceNow en tant qu'administrateur.

  2. Ouvrez une demande de changement existante.

    ServiceNow demande de modification demande de modification demande de modification
    ServiceNow

  3. Cliquez sur l'icône des actions supplémentaires pour ouvrir les options supplémentaires.

    ServiceNow actions supplémentaires actions supplémentaires actions supplémentaires
    ServiceNow

  4. Cliquez sur Configurer et sélectionnez la présentation de formulaire.

    Form Layout
    ServiceNow option de configuration supplémentaire - Form Layout

  5. Dans Présentation de formulaire sous Vue de formulaire et section, sélectionnez Demande de changement et créez une nouvelle zone avec Nom exactement comme Appconfiguration tag, Type comme Chaîneet Longueur de zone comme Medium (100).

    Veillez à entrer le nom de la zone exactement comme Appconfiguration tag (sensible à la casse).

    Créer un nouveau champ
    ServiceNow option de configuration supplémentaire - Mise en page du formulaire - Créer un nouveau champ

  6. Cliquez sur Ajouter. Une fois ajoutée, la nouvelle zone s'affiche dans la section Disponible.

    Création d'un nouveau champ affiché dans la section Disponible
    ServiceNow option de configuration supplémentaire - Mise en page du formulaire - nouveau champ affiché dans la section Disponible

  7. Sélectionnez Appconfiguration tag dans la section Disponible et ajoutez-la à la section Sélectionné.

    Sélection d'un nouveau champ de la section Disponible à la section Sélectionnée
    ServiceNow option de configuration supplémentaire - Mise en page du formulaire - sélection d'un nouveau champ de la section Disponible à la section Sélectionnée

  8. La nouvelle zone apparaît dans la demande de changement.

    Nouveau champ affiché dans la
    champ affiché dans la
    de modification*

    La valeur ajoutée sur le terrain est apportée par le service App Configuration lors de la création de nouvelles demandes de changement. Par conséquent, ne modifiez pas la valeur et n'ajoutez aucune autre valeur à la zone Appconfiguration tag. La modification ou l'ajout d'une autre valeur à la zone peut entraîner l'omission des événements de demande de changement.

Comment enregistrer ou ajouter un script de webhook à votre instance ServiceNow externe?

Procédez comme suit pour enregistrer ou ajouter un script de webhook à votre instance ServiceNow:

  1. Connectez-vous à votre instance ServiceNow en tant qu'administrateur.

  2. Cliquez sur l'onglet Toutes et recherchez Business Rules dans la section Définitions du système.

    ServiceNow Tous les onglets Tous les onglets - listés sous Définitions du système
    ServiceNow Business Rules

  3. Dans la page Business Rules, cliquez sur le bouton Nouveau.

    Nouvelle règle de gestion
    ServiceNow- Créer une nouvelle règle de gestion

  4. Dans le nouvel enregistrement, ajoutez le Nom, sélectionnez la table Demande de changement. Cochez la case Avancé pour afficher l'onglet des options avancées.

    Option avancée pour ajouter un script webhook* Option
    Option avancée pour ajouter un script webhook* Option avancée pour ajouter un
    webhook*

  5. Dans l'onglet d'option Avancé, ajoutez le script de webhook.

    (function executeRule(current, previous /*null when async*/) {
       try {
          if (current.u_appconfiguration_tag == "appconfig-workflow" && (current.state == -1 || current.state == -5 || current.state == 4)) {
                //creating the glider Encrypt object
                var glideEncrypt = new GlideEncrypter();
                //fetching the sys_property that contains the IAM key
                var encryptedIbmIAMKey = gs.getProperty('<Add System property name which holds the IBM IAM key (Case Sensitive)>');
                //example: var encryptedKey = gs.getProperty('WorkflowAppConfigIamKey');
                //Decrypting the key
                var decryptedIAMKey = glideEncrypt.decrypt(encryptedIbmIAMKey);
                gs.addInfoMessage("IBM KEY DECRYPTION COMPLETED");
                if (Object.keys(decryptedIAMKey).length !== 0) {
                   gs.addInfoMessage("CHANGE REQUEST IDENTIFIED AS WORKFLOW RELATED");
                   //Adding the decrypted key to the IAM token generation body
                   var bodyContent = "grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=" + decryptedIAMKey;
                   //Making POST call to IBM IAM to generate token
                   var ibmIamTokenRequest = new sn_ws.RESTMessageV2();
                   ibmIamTokenRequest.setHttpMethod('POST');
                   ibmIamTokenRequest.setEndpoint('https://iam.cloud.ibm.com/identity/token');
                   ibmIamTokenRequest.setRequestBody(bodyContent);
                   ibmIamTokenResponse = ibmIamTokenRequest.execute();
                   var ibmIamTokenResponseCode = ibmIamTokenResponse.getStatusCode();
                   gs.addInfoMessage("IBM IAM TOKEN CREATION HTTP RESPONSE CODE: " + ibmIamTokenResponseCode);
                   if (ibmIamTokenResponseCode == 200) {
                      //parsing json response to extract the access_token
                      var ibmIamTokenResponseData = JSON.parse(ibmIamTokenResponse.getBody());
    
                      //extracting the access_token
                      var access_token = ibmIamTokenResponseData.access_token;
                      var encryptedInstanceId = gs.getProperty('<Add System property name which holds the AppConfig InstanceId (Case Sensitive)>');
                      //example: var encryptedInstanceId = gs.getProperty('WorkflowIbmAppConfigInstanceId');
                      var decryptedInstanceId = glideEncrypt.decrypt(encryptedInstanceId);
                      gs.addInfoMessage("IBM APP CONFIG INSTANCE ID DECRYPTION COMPLETED");
                      //preparing webhook request to forward
                      var webHookRequest = new sn_ws.RESTMessageV2();
                      //Refer link https://cloud.ibm.com/apis/app-configuration#endpoints-urls for more info on base URL
                      //Choose the base url from below based on your AppConfig instance region
                      //Dallas: https://us-south.apprapp.cloud.ibm.com
                      //Washington DC: https://us-east.apprapp.cloud.ibm.com
                      //London: https://eu-gb.apprapp.cloud.ibm.com
                      //Sydney: https://au-syd.apprapp.cloud.ibm.com
                      //Frankfurt: https://eu-de.apprapp.cloud.ibm.com
                      //Madrid: https://eu-es.apprapp.cloud.ibm.com
    
                      webHookRequest.setEndpoint('{{AppConfigRegionBaseURL}}/apprapp/workflow/v1/instances/' + decryptedInstanceId + '/crevents');
                      webHookRequest.setRequestHeader('Authorization', 'Bearer ' + access_token);
                      webHookRequest.setHttpMethod('POST');
                      webHookRequest.setRequestHeader("Accept", "application/json");
                      webHookRequest.setRequestHeader("Content-Type", "application/json");
    
                      //preparing the data for the webhook request
                      var webHookReqDataObject = new Object();
                      //BELOW ARE THE DATA THAT IS NEEDED TO PROCESS THE REQUEST, MODIFYING OR ALTERING THE DATA OR THE ATTRIBUTE WILL RESULT IN WEBHOOK REQUEST FAILURE.
                      webHookReqDataObject.operation = String(current.operation());
                      webHookReqDataObject.short_description = String(current.short_description);
                      webHookReqDataObject.change_request_id = String(current.number);
                      webHookReqDataObject.description = String(current.description);
                      webHookReqDataObject.cr_state = String(current.state);
                      webHookReqDataObject.cr_approval_assignment_group = String(current.assignment_group);
                      webHookReqDataObject.appconfiguration_tag = String(current.u_appconfiguration_tag);
                      webHookReqDataObject.implementation_time = String(current.work_start);
                      var webHookJsonStringData = JSON.stringify(webHookReqDataObject);
                      gs.addInfoMessage(webHookJsonStringData);
                      webHookRequest.setRequestBody(webHookJsonStringData);
    
                      //checking the change request has the tag, we only accept the CR with the below mentioned tag id
                      gs.addInfoMessage("SENDING REQUEST TO APP CONFIGURATION WEBHOOK HANDLER");
                      var webHookResponse = webHookRequest.execute();
                      httpResponseStatus = webHookResponse.getStatusCode();
                      gs.addInfoMessage("APP CONFIGURATION WEBHOOK HANDLER RESPONSE CODE:  " + httpResponseStatus);
                      if (httpResponseStatus == 200) {
                            gs.addInfoMessage("SUCCESSFULLY EXECUTED THE WEBHOOK CALL");
                      } else {
                            //try once more
                            webHookResponse = webHookRequest.execute();
                            httpResponseStatus = webHookResponse.getStatusCode();
                            gs.addInfoMessage("WEBHOOK CALL RETRY STATUS CODE:  " + httpResponseStatus);
                            gs.addInfoMessage(webHookResponse.getBody());
                      }
                   } else {
                      gs.addInfoMessage("IBM IAM TOKEN GENERATION FAILED");
                   }
                } else {
                   gs.addInfoMessage("DECRYPTED IAM KEY IS EMPTY OR NOT FOUND");
                }
          } else {
                gs.addInfoMessage("CR STATE : " + current.state + " CR APPCONFIGURATION TAG VALUE : " + current.u_appconfiguration_tag);
                gs.addInfoMessage("CHANGE REQUEST DOES NOT BELONG TO WORKFLOW INTEGRATION OR STATE OF THE CR IS NOT VALID");
          }
       } catch (ex) {
          var message = ex.getMessage();
          gs.info(message);
       }
    })(current, previous);
    
  6. Modifiez le script copié avec votre clé d'API IBM IAM token ou App Configuration de données d'identification de service et l'ID d'instance App Configuration.

  7. Accédez à l'onglet Quand exécuter et cochez la case Mettre à jour.

    ServiceNow- Quand lancer l'onglet - Quand lancer l'onglet - Quand lancer l'onglet
    ServiceNow

  8. Cliquez sur « Soumettre » pour enregistrer les informations.

Comment ajouter le jeton IBM IAM ou la clé d'API du service App Configuration pour le script de webhook?

Le script de webhook a besoin d'un jeton IBM IAM pour les appels de webhook ou de la clé d'API des données d'identification du service App Configuration, où vous pouvez stocker la clé d'API pour générer le jeton.

Effectuez les étapes suivantes :

  1. Connectez-vous à votre instance ServiceNow en tant qu'administrateur.

  2. Cliquez sur l'onglet Tous et recherchez sys_properties.LIST et appuyez sur Entrée. Vous pouvez également accéder à https://{{instanceid}}.service-now.com/sys_properties_list.do, où instanceid est votre ID d'instance ServiceNow.

    ServiceNow Tous les onglets Tous les onglets - Tous les onglets
    ServiceNow

  3. Les détails des propriétés système s'affichent.

    Propriétés du système
    ServiceNow- Propriétés du système

  4. Cliquez sur « Nouveau » pour créer une nouvelle propriété système.

    Nouvelle propriété du système
    ServiceNow- Nouvelle propriété du système

  5. Ajoutez les détails suivants pour ajouter le jeton. Utilisez le type password2 pour stocker la clé. Ce type chiffre les données et ne peut être déchiffré qu'avec l'instance ServiceNow.

    Propriété du système
    ServiceNow- Propriété du système

  6. Cliquez sur Soumettre pour enregistrer la clé dans l'instance ServiceNow. Une fois enregistrées, vous pouvez voir que les données sont chiffrées.

Comment ajouter l'ID d'instance App Configuration à la propriété système ServiceNow pour le script de webhook?

Effectuez les étapes suivantes :

  1. Connectez-vous à votre instance ServiceNow en tant qu'administrateur.

  2. Cliquez sur l'onglet Tous et recherchez sys_properties.LIST et appuyez sur Entrée. Vous pouvez également accéder à https://{{instanceid}}.service-now.com/sys_properties_list.do, où instanceid est votre ID d'instance ServiceNow.

    ServiceNow Tous les onglets Tous les onglets - Tous les onglets
    ServiceNow

  3. Les détails des propriétés système s'affichent.

    Propriétés du système
    ServiceNow- Propriétés du système

  4. Cliquez sur « Nouveau » pour créer une nouvelle propriété système.

    Nouvelle propriété du système
    ServiceNow- Nouvelle propriété du système

  5. Ajoutez l'ID d'instance App Configuration. Utilisez le type password2 pour stocker la clé. Ce type chiffre les données et ne peut être déchiffré qu'avec l'instance ServiceNow.

    Propriété du système
    ServiceNow- Propriété du système

  6. Cliquez sur Soumettre pour enregistrer la clé dans l'instance ServiceNow. Une fois enregistrées, vous pouvez voir que les données sont chiffrées.