Integration mit ServiceNow

Als App-Eigentümer können Sie die Aktivierung von Feature-Flags verwalten, indem Sie zusätzliche Arbeitsabläufe mit ServiceNow® Integration mit App Configuration hinzufügen.

Sie können den Genehmigungsprozessablauf für Konfigurationsänderungen App Configuration auf Umgebungsebene zuordnen. Wenn Sie den Genehmigungsworkflow aktivieren, werden die Änderungen erst nach der Genehmigung und dem Verschieben des zu implementierenden Change-Request-Status angezeigt. Sobald sich die Änderungsanforderung im Implementierungsstatus befindet, werden die Änderungen automatisch wiedergegeben.

Vergewissern Sie sich, dass Sie über eine ServiceNow-Instanz mit Admin-Rechten verfügen, um die Konfiguration zu aktualisieren.

Der Name Extern ServiceNow entspricht dem Standard https://xxx.service-now.com, wobei xxx der Name Ihrer Instanz ist. Der ServiceNow Instanzname, der Benutzername und das Passwort können von Ihrer ServiceNow Konsole abgerufen werden. Navigieren Sie zu Ihrem ServiceNow Profil und gehen Sie zu Instanzpasswort verwalten, um die Details zu erhalten.

Führen Sie die folgenden Schritte aus, um den Workflow ServiceNow zu integrieren:

  1. Klicken Sie im Dashboard Ihrer „ App Configuration “-Serviceinstanz auf „ Einstellungen “.

  2. Klicken Sie im Abschnitt „Genehmigungsworkflows“ auf „ Workflow erstellen “.

  3. Legen Sie in Schritt 1 den Umfang des Workflows fest:

    1. Geben Sie den Namen des Workflows an.

    2. Wählen Sie die Ressourcen aus, für die Sie den Workflow aktivieren möchten.

      • Bei Inkassoangelegenheiten lösen Streichungen einen Genehmigungsvorgang aus.

      • Bei Segmenten lösen Bearbeitungen und Löschungen einen Genehmigungsvorgang aus.

      • Für Umgebungen kann die Genehmigung für alle Feature-Flag-Aktionen, alle Eigenschaften-Aktionen und das Löschen von Umgebungen ausgelöst werden.

  4. Klicken Sie auf Weiter.

  5. Konfigurieren Sie in Schritt 2 die Verbindung zu einer Instanz von „ ServiceNow “. Wählen Sie als Instanztyp für die „ ServiceNow “-Instanz „Externe Instanz“(ServiceNow ) aus.

  6. Klicken Sie auf „Überprüfen“, um die Workflow-Konfiguration zu überprüfen.

  7. Überprüfen Sie die Workflow-Details und klicken Sie auf „Erstellen“, um den Workflow zu erstellen und anzuwenden.

Externer Workflow

Im Folgenden finden Sie die Schritte für den externen Workflow.

  1. Geben Sie den URL der ServiceNow-Instanz ein.

  2. Geben Sie den Benutzernamen ein, der für die Verbindung zur „ ServiceNow “-Instanz verwendet werden soll.

  3. Geben Sie das Kennwort ein, das für die Authentifizierung des zuvor erwähnten Benutzernamens in der ServiceNow-Instanz verwendet werden soll.

  4. Geben Sie die Client-ID ein, die zum Abrufen des Zugriffstokens für „ OAuth “ erforderlich ist.

  5. Geben Sie den geheimen Clientschlüssel ein, der für die Authentifizierung der zuvor angegebenen Client-ID erforderlich ist.

Client ID und Client secret sind für den Zugriff auf Ihre ServiceNow Instanz erforderlich. Für die Erstellung einer Client-ID und eines Client-Geheimnisses lesen Sie bitte die Dokumentation des Dienstes now zur Erstellung eines OAuth API-Endpunkts für externe Clients.

  1. Geben Sie den Namen der Genehmigungsgruppe ein, der unter ServiceNow definiert ist. Der Name der Genehmigungsgruppe enthält Personen, die berechtigt sind, die im Workflow ServiceNow erstellten Änderungsanforderungen zu genehmigen.

  2. Legen Sie die Ablaufzeit der Änderungsanforderung (in Stunden) fest. Mindestens 1 bis maximal 999 Stunden.

  3. Stellen Sie den Schalter „Aktiviert“ auf „Ein“, um den Workflow für den ausgewählten Bereich zu aktivieren.

Für eine Ressource kann nur ein Genehmigungsworkflow angelegt werden.

Wenn Sie einen Workflow für eine Umgebung erstellen, ist für die Änderung oder Löschung der Ressourcen im bei der Workflow-Erstellung ausgewählten Umfang (z. B. alle Markierungen, alle Eigenschaften oder das Löschen der Umgebung) eine Genehmigung erforderlich.

Für jede Aktion wird ein Änderungsantrag erstellt, und die Ressource kann in dieser Umgebung erst geändert oder gelöscht werden, wenn der Änderungsantrag genehmigt wurde. Die Ressource, die in einer Umgebung auf ihre Genehmigung wartet, kann in anderen Umgebungen weiterhin geändert werden.

Um Ihren Änderungsantrag anzuzeigen, bewegen Sie den Mauszeiger über das CR-Symbol neben dem Namen der zu ändernden Ressource. Sie sehen den Link zu Ihrem Änderungsantrag.

Wenn Sie beispielsweise alle Flags im Geltungsbereich ausgewählt haben, löst das Umschalten eines Feature-Flags in dieser Umgebung in den Status „Ein“ oder „Aus“ einen Änderungsantrag aus, der den Genehmigungsprozess durchlaufen muss.

Feature-Flags oder Eigenschaften, die bereits vor der Anwendung des Workflows aktiviert waren, funktionieren weiterhin wie gewohnt, doch alle nachfolgenden Änderungen bedürfen einer Genehmigung. Wenn Sie ein Feature-Flag deaktivieren, den Workflow anwenden und anschließend versuchen, das Feature-Flag zu aktivieren, ändert sich dessen Status in „ “ – Erfolg! Der Workflow für Änderungsanträge wird unter „ “ gestartet, und es wird ein Änderungsantrag erstellt.

Vorgehensweise zum Hinzufügen eines obligatorischen Tags zur Änderungsanforderung für den externen ServiceNow-Workflow?

Führen Sie die folgenden Schritte aus, um einen obligatorischen Tag zur Änderungsanforderung für die Integration des externen Workflows ServiceNow hinzuzufügen:

  1. Melden Sie sich bei Ihrer ServiceNow-Instanz als Administrator an.

  2. Öffnen Sie eine vorhandene Änderungsanforderung.

    ServiceNow änderungsantrag Änderungsantrag Änderungsantrag
    ServiceNow

  3. Klicken Sie auf das Symbol für zusätzliche Aktionen, um die zusätzlichen Optionen zu öffnen.

    ServiceNow zusätzliche Maßnahmen zusätzliche Maßnahmen zusätzliche Maßnahmen
    ServiceNow

  4. Klicken Sie auf Konfigurieren und wählen Sie das Formularlayout aus.

    Formularlayout
    ServiceNow zusätzliche Konfigurationsoption - Formularlayout

  5. Wählen Sie im Formularlayout unter Formularansicht und -abschnitt die Option Änderungsanforderung aus und erstellen Sie ein neues Feld mit Name genau wie Appconfiguration tag, Type als Zeichenfolgeund Feldlänge als Mittel (100).

    Stellen Sie sicher, dass Sie den Feldnamen genau als Appconfiguration-Tag eingeben (Groß-/Kleinschreibung muss beachtet werden).

    Neues Feld erstellen
    ServiceNow zusätzliche Konfigurationsoption - Formularlayout - Neues Feld erstellen

  6. Klicken Sie auf Hinzufügen. Nach dem Hinzufügen wird das neue Feld im Abschnitt Verfügbar angezeigt.

    ![Erstellung eines neuen Feldes, das im Abschnitt "Verfügbar" angezeigt wird](images/ac-sn-12.png "Erstellung eines neuen Feldes, das im Abschnitt "Verfügbar" angezeigt wird")

  7. Wählen Sie Appconfiguration tag im Abschnitt Verfügbar aus und fügen Sie ihn zum Abschnitt Ausgewählt hinzu.

    ![Auswahl eines neuen Feldes aus dem Bereich "Verfügbar" in den Bereich "Ausgewählt"](images/ac-sn-13.png "Auswahl eines neuen Feldes aus dem Bereich "Verfügbar" in den Bereich "Ausgewählt"")

  8. Das neue Feld wird in der Änderungsanforderung angezeigt.

    Neues Feld im Änderungsauftrag
    Feld im Änderungsauftrag

    Der Feldwert wird vom Dienst App Configuration bei der Erstellung neuer Änderungsanträge hinzugefügt. Ändern Sie daher weder den Wert noch fügen Sie dem Feld Appconfiguration tag einen anderen Wert hinzu. Das Ändern oder Hinzufügen eines anderen Werts zum Feld kann dazu führen, dass die Änderungsanforderungsereignisse ignoriert werden.

Vorgehensweise zum Registrieren oder Hinzufügen eines Webhook-Scripts zu Ihrer externen ServiceNow-Instanz?

Führen Sie die folgenden Schritte aus, um das Webhook-Script für Ihre ServiceNow-Instanz zu registrieren oder hinzuzufügen:

  1. Melden Sie sich bei Ihrer ServiceNow-Instanz als Administrator an.

  2. Klicken Sie auf die Registerkarte Alle und suchen Sie nach Business Rules, die unter 'Systemdefinitionen' aufgelistet sind.

    ServiceNow Alle Register Alle Register - aufgeführt unter Systemdefinitionen
    ServiceNow Business Rules

  3. Klicken Sie auf der Seite Business Rules auf die Schaltfläche Neu.

    Neue Geschäftsvorschrift
    ServiceNow- Neue Geschäftsvorschrift erstellen

  4. Fügen Sie im neuen Datensatz den Namen hinzu und wählen Sie die Tabelle Änderungsanforderungaus. Wählen Sie das Kontrollkästchen Erweitert aus, damit die Registerkarte für erweiterte Optionen angezeigt wird.

    Erweiterte Option zum Hinzufügen eines
    Option zum Hinzufügen eines

  5. Fügen Sie auf der Registerkarte der Option Erweitert das Webhook-Script hinzu.

    (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. Ändern Sie das kopierte Script mit Ihrem IBM IAM-Token, dem API-Schlüssel für App Configuration-Serviceberechtigungsnachweise und der ID der App Configuration-Instanz.

  7. Navigieren Sie zur Registerkarte Zeitplan für Ausführung und wählen Sie das Kontrollkästchen Aktualisieren aus.

    ServiceNow- Wann ist die Registerkarte - Wann ist die Registerkarte - Wann ist die Registerkarte
    ServiceNow

  8. Klicken Sie auf „Absenden“, um die Angaben zu speichern.

Vorgehensweise zum Hinzufügen eines IBM IAM-Tokens oder App Configuration-API-Schlüssels für Serviceberechtigungsnachweise für das Webhook-Script?

Das Webhook-Script benötigt das IBM IAM-Token für die Webhook-Aufrufe oder den API-Schlüssel für App Configuration-Serviceberechtigungsnachweise, in dem Sie den API-Schlüssel speichern können, um das Token zu generieren.

Führen Sie die folgenden Schritte aus:

  1. Melden Sie sich bei Ihrer ServiceNow-Instanz als Administrator an.

  2. Klicken Sie auf die Registerkarte Alle und suchen Sie nach sys_properties.LIST. Drücken Sie dann die Eingabetaste. Alternativ können Sie https://{{instanceid}}service-now.com/sys_properties_list.doaufrufen, wobei instanceid Ihre ServiceNow-Instanz-ID ist.

    ServiceNow Alle Registerkarten Alle Registerkarten - Alle Registerkarten
    ServiceNow

  3. Die Details zu Systemeigenschaften werden angezeigt.

    Systemeigenschaften
    ServiceNow- Systemeigenschaften

  4. Klicken Sie auf „Neu“, um eine neue Systemeigenschaft zu erstellen.

    Neue Systemeigenschaft
    ServiceNow- Neue Systemeigenschaft

  5. Fügen Sie die folgenden Details hinzu, um das Token hinzuzufügen. Verwenden Sie den Typ password2 zum Speichern des Schlüssels. Dieser Typ verschlüsselt die Daten und kann nur mit der ServiceNow-Instanz entschlüsselt werden.

    Systemeigenschaft
    ServiceNow- Systemeigenschaft

  6. Klicken Sie auf Übergeben, um den Schlüssel in der ServiceNow-Instanz zu speichern. Nach dem Speichern können Sie sehen, dass die Daten verschlüsselt sind.

Wie wird die Instanz-ID App Configuration zur Systemeigenschaft ServiceNow für das Webhook-Script hinzugefügt?

Führen Sie die folgenden Schritte aus:

  1. Melden Sie sich bei Ihrer ServiceNow-Instanz als Administrator an.

  2. Klicken Sie auf die Registerkarte Alle und suchen Sie nach sys_properties.LIST. Drücken Sie dann die Eingabetaste. Alternativ können Sie https://{{instanceid}}service-now.com/sys_properties_list.doaufrufen, wobei instanceid Ihre ServiceNow-Instanz-ID ist.

    ServiceNow Alle Registerkarten Alle Registerkarten - Alle Registerkarten
    ServiceNow

  3. Die Details zu Systemeigenschaften werden angezeigt.

    Systemeigenschaften
    ServiceNow- Systemeigenschaften

  4. Klicken Sie auf „Neu“, um eine neue Systemeigenschaft zu erstellen.

    Neue Systemeigenschaft
    ServiceNow- Neue Systemeigenschaft

  5. Fügen Sie die Instanz-ID App Configuration hinzu. Verwenden Sie den Typ password2 zum Speichern des Schlüssels. Dieser Typ verschlüsselt die Daten und kann nur mit der ServiceNow-Instanz entschlüsselt werden.

    Systemeigenschaft
    ServiceNow- Systemeigenschaft

  6. Klicken Sie auf Übergeben, um den Schlüssel in der ServiceNow-Instanz zu speichern. Nach dem Speichern können Sie sehen, dass die Daten verschlüsselt sind.