Integración con ServiceNow

Como propietario de una aplicación, puede gestionar la habilitación de banderas de funciones añadiendo un flujo de trabajo adicional con la integración de ServiceNow® con App Configuration.

Puede asociar el flujo de proceso de aprobación para cualquier cambio de configuración a App Configuration a nivel de entorno. Cuando habilita el flujo de trabajo de aprobación, los cambios sólo se reflejan después de la aprobación y de mover el estado de solicitud de cambio a implementar. Una vez que la solicitud de cambio esté en estado de implementación, los cambios se reflejarán automáticamente.

Asegúrese de que dispone de una instancia de ServiceNow con privilegios de administrador para actualizar la configuración.

El nombre ServiceNow externo sigue el estándar https://xxx.service-now.com, donde xxx es el nombre de su instancia. El nombre de la instancia ServiceNow, el nombre de usuario y la contraseña pueden obtenerse desde la consola ServiceNow. Acceda a su perfil ServiceNow y vaya a Gestionar contraseña de instancia para obtener los detalles.

Para realizar la integración con el flujo de trabajo ServiceNow, realice los pasos siguientes:

  1. En el panel de control de tu instancia del servicio « App Configuration », haz clic en « Configuración ».

  2. En la sección « Flujos de trabajo de aprobación », haz clic en « Crear flujo de trabajo ».

  3. En el paso 1, define el alcance del flujo de trabajo:

    1. Indica el nombre del flujo de trabajo.

    2. Selecciona los recursos para los que deseas activar el flujo de trabajo.

      • En el caso de los cobros, las cancelaciones requieren aprobación.

      • En el caso de los segmentos, las modificaciones y las eliminaciones requieren aprobación.

      • En el caso de los entornos, se puede activar la aprobación para todas las acciones relacionadas con los indicadores de funciones, todas las acciones relacionadas con las propiedades y la eliminación de entornos.

  4. Pulse Siguiente.

  5. En el paso 2, configura la conexión a una instancia de ServiceNow. Selecciona el tipo de instancia para la instancia de « ServiceNow » como « Externo ServiceNow ».

  6. Haga clic en « Revisar » para revisar la configuración del flujo de trabajo.

  7. Comprueba los detalles del flujo de trabajo y haz clic en «Crear» para crear y aplicar el flujo de trabajo.

Flujo de trabajo externo

Para el flujo de trabajo Externo, a continuación se muestran los pasos a seguir.

  1. Introduzca el URL de la instancia ServiceNow.

  2. Introduce el nombre de usuario que se utilizará para conectarse a la instancia de ServiceNow.

  3. Especifique la Contraseña que se utilizará para autenticar el Nombre de usuario mencionado anteriormente para autenticarse en la instancia de ServiceNow.

  4. Introduce el ID de cliente necesario para recuperar el token de acceso de OAuth.

  5. Especifique el Secreto de cliente necesario para autenticar el ID de cliente proporcionado anteriormente.

El ID de cliente y el secreto de cliente son necesarios para acceder a su instancia ServiceNow. Para crear un ID de cliente y un secreto de cliente, consulte la documentación de service now sobre cómo crear un punto final de API OAuth para clientes externos.

  1. Introduce el nombre del grupo de aprobación definido en ServiceNow. El nombre de grupo de aprobación contendrá un conjunto de personas autorizadas para aprobar las solicitudes de cambio creadas en el flujo de trabajo ServiceNow.

  2. Establezca la hora de caducidad de la solicitud de cambio (en horas). Mínimo de 1 a máximo 999 horas.

  3. Pon el interruptor de «Habilitado» en la posición «ON» para activar el flujo de trabajo para el ámbito seleccionado.

Solo se puede crear un flujo de trabajo de aprobación por recurso.

Al crear un flujo de trabajo para un entorno, se requiere una aprobación para modificar o eliminar los recursos del ámbito seleccionado durante la creación del flujo de trabajo (por ejemplo, todas las marcas, todas las propiedades o la eliminación del entorno).

Por cada acción se crea una solicitud de cambio, y el recurso no se puede modificar ni eliminar en ese entorno hasta que se apruebe dicha solicitud. El recurso que está pendiente de aprobación en un entorno puede seguir modificándose en otros entornos.

Para ver tu solicitud de cambio, pasa el cursor por encima del icono CR situado junto al nombre del recurso que se está modificando. Verás el enlace a tu solicitud de cambio.

Por ejemplo, si has seleccionado todos los indicadores de función del ámbito, al activar o desactivar un indicador de función en ese entorno se inicia una solicitud de cambio que debe pasar por el proceso de aprobación.

Las banderas de función o propiedades que ya estaban activadas antes de aplicar el flujo de trabajo siguen funcionando con normalidad, pero cualquier modificación posterior requiere aprobación. Si desactivas un indicador de función, aplicas el flujo de trabajo y, a continuación, intentas volver a activarlo, su estado cambiará a « : ¡Éxito!» Se ha iniciado el flujo de trabajo de solicitud de cambio y se ha creado una solicitud de cambio.

¿Cómo añadir una etiqueta obligatoria a la solicitud de cambio de flujo de trabajo ServiceNow externo?

Siga estos pasos para añadir una etiqueta obligatoria a la solicitud de cambio para la integración de flujo de trabajo ServiceNow externo:

  1. Inicie sesión en la instancia de ServiceNow como administrador.

  2. Abra una solicitud de cambio existente.

    ServiceNow solicitud de cambio solicitud de cambio solicitud de cambio
    ServiceNow

  3. Pulse el icono de acciones adicionales para abrir las opciones adicionales.

    ServiceNow acciones adicionales acciones adicionales acciones adicionales
    ServiceNow

  4. Pulse Configurar y seleccione el Diseño de formulario.

    Disposición del formulario
    ServiceNow opción de configuración adicional - Disposición del formulario

  5. En el Diseño de formulario bajo Vista y sección de formulario, seleccione Solicitud de cambio y cree un nuevo campo con Nombre exactamente como Etiqueta de Appconfiguration, Escriba como Seriey Longitud de campo como Medio (100).

    Asegúrese de especificar el nombre del campo exactamente como Appconfiguration tag (distingue entre mayúsculas y minúsculas).

    Crear nuevo campo
    ServiceNow opción de configuración adicional - Diseño del formulario - Crear nuevo campo

  6. Pulse Añadir. Una vez añadido, el nuevo campo se mostrará en la sección Disponible.

    Creado nuevo campo mostrado en la sección Disponible
    ServiceNow opción de configuración adicional - Diseño del formulario - nuevo campo mostrado en la sección Disponible

  7. Seleccione Etiqueta Appconfiguration en la sección Disponible y añádalo a la sección Seleccionado.

    Selección de un nuevo campo de la sección Disponible a la sección Seleccionada
    ServiceNow opción de configuración adicional - Form Layout - selección de un nuevo campo de la sección Disponible a la sección Seleccionada

  8. Puede ver el nuevo campo que aparece en la solicitud de cambio.

    Nuevo campo visualizado en la solicitud de
    campo visualizado en la solicitud de

    El valor del campo lo añade el servicio App Configuration al crear nuevas solicitudes de cambio. Por lo tanto, no modifique el valor ni añada ningún otro valor al campo Etiqueta de Appconfiguration. Modificar o añadir cualquier otro valor al campo puede hacer que se ignoren los sucesos de solicitud de cambio.

¿Cómo registrar o añadir un script de webhook a la instancia de ServiceNow externa?

Siga estos pasos para registrar o añadir el script de webhook a la instancia de ServiceNow:

  1. Inicie sesión en la instancia de ServiceNow como administrador.

  2. Pulse la pestaña Todo y busque Business Rules listadas en Definiciones del sistema.

    ServiceNow Todas las pestañas Todas las pestañas - que figuran en Definiciones del sistema
    ServiceNow Business Rules

  3. En la página Business Rules, pulse el botón Nuevo.

    Nueva regla de negocio
    ServiceNow- Crear nueva regla de negocio

  4. En el nuevo registro, añada el Nombre, seleccione la tabla que será Solicitud de cambio. Marque el recuadro de selección Avanzado para ver la pestaña de opciones avanzadas.

    Opción avanzada para añadir script de webhook*Opción
    para añadir
    de webhook*

  5. En la pestaña de opción Avanzado, añada el 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. Modifique el script copiado con la clave de API de las credenciales de servicio de IBM IAM o App Configuration y el ID de instancia de App Configuration.

  7. Vaya a la pestaña Cuándo ejecutar y seleccione el recuadro de selección Actualizar.

    ServiceNow- Cuándo ejecutar la pestaña - Cuándo ejecutar la pestaña - Cuándo ejecutar la pestaña
    ServiceNow

  8. Haz clic en «Enviar» para guardar los datos.

¿Cómo añadir la clave de API de IBM IAM o App Configuration para el script de webhook?

El script de Webhook necesita la clave de API de IBM IAM para las llamadas de webhook o App Configuration, donde puede almacenar la clave de API para generar la señal.

Siga estos pasos:

  1. Inicie sesión en la instancia de ServiceNow como administrador.

  2. Pulse el separador Todo y busque sys_properties.LIST y pulse Intro. De forma alternativa, puede ir a https://{{instanceid}}.service-now.com/sys_properties_list.do, donde instanceid es su ID de instancia de ServiceNow.

    ServiceNow Todas las pestañas Todas las pestañas - Todas las pestañas
    ServiceNow

  3. Se visualizan los detalles de Propiedades del sistema.

    Propiedades del sistema
    ServiceNow- Propiedades del sistema

  4. Haz clic en «Nuevo» para crear una nueva propiedad del sistema.

    Nueva propiedad del sistema
    ServiceNow- Nueva propiedad del sistema

  5. Añada los detalles siguientes para añadir la señal. Utilice el tipo password2 para almacenar la clave. Este tipo cifrará los datos y solo se puede descifrar con la instancia de ServiceNow.

    Propiedad del sistema
    ServiceNow- Propiedad del sistema

  6. Pulse Enviar para guardar la clave en la instancia de ServiceNow. Una vez guardados, puede ver que los datos están cifrados.

¿Cómo añadir el ID de instancia de App Configuration a la propiedad del sistema ServiceNow para el script webhook?

Siga estos pasos:

  1. Inicie sesión en la instancia de ServiceNow como administrador.

  2. Pulse el separador Todo y busque sys_properties.LIST y pulse Intro. De forma alternativa, puede ir a https://{{instanceid}}.service-now.com/sys_properties_list.do, donde instanceid es su ID de instancia de ServiceNow.

    ServiceNow Todas las pestañas Todas las pestañas - Todas las pestañas
    ServiceNow

  3. Se visualizan los detalles de Propiedades del sistema.

    Propiedades del sistema
    ServiceNow- Propiedades del sistema

  4. Haz clic en «Nuevo» para crear una nueva propiedad del sistema.

    Nueva propiedad del sistema
    ServiceNow- Nueva propiedad del sistema

  5. Añada el ID de instancia de App Configuration. Utilice el tipo password2 para almacenar la clave. Este tipo cifrará los datos y solo se puede descifrar con la instancia de ServiceNow.

    Propiedad del sistema
    ServiceNow- Propiedad del sistema

  6. Pulse Enviar para guardar la clave en la instancia de ServiceNow. Una vez guardados, puede ver que los datos están cifrados.