Aller au contenu

Injecter des Incidents de Test dans une Sandbox ServiceNow avec Python

Les sandboxes ServiceNow sont parfaites pour tester et configurer des fonctionnalités sans affecter un environnement de production. Toutefois, si vous souhaitez simuler des workflows avec des incidents personnalisés, un script d’injection peut vous aider à charger plusieurs incidents de test depuis un fichier CSV. Dans cet article, nous allons vous guider pas à pas pour injecter des incidents de test dans votre sandbox ServiceNow en utilisant un script Python.

Si vous ne savez pas comment obtenir votre sandbox : https://developer.servicenow.com/dev.do#!/home?wu=true

Étape 1 : Préparer le Fichier CSV avec les Données d’Incidents

Avant de commencer, créez un fichier CSV qui contiendra les incidents de test que vous souhaitez injecter dans ServiceNow. Assurez-vous que le fichier contient les colonnes suivantes :

  • Number : Identifiant unique de l’incident.
  • Opened : Date et heure d’ouverture de l’incident.
  • Short description : Description succincte du problème.
  • Description : Description détaillée du problème.
  • Assignment group : Groupe auquel l’incident est assigné.
  • Resolution notes : Notes de résolution de l’incident (si applicable).

Voici un exemple de structure du fichier CSV :

NumberOpenedShort descriptionDescriptionAssignment groupResolution notes
INC0012024-10-01 08:00Problème de connexionL’utilisateur ne peut pas se connecter au réseau.Support ITRéinitialisé le mot de passe de l’utilisateur.
INC0022024-10-01 09:30Application lenteL’application prend trop de temps pour charger.Support ITOptimisé la base de données.

Enregistrez ce fichier sous le nom ServiceNow_Incidents_Dataset.csv dans le même répertoire que votre script Python.

ou utiliser mon fichier

Étape 2 : Créer le Script Python pour l’Injection d’Incidents

Ce script Python lit chaque ligne du fichier CSV et envoie les données d’incidents à votre instance ServiceNow via l’API REST.

Script Python

  1. Variables de configuration : Définissez l’URL de votre instance sandbox ServiceNow et votre token d’autorisation.
  2. Injection d’incidents : Le script lit chaque ligne du CSV et crée un incident en fonction des données fournies.
import pandas as pd
import requests
import random
import json

# Configuration variables
instance_url = "https://your_instance.service-now.com/api/now/table/incident"  # Replace with your instance URL
auth_token = "YourAuthorizationToken"  # Replace with your authorization token

# Load incidents from the CSV file
file_path = 'ServiceNow_Incidents_Dataset.csv'  # Adjust path as necessary
data = pd.read_csv(file_path)

# Function to create an incident in ServiceNow
def create_incident(number, opened, short_description, description, assignment_group, impact, urgency, status, resolution_notes):
    headers = {
        'Authorization': f'Basic {auth_token}',
        'Content-Type': 'application/json'
    }
    
    payload = {
        "number": number,
        "opened": opened,
        "short_description": short_description,
        "description": description,
        "assignment_group": assignment_group,
        "impact": impact,
        "urgency": urgency,
        "state": status
    }

    if status == '7':  # 7: Solved
        payload["resolution_notes"] = resolution_notes
        payload["close_notes"] = resolution_notes
        payload["resolution_code"] = "solved"
    
    response = requests.post(instance_url, headers=headers, data=json.dumps(payload))
    return response.status_code, response.json()

# Define possible statuses
statuses = ['1', '2', '3', '7']  # 1: New, 2: In Progress, 3: On Hold, 7: Solved

# Process each incident
for index, row in data.iterrows():
    number = row['Number']
    opened = row['Opened']
    short_description = row['Short description']
    description = row['Description']
    assignment_group = row['Assignment group']
    impact = random.randint(1, 3)
    urgency = random.randint(1, 3)
    status = random.choice(statuses)
    resolution_notes = row['Resolution notes'] if status == '7' else None
    
    status_code, response_json = create_incident(number, opened, short_description, description, assignment_group, impact, urgency, status, resolution_notes)
    incident_number = response_json.get('result', {}).get('number', 'Unknown')
    print(f"Ticket {number} - Status Code: {status_code}, Incident Number: {incident_number}, Response: {response_json}")

Étape 3 : Exécuter le Script

  1. Vérifiez les configurations : Assurez-vous d’avoir bien remplacé instance_url et auth_token par les valeurs correspondant à votre sandbox.
  2. Exécutez le script : Lancez le script depuis votre terminal ou votre IDE préféré. Chaque incident sera ajouté à votre sandbox ServiceNow.
python inject_incidents.py

Étape 4 : Vérifier les Incidents dans ServiceNow

Après l’exécution du script, connectez-vous à votre instance ServiceNow pour vérifier les incidents injectés :

  1. Accédez à Incidents > Tous les Incidents.
  2. Vous verrez les incidents de test créés par le script avec les données fournies dans le CSV.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *