Votre template de données pour le cycle de développement logiciel
Votre template de données pour le cycle de développement logiciel
- Attributs recommandés à collecter
- Activités clés à suivre
- Guide 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, telle qu'une fonctionnalité, un bug ou une tâche, qui progresse dans le cycle de développement. | ||
| Description Le Development Item sert d’identifiant principal du cas et représente une unité de travail distincte suivie dans le système. Il relie toutes les activités, de la conception et de la planification initiales au développement, aux tests et au déploiement de cet élément. Dans une analyse de Process Mining, cet attribut est fondamental pour reconstituer le parcours complet de chaque élément de travail. Il permet de visualiser les flux de processus, de calculer les temps de cycle totaux et d’identifier les variantes de processus pour chaque fonctionnalité ou correction de bug. Chaque événement du journal doit être associé à un Development Item afin de construire une cartographie cohérente du processus. Pourquoi c’est important Il s’agit de l’identifiant central qui relie toutes les activités de développement associées au sein d’une même instance de processus, ce qui permet d’analyser le cycle de vie complet de chaque élément de travail. Où les obtenir Cet identifiant correspond généralement à la clé primaire des tables qui gèrent les stories, les bugs ou les tâches, telles que les tables « rm_story », « rm_bug » ou « task » dans ServiceNow. Exemples STRY0010015BUG0034092TASK0050118 | |||
| Heure de début EventTime | Horodatage exact indiquant le moment où une activité ou un événement précis s’est produit. | ||
| Description Cet attribut fournit la date et l’heure d’enregistrement de chaque activité du cycle de vie du développement. Il est indispensable pour classer les événements dans l’ordre chronologique et réaliser toutes les analyses fondées sur le temps. Dans le Process Mining, l’heure de début sert à calculer les durées entre les activités, à identifier les temps d’attente et à mesurer le temps de cycle global du processus. Elle constitue un élément essentiel des Dashboards qui analysent la performance, comme « SDLC End-to-End Cycle Time Analysis », ainsi que du calcul d’indicateurs clés tels que « Code Review Lead Time ». Pourquoi c’est important Cet horodatage est indispensable pour classer correctement les événements et calculer tous les indicateurs de performance, notamment les temps de cycle, les durées et les temps d’attente. Où les obtenir Il se trouve généralement dans des champs d’horodatage générés par le système, tels que « sys_updated_on » ou « sys_created_on », issus de la piste d’audit ou des 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 vie du développement qui s’est produit, tel que « Development Started » ou « Code Review Performed ». | ||
| Description Cet attribut enregistre le nom de chaque jalon ou tâche achevé dans le cycle de développement logiciel. Ces activités constituent les étapes successives du processus, de la création au déploiement. L’analyse de la séquence et de la fréquence de ces activités est la fonction principale du Process Mining. Elle permet de construire la carte du processus, d’identifier les goulots d’étranglement entre les étapes et de mettre en évidence les variations non conformes ou inefficaces du processus. L’ensemble défini d’activités comprend des étapes clés telles que la conception, le développement, les tests et le déploiement. Pourquoi c’est important Il définit les étapes de la carte du processus et permet d’analyser le déroulement du processus, d’identifier les goulots d’étranglement et de repérer les écarts par rapport au cycle de développement logiciel standard. Où les obtenir Il 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 changement d’un champ « state » vers « In Progress » peut être associé à « Development Started ». Exemples Développement commencéCode validéTests QA terminésDéployé en production | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage indiquant la dernière actualisation des données de ce journal d’événements depuis le 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 à des événements individuels. Cet horodatage est essentiel pour évaluer l’actualité de l’analyse. Il indique aux utilisateurs dans quelle mesure les analyses du processus sont à jour et facilite la planification des actualisations de données. L’affichage de cette information dans les Dashboards fournit un contexte à tous les indicateurs et visualisations, afin que les décisions reposent sur des données récentes. Pourquoi c’est important Il fournit un contexte important sur l’actualité des données et permet aux utilisateurs de comprendre dans quelle mesure l’analyse du processus est à jour. Où les obtenir Cet horodatage est généré et ajouté lors de l’extraction des données afin d’enregistrer le moment où celle-ci a été exécutée. Exemples 2023-11-15T08:00:00Z | |||
| Système source SourceSystem | Identifie le système à partir duquel les données ont été extraites, en l’occurrence ServiceNow DevOps. | ||
| Description Cet attribut précise le système d’origine des données d’événements. Pour ce processus, sa valeur sera toujours « ServiceNow DevOps ». Même s’il peut sembler statique, l’indication explicite du système source est essentielle à la gouvernance des données et aux environnements dans lesquels les données peuvent être fusionnées depuis plusieurs systèmes, tels que Jira ou Azure DevOps. Elle garantit la traçabilité de l’origine des données et facilite le diagnostic des problèmes de qualité ou d’extraction. Pourquoi c’est important Il garantit la traçabilité des données et contribue au maintien de leur intégrité, en particulier lorsque des données provenant de plusieurs outils de développement sont intégrées. Où les obtenir Il s’agit d’une valeur statique qui doit être ajoutée lors de l’extraction et de la transformation des données. Exemples ServiceNow DevOps | |||
| Développeur affecté AssignedDeveloper | Nom ou identifiant du développeur ou de l’utilisateur affecté au Development Item au moment de l’activité. | ||
| Description Cet attribut identifie la personne responsable de l’exécution d’une tâche ou d’une activité précise. Il est dynamique et peut changer lorsque l’élément de développement passe d’une étape ou d’une équipe à une autre. Cet attribut est essentiel pour analyser la répartition des ressources, la charge de travail et les transferts. Il alimente directement le Dashboard « Charge de travail et transferts entre développeurs » ainsi que le KPI « Volume d’activités par développeur ». Le suivi des changements de ce champ permet de mesurer les temps de transfert et d’identifier les goulots d’étranglement de la collaboration entre développeurs ou entre les équipes de développement et d’assurance qualité. Pourquoi c’est important Il est indispensable aux analyses fondées sur les ressources, notamment la répartition de la charge de travail, l’efficacité des transferts et l’identification des tendances de performance propres à chaque équipe. Où les obtenir Ces informations sont généralement stockées dans le champ « assigned_to » des tables liées aux tâches dans ServiceNow. Exemples David MillerAnna WilliamsJames Brown | |||
| État du Development Item DevelopmentItemState | Statut ou état du Development Item au moment de l’événement, tel que « Open », « In Progress » ou « Closed ». | ||
| Description Cet attribut indique le statut officiel de l’élément de développement dans ServiceNow. Alors que les activités correspondent aux étapes du processus, l’état représente l’étape formelle du 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 plus simples et de haut niveau du processus. Par exemple, l’analyse du temps passé dans chaque état peut donner une autre vision des goulots d’étranglement que l’analyse du temps écoulé entre les activités. Cet attribut est également utile pour repérer les éléments bloqués ou résolus. Pourquoi c’est important Il fournit le statut officiel d’un élément de travail dans le système. Il sert souvent de source pour dériver les activités et peut être utilisé à des fins de validation et d’analyse globale des statuts. Où les obtenir 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 | Équipe ou groupe responsable du Development Item au moment de l’activité. | ||
| Description Cet attribut identifie l’équipe affectée à un élément de travail, comme « Développeurs frontend », « Services backend » ou « Équipe d’assurance qualité ». À mesure que l’élément de travail progresse, il est souvent transféré entre différents groupes d’affectation. Le suivi du groupe d’affectation est essentiel pour comprendre la collaboration entre les équipes et les transferts de responsabilité. Il permet d’identifier les retards systémiques qui surviennent lorsque le travail passe d’une équipe à une autre. Cet attribut facilite l’analyse des performances et de la charge de travail au niveau des équipes, ainsi que l’identification des équipes qui constituent des goulots d’étranglement dans le flux global. Pourquoi c’est important Il indique quelle équipe est responsable du travail et permet d’analyser les performances des équipes, l’équilibre de la charge de travail et l’efficacité des transferts entre équipes. Où les obtenir Ces informations sont stockées dans le champ « assignment_group », un champ standard des tables liées aux tâches dans ServiceNow. Exemples Ingénierie de la plateformeÉquipe des applications mobilesAssurance qualitéDevOps | |||
| Module ou composant concerné ModuleComponentAffected | Module logiciel, application ou composant précis auquel le Development Item se rapporte. | ||
| Description Cet attribut catégorise le travail de développement selon la partie du système concernée. Il peut s’agir d’un microservice précis, 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 « Analyses des goulots d’étranglement par composant » et le KPI « Durée moyenne des étapes par composant » s’appuient sur cet attribut pour déterminer si certaines parties de la base de 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 les plus nécessaires. Pourquoi c’est important Permet de segmenter l’analyse par application ou par composant afin d’isoler les goulots d’étranglement ou les problèmes de qualité propres à certaines parties du système. Où les obtenir Il s’agit souvent d’un champ personnalisé ou d’une référence à la Configuration Management Database (CMDB), qui relie l’élément de travail à un enregistrement « cmdb_ci ». Consultez la documentation de ServiceNow DevOps. Exemples Service de facturationInterface d’authentification utilisateurBase de données de reportingPasserelle API | |||
| Priorité DevelopmentItemPriority | Niveau de priorité attribué au Development Item, tel que « 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é constitue une dimension essentielle de l’analyse comparative. Elle permet de filtrer la cartographie du processus afin de vérifier si les éléments hautement prioritaires suivent un parcours plus rapide ou différent. Elle est indispensable au Dashboard et au KPI « High-Priority Feature Delivery Time », qui permettent de vérifier si les éléments importants sont effectivement traités en priorité. Pourquoi c’est important Elle permet de filtrer et de comparer les processus selon différents niveaux de priorité, afin de vérifier si les éléments hautement prioritaires sont traités plus rapidement et plus efficacement. Où les obtenir 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 égal à true lorsque l’activité fait partie d’une boucle de reprise, par exemple lorsqu’elle revient au développement après les tests. | ||
| Description Il s’agit d’un attribut dérivé qui identifie les activités survenant après le retour du processus à une étape antérieure. Par exemple, si une activité « Development Started » survient après une activité « QA Testing Completed » pour le même élément, elle est marquée comme une reprise. Cet indicateur est essentiel pour quantifier et visualiser les reprises. Il alimente directement le Dashboard « Rework and Rejection Flow Analysis » et sert à calculer le KPI « Rework Rate after Testing ». En marquant ces événements, les analystes peuvent facilement filtrer et analyser la fréquence, les causes et l’impact des reprises sur le temps de cycle global. Pourquoi c’est important Cet indicateur facilite la quantification et l’analyse des reprises, aide à mesurer la qualité du processus et permet d’identifier les causes profondes du travail répété. Où les obtenir Cet attribut est calculé dans l’outil de Process Mining en analysant la séquence des activités pour chaque cas afin de détecter les retours en arrière dans le flux du processus. Exemples truefalse | |||
| Temps de cycle du Development Item DevelopmentItemCycleTime | Temps total écoulé entre la création du Development Item et sa clôture ou son déploiement final. | ||
| Description Cet attribut est un indicateur calculé qui représente la durée de bout en bout d’un Development Item. Il est calculé en déterminant la différence entre l’horodatage de la toute première activité et celui de la toute dernière activité pour chaque cas. Il s’agit d’un indicateur clé de performance du processus SDLC dans son ensemble, qui alimente directement le KPI « Average SDLC Cycle Time ». Il fournit une mesure globale de la vitesse et de l’efficacité du processus. Son analyse au fil du temps et selon différentes dimensions, telles que la priorité ou l’équipe, permet de suivre les effets des initiatives d’amélioration du processus. Pourquoi c’est important Il représente la durée totale de bout en bout d’un élément de travail et constitue un indicateur important de l’efficacité et de la vitesse globales du processus. Où les obtenir Il ne s’agit pas d’un champ du 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 4 heures3 jours 12 heures32 jours 8 heures | |||
| Type de Development Item DevelopmentItemType | Classification de l’élément de travail, telle que « Feature », « Bug », « Technical Debt » ou « Task ». | ||
| Description Cet attribut distingue les différents types de travail qui suivent le processus SDLC. Par exemple, le processus de correction d’un bug critique peut différer de celui du développement d’une nouvelle fonctionnalité et être plus rapide. L’analyse du processus selon le type d’élément permet de mieux comprendre les performances. Elle aide à répondre à des questions telles que : « Les bugs présentent-ils un taux de reprise supérieur à celui des nouvelles fonctionnalités ? » ou « Le temps de cycle consacré à la réduction de la dette technique est-il acceptable ? » Cette segmentation fournit une vision plus précise qu’une vue unique du processus applicable à tous les cas. Pourquoi c’est important Il distingue les différents types de travail, comme les fonctionnalités et les bugs, qui peuvent suivre des parcours, avoir des priorités et présenter des durées attendues différents. Où les obtenir Il peut être déterminé à 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éBugTaskSpike | |||
| Heure de fin EventEndTime | Horodatage exact indiquant le moment où une activité a été achevée. Pour les événements instantanés, il est identique à l’heure de début. | ||
| Description Cet attribut fournit la date et l’heure d’achèvement de chaque activité du cycle de vie du développement. Il est particulièrement utile pour les activités dont la durée peut être mesurée, telles que « Code Review Performed » ou « QA Testing ». Dans le Process Mining, la présence d’une heure de début et d’une heure de fin permet de calculer précisément le temps de traitement des activités et de le distinguer du temps d’attente entre les activités. Il devient ainsi possible de 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 c’est important Il permet de calculer précisément le temps de traitement d’une activité et de distinguer le temps consacré au travail du temps d’attente. Où les obtenir Cet attribut peut nécessiter une dérivation. Il peut correspondre à l’heure de début de l’activité suivante ou provenir d’un champ distinct « end date », s’il est disponible dans le système source. Exemples 2023-10-26T18:05:00Z2023-10-28T11:20:15Z2023-11-02T10:00:00Z | |||
| ID du commit CommitId | Identifiant unique du commit de code source associé au travail de développement. | ||
| Description Cet attribut établit un lien direct entre un Development Item et la modification précise du code dans le dépôt de code source, tel que Git. Il est enregistré lorsqu’une activité « Code Committed » se produit. Dans le Process Mining, le Commit ID enrichit l’analyse en reliant les données du processus aux données d’ingénierie. Il permet de remonter d’un déploiement problématique jusqu’à la modification exacte du code ou de mettre en relation les indicateurs de complexité du code avec les temps de cycle du développement. Il apporte ainsi un niveau d’analyse des causes profondes plus détaillé et plus technique. Pourquoi c’est important Il relie l’événement du processus à une modification précise du code et permet d’approfondir l’analyse des causes profondes en mettant en relation les indicateurs du processus avec les détails du code. Où les obtenir Il est capturé par les intégrations de ServiceNow DevOps avec des systèmes de gestion du code source tels que Git ou SVN. Les données se trouvent dans des tables associées au Development Item. Exemples a1b2c3d4e5f6f0e9d8c7b6a59a8b7c6d5e4f | |||
| Motif de reprise ReworkReason | Classification ou description de la raison pour laquelle un Development Item a dû être repris après les tests. | ||
| Description Lorsqu’un élément échoue aux tests QA ou UAT, cet attribut enregistre la raison de l’échec. Il peut s’agir d’une catégorie de bug précise, d’une mauvaise compréhension des exigences ou d’un problème d’environnement. Ces informations fournissent un contexte essentiel au Dashboard « Rework and Rejection Flow Analysis ». Au lieu de constater simplement qu’une reprise a eu lieu, les analystes peuvent en comprendre la cause. Ils peuvent ainsi cibler les améliorations, par exemple en renforçant la définition des exigences, les tests unitaires ou la stabilité des environnements de test, afin de réduire le taux global de reprise. Pourquoi c’est important Il fournit des informations qualitatives sur les causes des reprises et permet de cibler les améliorations du processus afin d’accroître la qualité et de réduire les boucles de reprise. Où les obtenir Il peut être enregistré dans un champ « close_notes » lorsqu’un test échoue ou dans un champ personnalisé dédié « rework_reason ». Consultez la documentation de ServiceNow DevOps. Exemples Exigence mal interprétéeBug de régressionTest de performance échouéProblème d’interface utilisateur et d’expérience utilisateur | |||
| Statut du déploiement DeploymentStatus | Indique le résultat d’une activité de déploiement, généralement « Success » ou « Failure ». | ||
| Description Cet attribut enregistre le résultat d’un déploiement vers un environnement précis. Il fournit une information essentielle pour comprendre la fiabilité et la stabilité du processus de release. Cet attribut est indispensable au Dashboard « Deployment Success and Failure Trends » et au KPI « Deployment Failure Rate ». L’analyse de la fréquence et des tendances des échecs de déploiement permet aux organisations d’identifier les problèmes sous-jacents liés aux tests, à l’infrastructure ou à la coordination des releases. Elle aide à concentrer les efforts sur l’amélioration de la qualité et de la fiabilité de la livraison logicielle. Pourquoi c’est important Il mesure directement la réussite des activités de déploiement, ce qui est essentiel pour calculer le taux d’échec des déploiements et analyser la stabilité des releases. Où les obtenir Ce statut est généralement enregistré dans les tâches de suivi des déploiements ou dans les enregistrements d’exécution des pipelines CI/CD intégrés à ServiceNow DevOps. Exemples RéussiteÉchecTerminé avec des avertissements | |||
| Version de mise en production prévue PlannedReleaseVersion | Version ou release logicielle cible dans laquelle le Development Item doit être livré. | ||
| Description Cet attribut relie un Development Item à une release planifiée précise, telle que « Version 2.3 » ou « Q4 2023 Release ». Il constitue un élément important de la gestion de projet et de la planification des releases. Dans le Process Mining, cet attribut est essentiel au Dashboard « Release Plan Adherence Monitoring ». En comparant les dates d’achèvement réelles aux dates de release prévues, les équipes peuvent mesurer le respect du calendrier, identifier les éléments susceptibles de ne pas être livrés à temps et analyser les causes des retards de release. Il établit un lien direct entre le processus de développement détaillé et les objectifs métier globaux. Pourquoi c’est important Il relie le travail de développement à des releases précises et permet d’analyser le respect du calendrier ainsi que l’impact des retards du processus sur les échéances de release. Où les obtenir Ces informations sont généralement stockées dans un champ « release » ou « planned_release », qui fait souvent référence à une table de gestion des releases dans ServiceNow. Consultez la documentation de ServiceNow DevOps. Exemples v3.4.1Release du T1 2024Mise en production du projet Phoenix | |||
Activités du cycle de développement logiciel
| Activité | Description | ||
|---|---|---|---|
| Déploiement échoué | Indique que la tentative de déploiement de l'élément de développement en production a échoué. ServiceNow DevOps le capture explicitement lorsque le pipeline CI/CD signale un échec. | ||
| Pourquoi c’est important Il s'agit d'un point de fin critique en cas d'échec. 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ù les obtenir Capturé à 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. Collecte Enregistré lorsque le pipeline de déploiement en production signale un statut d'échec. Type d’événement explicit | |||
| Déployé en production | Cet événement marque la fin réussie du déploiement dans l'environnement de production. ServiceNow DevOps le capture explicitement lorsque l'outil CI/CD signale la réussite de l'exécution du pipeline. | ||
| Pourquoi c’est important Il s'agit du principal point de fin réussi du processus SDLC. Il clôt le flux de valeur et est essentiel au calcul de la durée totale du cycle. Où les obtenir Capturé à 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. Collecte Enregistré lorsque le pipeline de déploiement en production s'achève avec succès. Type d’événement explicit | |||
| Développement commencé | Cette activité marque le moment où un développeur commence activement à coder ou à mettre en œuvre l'élément de développement. Elle est généralement déduite du changement de statut de l'élément vers « In Progress », « Development » ou « Coding ». | ||
| Pourquoi c’est important Il s'agit d'une étape importante qui signale le début de la phase de réalisation créatrice de valeur. Elle est essentielle pour mesurer le délai de réalisation des développeurs et la durée des cycles de revue du code. Où les obtenir Déduit de l'horodatage auquel le champ « State » de l'enregistrement de l'élément de développement, par exemple Story [rm_story], est mis à jour avec le statut « In Progress » ou un statut équivalent. Collecte Fondé sur l'horodatage d'un changement d'état vers « In Progress » ou une valeur similaire. Type d’événement inferred | |||
| Élément de développement créé | Cette activité correspond à la création d'un nouvel élément de développement, tel qu'une story, un bug ou un epic, dans ServiceNow. L'événement est généralement enregistré explicitement lorsqu'un nouvel enregistrement est inséré dans la table concernée, par exemple la table Story [rm_story]. | ||
| Pourquoi c’est important Il s'agit de l'événement de début principal du processus SDLC. Il permet de mesurer la durée totale du cycle de bout en bout et de suivre la prise en compte de la demande initiale. Où les obtenir 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, telle que Story [rm_story], Epic [rm_epic] ou Defect [rm_defect]. L'horodatage de création figure généralement directement dans l'enregistrement. Collecte Capturé à partir de l'horodatage de création de l'enregistrement de l'élément de développement. Type d’événement explicit | |||
| Revue du code effectuée | Cette activité indique qu'une revue du 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 capturé explicitement par les intégrations DevOps ou déduit des changements de statut d'enregistrements associés. | ||
| Pourquoi c’est important Il s'agit d'un contrôle qualité essentiel. L'analyse de sa durée aide à repérer les goulots d'étranglement du processus de revue, qui constituent une source fréquente de retards dans le SDLC. Où les obtenir Peut être capturé à partir de l'événement « Merged » ou « Completed » d'un enregistrement Pull Request dans l'intégration Git de ServiceNow, ou déduit du changement de statut de l'élément de développement vers « Code Review Complete ». Collecte Enregistré lorsqu'une Pull Request associée à l'élément de travail est fusionnée. Type d’événement explicit | |||
| Tests QA terminés | Indique que l'équipe d'assurance qualité a terminé avec succès ses activités de test pour l'élément de développement. Cette étape est généralement déduite lorsque l'état de l'élément quitte la phase de test pour passer à un statut tel que « Ready for UAT » ou « Done ». | ||
| Pourquoi c’est important Cette étape marque la fin d'un contrôle qualité majeur. Elle constitue un préalable aux étapes suivantes, telles que les tests d'acceptation utilisateur ou la préparation de la mise en production. Où les obtenir Déduit de l'horodatage d'un changement d'état depuis un statut de test, par exemple « In QA », vers un statut postérieur aux tests, tel que « Ready for UAT » ou « Resolved ». Collecte Fondé sur l'horodatage d'un changement d'état de « Testing » vers l'état suivant. Type d’événement inferred | |||
| UAT approuvée | Indique que les parties prenantes métier ont officiellement approuvé l'élément de développement après les tests d'acceptation utilisateur. Il s'agit d'une étape importante, déduite d'un changement de statut, par exemple le passage de « In UAT » à « Ready for Release » ou « Approved ». | ||
| Pourquoi c’est important Il s'agit de l'approbation métier finale avant qu'un élément soit autorisé à être déployé en production. C'est un point de contrôle essentiel en matière de qualité et de gouvernance. Où les obtenir Déduit d'une transition d'état de l'enregistrement de l'élément de développement indiquant la réussite de l'UAT. Cette transition est enregistrée dans l'historique des activités de l'élément. Collecte Déduit d'un changement d'état de « UAT » vers un état approuvé ou prêt pour la mise en production. Type d’événement inferred | |||
| Build déclenché | Cet événement marque le début d'un build de pipeline CI/CD, souvent déclenché par une validation de code. ServiceNow DevOps l'enregistre comme une exécution de pipeline et l'associe aux éléments de développement à l'origine du déclenchement. | ||
| Pourquoi c’est important Cette activité fait le lien entre le développement et les tests ou déploiements automatisés. L'analyse du délai entre la validation et le début du build peut révéler des retards dans le processus CI/CD. Où les obtenir Enregistré explicitement dans la table Pipeline Execution [sn_devops_pipeline_execution] lorsqu'un build démarre dans l'outil CI/CD intégré, par exemple Jenkins ou Azure DevOps. Collecte Capturé à partir de l'heure de début d'un enregistrement dans la table Pipeline Execution. Type d’événement explicit | |||
| Code validé | Correspond à la validation par un développeur du code dans un dépôt de système de contrôle de version associé à l'élément de développement. ServiceNow DevOps enregistre explicitement ces événements à partir d'outils SCM intégrés tels que Git ou GitHub. | ||
| Pourquoi c’est important Le suivi des validations offre une visibilité détaillée sur l'avancement et la fréquence des activités de développement. Il aide à mettre en relation des modifications de code précises avec l'élément de développement parent. Où les obtenir Capturé comme événement explicite dans la table Commits [sn_devops_commit] de ServiceNow DevOps, alimentée par des Webhooks provenant du système de gestion du code source intégré. Collecte Enregistré lorsqu'un Webhook de validation est reçu de l'outil SCM. Type d’événement explicit | |||
| Conception commencée | Représente la phase au cours de laquelle la conception technique ou l'architecture de solution de l'élément de développement est créée. Cette étape est généralement déduite du changement d'un champ de statut ou d'état de l'enregistrement de l'élément de développement vers une valeur telle que « Design » ou « Solutioning ». | ||
| Pourquoi c’est important L'analyse de la durée de la phase de conception aide à 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ù les obtenir Déduit 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. Collecte Déduit 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 lorsque l'étape de production d'un pipeline CI/CD commence son exécution. | ||
| Pourquoi c’est important Cette étape marque le début de la phase finale, souvent la plus importante, du cycle de vie. Son suivi aide à analyser la durée des déploiements et à repérer les possibilités d'automatisation. Où les obtenir Enregistré explicitement dans la table Stage Execution Run [sn_devops_stage_execution], en filtrant les étapes liées à l'environnement de production. Collecte Capturé à 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é | Représente 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 lorsque l'état de l'élément est défini sur « Cancelled » ou « Closed Incomplete ». | ||
| Pourquoi c’est important Le suivi des annulations aide à repérer les efforts perdus et à comprendre les raisons des changements de périmètre ou des changements de priorité. Il offre une vision plus complète de toutes les issues possibles du processus. Où les obtenir Déduit de l'horodatage auquel le champ « State » de l'enregistrement de l'élément de développement est mis à jour avec un statut final non terminé, tel que « Cancelled ». Collecte Déduit 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 contrôles qualité et est intégré à une version précise. Elle peut être déduite lorsque l'élément est associé à un enregistrement Release ou lorsque son statut passe à « Ready for Deployment ». | ||
| Pourquoi c’est important Cette étape indique que l'élément est techniquement et fonctionnellement terminé. Le temps passé dans cet état peut correspondre au temps d'attente avant une fenêtre de déploiement planifiée. Où les obtenir Déduit du changement du champ « State » vers « Ready for Release » ou du suivi du moment où le champ « Release » de l'enregistrement de l'élément de développement est renseigné ou mis à jour. Collecte Déduit d'un changement de statut ou de l'association à un enregistrement Release. Type d’événement inferred | |||
| Reprise identifiée | Indique qu'un problème a été découvert pendant les tests et que l'élément doit être renvoyé au développement. Cet événement est déduit de l'observation d'un retour en arrière dans le flux du processus, par exemple lorsqu'un statut passe de « In QA » à « In Progress ». | ||
| Pourquoi c’est important Le suivi des reprises est essentiel pour comprendre les problèmes de qualité et les inefficacités des processus. Une fréquence élevée de cette activité révèle souvent des problèmes de développement ou un manque de clarté des exigences. Où les obtenir Déduit de l'analyse de l'historique du champ « State » dans les tables sys_audit ou sys_history_line. Le passage d'un statut d'une étape ultérieure, par exemple « Testing », à un statut antérieur, par exemple « In Progress », indique une reprise. Collecte Déduit d'une transition de statut vers une étape antérieure, par exemple « Testing » -> « In Progress ». Type d’événement inferred | |||
| Tests QA commencés | Marque le début de la phase officielle de tests d'assurance qualité. Cette étape 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 c’est important Cette activité signale le transfert du développement vers l'équipe QA. Elle permet de mesurer la durée de la phase de test et d'identifier les goulots d'étranglement liés à la capacité de test. Où les obtenir Déduit de l'horodatage auquel le champ « State » de l'enregistrement de l'élément de développement, par exemple Story ou Defect, est mis à jour avec un statut propre à la QA. Collecte Fondé sur l'horodatage d'un changement d'état vers « Testing » ou une valeur équivalente. Type d’événement inferred | |||
| UAT commencée | Représente le début des tests d'acceptation utilisateur, au cours desquels les parties prenantes métier valident les fonctionnalités. Cet événement est capturé en déduisant un changement de statut vers « UAT », « In UAT » ou « User Acceptance Testing ». | ||
| Pourquoi c’est 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 problèmes de participation des utilisateurs ou des écarts entre les exigences et la solution. Où les obtenir Déduit 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. Collecte Déduit d'un changement d'état vers un statut « UAT ». Type d’événement inferred | |||
Guides d’extraction
Étapes
- Comprendre votre modèle d’état : avant de créer les rapports, documentez les valeurs précises du champ d’état de votre élément 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éder à 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éer un rapport sur les changements d’état : créez un premier rapport pour capturer les activités déclenchées par les changements de statut. 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 exempleStory, etField namesur votre champ d’état, par exempleState. Ajoutez un filtre de date sur le champCreated onpour la période souhaitée.
- Nom du rapport :
- Créer un rapport sur la création des éléments : créez un nouveau rapport pour l’événement de création initial.
- 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, notamment
Nombre,Created on,Assigned to,Priority,State, etc. - Filtre : appliquez un filtre de date sur le champ
Created on.
- Nom du rapport :
- Créer un rapport sur les validations de code : créez un rapport consacré aux é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 telles que
Work item,Commit time,Author, etc. - Filtre : appliquez un filtre de date sur le champ
Commit time.
- Nom du rapport :
- Créer les rapports sur les compilations et les déploiements : répétez la procédure de l’étape précédente pour les tables
Build [sn_devops_build]etDeployment [sn_devops_deployment]. Ces tables contiennent les enregistrements correspondant aux activitésBuild Triggered,Deployment to Production Started,Deployed to ProductionetDeployment Failed. - Exporter tous les rapports : exécutez séparément chacun des rapports créés. Pour chaque rapport, cliquez sur l’icône du menu contextuel, représentée par trois points ou une flèche vers le bas, puis sélectionnez
Export > CSVouExport > Excel. Enregistrez tous les fichiers. - Regrouper et transformer 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 du journal d’événements (
DevelopmentItem,ActivityName,EventTime, etc.) et associez les données des colonnes sources. Par exemple, associezDocument keydu rapport d’audit etNombredu rapport sur les stories à la colonneDevelopmentItem. - Associer les noms des activités : créez la colonne
ActivityNameen traduisant les données sources. Pour le rapport sur les changements d’état, utilisez votre modèle d’état documenté afin d’associer les valeurs deNew valueaux noms d’activités, par exemple l’état « Testing » à l’activité « QA Testing Started ». Pour les autres rapports, attribuez un nom d’activité fixe à chaque ligne, par exemple « Code Committed » à toutes les lignes de l’export des validations. - Finaliser et enregistrer : ajoutez les colonnes
SourceSystemetLastDataUpdateavec des valeurs statiques pour toutes les lignes. Vérifiez que tous les horodatages utilisent un format cohérent. Enregistrez le fichier final regroupé au format CSV. Il est 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 spécifiques d’éléments de développement, par exempleStory [rm_story]etDefect [rm_defect], ainsi que les tables principales ServiceNow DevOps :Commit [sn_devops_commit],Build [sn_devops_build]etDeployment [sn_devops_deployment]. - Filtres principaux : le filtre le plus important concerne la période, qui doit être appliqué de manière cohérente à tous les rapports sur un champ d’horodatage tel que
Created on,Commit timeouHeure de début. Pour le rapportsys_audit, il est essentiel de filtrer surTable name, par exemplerm_story, etField name, par exemplestate, afin de limiter les données aux seuls changements d’état pertinents. - Recommandation concernant la période : il est recommandé d’extraire les données sur une période de 3 à 6 mois afin d’obtenir un échantillon représentatif sans provoquer de problèmes de performance. Pour les systèmes plus volumineux, envisagez une extraction par lots mensuels.
- Définition du modèle d’état : vous devez bien comprendre le modèle d’état des éléments de travail de votre organisation. Cette étape est nécessaire pour associer correctement les valeurs d’état capturées dans la table
sys_auditaux activités métier correspondantes, comme « QA Testing Started » ou « UAT Approved ». - Prérequis : les utilisateurs qui effectuent 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 applicatif mentionnées ci-dessus. Le module d’extension ServiceNow DevOps doit être installé et activement intégré à vos outils SCM et CI/CD.
a 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 disposez d’un accès réseau à votre instance ServiceNow et qu’un compte de service dédié vous a été attribué avec des autorisations de lecture, les rôles
itiletsn_devops.viewerconstituant un bon point de départ. Cet utilisateur doit pouvoir accéder à des tables telles querm_story,sys_auditet au schémasn_devops_*. - Installez le pilote ODBC ServiceNow : téléchargez depuis le portail d’assistance ServiceNow le pilote ODBC adapté à votre système d’exploitation. Suivez les instructions d’installation fournies.
- Configurez le DSN : créez un nouveau DSN système, ou 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 configurez-le avec 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 outil client SQL tel que DBeaver, 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 au moyen du DSN configuré.
- Identifiez le modèle d’états : avant d’exécuter la requête, vous devez identifier les valeurs exactes utilisées par votre organisation dans le champ
statede vos tables d’éléments de développement, par exemplerm_storyetrm_defect. La requête fournie utilise des exemples courants tels queIn ProgressouIn QA, que vous devrez remplacer par vos valeurs spécifiques. - Personnalisez la requête SQL : copiez la requête SQL fournie dans votre client. Modifiez les paramètres indiqués 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, cette 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 retourné. Vérifiez la diversité des activités et assurez-vous que les colonnes clés telles que
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 contient aucune ligne vide à la fin et que le format de date de
EventTimeetLastDataUpdateest cohérent et pris en charge par ProcessMind, par exempleYYYY-MM-DD HH:MM:SS.
Configuration
- Prérequis : accès à une instance ServiceNow sur laquelle 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 la machine cliente.
- 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 de la période : la requête fournie contient le paramètre
s.sys_created_on >= '2023-01-01'pour limiter le volume de données extrait. Il est vivement recommandé d’extraire les données sur une période définie, par exemple les 6 à 12 derniers mois, afin de conserver des temps d’exécution maîtrisables. - 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 génériques, par exemple
[Your 'In Progress' State Value]et[Your 'In QA' State Value], par les valeurs exactes utilisées dans votre configuration ServiceNow. Ces valeurs sont sensibles à la casse. - Tables des éléments de travail : la requête est conçue pour la table Story (
rm_story). Si votre organisation utilise également des Defects (rm_defect), des Enhancements (rm_enhancement) ou d’autres types de tâches, vous devez les ajouter à l’expression de table communeDevItemsinitiale au moyen deUNION ALL. - Performances : les requêtes directes sur une instance ServiceNow de production peuvent affecter les performances. Il est recommandé d’exécuter les extractions volumineuses en dehors des heures de pointe. Pour les très grands volumes, envisagez une stratégie d’extraction incrémentielle fondée sur le champ
sys_updated_on.
a 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 template de données pour révéler les inefficacités cachées et soutenir l’amélioration continue.
N’attendez plus : optimisez dès aujourd’hui votre cycle de développement logiciel
Identifiez les inefficacités pour réduire d’au moins 30 % la durée de votre cycle SDLC.
Aucune carte bancaire requise, commencez à optimiser dès aujourd’hui