Votre modèle de données pour le cycle de développement logiciel
Votre modèle de données pour le cycle de développement logiciel
- Attributs recommandés à recueillir
- Activités clés à suivre
- Conseils d’extraction pour ServiceNow DevOps
Attributs du cycle de développement logiciel
| Nom | Description | ||
|---|---|---|---|
| Élément de développement DevelopmentItem | Identifiant unique d’une unité de travail, comme une fonctionnalité, un bug ou une tâche, qui progresse au fil du cycle de développement. | ||
| Description L’élément de développement sert d’identifiant de cas principal et représente une unité de travail distincte suivie dans le processus. Il relie toutes les activités associées à cet élément, de sa conception initiale et sa planification jusqu’au développement, aux tests et au déploiement. Dans une analyse de Process Mining, cet attribut est indispensable pour reconstituer le parcours de bout en bout de chaque élément de travail. Il permet de visualiser les flux du processus, de calculer les temps de cycle totaux et de repérer les variantes du processus propres à chaque fonctionnalité ou correction de bug. Chaque événement du journal doit être associé à un élément de développement pour établir une cartographie cohérente du processus. Pourquoi est-ce important ? Cet identifiant central relie toutes les activités de développement associées au sein d’une même instance de processus. Il permet d’analyser le cycle de vie complet de chaque élément de travail. Où trouver ces données Il s’agit généralement de la clé primaire des tables qui gèrent les stories, les bugs ou les tâches, comme les tables « rm_story », « rm_bug » ou « task » dans ServiceNow. Exemples STRY0010015BUG0034092TASK0050118 | |||
| Heure de début EventTime | Horodatage précis indiquant le moment où une activité ou un événement s’est produit. | ||
| Description Cet attribut indique la date et l’heure d’enregistrement de chaque activité du cycle de développement. Il est indispensable pour classer les événements par ordre chronologique et effectuer toutes les analyses temporelles. Dans le Process Mining, l’heure de début sert à calculer les durées entre les activités, à repérer les temps d’attente et à mesurer le temps de cycle global du processus. Elle est essentielle aux Dashboards qui analysent les performances, comme l’analyse du temps de cycle de bout en bout du SDLC, et au calcul d’indicateurs clés tels que le délai de revue du code. Pourquoi est-ce important ? Cet horodatage est indispensable pour classer correctement les événements et calculer les indicateurs de performance, notamment les temps de cycle, les durées et les temps d’attente. Où trouver ces données Généralement présent dans les champs d’horodatage générés par le système, comme « sys_updated_on » ou « sys_created_on », dans la piste d’audit ou les tables de tâches. Exemples 2023-10-26T10:00:00Z2023-10-27T14:35:10Z2023-11-01T09:15:00Z | |||
| Nom de l’activité ActivityName | Nom de l’événement précis du cycle de développement qui s’est produit, par exemple « Development Started » ou « Code Review Performed ». | ||
| Description Cet attribut indique le nom de chaque étape importante ou tâche accomplie au cours du cycle de développement logiciel. Ces activités constituent les étapes successives du processus, de la création au déploiement. L’analyse de leur séquence et de leur fréquence est au cœur du Process Mining. Elle permet de cartographier le processus, de repérer les goulots d’étranglement entre les étapes et de mettre en évidence les écarts par rapport au processus SDLC standard ou les variantes inefficaces. La liste des activités définies comprend les principales étapes de conception, de développement, de test et de déploiement. Pourquoi est-ce important ? Il définit les étapes de la cartographie du processus et permet d’analyser son déroulement, de repérer les goulots d’étranglement et de détecter les écarts par rapport au SDLC standard. Où trouver ces données Cet attribut est généralement obtenu en associant les changements de statut, les enregistrements d’événements ou les entrées de la piste d’audit à une liste normalisée de noms d’activités. Par exemple, le passage du champ « state » à « In Progress » peut être associé à « Development Started ». Exemples Développement commencéCode validéTests d’assurance qualité terminésDéployé en production | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage indiquant la dernière actualisation du journal d’événements à partir du système source. | ||
| Description Cet attribut indique la date de la dernière extraction ou mise à jour du jeu de données depuis ServiceNow DevOps. Il s’applique à l’ensemble du jeu de données, et non à chaque événement. Cet horodatage est essentiel pour connaître l’actualité de l’analyse. Il indique aux utilisateurs à quel point les résultats sur le processus sont récents et aide à planifier l’actualisation des données. Son affichage dans les Dashboards donne du contexte à tous les indicateurs et visualisations, afin que les décisions reposent sur des données à jour. Pourquoi est-ce important ? Il indique si les données sont récentes et permet aux utilisateurs de savoir à quel point l’analyse du processus est à jour. Où trouver ces données Cet horodatage est généré et ajouté lors de l’extraction des données. Il indique le moment où l’extraction a été effectuée. Exemples 2023-11-15T08:00:00Z | |||
| Système source SourceSystem | Indique le système d’où proviennent les données extraites, ici ServiceNow DevOps. | ||
| Description Cet attribut indique le système d’origine des données d’événements. Pour ce processus, sa valeur sera toujours « ServiceNow DevOps ». Même si cette valeur peut sembler fixe, préciser le système source est essentiel à la gouvernance des données et dans les environnements où des données issues de plusieurs systèmes, comme Jira ou Azure DevOps, peuvent être regroupées. Cela clarifie la provenance des données et facilite le diagnostic des problèmes de qualité ou d’extraction. Pourquoi est-ce important ? Il garantit la traçabilité des données et contribue à préserver leur intégrité, en particulier lorsque des données provenant de plusieurs outils de développement sont intégrées. Où trouver ces données Il s’agit d’une valeur statique à ajouter lors de l’extraction et de la transformation des données. Exemples ServiceNow DevOps | |||
| Développeur affecté AssignedDeveloper | Nom ou ID du développeur ou de l’utilisateur affecté à l’élément de développement au moment de l’activité. | ||
| Description Cet attribut identifie la personne chargée d’exécuter une tâche ou une activité précise. Sa valeur peut changer au fil des étapes et des équipes traversées par l’élément de développement. Cet attribut est essentiel pour analyser l’affectation des ressources, la charge de travail et les transferts entre personnes ou équipes. Il alimente directement le Dashboard « Developer Workload and Handoffs » et l’indicateur « Activity Volume per Developer ». Le suivi de ses changements permet de mesurer les délais de transfert et de repérer les difficultés de collaboration entre développeurs ou entre les équipes de développement et d’assurance qualité. Pourquoi est-ce important ? Cet attribut est indispensable aux analyses liées aux ressources, notamment à la répartition de la charge de travail, à l’efficacité des transferts et au repérage des tendances de performance propres à chaque équipe. Où trouver ces données Cette information est généralement stockée dans le champ « assigned_to » des tables de tâches de ServiceNow. Exemples David MillerAnna WilliamsJames Brown | |||
| État de l’élément de développement DevelopmentItemState | L’état de l’élément de développement au moment de l’événement, par exemple « Open », « In Progress » ou « Closed ». | ||
| Description Cet attribut indique l’état officiel de l’élément de développement dans ServiceNow. Les activités correspondent aux étapes du processus déduites des données, tandis que l’état représente l’étape formelle enregistrée dans le flux de travail du système. L’état est souvent la source à partir de laquelle les activités sont déduites. Il peut servir à valider les données et à créer des vues simplifiées du processus, à un niveau général. Par exemple, l’analyse du temps passé dans chaque état offre un autre éclairage sur les goulots d’étranglement que l’analyse du temps écoulé entre les activités. Elle permet également de repérer les éléments bloqués ou résolus. Pourquoi est-ce important ? Indique l’état officiel d’un élément de travail dans le système. Il sert souvent de source pour déduire les activités et peut être utilisé pour valider les données et analyser les états à un niveau général. Où trouver ces données Il s’agit d’un champ standard, généralement nommé « state » ou « stage », dans les tables liées aux tâches de ServiceNow. Exemples En attenteEn coursPrêt pour les testsClôturé, terminé | |||
| Groupe d’affectation AssignmentGroup | L’équipe ou le groupe responsable de l’élément de développement au moment de l’activité. | ||
| Description Cet attribut indique l’équipe à laquelle un élément de travail est affecté, par exemple « Développeurs frontend », « Services backend » ou « Équipe d’assurance qualité ». Au fil de son avancement, l’élément de travail passe souvent d’un groupe d’affectation à un autre. Le suivi du groupe d’affectation est essentiel pour comprendre la collaboration entre équipes et les transferts de travail. Il aide à repérer les retards systémiques qui surviennent lorsqu’un travail passe d’une équipe à une autre. Cet attribut permet d’analyser les performances et la charge de travail de chaque équipe, ainsi que de déterminer lesquelles créent des goulots d’étranglement dans le flux global. Pourquoi est-ce important ? Indique quelle équipe est responsable du travail et permet d’analyser les performances et la charge de travail des équipes, ainsi que l’efficacité des transferts entre elles. Où trouver ces données Cette information est enregistrée dans le champ « assignment_group », un champ standard des tables liées aux tâches dans ServiceNow. Exemples Ingénierie de la plateformeÉquipe de l’application mobileAssurance qualitéDevOps | |||
| Module ou composant concerné ModuleComponentAffected | Le module logiciel, l’application ou le composant précis auquel se rapporte l’élément de développement. | ||
| Description Cet attribut classe le travail de développement selon la partie du système concernée. Il peut s’agir d’un microservice, d’un composant d’interface utilisateur ou d’une application backend. La segmentation du processus par module ou composant est essentielle pour repérer les goulots d’étranglement localisés. Le Dashboard « Component-Specific Bottleneck Insights » et l’indicateur « Avg Stage Duration by Component » s’appuient sur cet attribut pour déterminer si certaines parties du code sont régulièrement associées à des cycles de développement plus longs, à davantage de reprises ou à des échecs de déploiement plus fréquents. Vous pouvez ainsi concentrer les efforts d’amélioration là où ils sont le plus nécessaires. Pourquoi est-ce important ? Permet de segmenter l’analyse par application ou composant afin de repérer les goulots d’étranglement et les problèmes de qualité propres à certaines parties du système. Où trouver ces données Il s’agit souvent d’un champ personnalisé ou d’une référence à la base de données de gestion des configurations (CMDB), qui relie l’élément de travail à un enregistrement « cmdb_ci ». Consultez la documentation ServiceNow DevOps. Exemples Service de facturationInterface d’authentification des utilisateursBase de données de reportingPasserelle API | |||
| Priorité DevelopmentItemPriority | Niveau de priorité attribué à l’élément de développement, par exemple « High », « Medium » ou « Low ». | ||
| Description Cet attribut classe les éléments de développement selon leur degré d’urgence métier. Les niveaux de priorité aident les équipes à se concentrer sur les tâches les plus importantes et servent souvent à gérer les SLA et les attentes des parties prenantes. Dans le Process Mining, la priorité est un axe essentiel de comparaison. Elle permet de filtrer la cartographie du processus pour vérifier si les éléments prioritaires suivent un parcours plus rapide ou différent. Elle est indispensable au Dashboard et à l’indicateur « High-Priority Feature Delivery Time », qui permettent de vérifier si les éléments essentiels sont réellement traités plus rapidement. Pourquoi est-ce important ? Permet de filtrer et de comparer les processus selon leur niveau de priorité, afin de vérifier si les éléments prioritaires sont traités plus rapidement et plus efficacement. Où trouver ces données Il s’agit d’un champ standard, souvent nommé « priority », dans les tables liées aux tâches de ServiceNow. Exemples 1 - Critique2 - Élevée3 - Modérée4 - Faible | |||
| Reprise IsRework | Indicateur booléen vrai lorsque l’activité fait partie d’une boucle de reprise, par exemple lorsqu’un élément retourne en développement après les tests. | ||
| Description Cet attribut dérivé repère les activités qui ont lieu après le retour du processus à une étape antérieure. Par exemple, si l’activité « Development Started » survient après « QA Testing Completed » pour un même élément, elle est signalée comme une reprise. Cet indicateur est essentiel pour quantifier et visualiser les reprises. Il contribue directement au Dashboard « Rework and Rejection Flow Analysis » et sert à calculer l’indicateur « Rework Rate after Testing ». Les analystes peuvent ainsi filtrer facilement ces événements et étudier leur fréquence, leurs causes et leur incidence sur le temps de cycle global. Pourquoi est-ce important ? Cet indicateur facilite la mesure et l’analyse des reprises. Il aide à évaluer la qualité du processus et à repérer les causes profondes du travail répété. Où trouver ces données Cet attribut est calculé dans l’outil de Process Mining, qui analyse la séquence des activités de chaque cas pour repérer les retours en arrière dans le flux du processus. Exemples truefalse | |||
| Temps de cycle de l’élément de développement DevelopmentItemCycleTime | Durée totale entre la création de l’élément de développement et sa clôture définitive ou son déploiement. | ||
| Description Cet attribut est un indicateur calculé qui représente la durée de bout en bout d’un élément de développement. Pour chaque cas, il est obtenu en calculant l’écart entre l’horodatage de la première activité et celui de la dernière. Il s’agit d’un indicateur clé de performance pour l’ensemble du processus SDLC, qui contribue directement à l’indicateur « Average SDLC Cycle Time ». Il donne une mesure générale de la vitesse et de l’efficacité du processus. Son analyse dans le temps et selon différents critères, comme la priorité ou l’équipe, permet de suivre les effets des initiatives d’amélioration. Pourquoi est-ce important ? Représente la durée totale de bout en bout d’un élément de travail. C’est un indicateur clé de l’efficacité et de la vitesse globales du processus. Où trouver ces données Ce champ n’existe pas dans le système source. Il est calculé dans l’outil de Process Mining en soustrayant le StartTime minimum du StartTime maximum pour chaque CaseId. Exemples 15 jours et 4 heures3 jours et 12 heures32 jours et 8 heures | |||
| Type d’élément de développement DevelopmentItemType | La catégorie de l’élément de travail, par exemple « Fonctionnalité », « Dette technique » ou « Task ». | ||
| Description Cet attribut distingue les différents types de travail qui suivent le processus SDLC. Par exemple, le traitement d’un bogue critique peut suivre un parcours différent et plus rapide que le développement d’une nouvelle fonctionnalité. L’analyse par type d’élément de travail permet de mieux comprendre les performances. Elle aide à répondre à des questions telles que : « Les bogues entraînent-ils davantage de reprises que les nouvelles fonctionnalités ? » ou « Notre temps de cycle pour réduire la dette technique est-il acceptable ? ». Cette segmentation apporte un éclairage plus précis qu’une vue unique du processus, appliquée à tous les types de travail. Pourquoi est-ce important ? Distingue les différents types de travail, comme les fonctionnalités et les bogues, qui peuvent suivre des parcours, avoir des priorités et présenter des durées prévues différentes. Où trouver ces données Cette information peut être déterminée à partir de la table source de l’enregistrement (par exemple, « rm_story » ou « rm_bug ») ou d’un champ « type » dans une table de tâches générique. Exemples FonctionnalitéBogueTaskÉtude exploratoire | |||
| État du déploiement DeploymentStatus | Indique le résultat d’une activité de déploiement, généralement « Réussi » ou « Échec ». | ||
| Description Cet attribut enregistre le résultat d’un déploiement dans un environnement donné. Il est essentiel pour comprendre la fiabilité et la stabilité du processus de livraison. Cet attribut est indispensable au Dashboard « Deployment Success and Failure Trends » et à l’indicateur « Deployment Failure Rate ». En analysant la fréquence et l’évolution des échecs de déploiement, les organisations peuvent repérer les problèmes sous-jacents liés aux tests, à l’infrastructure ou à la coordination des livraisons. Elles peuvent ainsi concentrer leurs efforts sur l’amélioration de la qualité et de la fiabilité de la livraison logicielle. Pourquoi est-ce important ? Mesure directement la réussite des activités de déploiement. Cette mesure est essentielle pour calculer le taux d’échec des déploiements et analyser la stabilité des livraisons. Où trouver ces données Cet état est généralement enregistré dans les tâches de suivi des déploiements ou dans les journaux d’exécution des pipelines CI/CD intégrés à ServiceNow DevOps. Exemples RéussiÉchecTerminé avec des avertissements | |||
| Heure de fin EventEndTime | Horodatage précis indiquant le moment où une activité s’est terminée. Pour un événement instantané, il est identique à l’heure de début. | ||
| Description Cet attribut indique la date et l’heure de fin de chaque activité du cycle de développement. Il est particulièrement utile pour les activités dont la durée peut être mesurée, comme « Code Review Performed » ou « QA Testing ». Dans le Process Mining, disposer des heures de début et de fin permet de calculer précisément la durée de traitement des activités et de la distinguer du temps d’attente entre les activités. Vous pouvez ainsi déterminer si les retards sont dus à des tâches longues ou à l’attente de ressources. Pour les événements considérés comme instantanés, tels que « Build Triggered », l’heure de fin peut être identique à l’heure de début. Pourquoi est-ce important ? Permet de calculer précisément la durée de traitement d’une activité et de distinguer le temps consacré au travail du temps passé en attente. Où trouver ces données Cette valeur peut devoir être calculée. Elle peut correspondre à l’heure de début de l’activité suivante ou provenir d’un champ distinct « end date », s’il existe dans le système source. Exemples 2023-10-26T18:05:00Z2023-10-28T11:20:15Z2023-11-02T10:00:00Z | |||
| ID de commit CommitId | L’identifiant unique du commit de code source associé au travail de développement. | ||
| Description Cet attribut relie directement un élément de développement à la modification de code correspondante dans le dépôt de code source, par exemple Git. Il est enregistré lorsqu’une activité « Code Committed » a lieu. En Process Mining, l’ID de commit enrichit l’analyse en reliant les données de processus aux données d’ingénierie. Les analystes peuvent ainsi remonter d’un déploiement problématique à la modification de code précise, ou mettre en relation les mesures de complexité du code et les temps de cycle de développement. Cela apporte un niveau d’analyse des causes profondes plus détaillé et plus technique. Pourquoi est-ce important ? Relie l’événement du processus à une modification de code précise. Vous pouvez ainsi approfondir l’analyse des causes profondes en mettant en relation les indicateurs du processus et les détails du code. Où trouver ces données Cette information est recueillie grâce aux intégrations ServiceNow DevOps avec des systèmes de gestion du code source comme Git ou SVN. Les données se trouvent dans des tables associées à l’élément de développement. Exemples a1b2c3d4e5f6f0e9d8c7b6a59a8b7c6d5e4f | |||
| Motif des reprises ReworkReason | La catégorie ou la description de la raison pour laquelle un élément de développement a dû être repris après les tests. | ||
| Description Lorsqu’un élément échoue aux tests d’assurance qualité ou aux tests d’acceptation utilisateur (UAT), cet attribut en indique la raison. Il peut s’agir d’un type de bogue précis, d’une mauvaise compréhension des exigences ou d’un problème d’environnement. Cette information apporte un contexte essentiel au Dashboard « Rework and Rejection Flow Analysis ». Au-delà du simple constat de reprises, les analystes peuvent en comprendre les causes. Ils peuvent alors cibler les améliorations, par exemple en précisant les exigences, en renforçant les tests unitaires ou en stabilisant les environnements de test, afin de réduire le taux global de reprises. Pourquoi est-ce important ? Précise les raisons des reprises et permet de cibler les améliorations du processus pour renforcer la qualité et réduire les boucles de reprise. Où trouver ces données Cette information peut être enregistrée dans le champ « close_notes » en cas d’échec d’un test, ou dans un champ personnalisé « rework_reason ». Consultez la documentation ServiceNow DevOps. Exemples Exigence mal interprétéeBogue de régressionÉchec du test de performanceProblème d’interface ou d’expérience utilisateur | |||
| Version de livraison prévue PlannedReleaseVersion | La version logicielle ou la livraison cible dans laquelle l’élément de développement doit être livré. | ||
| Description Cet attribut associe un élément de développement à une livraison prévue précise, par exemple « Version 2.3 » ou « Livraison du T4 2023 ». Il joue un rôle important dans la gestion de projet et la planification des livraisons. En Process Mining, cet attribut est essentiel au Dashboard « Release Plan Adherence Monitoring ». En comparant les dates réelles d’achèvement aux dates de livraison prévues, les équipes peuvent mesurer le respect du calendrier, repérer les éléments susceptibles de manquer une livraison et analyser les causes des retards. Il établit un lien direct entre le processus de développement au quotidien et les objectifs généraux de l’entreprise. Pourquoi est-ce important ? Relie le travail de développement à des livraisons précises afin d’analyser le respect du calendrier et l’incidence des retards du processus sur les échéances de livraison. Où trouver ces données Cette information est généralement enregistrée dans un champ « release » ou « planned_release », qui fait souvent référence à une table de gestion des livraisons dans ServiceNow. Consultez la documentation ServiceNow DevOps. Exemples v3.4.1Livraison du T1 2024Mise en service du projet Phoenix | |||
Activités du cycle de développement logiciel
| Activité | Description | ||
|---|---|---|---|
| Déployé en production | Cet événement marque la fin réussie du déploiement dans l’environnement de production. ServiceNow DevOps l’enregistre explicitement lorsque l’outil CI/CD signale la réussite du pipeline. | ||
| Pourquoi est-ce important ? Il s’agit de l’événement de fin qui marque la réussite du processus SDLC. Il clôt la chaîne de valeur et permet de calculer le temps de cycle total. Où trouver ces données À partir du champ « completion_status » d’un enregistrement Pipeline Execution [sn_devops_pipeline_execution] ou de son Stage Execution Run associé. Un statut « Success » à l’heure de fin marque cet événement. Données à recueillir Enregistrée lorsque le pipeline de déploiement en production se termine avec succès. Type d’événement explicit | |||
| Développement commencé | Cette activité marque le début effectif du codage ou de la mise en œuvre de l’élément de développement par un développeur. Elle est généralement déduite du changement de statut de l’élément vers « In Progress », « Development » ou « Coding ». | ||
| Pourquoi est-ce important ? Cette étape importante marque le début de la phase de réalisation qui apporte de la valeur. Elle est essentielle pour mesurer le délai de développement et le temps de cycle des revues de code. Où trouver ces données Déduite de l’horodatage auquel le champ « State » de l’enregistrement de l’élément de développement, par exemple Story [rm_story], passe à « In Progress » ou à un statut équivalent. Données à recueillir À partir de l’horodatage d’un changement d’état vers « In Progress » ou une valeur similaire. Type d’événement inferred | |||
| Échec du déploiement | Indique que la tentative de déploiement de l’élément de développement en production a échoué. ServiceNow DevOps enregistre explicitement cet événement lorsque le pipeline CI/CD signale un échec. | ||
| Pourquoi est-ce important ? Il s’agit d’un événement de fin correspondant à un échec important. L’analyse de sa fréquence et de ses causes est essentielle pour améliorer la stabilité des mises en production et réduire le taux d’échec des déploiements. Où trouver ces données À partir du champ « completion_status » d’un enregistrement Pipeline Execution [sn_devops_pipeline_execution]. Un statut « Failed » à l’heure de fin marque cet événement. Données à recueillir Enregistrée lorsque le pipeline de déploiement en production signale un échec. Type d’événement explicit | |||
| Élément de développement créé | Cette activité correspond à la création d’un nouvel élément de développement dans ServiceNow, par exemple une story, un bug ou une epic. L’événement est généralement enregistré explicitement lors de l’insertion d’un nouvel enregistrement dans la table concernée, comme Story [rm_story]. | ||
| Pourquoi est-ce important ? Il s’agit de l’événement de début principal du processus SDLC. Il permet de mesurer le temps de cycle total de bout en bout et de suivre la prise en charge initiale de la demande. Où trouver ces données L’événement est enregistré dans les tables sys_audit ou sys_history_line lors de la création d’un enregistrement dans une table liée au développement, comme Story [rm_story], Epic [rm_epic] ou Defect [rm_defect]. L’horodatage de création figure généralement dans l’enregistrement lui-même. Données à recueillir À partir de l’horodatage de création de l’enregistrement de l’élément de développement. Type d’événement explicit | |||
| Recette utilisateur approuvée | Indique que les parties prenantes métier ont officiellement approuvé l’élément de développement après la recette utilisateur. Cette étape importante est déduite d’un changement de statut, par exemple de « In UAT » à « Ready for Release » ou « Approved ». | ||
| Pourquoi est-ce important ? Il s’agit de l’approbation métier finale avant qu’un élément puisse être déployé en production. C’est un point de contrôle essentiel pour la qualité et la gouvernance. Où trouver ces données Déduite d’une transition d’état de l’enregistrement de l’élément de développement indiquant la réussite de la recette utilisateur. L’événement figure dans l’historique des activités de l’élément. Données à recueillir Déduite du passage de l’état « UAT » à un état approuvé ou prêt pour la mise en production. Type d’événement inferred | |||
| Revue de code effectuée | Cette activité indique qu’une revue de code par les pairs est terminée, généralement dans le cadre d’une pull request ou d’une merge request. L’événement peut être enregistré explicitement par les intégrations DevOps ou déduit des changements de statut des enregistrements associés. | ||
| Pourquoi est-ce important ? Il s’agit d’un point de contrôle qualité essentiel. L’analyse de sa durée permet de repérer les goulots d’étranglement dans le processus de revue, une source fréquente de retards dans le SDLC. Où trouver ces données Peut être enregistrée à partir de l’événement « Merged » ou « Completed » d’un enregistrement Pull Request dans l’intégration Git de ServiceNow, ou déduite du passage de l’élément de développement au statut « Code Review Complete ». Données à recueillir Enregistrée lors de la fusion d’une Pull Request associée à l’élément de travail. Type d’événement explicit | |||
| Tests d’assurance qualité terminés | Indique que l’équipe d’assurance qualité a terminé avec succès les tests de l’élément de développement. L’événement est généralement déduit du passage de l’élément hors de la phase de test vers un statut tel que « Ready for UAT » ou « Done ». | ||
| Pourquoi est-ce important ? Cette étape marque la fin d’un point de contrôle qualité important. Elle est nécessaire pour passer aux étapes suivantes, comme la recette utilisateur ou la préparation de la mise en production. Où trouver ces données Déduite de l’horodatage du changement d’état d’un statut de test, par exemple « In QA », vers un statut postérieur aux tests, tel que « Ready for UAT » ou « Resolved ». Données à recueillir À partir de l’horodatage du changement d’état de « Testing » vers un état ultérieur. Type d’événement inferred | |||
| Code validé | Cette activité correspond à la validation du code par un développeur dans un dépôt de gestion de versions associé à l’élément de développement. ServiceNow DevOps enregistre explicitement ces événements à partir d’outils SCM intégrés, comme Git ou GitHub. | ||
| Pourquoi est-ce important ? Le suivi des validations donne une visibilité détaillée sur l’avancement du développement et la fréquence des activités. Il permet de relier des changements de code précis à l’élément de développement parent. Où trouver ces données Enregistrée explicitement dans la table Commits [sn_devops_commit] de ServiceNow DevOps, alimentée par les webhooks du système de gestion du code source intégré. Données à recueillir Enregistrée à la réception d’un webhook de validation de l’outil SCM. Type d’événement explicit | |||
| Compilation déclenchée | Cet événement marque le début d’une compilation dans le pipeline CI/CD, souvent déclenchée par une validation de code. ServiceNow DevOps l’enregistre comme une exécution de pipeline et la relie aux éléments de développement à l’origine de l’opération. | ||
| Pourquoi est-ce important ? Cette activité fait le lien entre le développement et les tests ou le déploiement automatisés. L’analyse du délai entre la validation du code et le début de la compilation peut révéler des retards dans le processus CI/CD. Où trouver ces données Enregistrée explicitement dans la table Pipeline Execution [sn_devops_pipeline_execution] au démarrage d’une compilation dans l’outil CI/CD intégré, par exemple Jenkins ou Azure DevOps. Données à recueillir À partir de l’heure de début d’un enregistrement dans la table Pipeline Execution. Type d’événement explicit | |||
| Conception commencée | Cette activité correspond à la phase de création de la conception technique ou de l’architecture de solution de l’élément de développement. Elle est généralement déduite du changement d’un champ de statut ou d’état de l’enregistrement, qui prend une valeur telle que « Design » ou « Solutioning ». | ||
| Pourquoi est-ce important ? L’analyse de la durée de la phase de conception permet de repérer les goulots d’étranglement dans la traduction des exigences et la planification de la solution, avant le début du développement. Où trouver ces données Déduite des transitions d’état de l’enregistrement de l’élément de développement, par exemple Story [rm_story]. Recherchez les changements du champ « State » ou d’un champ personnalisé « Stage » vers une valeur liée à la conception. Données à recueillir Déduite d’un changement de statut vers « Design » ou un état similaire. Type d’événement inferred | |||
| Déploiement en production commencé | Cette activité marque le lancement du pipeline de déploiement vers l’environnement de production. ServiceNow DevOps l’enregistre explicitement au démarrage de l’étape de production d’un pipeline CI/CD. | ||
| Pourquoi est-ce important ? Cette activité marque le début de la dernière phase du cycle de vie, souvent la plus importante. Son suivi permet d’analyser la durée des déploiements et de repérer les possibilités d’automatisation. Où trouver ces données Enregistrée explicitement dans la table Stage Execution Run [sn_devops_stage_execution], en filtrant les étapes liées à l’environnement de production. Données à recueillir À partir de l’heure de début d’une étape de déploiement en production dans une Pipeline Execution. Type d’événement explicit | |||
| Élément de développement annulé | Cette activité correspond à l’arrêt d’un élément de développement avant son achèvement. Il s’agit d’un état final alternatif, généralement déduit du passage de l’élément à « Cancelled » ou « Closed Incomplete ». | ||
| Pourquoi est-ce important ? Le suivi des annulations aide à repérer les efforts inutiles et à comprendre les changements de périmètre ou de priorités. Il donne une vue plus complète de toutes les issues possibles du processus. Où trouver ces données Déduite de l’horodatage auquel le champ « State » de l’enregistrement de l’élément de développement passe à un statut final sans achèvement, tel que « Cancelled ». Données à recueillir Déduite d’un changement d’état vers « Cancelled » ou un état final équivalent. Type d’événement inferred | |||
| Préparé pour la mise en production | Cette activité indique que l’élément de développement a franchi tous les points de contrôle qualité et qu’il est intégré à une version précise. Elle peut être déduite de l’association de l’élément à un enregistrement Release ou du passage de son statut à « Ready for Deployment ». | ||
| Pourquoi est-ce important ? Cette étape indique que l’élément est terminé sur les plans technique et fonctionnel. Le temps passé dans cet état peut correspondre à une attente avant une fenêtre de déploiement planifiée. Où trouver ces données Déduite du passage du champ « State » à « Ready for Release », ou du suivi du renseignement ou de la mise à jour du champ « Release » dans l’enregistrement de l’élément de développement. Données à recueillir Déduite d’un changement de statut ou de l’association à un enregistrement Release. Type d’événement inferred | |||
| Recette utilisateur commencée | Cette activité marque le début de la recette utilisateur (UAT), au cours de laquelle les parties prenantes métier valident les fonctionnalités. L’événement est déduit du passage au statut « UAT », « In UAT » ou « User Acceptance Testing ». | ||
| Pourquoi est-ce important ? Cette phase est essentielle pour vérifier que la fonctionnalité développée répond aux exigences métier. L’analyse de sa durée peut révéler des difficultés de participation des utilisateurs ou des écarts par rapport aux exigences. Où trouver ces données Déduite d’une transition d’état de l’enregistrement de l’élément de développement. Cette méthode suppose que le modèle d’état du client comporte un statut distinct pour l’UAT. Données à recueillir Déduite d’un changement d’état vers un statut « UAT ». Type d’événement inferred | |||
| Reprise identifiée | Indique qu’un problème a été détecté pendant les tests et que l’élément doit être renvoyé au développement. Cet événement est déduit d’un retour en arrière dans le flux du processus, par exemple lorsque le statut passe de « In QA » à « In Progress ». | ||
| Pourquoi est-ce important ? Le suivi des reprises est essentiel pour comprendre les problèmes de qualité et les inefficacités du processus. Une fréquence élevée de cette activité peut révéler des problèmes de développement ou un manque de clarté des exigences. Où trouver ces données Déduite de l’analyse de l’historique du champ « State » dans les tables sys_audit ou sys_history_line. Le passage d’un statut d’étape ultérieure, par exemple « Testing », à un statut antérieur, comme « In Progress », indique une reprise. Données à recueillir Déduite d’une transition vers un statut antérieur, par exemple « Testing » -> « In Progress ». Type d’événement inferred | |||
| Tests d’assurance qualité commencés | Cette activité marque le début de la phase formelle de tests d’assurance qualité. Elle est presque toujours déduite du changement d’état de l’élément de développement vers une valeur telle que « In QA », « Testing » ou « Ready for Test ». | ||
| Pourquoi est-ce important ? Cette activité marque le transfert du développement à l’équipe d’assurance qualité. Elle permet de mesurer la durée des tests et de repérer les goulots d’étranglement liés à la capacité de test. Où trouver ces données Déduite de l’horodatage auquel le champ « State » de l’enregistrement de l’élément de développement, par exemple Story ou Defect, passe à un statut propre à l’assurance qualité. Données à recueillir À partir de l’horodatage d’un changement d’état vers « Testing » ou un statut équivalent. Type d’événement inferred | |||
Guides d’extraction
Étapes
- Comprenez votre modèle d’états : avant de créer des rapports, consignez les valeurs précises du champ d’état de vos éléments de développement (par exemple, dans la table Story
[rm_story]ou Defect[rm_defect]) qui correspondent aux activités requises. Par exemple, la valeur d’état « In Progress » peut correspondre à l’activité « Development Started ». - Accédez à la création de rapports : connectez-vous à votre instance ServiceNow. Dans le navigateur de filtres, accédez à
Reports > View / Run, puis cliquez sur le boutonCreate a report. - Créez un rapport sur les changements d’état : créez un premier rapport pour recueillir les activités associées aux changements d’état. Configurez-le comme suit :
- Nom du rapport :
ProcessMind - State Change Events - Type de source :
Table - Table :
Audit [sys_audit] - Type :
List - Configurer les colonnes : ajoutez
Document key,Created on,Table name,Field name,Old valueetNew value. - Filtre : définissez
Table namesur l’une de vos tables d’éléments de développement (par exemple,Story) etField namesur le champ d’état (par exemple,State). Ajoutez un filtre de date au champCreated onpour la période souhaitée.
- Nom du rapport :
- Créez un rapport sur la création des éléments : créez un nouveau rapport pour l’événement de création initiale.
- Nom du rapport :
ProcessMind - Item Creation Events - Type de source :
Table - Table :
Story [rm_story](ou votre table principale d’éléments de développement) - Type :
List - Configurer les colonnes : ajoutez les colonnes correspondant aux attributs requis, comme
Nombre,Created on,Assigned to,Priority,State, etc. - Filtre : appliquez un filtre de date au champ
Created on.
- Nom du rapport :
- Créez un rapport sur les validations de code : créez un rapport sur les événements DevOps explicites liés aux validations.
- Nom du rapport :
ProcessMind - Commit Events - Type de source :
Table - Table :
Commit [sn_devops_commit] - Type :
List - Configurer les colonnes : ajoutez des colonnes comme
Work item,Commit time,Author, etc. - Filtre : appliquez un filtre de date au champ
Commit time.
- Nom du rapport :
- Créez des rapports sur les builds et les déploiements : reprenez la procédure de l’étape précédente pour les tables
Build [sn_devops_build]etDeployment [sn_devops_deployment]. Elles contiennent des enregistrements correspondant aux activitésBuild Triggered,Deployment to Production Started,Deployed to ProductionetDeployment Failed. - Exportez tous les rapports : exécutez chaque rapport créé séparément. Dans chaque rapport, cliquez sur l’icône du menu contextuel (trois points ou une flèche vers le bas), puis sélectionnez
Export > CSVouExport > Excel. Enregistrez tous les fichiers. - Regroupez et transformez les données : ouvrez les fichiers exportés dans un tableur ou utilisez un outil de préparation des données. Regroupez manuellement les données de tous les fichiers dans une seule feuille. Créez les colonnes requises pour le journal d’événements (
DevelopmentItem,ActivityName,EventTime, etc.) et associez-leur les colonnes sources correspondantes. Par exemple, associezDocument keydu rapport d’audit etNombredu rapport Story à la colonneDevelopmentItem. - Associez les noms d’activité : créez la colonne
ActivityNameen traduisant les données sources. Pour le rapport sur les changements d’état, utilisez le modèle d’états documenté pour associer les valeurs deNew valueaux noms d’activité (par exemple, associez l’état « Testing » à « QA Testing Started »). Pour les autres rapports, attribuez un nom d’activité fixe à chaque ligne (par exemple, toutes les lignes de l’export des validations deviennent « Code Committed »). - Finalisez et enregistrez : ajoutez les colonnes
SourceSystemetLastDataUpdateavec des valeurs fixes pour toutes les lignes. Vérifiez que tous les horodatages utilisent le même format. Enregistrez le fichier regroupé au format CSV : il sera alors prêt à être importé dans ProcessMind.
Configuration
- Tables requises : les principales tables nécessaires à cette extraction sont
Audit [sys_audit]pour les événements déduits, vos tables d’éléments de développement (par exemple,Story [rm_story],Defect [rm_defect]) et les principales tables ServiceNow DevOps :Commit [sn_devops_commit],Build [sn_devops_build]etDeployment [sn_devops_deployment]. - Filtres clés : le filtre le plus important porte sur la période, qui doit être appliquée de manière cohérente à tous les rapports, sur un champ d’horodatage comme
Created on,Commit timeouHeure de début. Pour le rapportsys_audit, il est essentiel de filtrer surTable name(par exemple,rm_story) etField name(par exemple,state) afin de ne conserver que les changements d’état pertinents. - Période recommandée : il est conseillé d’extraire les données sur une période de 3 à 6 mois pour obtenir un échantillon représentatif sans entraîner de problèmes de performance. Pour les systèmes de grande taille, envisagez des extractions mensuelles.
- Définition du modèle d’états : vous devez bien connaître le modèle d’états des éléments de travail de votre organisation. Cette connaissance est nécessaire pour associer correctement les valeurs d’état enregistrées dans la table
sys_auditaux activités métier correspondantes, comme « QA Testing Started » ou « UAT Approved ». - Prérequis : les utilisateurs chargés de l’extraction doivent disposer du rôle
report_userou d’autorisations équivalentes pour créer et exécuter des rapports. Ils doivent également avoir un accès en lecture aux tables DevOps et de développement d’applications mentionnées ci-dessus. Le module ServiceNow DevOps doit être installé et intégré à vos outils SCM et CI/CD.
Exemple de requête sql
/*
This extraction method uses the ServiceNow report builder UI. The following sections describe the configuration for each report that must be created and exported.
The exported data must then be manually combined and transformed into a single event log file.
*/
---
-- REPORT 1: Item Creation Events
---
Report_Name: ProcessMind - Item Creation Events
Source_Table: rm_story
Report_Type: List
Columns:
- Number (maps to DevelopmentItem)
- sys_created_on (maps to EventTime)
- 'Development Item Created' (create a formula or static column for ActivityName)
- Assigned to (maps to AssignedDeveloper)
- Priority (maps to DevelopmentItemPriority)
- State (maps to DevelopmentItemState)
- cmdb_ci (maps to ModuleComponentAffected)
- Type (maps to DevelopmentItemType)
- Assignment group (maps to AssignmentGroup)
Filters:
- sys_created_on ON Last 6 months
---
-- REPORT 2: Inferred State Change Events
---
Report_Name: ProcessMind - State Change Events
Source_Table: sys_audit
Report_Type: List
Columns:
- documentkey (maps to DevelopmentItem)
- sys_created_on (maps to EventTime)
- newvalue (maps to ActivityName, requires translation)
- user (maps to AssignedDeveloper)
ActivityName_Mapping_Logic (Example):
- WHEN newvalue IS '[Your Design State]' THEN 'Design Started'
- WHEN newvalue IS '[Your In Progress State]' THEN 'Development Started'
- WHEN newvalue IS '[Your QA State]' THEN 'QA Testing Started'
- WHEN oldvalue IS '[Your QA State]' AND newvalue IS '[Your In Progress State]' THEN 'Rework Identified'
- WHEN oldvalue IS '[Your QA State]' AND newvalue IS '[Your UAT State]' THEN 'QA Testing Completed'
- WHEN newvalue IS '[Your UAT State]' THEN 'UAT Started'
- WHEN newvalue IS '[Your UAT Approved State]' THEN 'UAT Approved'
- WHEN newvalue IS '[Your Release Ready State]' THEN 'Prepared For Release'
- WHEN newvalue IS '[Your Cancelled State]' THEN 'Development Item Cancelled'
Filters:
- tablename = 'rm_story'
- fieldname = 'state'
- sys_created_on ON Last 6 months
---
-- REPORT 3: Code Commit Events
---
Report_Name: ProcessMind - Commit Events
Source_Table: sn_devops_commit
Report_Type: List
Columns:
- work_item.number (maps to DevelopmentItem)
- commit_time (maps to EventTime)
- 'Code Committed' (create a formula or static column for ActivityName)
- author.name (maps to AssignedDeveloper)
Filters:
- commit_time ON Last 6 months
---
-- REPORT 4: Build Events
---
Report_Name: ProcessMind - Build Events
Source_Table: sn_devops_build
Report_Type: List
Columns:
- work_item.number (maps to DevelopmentItem)
- start_time (maps to EventTime)
- 'Build Triggered' (create a formula or static column for ActivityName)
Filters:
- start_time ON Last 6 months
---
-- REPORT 5: Deployment Events
---
Report_Name: ProcessMind - Deployment Events
Source_Table: sn_devops_deployment
Report_Type: List
Columns:
- work_item.number (maps to DevelopmentItem)
- start_time (maps to EventTime for 'Started' activities)
- end_time (maps to EventTime for 'Completed' or 'Failed' activities)
- state (maps to ActivityName, requires translation)
ActivityName_Mapping_Logic:
- WHEN state IS 'in_progress' THEN 'Deployment to Production Started'
- WHEN state IS 'successful' THEN 'Deployed to Production'
- WHEN state IS 'failed' THEN 'Deployment Failed'
Filters:
- start_time ON Last 6 months
- [Filter for production deployments based on your environment configuration]
---
-- Additional events like 'Code Review Performed' may require a separate report
-- on a table like `sn_devops_pull_request` if available and configured.
--- Étapes
- Prérequis : vérifiez que vous avez accès au réseau de votre instance ServiceNow et qu’un compte de service dédié doté d’autorisations de lecture vous a été attribué (les rôles
itiletsn_devops.viewerconstituent un bon point de départ). Ce compte doit pouvoir accéder à des tables telles querm_story,sys_auditet au schémasn_devops_*. - Installez le pilote ODBC ServiceNow : téléchargez le pilote ODBC ServiceNow adapté à votre système d’exploitation depuis le portail d’assistance ServiceNow. Suivez les instructions d’installation fournies.
- Configurez le DSN : créez un DSN système (Data Source Name) sur la machine qui exécutera la requête. Dans l’administrateur de sources de données ODBC, ajoutez le pilote ServiceNow et renseignez l’URL de votre instance (par exemple,
yourinstance.service-now.com), votre nom d’utilisateur et votre mot de passe. - Connectez-vous avec un client SQL : utilisez un client SQL comme DBeaver ou Microsoft SQL Server Management Studio (avec un serveur lié), ou un langage de script comme Python avec une bibliothèque ODBC, pour vous connecter à ServiceNow à l’aide du DSN configuré.
- Identifiez le modèle d’états : avant d’exécuter la requête, identifiez les valeurs exactes utilisées par votre organisation dans le champ
statedes tables d’éléments de développement (par exemple,rm_story,rm_defect). La requête fournie utilise des exemples courants comme « In Progress » ou « In QA », que vous devrez remplacer par vos valeurs. - Personnalisez la requête SQL : copiez la requête SQL fournie dans votre client. Modifiez les paramètres fictifs au début de la requête, notamment la date de début de l’extraction et les valeurs d’état correspondant aux activités de votre cycle de développement.
- Exécutez la requête : lancez la requête SQL complète sur la base de données ServiceNow via la connexion ODBC. Selon la période et le volume de données, l’opération peut prendre un certain temps.
- Vérifiez les données : une fois la requête terminée, examinez brièvement le jeu de données obtenu. Vérifiez la présence de différentes activités et assurez-vous que les colonnes clés comme
DevelopmentItem,ActivityNameetEventTimesont renseignées comme prévu. - Exportez au format CSV : exportez l’ensemble des résultats dans un fichier CSV. Vérifiez que le fichier est encodé en UTF-8 et que les en-têtes de colonnes correspondent aux noms d’attributs requis par ProcessMind, par exemple
DevelopmentItem,ActivityNameetEventTime. - Préparez l’importation : vérifiez que le fichier CSV final ne comporte aucune ligne vide à la fin et que les dates des champs
EventTimeetLastDataUpdateutilisent un format cohérent pris en charge par ProcessMind (par exemple,YYYY-MM-DD HH:MM:SS).
Configuration
- Prérequis : accès à une instance ServiceNow où le module DevOps est activé. Un compte utilisateur dédié disposant d’autorisations de lecture sur les tables requises est nécessaire. Le pilote ODBC ServiceNow doit être installé et configuré sur le poste client.
- Configuration du pilote ODBC : la connexion nécessite l’URL de l’instance, un nom d’utilisateur et un mot de passe ou un jeton OAuth. Il est essentiel de tester la connexion DSN avant d’exécuter des requêtes complexes.
- Filtrage par période : la requête fournie contient le paramètre fictif
s.sys_created_on >= '2023-01-01'pour limiter le volume de données extraites. Il est vivement recommandé de définir une période, par exemple les 6 à 12 derniers mois, afin de maîtriser la durée d’exécution des requêtes. - Personnalisation du modèle d’états : la précision des événements déduits dépend entièrement du modèle d’états. Vous devez remplacer les valeurs d’état fictives (par exemple,
[Your 'In Progress' State Value],[Your 'In QA' State Value]) par les valeurs exactes utilisées dans votre configuration ServiceNow. La casse doit être respectée. - Tables des éléments de travail : la requête est conçue pour la table Story (
rm_story). Si votre organisation utilise également des Defect (rm_defect), des Enhancement (rm_enhancement) ou d’autres types de tâches, vous devez les ajouter à l’expression de table commune (CTE) initialeDevItemsavecUNION ALL. - Performances : les requêtes directes sur une instance ServiceNow de production peuvent affecter ses performances. Il est recommandé d’effectuer les extractions volumineuses en dehors des heures de pointe. Pour les très grands jeux de données, envisagez une stratégie d’extraction incrémentielle fondée sur le champ
sys_updated_on.
Exemple de requête sql
WITH DevItems AS (
-- This CTE selects the base set of development items to analyze.
-- Add other tables like rm_defect or rm_enhancement here using UNION ALL if needed.
SELECT
s.sys_id,
s.number,
s.sys_created_on,
s.sys_updated_on,
s.assigned_to,
s.priority,
s.state,
s.cmdb_ci, -- Module/Component Affected
s.sys_class_name, -- Development Item Type
s.assignment_group,
DATEDIFF(second, s.sys_created_on, s.closed_at) AS cycle_time_seconds
FROM rm_story s
WHERE s.sys_created_on >= '2023-01-01' -- *** Placeholder: Set your desired start date ***
),
StateChanges AS (
-- This CTE unnests the audit trail for state changes, which are used for inferred activities.
SELECT
a.documentkey AS item_sys_id,
a.sys_created_on AS change_time,
a.oldvalue,
a.newvalue,
-- *** Placeholder: Define the numeric order of your states to detect rework. Adjust values and names. ***
CASE a.oldvalue
WHEN '1' THEN 1 -- Open
WHEN '[Your 'Design' State Value]' THEN 2
WHEN '[Your 'In Progress' State Value]' THEN 3
WHEN '[Your 'In QA' State Value]' THEN 4
WHEN '[Your 'In UAT' State Value]' THEN 5
ELSE 0
END AS old_state_order,
CASE a.newvalue
WHEN '1' THEN 1 -- Open
WHEN '[Your 'Design' State Value]' THEN 2
WHEN '[Your 'In Progress' State Value]' THEN 3
WHEN '[Your 'In QA' State Value]' THEN 4
WHEN '[Your 'In UAT' State Value]' THEN 5
ELSE 0
END AS new_state_order
FROM sys_audit a
WHERE a.tablename = 'rm_story' AND a.fieldname = 'state'
)
-- 1. Development Item Created
SELECT
i.number AS DevelopmentItem,
'Development Item Created' AS ActivityName,
i.sys_created_on AS EventTime,
'ServiceNow DevOps' AS SourceSystem,
GETDATE() AS LastDataUpdate,
us.name AS AssignedDeveloper,
i.priority AS DevelopmentItemPriority,
i.state AS DevelopmentItemState,
ci.name AS ModuleComponentAffected,
i.sys_class_name AS DevelopmentItemType,
grp.name AS AssignmentGroup,
i.cycle_time_seconds AS DevelopmentItemCycleTime,
CAST(0 AS BIT) AS IsRework
FROM DevItems i
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id
LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id
LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
UNION ALL
-- 2. Design Started
SELECT i.number, 'Design Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''Design'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 3. Development Started
SELECT i.number, 'Development Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''In Progress'' State Value]' AND sc.old_state_order < 3 -- *** Placeholder: Adjust state value and order ***
UNION ALL
-- 4. Code Committed
SELECT i.number, 'Code Committed', c.committed_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_commit c JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
UNION ALL
-- 5. Build Triggered
SELECT i.number, 'Build Triggered', b.start_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_build b JOIN sn_devops_commit_build cb ON b.sys_id = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
UNION ALL
-- 6. Code Review Performed
SELECT i.number, 'Code Review Performed', pr.closed_at, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_pull_request pr JOIN DevItems i ON pr.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE pr.state = 'merged' -- Or 'closed', depending on process
UNION ALL
-- 7. QA Testing Started
SELECT i.number, 'QA Testing Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''In QA'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 8. Rework Identified
SELECT i.number, 'Rework Identified', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(1 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.new_state_order < sc.old_state_order AND sc.new_state_order > 1 -- Moved to an earlier state
UNION ALL
-- 9. QA Testing Completed
SELECT i.number, 'QA Testing Completed', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.oldvalue = '[Your ''In QA'' State Value]' AND sc.new_state_order > sc.old_state_order -- *** Placeholder: Adjust state value ***
UNION ALL
-- 10. UAT Started
SELECT i.number, 'UAT Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''In UAT'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 11. UAT Approved
SELECT i.number, 'UAT Approved', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.oldvalue = '[Your ''In UAT'' State Value]' AND sc.new_state_order > sc.old_state_order -- *** Placeholder: Adjust state value ***
UNION ALL
-- 12. Prepared For Release
SELECT i.number, 'Prepared For Release', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''Ready for Release'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 13. Deployment to Production Started
SELECT i.number, 'Deployment to Production Started', se.start_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_step_execution se JOIN sn_devops_artifact_build sab ON se.deployable = sab.sys_id JOIN sn_devops_commit_build cb ON sab.build = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE se.stage_name = 'Production' -- *** Placeholder: Adjust stage name ***
UNION ALL
-- 14. Deployed to Production
SELECT i.number, 'Deployed to Production', se.end_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_step_execution se JOIN sn_devops_artifact_build sab ON se.deployable = sab.sys_id JOIN sn_devops_commit_build cb ON sab.build = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE se.stage_name = 'Production' AND se.result = 'SUCCESS' -- *** Placeholder: Adjust stage name and result value ***
UNION ALL
-- 15. Deployment Failed
SELECT i.number, 'Deployment Failed', se.end_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_step_execution se JOIN sn_devops_artifact_build sab ON se.deployable = sab.sys_id JOIN sn_devops_commit_build cb ON sab.build = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE se.stage_name = 'Production' AND se.result = 'FAILURE' -- *** Placeholder: Adjust stage name and result value ***
UNION ALL
-- 16. Development Item Cancelled
SELECT i.number, 'Development Item Cancelled', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''Cancelled'' State Value]'; -- *** Placeholder: Adjust state value *** Prêt à commencer ?
Commencez dès aujourd’hui à transformer votre cycle de développement logiciel. Utilisez ce modèle de données pour repérer les inefficacités cachées et améliorer vos processus en continu.
N’attendez plus : optimisez dès aujourd’hui votre cycle de développement logiciel
Repérez les inefficacités pour réduire de 30 % ou plus le temps de cycle de votre cycle de développement logiciel.
Aucune carte bancaire requise. Commencez à optimiser dès aujourd’hui.