Su Template de datos del ciclo de vida del desarrollo de software
Su Template de datos del ciclo de vida del desarrollo de software
- Atributos recomendados para recopilar
- Actividades clave que debe supervisar
- Guía de extracción para ServiceNow DevOps
Atributos del ciclo de vida del desarrollo de software
| Nombre | Descripción | ||
|---|---|---|---|
| Elemento de desarrollo DevelopmentItem | Identificador único de una unidad de trabajo, como una funcionalidad, un error o una tarea, que avanza por el ciclo de vida del desarrollo. | ||
| Descripción Development Item sirve como identificador principal del caso y representa una unidad de trabajo específica cuyo seguimiento se realiza. Vincula todas las actividades, desde la concepción y planificación iniciales hasta el desarrollo, las pruebas y la implementación de ese elemento. En el análisis de Process Mining, este atributo es fundamental para reconstruir el recorrido completo de cada elemento de trabajo. Permite visualizar los flujos del proceso, calcular los tiempos de ciclo totales e identificar las variantes del proceso para cada funcionalidad o corrección de errores. Cada evento del registro debe asociarse a un Development Item para crear un mapa de proceso coherente. Por qué es importante Es el identificador central que conecta todas las actividades de desarrollo relacionadas en una única instancia del proceso, lo que permite analizar el ciclo de vida completo de cada elemento de trabajo. Dónde obtenerlo Normalmente es la clave principal de las tablas que gestionan historias, errores o tareas, como las tablas «rm_story», «rm_bug» o «task» de ServiceNow. Ejemplos STRY0010015BUG0034092TASK0050118 | |||
| Hora de inicio EventTime | La marca de tiempo exacta que indica cuándo tuvo lugar una actividad o un evento específico. | ||
| Descripción Este atributo proporciona la fecha y la hora en que se registró cada actividad del ciclo de vida del desarrollo. Es esencial para ordenar cronológicamente los eventos y realizar todos los análisis basados en el tiempo. En Process Mining, la hora de inicio se utiliza para calcular las duraciones entre actividades, identificar los tiempos de espera y medir el tiempo de ciclo general del proceso. Es un componente fundamental de los Dashboards que analizan el rendimiento, como el análisis del tiempo de ciclo de extremo a extremo del SDLC, y para calcular indicadores clave de rendimiento como el tiempo de entrega de la revisión de código. Por qué es importante Esta marca de tiempo es esencial para ordenar correctamente los eventos y calcular todas las métricas de rendimiento, incluidos los tiempos de ciclo, las duraciones y los tiempos de espera. Dónde obtenerlo Normalmente se encuentra en campos de marca de tiempo generados por el sistema, como «sys_updated_on» o «sys_created_on», en la pista de auditoría o en las tablas de tareas. Ejemplos 2023-10-26T10:00:00Z2023-10-27T14:35:10Z2023-11-01T09:15:00Z | |||
| Nombre de la actividad ActivityName | El nombre del evento específico del ciclo de vida de desarrollo que tuvo lugar, como «Development Started» o «Code Review Performed». | ||
| Descripción Este atributo registra el nombre de cada hito o tarea completada durante el ciclo de vida del desarrollo de software. Estas actividades forman los pasos secuenciales del proceso, desde la creación hasta la implementación. Analizar la secuencia y la frecuencia de estas actividades es la función principal de Process Mining. Permite construir el mapa de proceso, ayuda a identificar cuellos de botella entre los pasos y destaca las variantes del proceso que no cumplen las normas o son ineficientes. El conjunto definido de actividades incluye etapas clave como diseño, desarrollo, pruebas e implementación. Por qué es importante Define los pasos del mapa de proceso, lo que permite analizar el flujo del proceso, identificar cuellos de botella y descubrir desviaciones respecto al SDLC estándar. Dónde obtenerlo Normalmente se obtiene asignando los cambios de estado, los registros de eventos o las entradas de la pista de auditoría a una lista estandarizada de nombres de actividades. Por ejemplo, un cambio del campo «state» a «In Progress» podría asignarse a «Development Started». Ejemplos Desarrollo iniciadoCódigo confirmadoPruebas de QA completadasDesplegado en producción | |||
| Sistema de origen SourceSystem | Identifica el sistema del que se extrajeron los datos, que en este caso es ServiceNow DevOps. | ||
| Descripción Este atributo especifica el sistema de origen de los datos de eventos. En este proceso, será siempre «ServiceNow DevOps». Aunque pueda parecer estático, incluir explícitamente el sistema de origen es fundamental para la gobernanza de datos y en entornos donde los datos pueden combinarse desde varios sistemas, como Jira o Azure DevOps. Garantiza la claridad sobre la procedencia de los datos y ayuda a diagnosticar problemas de calidad o extracción. Por qué es importante Garantiza la trazabilidad de los datos y es esencial para mantener su integridad, especialmente al integrar datos de varias herramientas de desarrollo. Dónde obtenerlo Es un valor estático que debe añadirse durante el proceso de extracción y transformación de datos. Ejemplos ServiceNow DevOps | |||
| Última actualización de datos LastDataUpdate | Marca de tiempo que indica la última vez que se actualizaron los datos de este registro de eventos desde el sistema de origen. | ||
| Descripción Este atributo registra cuándo se extrajo o actualizó por última vez el conjunto de datos desde ServiceNow DevOps. Se aplica al conjunto de datos completo, no a eventos individuales. Esta marca de tiempo es fundamental para comprender la actualidad del análisis. Indica a los usuarios qué tan actuales son las conclusiones sobre el proceso y ayuda a programar las actualizaciones de datos. Mostrar esta información en los Dashboards aporta contexto a todas las métricas y visualizaciones, y garantiza que las decisiones se basen en datos oportunos. Por qué es importante Proporciona un contexto esencial sobre la actualidad de los datos y garantiza que los usuarios comprendan hasta qué punto está actualizado el análisis del proceso. Dónde obtenerlo Esta marca de tiempo se genera y añade durante el proceso de extracción de datos, y registra cuándo se ejecutó la extracción. Ejemplos 2023-11-15T08:00:00Z | |||
| Desarrollador asignado AssignedDeveloper | El nombre o ID del desarrollador o usuario asignado al Development Item en el momento de la actividad. | ||
| Descripción Este atributo identifica a la persona responsable de ejecutar una tarea o actividad específica. Es dinámico y puede cambiar a medida que el Development Item pasa por distintas etapas y equipos. Este atributo es fundamental para analizar la asignación de recursos, la carga de trabajo y las transferencias. Es compatible directamente con el panel «Developer Workload and Handoffs» y el KPI «Activity Volume per Developer». El seguimiento de los cambios en este campo permite medir los tiempos de transferencia e identificar cuellos de botella de colaboración entre desarrolladores o entre los equipos de desarrollo y QA. Por qué es importante Es esencial para el análisis basado en recursos, incluida la distribución de la carga de trabajo, la eficiencia de las transferencias y la identificación de patrones de rendimiento específicos de cada equipo. Dónde obtenerlo Esta información normalmente se almacena en el campo «assigned_to» de las tablas relacionadas con tareas en ServiceNow. Ejemplos David MillerAnna WilliamsJames Brown | |||
| Es retrabajo IsRework | Un indicador booleano que es verdadero si la actividad forma parte de un ciclo de retrabajo, como volver al desarrollo después de las pruebas. | ||
| Descripción Este es un atributo derivado que identifica las actividades que tienen lugar después de que el proceso haya retrocedido a una etapa anterior. Por ejemplo, si la actividad «Development Started» ocurre después de «QA Testing Completed» para el mismo elemento, se marca como retrabajo. Este indicador es esencial para cuantificar y visualizar el retrabajo. Es compatible directamente con el panel «Rework and Rejection Flow Analysis» y se utiliza para calcular el KPI «Rework Rate after Testing». Al marcar estos eventos, los analistas pueden filtrar y analizar fácilmente la frecuencia, las causas y el impacto del retrabajo en el tiempo de ciclo general. Por qué es importante Este indicador facilita la cuantificación y el análisis del retrabajo, ayuda a medir la calidad del proceso e identificar las causas raíz de la repetición del trabajo. Dónde obtenerlo Este atributo se calcula en la herramienta de Process Mining mediante el análisis de la secuencia de actividades de cada caso para detectar retrocesos en el flujo del proceso. Ejemplos truefalse | |||
| Estado del Development Item DevelopmentItemState | El estado del Development Item en el momento del evento, como «Open», «In Progress» o «Closed». | ||
| Descripción Este atributo refleja el estado oficial del Development Item en ServiceNow. Mientras que las actividades representan pasos derivados del proceso, el estado representa la etapa formal en el Workflow del sistema. El estado suele ser la fuente a partir de la cual se derivan las actividades. Puede utilizarse para validar los datos y crear vistas más sencillas y generales del proceso. Por ejemplo, analizar el tiempo empleado en cada estado puede ofrecer una perspectiva de los cuellos de botella distinta de la que se obtiene al analizar el tiempo entre actividades. También resulta útil para identificar elementos estancados o resueltos. Por qué es importante Proporciona el estado oficial del sistema para un elemento de trabajo. A menudo es la fuente para derivar actividades y puede utilizarse para la validación y el análisis general del estado. Dónde obtenerlo Es un campo estándar, normalmente denominado «state» o «stage», en las tablas relacionadas con tareas de ServiceNow. Ejemplos PendienteTrabajo en progresoListo para probarCerrado y completado | |||
| Grupo de asignación AssignmentGroup | El equipo o grupo responsable del Development Item en el momento de la actividad. | ||
| Descripción Este atributo identifica al equipo asignado a un elemento de trabajo, como «Frontend Developers», «Backend Services» o «QA Team». A medida que avanza, el elemento de trabajo suele transferirse entre distintos grupos de asignación. El seguimiento del grupo de asignación es esencial para comprender la colaboración entre funciones y las transferencias. Ayuda a identificar retrasos sistémicos que se producen cuando el trabajo pasa de un equipo a otro. Este atributo permite analizar el rendimiento y la carga de trabajo de los equipos, así como identificar qué equipos actúan como cuellos de botella en el flujo general. Por qué es importante Registra qué equipo es responsable del trabajo y permite analizar el rendimiento de los equipos, equilibrar la carga de trabajo y evaluar la eficiencia de las transferencias entre equipos. Dónde obtenerlo Esta información se almacena en el campo «assignment_group», un campo estándar de las tablas relacionadas con tareas en ServiceNow. Ejemplos Ingeniería de plataformasEquipo de aplicaciones móvilesAseguramiento de la calidadDevOps | |||
| Módulo o componente afectado ModuleComponentAffected | El módulo de software, la aplicación o el componente específico con el que se relaciona el Development Item. | ||
| Descripción Este atributo clasifica el trabajo de desarrollo según la parte del sistema a la que afecta. Puede tratarse de un microservicio específico, un componente de la interfaz de usuario o una aplicación de backend. Segmentar el proceso por módulo o componente es fundamental para identificar cuellos de botella localizados. El panel «Component-Specific Bottleneck Insights» y el KPI «Avg Stage Duration by Component» utilizan este atributo para determinar si ciertas partes de la base de código se asocian sistemáticamente con ciclos de desarrollo más largos, mayores tasas de retrabajo o fallos de implementación más frecuentes. Esto ayuda a centrar los esfuerzos de mejora donde más se necesitan. Por qué es importante Permite segmentar el análisis por aplicación o componente y ayuda a aislar cuellos de botella o problemas de calidad específicos de determinadas partes del sistema. Dónde obtenerlo A menudo es un campo personalizado o una referencia a la Configuration Management Database (CMDB) que vincula el elemento de trabajo a un registro «cmdb_ci». Consulte la documentación de ServiceNow DevOps. Ejemplos Servicio de facturaciónInterfaz de autenticación de usuariosBase de datos de informesAPI Gateway | |||
| Prioridad DevelopmentItemPriority | El nivel de prioridad asignado al Development Item, como «High», «Medium» o «Low». | ||
| Descripción Este atributo clasifica los elementos de desarrollo según su urgencia empresarial. Los niveles de prioridad ayudan a los equipos a centrarse en las tareas más críticas y suelen utilizarse para gestionar los SLA y las expectativas de las partes interesadas. En Process Mining, la prioridad es una dimensión clave para el análisis comparativo. Permite filtrar el mapa de proceso para comprobar si los elementos de alta prioridad siguen una ruta más rápida o diferente. Es esencial para el panel y el KPI «High-Priority Feature Delivery Time», ya que ayuda a validar si los elementos críticos realmente reciben un tratamiento prioritario. Por qué es importante Permite filtrar y comparar procesos con distintos niveles de prioridad, y ayuda a comprobar si los elementos de alta prioridad se procesan de forma más rápida y eficiente. Dónde obtenerlo Es un campo estándar, normalmente denominado «priority», en las tablas relacionadas con tareas de ServiceNow. Ejemplos 1 - Crítico2 - Alto3 - Moderado4 - Bajo | |||
| Tiempo de ciclo del Development Item DevelopmentItemCycleTime | El tiempo total transcurrido desde la creación del Development Item hasta su cierre o implementación final. | ||
| Descripción Este atributo es una métrica calculada que representa la duración de extremo a extremo de un Development Item. Se calcula obteniendo la diferencia entre la marca de tiempo de la primera actividad y la de la última actividad de cada caso. Es un indicador clave de rendimiento principal para todo el proceso SDLC y respalda directamente el KPI «Average SDLC Cycle Time». Proporciona una medida general de la velocidad y eficiencia del proceso. Analizar esta métrica a lo largo del tiempo y según distintas dimensiones, como la prioridad o el equipo, ayuda a evaluar el impacto de las iniciativas de mejora del proceso. Por qué es importante Representa la duración total de extremo a extremo de un elemento de trabajo y es una métrica clave para medir la eficiencia y la velocidad generales del proceso. Dónde obtenerlo No es un campo del sistema de origen. La herramienta de Process Mining lo calcula restando el StartTime mínimo del StartTime máximo de cada CaseId. Ejemplos 15 días y 4 horas3 días y 12 horas32 días y 8 horas | |||
| Tipo de Development Item DevelopmentItemType | La clasificación del elemento de trabajo, como «Feature», «Bug», «Technical Debt» o «Task». | ||
| Descripción Este atributo distingue entre los distintos tipos de trabajo que avanzan por el proceso SDLC. Por ejemplo, el proceso para corregir un error crítico puede ser diferente y más rápido que el proceso para desarrollar una nueva funcionalidad. Analizar el proceso según el tipo de elemento de trabajo permite comprender mejor el rendimiento. Ayuda a responder preguntas como: «¿Los errores tienen una tasa de retrabajo mayor que las funcionalidades nuevas?» o «¿Es aceptable nuestro tiempo de ciclo para reducir la deuda técnica?». Esta segmentación proporciona insights más profundos que una vista del proceso igual para todos los casos. Por qué es importante Distingue entre distintos tipos de trabajo, como funcionalidades y errores, que pueden tener rutas de proceso, prioridades y duraciones previstas diferentes. Dónde obtenerlo Puede determinarse a partir de la tabla de origen del registro, por ejemplo, «rm_story» frente a «rm_bug», o mediante un campo «type» en una tabla de tareas genérica. Ejemplos FuncionalidadErrorTareaSpike | |||
| Estado de la implementación DeploymentStatus | Indica el resultado de una actividad de implementación, normalmente «Success» o «Failure». | ||
| Descripción Este atributo registra el resultado de una implementación en un entorno específico. Es una información fundamental para comprender la fiabilidad y estabilidad del proceso de lanzamiento. Este atributo es esencial para el panel «Deployment Success and Failure Trends» y el KPI «Deployment Failure Rate». Al analizar la frecuencia y las tendencias de los fallos de implementación, las organizaciones pueden identificar problemas subyacentes en las pruebas, la infraestructura o la coordinación de lanzamientos. Esto ayuda a centrar los esfuerzos en mejorar la calidad y fiabilidad de la entrega de software. Por qué es importante Mide directamente el éxito de las actividades de implementación, un dato fundamental para calcular la tasa de fallos de implementación y analizar la estabilidad de los lanzamientos. Dónde obtenerlo Este estado normalmente se registra en tareas de seguimiento de implementaciones o en registros de ejecución de canalizaciones CI/CD integrados con ServiceNow DevOps. Ejemplos ÉxitoFalloCompletado con advertencias | |||
| Hora de finalización EventEndTime | La marca de tiempo exacta que indica cuándo se completó una actividad. En los eventos instantáneos, coincide con la hora de inicio. | ||
| Descripción Este atributo proporciona la fecha y la hora en que se completó cada actividad del ciclo de vida del desarrollo. Es especialmente útil para actividades con una duración medible, como «Code Review Performed» o «QA Testing». En Process Mining, disponer de la hora de inicio y de finalización permite calcular con precisión los tiempos de procesamiento de las actividades y distinguirlos del tiempo de espera entre actividades. Esto ayuda a determinar si los retrasos se deben a tareas largas o a esperas prolongadas de recursos. En eventos considerados instantáneos, como «Build Triggered», la hora de finalización puede coincidir con la hora de inicio. Por qué es importante Permite calcular con precisión el tiempo de procesamiento de las actividades, lo que ayuda a diferenciar el tiempo dedicado a trabajar del tiempo dedicado a esperar. Dónde obtenerlo Puede ser necesario derivarlo. Podría ser la marca de tiempo de inicio de la actividad siguiente o proceder de un campo independiente de «end date», si está disponible en el sistema de origen. Ejemplos 2023-10-26T18:05:00Z2023-10-28T11:20:15Z2023-11-02T10:00:00Z | |||
| ID de commit CommitId | El identificador único del commit de código fuente asociado al trabajo de desarrollo. | ||
| Descripción Este atributo proporciona un vínculo directo entre un Development Item y el cambio de código específico en el repositorio de código fuente, como Git. Se registra cuando tiene lugar la actividad «Code Committed». En Process Mining, el Commit ID enriquece el análisis al conectar los datos del proceso con los datos de ingeniería. Permite rastrear una implementación problemática hasta el cambio de código exacto o correlacionar las métricas de complejidad del código con los tiempos de ciclo de desarrollo. Esto proporciona una capa de análisis de causa raíz mucho más profunda y técnica. Por qué es importante Vincula el evento del proceso con un cambio de código específico y permite realizar un análisis de causa raíz más profundo al correlacionar las métricas del proceso con los detalles del código. Dónde obtenerlo ServiceNow DevOps lo captura mediante integraciones con sistemas de gestión de código fuente como Git o SVN. Los datos residen en tablas relacionadas vinculadas al Development Item. Ejemplos a1b2c3d4e5f6f0e9d8c7b6a59a8b7c6d5e4f | |||
| Motivo del retrabajo ReworkReason | Una clasificación o descripción del motivo por el que un Development Item necesitó retrabajo después de las pruebas. | ||
| Descripción Cuando un elemento no supera QA o UAT, este atributo registra el motivo del fallo. Puede tratarse de una categoría de error específica, una interpretación incorrecta de los requisitos o un problema del entorno. Esta información proporciona un contexto esencial para el panel «Rework and Rejection Flow Analysis». En lugar de limitarse a saber que hubo retrabajo, los analistas pueden comprender por qué ocurrió. Esto permite aplicar mejoras específicas, como definir mejor los requisitos, reforzar las pruebas unitarias o estabilizar los entornos de prueba, para reducir la tasa general de retrabajo. Por qué es importante Proporciona información cualitativa sobre los motivos del retrabajo y permite aplicar mejoras específicas al proceso para aumentar la calidad y reducir los ciclos de retrabajo. Dónde obtenerlo Puede registrarse en un campo «close_notes» cuando falla una prueba o en un campo personalizado específico «rework_reason». Consulte la documentación de ServiceNow DevOps. Ejemplos Requisito interpretado incorrectamenteError de regresiónPrueba de rendimiento fallidaProblema de UI/UX | |||
| Versión de lanzamiento planificada PlannedReleaseVersion | La versión o el lanzamiento de software previsto en el que se entregará el Development Item. | ||
| Descripción Este atributo vincula un Development Item a un lanzamiento planificado específico, como «Version 2.3» o «Q4 2023 Release». Es un elemento clave para la gestión de proyectos y la planificación de lanzamientos. En Process Mining, este atributo es fundamental para el panel «Release Plan Adherence Monitoring». Al comparar las fechas reales de finalización con las fechas de lanzamiento planificadas, los equipos pueden medir el cumplimiento del calendario, identificar los elementos en riesgo de no llegar a un lanzamiento y analizar las causas de los retrasos. Proporciona un vínculo directo entre el proceso de desarrollo detallado y los objetivos empresariales de alto nivel. Por qué es importante Conecta el trabajo de desarrollo con lanzamientos específicos y permite analizar el cumplimiento del calendario y el impacto de los retrasos del proceso en los plazos de lanzamiento. Dónde obtenerlo Esta información normalmente se almacena en un campo «release» o «planned_release», que suele hacer referencia a una tabla de gestión de lanzamientos en ServiceNow. Consulte la documentación de ServiceNow DevOps. Ejemplos v3.4.1Versión del primer trimestre de 2024Puesta en marcha del proyecto Phoenix | |||
Actividades del ciclo de vida del desarrollo de software
| Actividad | Descripción | ||
|---|---|---|---|
| Desarrollo iniciado | Esta actividad marca el momento en que un desarrollador comienza activamente a programar o implementar el elemento de desarrollo. Normalmente se infiere a partir de un cambio de estado del elemento a «In Progress», «Development» o «Coding». | ||
| Por qué es importante Este es un hito fundamental que señala el inicio de la fase de construcción que aporta valor. Es esencial para medir el tiempo de entrega de los desarrolladores y los tiempos de ciclo de revisión del código. Dónde obtenerlo Se infiere a partir de la marca de tiempo en la que el campo «State» del registro del elemento de desarrollo, por ejemplo, Story [rm_story], se actualiza a «In Progress» o a un estado equivalente. Recopilar Se basa en la marca de tiempo de un cambio de estado a «In Progress» o a un valor similar. Tipo de evento inferred | |||
| Desplegado en producción | Este evento marca la finalización correcta del despliegue en el entorno de producción. ServiceNow DevOps lo captura explícitamente cuando la herramienta de CI/CD informa de que la canalización se ha completado correctamente. | ||
| Por qué es importante Este es el principal punto final de éxito del proceso SDLC. Completa el flujo de valor y es esencial para calcular el tiempo total del ciclo. Dónde obtenerlo Se captura a partir de «completion_status» de un registro Pipeline Execution [sn_devops_pipeline_execution] o de su Stage Execution Run asociado. Un estado «Success» al finalizar marca este evento. Recopilar Se registra cuando la canalización de despliegue en producción se completa correctamente. Tipo de evento explicit | |||
| Despliegue fallido | Indica que el intento de desplegar el elemento de desarrollo en producción no tuvo éxito. ServiceNow DevOps lo captura explícitamente cuando la canalización de CI/CD informa de un fallo. | ||
| Por qué es importante Este es un punto final crítico de fallo. Analizar su frecuencia y sus causas es clave para mejorar la estabilidad de las versiones y reducir la tasa de fallos de despliegue. Dónde obtenerlo Se captura a partir de «completion_status» de un registro Pipeline Execution [sn_devops_pipeline_execution]. Un estado «Failed» al finalizar marca este evento. Recopilar Se registra cuando la canalización de despliegue en producción informa de un estado de fallo. Tipo de evento explicit | |||
| Elemento de desarrollo creado | Esta actividad marca la creación de un nuevo elemento de desarrollo, como una historia, un error o un epic, en ServiceNow. El evento suele capturarse explícitamente cuando se inserta un nuevo registro en la tabla correspondiente, como la tabla Story [rm_story]. | ||
| Por qué es importante Este es el evento de inicio principal del proceso SDLC. Permite medir el tiempo total del ciclo de extremo a extremo y realizar un seguimiento de la entrada inicial de la demanda. Dónde obtenerlo Se registra en las tablas sys_audit o sys_history_line al crear un registro en una tabla relacionada con el desarrollo, como Story [rm_story], Epic [rm_epic] o Defect [rm_defect]. La marca de tiempo de creación suele estar en el propio registro. Recopilar Se captura a partir de la marca de tiempo de creación del registro del elemento de desarrollo. Tipo de evento explicit | |||
| Pruebas de QA completadas | Indica que el equipo de Quality Assurance ha completado correctamente sus actividades de pruebas para el elemento de desarrollo. Normalmente se infiere cuando el estado del elemento sale de la fase de pruebas y pasa a un estado como «Ready for UAT» o «Done». | ||
| Por qué es importante Este hito marca la finalización de un punto de control de calidad importante. Es un requisito previo para etapas posteriores, como las pruebas de aceptación del usuario o la preparación de la versión. Dónde obtenerlo Se infiere a partir de la marca de tiempo de un cambio de estado desde un estado de pruebas, como «In QA», a un estado posterior a las pruebas, como «Ready for UAT» o «Resolved». Recopilar Se basa en la marca de tiempo de un cambio de estado de «Testing» a un estado posterior. Tipo de evento inferred | |||
| Revisión de código realizada | Esta actividad indica la finalización de una revisión del código por parte de otros miembros del equipo, normalmente asociada a una solicitud de extracción o de combinación. El evento puede capturarse explícitamente mediante integraciones de DevOps o inferirse a partir de cambios de estado en registros relacionados. | ||
| Por qué es importante Este es un punto de control de calidad crítico. Analizar su duración ayuda a identificar cuellos de botella en el proceso de revisión, una fuente habitual de retrasos en el SDLC. Dónde obtenerlo Puede capturarse a partir del evento «Merged» o «Completed» de un registro Pull Request en la integración Git de ServiceNow, o inferirse a partir de un cambio de estado del elemento de desarrollo a «Code Review Complete». Recopilar Se registra cuando se combina un Pull Request vinculado al elemento de trabajo. Tipo de evento explicit | |||
| UAT aprobada | Indica que las partes interesadas del negocio han aprobado formalmente el elemento de desarrollo después de las pruebas de aceptación del usuario. Es un hito clave que se infiere a partir de un cambio de estado, como pasar de «In UAT» a «Ready for Release» o «Approved». | ||
| Por qué es importante Esta es la aprobación empresarial final antes de autorizar el despliegue de un elemento en producción. Es un punto de control crítico de calidad y gobierno. Dónde obtenerlo Se infiere a partir de una transición de estado del registro del elemento de desarrollo que indica la finalización correcta de UAT. Se registra en el historial de actividades del elemento. Recopilar Se infiere a partir de un cambio de estado de «UAT» a un estado aprobado o listo para la versión. Tipo de evento inferred | |||
| Código confirmado | Representa el momento en que un desarrollador confirma código en un repositorio de un sistema de control de versiones vinculado al elemento de desarrollo. ServiceNow DevOps captura explícitamente estos eventos desde herramientas SCM integradas, como Git o GitHub. | ||
| Por qué es importante Registrar las confirmaciones proporciona una visibilidad detallada del progreso y la frecuencia de actividad del desarrollo. Ayuda a relacionar cambios de código concretos con el elemento de desarrollo principal. Dónde obtenerlo Se captura como un evento explícito en la tabla Commits [sn_devops_commit] de ServiceNow DevOps, que se completa mediante webhooks del sistema integrado de gestión del código fuente. Recopilar Se registra cuando se recibe un webhook de confirmación de la herramienta SCM. Tipo de evento explicit | |||
| Compilación activada | Este evento señala el inicio de una compilación de la canalización de CI/CD, que suele activarse mediante una confirmación de código. ServiceNow DevOps lo registra como una ejecución de canalización y lo vincula con los elementos de desarrollo de origen. | ||
| Por qué es importante Esta actividad conecta el desarrollo con las pruebas o el despliegue automatizados. Analizar el tiempo entre la confirmación y el inicio de la compilación puede revelar retrasos en el proceso de CI/CD. Dónde obtenerlo Se registra explícitamente en la tabla Pipeline Execution [sn_devops_pipeline_execution] cuando comienza una compilación en la herramienta de CI/CD integrada, como Jenkins o Azure DevOps. Recopilar Se captura a partir de la hora de inicio de un registro de la tabla Pipeline Execution. Tipo de evento explicit | |||
| Despliegue en producción iniciado | Esta actividad marca el inicio de la canalización de despliegue en el entorno de producción. ServiceNow DevOps captura explícitamente el evento cuando comienza la ejecución de la etapa de producción de una canalización de CI/CD. | ||
| Por qué es importante Marca el inicio de la fase final y, a menudo, más crítica del ciclo de vida. Su seguimiento ayuda a analizar la duración de los despliegues e identificar oportunidades de automatización. Dónde obtenerlo Se registra explícitamente en la tabla Stage Execution Run [sn_devops_stage_execution], filtrando las etapas relacionadas con el entorno de producción. Recopilar Se captura a partir de la hora de inicio de una etapa de despliegue en producción dentro de una Pipeline Execution. Tipo de evento explicit | |||
| Diseño iniciado | Representa la fase en la que se crea el diseño técnico o la arquitectura de la solución para el elemento de desarrollo. Normalmente se infiere cuando un campo de estado o fase del registro del elemento de desarrollo cambia a un valor como «Design» o «Solutioning». | ||
| Por qué es importante Analizar la duración de la fase de diseño ayuda a identificar cuellos de botella en la traducción de requisitos y la planificación de la solución antes de que comience el desarrollo. Dónde obtenerlo Se infiere a partir de las transiciones de estado del registro del elemento de desarrollo, por ejemplo, Story [rm_story]. Busque cambios en el campo «State» o en un campo personalizado «Stage» a un valor relacionado con el diseño. Recopilar Se infiere a partir de un cambio de estado a «Design» o a un estado similar. Tipo de evento inferred | |||
| Elemento de desarrollo cancelado | Representa la finalización de un elemento de desarrollo antes de completarse. Es un estado final alternativo que normalmente se infiere cuando el estado del elemento se establece en «Cancelled» o «Closed Incomplete». | ||
| Por qué es importante Registrar las cancelaciones ayuda a identificar esfuerzos desperdiciados y comprender los motivos de los cambios de alcance o la repriorización. Proporciona una visión más completa de todos los posibles resultados del proceso. Dónde obtenerlo Se infiere a partir de la marca de tiempo en la que el campo «State» del registro del elemento de desarrollo se actualiza a un estado terminal no completado, como «Cancelled». Recopilar Se infiere a partir de un cambio de estado a «Cancelled» o a un estado terminal equivalente. Tipo de evento inferred | |||
| Preparado para la versión | Esta actividad indica que el elemento de desarrollo ha superado todos los puntos de control de calidad y se ha incluido en una versión concreta. Puede inferirse cuando el elemento se asocia a un registro Release o cuando su estado cambia a «Ready for Deployment». | ||
| Por qué es importante Este paso indica que el elemento está completo desde el punto de vista técnico y funcional. El tiempo que permanece en este estado puede representar tiempo de espera antes de una ventana de despliegue programada. Dónde obtenerlo Se infiere a partir del cambio del campo «State» a «Ready for Release» o mediante el seguimiento del momento en que el campo «Release» del registro del elemento de desarrollo se completa o actualiza. Recopilar Se infiere a partir de un cambio de estado o de la asociación con un registro Release. Tipo de evento inferred | |||
| Pruebas de QA iniciadas | Marca el inicio de la fase formal de pruebas de Quality Assurance. Casi siempre se infiere a partir del cambio de estado del elemento de desarrollo a un valor como «In QA», «Testing» o «Ready for Test». | ||
| Por qué es importante Esta actividad señala la transferencia del desarrollo al equipo de QA. Permite medir la duración de la fase de pruebas e identificar cuellos de botella en la capacidad de pruebas. Dónde obtenerlo Se infiere a partir de la marca de tiempo en la que el campo «State» del registro del elemento de desarrollo, por ejemplo, Story o Defect, se actualiza a un estado específico de QA. Recopilar Se basa en la marca de tiempo de un cambio de estado a «Testing» o a un estado equivalente. Tipo de evento inferred | |||
| Retrabajo identificado | Indica que se encontró un problema durante las pruebas y que el elemento debe volver a desarrollo. Este evento se infiere al observar un retroceso en el flujo del proceso, como un cambio de estado de «In QA» a «In Progress». | ||
| Por qué es importante Registrar el retrabajo es esencial para comprender los problemas de calidad y las ineficiencias del proceso. Una frecuencia elevada de esta actividad apunta a problemas en el desarrollo o a una falta de claridad en los requisitos. Dónde obtenerlo Se infiere al analizar el historial del campo «State» en las tablas sys_audit o sys_history_line. Un cambio de un estado de una etapa posterior, como «Testing», a uno anterior, como «In Progress», indica retrabajo. Recopilar Se infiere a partir de una transición de estado hacia atrás, por ejemplo, «Testing» -> «In Progress». Tipo de evento inferred | |||
| UAT iniciada | Representa el inicio de las pruebas de aceptación del usuario, en las que las partes interesadas del negocio validan la funcionalidad. Este evento se captura infiriendo un cambio de estado a «UAT», «In UAT» o «User Acceptance Testing». | ||
| Por qué es importante Esta fase es fundamental para garantizar que la funcionalidad desarrollada cumpla los requisitos del negocio. Analizar su duración puede revelar problemas de participación de los usuarios o desajustes en los requisitos. Dónde obtenerlo Se infiere a partir de una transición de estado en el registro del elemento de desarrollo. Esto depende de que el modelo de estados del cliente incluya un estado específico para UAT. Recopilar Se infiere a partir de un cambio de estado a «UAT». Tipo de evento inferred | |||
Guías de extracción
Pasos
- Comprenda el modelo de estados: Antes de crear informes, documente los valores específicos del campo de estado de su elemento de desarrollo, por ejemplo, en la tabla Story
[rm_story]o Defect[rm_defect], que correspondan a las actividades necesarias. Por ejemplo, el valor de estado «In Progress» podría corresponder a la actividad «Development Started». - Vaya a la creación de informes: Inicie sesión en su instancia de ServiceNow. En el navegador Filtrar, vaya a
Reports > View / Runy haga clic en el botónCreate a report. - Cree un informe para los cambios de estado: Cree el primer informe para capturar las actividades determinadas por el estado. Configúrelo de la siguiente manera:
- Nombre del informe:
ProcessMind - State Change Events - Tipo de origen:
Table - Tabla:
Audit [sys_audit] - Tipo:
List - Configure las columnas: Añada
Document key,Created on,Table name,Field name,Old valueyNew value. - Filtrar: Establezca
Table nameen una de las tablas de sus elementos de desarrollo, por ejemplo,Story, yField nameen el campo de estado, por ejemplo,State. Añada un filtro de fecha al campoCreated onpara el periodo deseado.
- Nombre del informe:
- Cree un informe para la creación de elementos: Cree un informe nuevo para el evento de creación inicial.
- Nombre del informe:
ProcessMind - Item Creation Events - Tipo de origen:
Table - Tabla:
Story [rm_story](o la tabla principal de sus elementos de desarrollo) - Tipo:
List - Configure las columnas: Añada columnas para los atributos necesarios, como
Número,Created on,Assigned to,Priority,State, etc. - Filtrar: Aplique un filtro de fecha al campo
Created on.
- Nombre del informe:
- Cree un informe para las confirmaciones de código: Cree un informe para los eventos explícitos de DevOps relacionados con las confirmaciones.
- Nombre del informe:
ProcessMind - Commit Events - Tipo de origen:
Table - Tabla:
Commit [sn_devops_commit] - Tipo:
List - Configure las columnas: Añada columnas como
Work item,Commit time,Author, etc. - Filtrar: Aplique un filtro de fecha al campo
Commit time.
- Nombre del informe:
- Cree informes para las compilaciones y las implementaciones: Repita el proceso del paso anterior para las tablas
Build [sn_devops_build]yDeployment [sn_devops_deployment]. Estas tablas contienen registros de las actividadesBuild Triggered,Deployment to Production Started,Deployed to ProductionyDeployment Failed. - Exporte todos los informes: Ejecute individualmente cada informe creado. En cada informe, haga clic en el icono del menú contextual, representado por tres puntos o una flecha hacia abajo, y seleccione
Export > CSVoExport > Excel. Guarde todos los archivos. - Combine y transforme los datos: Abra los archivos exportados en un programa de hojas de cálculo o utilice una herramienta de preparación de datos. Combine manualmente los datos de todos los archivos en una sola hoja. Cree las columnas necesarias del registro de eventos (
DevelopmentItem,ActivityName,EventTime, etc.) y asigne los datos de las columnas de origen. Por ejemplo, asigneDocument keydel informe de auditoría yNúmerodel informe de historias a la columnaDevelopmentItem. - Asigne los nombres de las actividades: Cree la columna
ActivityNametraduciendo los datos de origen. Para el informe de cambios de estado, utilice el modelo de estados documentado para asignar las entradas deNew valuea nombres de actividades, por ejemplo, asigne el estado «Testing» a «QA Testing Started». Para los demás informes, asigne un nombre de actividad fijo a cada fila, por ejemplo, todas las filas de la exportación de confirmaciones se convierten en «Code Committed». - Finalice y guarde: Añada las columnas
SourceSystemyLastDataUpdatecon valores estáticos para todas las filas. Asegúrese de que todas las marcas de tiempo tengan un formato coherente. Guarde el archivo combinado final como un único CSV, listo para cargarlo en ProcessMind.
Configuración
- Tablas necesarias: Las tablas principales necesarias para esta extracción son
Audit [sys_audit]para los eventos inferidos, las tablas específicas de sus elementos de desarrollo, por ejemplo,Story [rm_story]yDefect [rm_defect], y las tablas principales de ServiceNow DevOps:Commit [sn_devops_commit],Build [sn_devops_build]yDeployment [sn_devops_deployment]. - Filtros clave: El filtro más importante es el intervalo de fechas, que debe aplicarse de forma coherente en todos los informes sobre un campo de marca de tiempo como
Created on,Commit timeuHora de inicio. En el informe desys_audit, es fundamental filtrar porTable name, por ejemplo,rm_story, yField name, por ejemplo,state, para limitar los datos únicamente a los cambios de estado pertinentes. - Recomendación sobre el intervalo de fechas: Se recomienda extraer datos de un periodo de 3 a 6 meses para obtener un conjunto representativo sin causar problemas de rendimiento. En sistemas más grandes, considere extraer los datos en lotes mensuales.
- Definición del modelo de estados: Debe comprender claramente el modelo de estados de los elementos de trabajo de su organización. Esto es necesario para asignar correctamente los valores de estado capturados en la tabla
sys_audita las actividades empresariales correspondientes, como «QA Testing Started» o «UAT Approved». - Requisitos previos: Las personas que realicen la extracción necesitan el rol
report_usero permisos equivalentes para crear y ejecutar informes. También necesitan acceso de lectura a las tablas de DevOps y de desarrollo de aplicaciones mencionadas anteriormente. El complemento ServiceNow DevOps debe estar instalado e integrado activamente con sus herramientas de SCM y CI/CD.
a Consulta de ejemplo 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.
--- Pasos
- Requisitos previos: Asegúrese de tener acceso de red a su instancia de ServiceNow y de contar con una cuenta de servicio específica con permisos de lectura. Los roles
itilysn_devops.viewerson un buen punto de partida. Este usuario necesitará acceso a tablas comorm_story,sys_audity el esquemasn_devops_*. - Instale el controlador ODBC de ServiceNow: Descargue el controlador ODBC de ServiceNow adecuado para su sistema operativo desde el portal de soporte de ServiceNow. Siga las instrucciones de instalación proporcionadas.
- Configure el DSN: Configure un DSN del sistema nuevo en el equipo donde ejecutará la consulta. En el administrador de orígenes de datos ODBC, añada el controlador de ServiceNow y configúrelo con la URL de su instancia, por ejemplo,
yourinstance.service-now.com, el nombre de usuario y la contraseña. - Conéctese con un cliente SQL: Utilice una herramienta cliente SQL como DBeaver, Microsoft SQL Server Management Studio mediante un servidor vinculado o un lenguaje de scripting como Python con una biblioteca ODBC para conectarse a ServiceNow mediante el DSN configurado.
- Identifique el modelo de estados: Antes de ejecutar la consulta, debe identificar los valores exactos que utiliza su organización en el campo
statede las tablas de sus elementos de desarrollo, por ejemplo,rm_storyyrm_defect. La consulta proporcionada utiliza ejemplos habituales como «In Progress» o «In QA», que deberá sustituir por sus valores específicos. - Personalice la consulta SQL: Copie la consulta SQL proporcionada en su cliente. Modifique los marcadores de posición situados al principio de la consulta, incluida la fecha de inicio de la extracción y los valores de estado específicos que corresponden a las actividades de su ciclo de vida del desarrollo.
- Ejecute la consulta: Ejecute la consulta SQL completa en la base de datos de ServiceNow mediante la conexión ODBC. El proceso puede tardar bastante, según el intervalo de fechas y el volumen de datos.
- Revise los datos: Cuando finalice la consulta, revise brevemente el conjunto de datos devuelto. Compruebe que haya distintas actividades y que las columnas clave, como
DevelopmentItem,ActivityNameyEventTime, estén completas como se espera. - Exporte a CSV: Exporte todo el conjunto de resultados a un archivo CSV. Asegúrese de que el archivo utilice codificación UTF-8 y que los encabezados de columna coincidan con los nombres de atributos requeridos por ProcessMind, por ejemplo,
DevelopmentItem,ActivityNameyEventTime. - Prepare la carga: Asegúrese de que el archivo CSV final no contenga filas vacías al final y de que el formato de fecha de
EventTimeyLastDataUpdatesea coherente y compatible con ProcessMind, por ejemplo,YYYY-MM-DD HH:MM:SS.
Configuración
- Requisitos previos: Acceso a una instancia de ServiceNow con el módulo DevOps habilitado. Se necesita una cuenta de usuario específica con permisos de lectura para las tablas necesarias. El controlador ODBC de ServiceNow debe estar instalado y configurado en el equipo cliente.
- Configuración del controlador ODBC: La conexión requiere la URL de la instancia, un nombre de usuario y una contraseña o un token OAuth. Es fundamental probar la conexión DSN antes de intentar ejecutar consultas complejas.
- Filtrado por intervalo de fechas: La consulta proporcionada incluye el marcador de posición
s.sys_created_on >= '2023-01-01'para limitar la cantidad de datos extraídos. Se recomienda encarecidamente extraer datos de un periodo definido, como los últimos 6 a 12 meses, para mantener tiempos de ejecución manejables. - Personalización del modelo de estados: La precisión de la consulta para inferir eventos depende por completo del modelo de estados. Debe sustituir los valores de estado de ejemplo, como
[Your 'In Progress' State Value]y[Your 'In QA' State Value], por los valores exactos utilizados en su configuración de ServiceNow. Estos valores distinguen entre mayúsculas y minúsculas. - Tablas de elementos de trabajo: La consulta está escrita para la tabla Story (
rm_story). Si su organización también utiliza Defects (rm_defect), Enhancements (rm_enhancement) u otros tipos de tareas, debe añadirlos a la expresión común de tablaDevItemsinicial medianteUNION ALL. - Rendimiento: Las consultas directas a una instancia de producción de ServiceNow pueden afectar al rendimiento. Se recomienda ejecutar las extracciones grandes fuera de las horas punta. Para conjuntos de datos muy grandes, considere una estrategia de extracción incremental basada en el campo
sys_updated_on.
a Consulta de ejemplo 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 *** ¿Listo para comenzar?
Comience hoy mismo a transformar su ciclo de vida del desarrollo de software. Utilice esta plantilla de datos para descubrir ineficiencias ocultas e impulsar la mejora continua.
No espere más: optimice hoy su ciclo de vida del desarrollo de software
Localice las ineficiencias para reducir en un 30 % o más el tiempo de ciclo de su SDLC.
No necesita tarjeta de crédito. Comience a optimizar hoy mismo.