Mise à jour des états des demandes de changement

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 2 minutes de lecture
  • Si vous avez effectué une mise à niveau à partir d’une version antérieure à Geneva, vous devez mettre à jour les anciennes étiquettes d’état vers les nouvelles étiquettes d’état après avoir activé Gestion des changements State Model.

    Avant de commencer

    Rôle requis : admin

    Pourquoi et quand exécuter cette tâche

    Les valeurs d’état des enregistrements de changement actuels ne sont pas modifiées lorsque vous activez Gestion des changements State Model. Toutefois, vos enregistrements de changement actuels affichent les nouvelles étiquettes d’état dans le champ État.

    Valeur d’état Nouvelle étiquette d’état Ancienne d’étiquette d’état
    -5 Nouveau En attente
    -4 Évaluer (Non utilisé)
    -3 Autoriser (Non utilisé)
    -2 Planifié (Non utilisé)
    -1 Implémenter (Non utilisé)
    0 Revue (Non utilisé)
    1 (Non utilisé) Ouvert
    2 (Non utilisé) En cours de résolution
    3 Fermé Fermé terminé
    4 Annulé Fermé incomplet
    7 (Non utilisé) Fermé ignoré

    Par exemple, avant l’activation de Gestion des changements State Model, les enregistrements d’une valeur d’état de -5 présentent l’étiquette d’état En attente. Une fois State Model activé, ces enregistrements conservent la valeur d’état de -5, mais présentent l’étiquette Nouveau. Pour utiliser le processus Gestion des changements requis par votre organisation avec State Model, vous devez mettre à jour les valeurs d’état vers les nouvelles étiquettes dans vos enregistrements de changement existants comme il convient, manuellement ou via un script.

    Vous devez également mettre à jour tous les rapports qui exécutent des requêtes basées sur d’anciennes étiquettes d’état pour refléter les nouvelles étiquettes d’état.

    Procédure

    1. Pour mettre à jour automatiquement les valeurs de champ d’état d’anciennes étiquettes d’état vers les nouvelles étiquettes d’état, personnalisez le script d’exemple suivant et exécutez-le :
      updateStates();
      
      function updateStates() {
      
        function hasApprovers(changeGr) {
          var approverGr = new GlideRecord("sysapproval_approver");
          approverGr.addQuery('sysapproval', changeGr.getUniqueValue());
          approverGr.query();
          return approverGr.getRowCount() > 0;
        }
      
        function hasRunningWorkflows(changeGr) {
          var workflow = new Workflow();
          var workflowGr = workflow.getRunningFlows(changeGr);
          var hasRunningFlows = workflowGr.getRowCount() > 0;
          return hasRunningFlows;
        }
      
        // Old State Model
        var PENDING = '-5';
        var OPEN = '1';
        var CLOSED_COMPLETE = '3';
        var CLOSED_INCOMPLETE = '4';
        var CLOSED_SKIPPED = '7';
      
        // New State Model
        var NEW = '-5';
        var ASSESS = '-4';
        var AUTHORIZE = '-3';
        var SCHEDULED = '-2';
        var IMPLEMENT = '-1';
        var REVIEW = '0';
        var CLOSED = '3';
        var CANCELLED = '4';
      
        // Find all change requests
        var record = new GlideRecord('change_request');
        record.query();
      
        // Update state from old value to new value
        while (record.next()) {
          switch(record.getValue('state')) {
            case OPEN:
              if (!hasRunningWorkflows(record) && !hasApprovers(record))
                record.state = NEW;
              break;
            case CLOSED_COMPLETE:
              record.state = CLOSED;
              record.close_code = "successful";
              break;
            case CLOSED_SKIPPED:
              record.state = CANCELLED;
              record.close_code = "unsuccessful";
              break;
            case CLOSED_INCOMPLETE:
              record.state = CLOSED;
              record.close_code = "successful_issues";
              break;
          }
          record.autoSysFields(false);
          record.setWorkflow(false);
          record.update();
        }
      
      }
      
    2. Vérifiez que les étiquettes d’état sont modifiées dans les enregistrements de demande de changement existants.