Yazılım Geliştirme Yaşam Döngüsü Veri Template'iniz
Yazılım Geliştirme Yaşam Döngüsü Veri Template'iniz
- Toplanması Önerilen Nitelikler
- Takip Edilmesi Gereken Temel Aktiviteler
- ServiceNow DevOps için veri çıkarma rehberliği
Yazılım Geliştirme Yaşam Döngüsü Öznitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Başlangıç Zamanı EventTime | Belirli bir faaliyetin veya olayın ne zaman meydana geldiğini gösteren tam zaman damgası. | ||
| Açıklama Bu öznitelik, geliştirme yaşam döngüsündeki her etkinliğin ne zaman kaydedildiğine dair tarih ve saat bilgisini sağlar. Process Mining'de başlangıç zamanı, etkinlikler arasındaki süreleri hesaplamak, bekleme sürelerini belirlemek ve sürecin genel döngü süresini ölçmek için kullanılır. SDLC Uçtan Uca Döngü Süresi Analizi gibi performansı analiz eden Neden önemli Bu zaman damgası, Nereden alınır Tipik olarak denetim izi veya görev tablolarından 'sys_updated_on' veya 'sys_created_on' gibi sistem tarafından oluşturulan zaman damgası alanlarında bulunur. Örnekler 2023-10-26T10:00:00Z2023-10-27T14:35:10Z2023-11-01T09:15:00Z | |||
| Faaliyet Adı ActivityName | Meydana gelen belirli geliştirme yaşam döngüsü `event`'inin adı; örneğin 'Geliştirme Başlatıldı' veya 'Kod İncelemesi Yapıldı'. | ||
| Açıklama Bu öznitelik, yazılım geliştirme yaşam döngüsü içinde tamamlanan her dönüm noktası veya görevin adını kaydeder. Bu etkinlikler, oluşturmadan dağıtıma kadar sürecin sıralı adımlarını oluşturur. Bu etkinliklerin sırasını ve sıklığını analiz etmek, Process Mining'in birincil işlevidir. Süreç haritasının oluşturulmasını sağlar, adımlar arasındaki Neden önemli Süreç haritasındaki adımları tanımlar; süreç akışının analizini, Nereden alınır Bu, tipik olarak durum değişiklikleri, Örnekler Geliştirme BaşladıKod Commit EdildiQA Testleri TamamlandıÜretime Dağıtıldı | |||
| Geliştirme Kalemi DevelopmentItem | Geliştirme yaşam döngüsü boyunca ilerleyen bir özellik, hata veya görev gibi tek bir iş birimi için benzersiz tanımlayıcı. | ||
| Açıklama Geliştirme Öğesi, izlenen ayrı bir iş birimini temsil eden birincil Process Mining analizinde, bu öznitelik her bir iş öğesinin uçtan uca yolculuğunu yeniden yapılandırmak için temeldir. Süreç akışlarının görselleştirilmesine, toplam döngü sürelerinin hesaplanmasına ve bireysel özellikler veya hata düzeltmeleri için süreç varyantlarının belirlenmesine olanak tanır. Tutarlı bir süreç haritası oluşturmak için Neden önemli Bu, ilgili tüm geliştirme etkinliklerini tek bir süreç örneğine bağlayan temel tanımlayıcıdır ve her iş öğesinin tam yaşam döngüsünü analiz etmeyi mümkün kılar. Nereden alınır Bu tanımlayıcı, genellikle ServiceNow'daki 'rm_story', 'rm_bug' veya 'task' tabloları gibi Örnekler STRY0010015BUG0034092TASK0050118 | |||
| Kaynak Sistem SourceSystem | Verinin hangi sistemden çıkarıldığını, bu durumda ServiceNow DevOps olduğunu belirler. | ||
| Açıklama Bu öznitelik, Statik görünse de, kaynak sistemini açıkça dahil etmek, veri yönetimi için ve verilerin Jira veya Azure DevOps gibi birden fazla sistemden birleştirilebileceği ortamlarda çok önemlidir. Neden önemli veri izlenebilirliğini sağlar ve özellikle birden fazla geliştirme aracından veri entegre ederken veri bütünlüğünü korumak için hayati öneme sahiptir. Nereden alınır Bu, veri çekimi ve dönüştürme süreci sırasında eklenmesi gereken statik bir değerdir. Örnekler ServiceNow DevOps | |||
| Son Veri Güncellemesi LastDataUpdate | Bu `Event Log`'u için `data`'nın kaynak sistemden en son yenilendiği zamanı gösteren zaman damgası. | ||
| Açıklama Bu öznitelik, veri kümesinin ServiceNow DevOps'tan en son ne zaman ayıklandığını veya güncellendiğini kaydeder. Bireysel Bu zaman damgası, analizin güncelliğini anlamak için hayati öneme sahiptir. Kullanıcılara süreç içgörülerinin ne kadar güncel olduğunu bildirir ve veri yenilemelerini planlamaya yardımcı olur. Bu bilgiyi Neden önemli Verilerin güncelliği hakkında kritik bağlam sunarak, kullanıcıların süreç analizinin ne kadar güncel olduğunu anlamalarını sağlar. Nereden alınır Bu zaman damgası, Örnekler 2023-11-15T08:00:00Z | |||
| Atama Grubu AssignmentGroup | Etkinlik sırasında geliştirme öğesinden sorumlu ekip veya grup. | ||
| Açıklama Bu öznitelik, bir iş öğesine atanmış ekibi tanımlar; örneğin 'Frontend Geliştiriciler', 'Backend Hizmetleri' veya 'QA Ekibi'. Bir iş öğesi ilerledikçe, genellikle farklı atama grupları arasında aktarılır. Atama grubunu izlemek, çapraz fonksiyonel işbirliğini ve aktarımları anlamak için çok önemlidir. İş bir ekipten diğerine geçtiğinde ortaya çıkan sistemik gecikmeleri belirlemeye yardımcı olur. Bu öznitelik, ekip düzeyinde performans, iş yükü analizi ve genel akıştaki Neden önemli İşten hangi ekibin sorumlu olduğunu izler; ekip performansının, iş yükü dengelemesinin ve ekipler arasındaki aktarımların verimliliğinin analizini sağlar. Nereden alınır Bu bilgi, ServiceNow'daki görevle ilgili tablolarda standart bir alan olan 'assignment_group' alanında saklanır. Örnekler Platform MühendisliğiMobil Uygulama EkibiKalite GüvencesiDevOps | |||
| Atanmış Geliştirici AssignedDeveloper | Etkinlik sırasında geliştirme öğesine atanmış geliştiricinin veya kullanıcının adı veya kimliği. | ||
| Açıklama Bu öznitelik, belirli bir görevi veya etkinliği yürütmekten sorumlu kişiyi tanımlar. Dinamiktir ve geliştirme öğesi farklı aşamalar ve ekipler arasında hareket ettikçe değişebilir. Bu öznitelik, kaynak tahsisi, iş yükü ve aktarımların analizi için kritik öneme sahiptir. 'Geliştirici İş Yükü ve Aktarımlar' Neden önemli Bu, iş yükü dağıtımı, aktarım verimliliği ve ekibe özel performans kalıplarını belirleme dahil olmak üzere kaynak tabanlı analiz için esastır. Nereden alınır Bu bilgi, genellikle ServiceNow'daki görevle ilgili tablolarda 'assigned_to' alanında saklanır. Örnekler David MillerAnna WilliamsJames Brown | |||
| Etkilenen Modül/Bileşen ModuleComponentAffected | Geliştirme öğesinin ilgili olduğu belirli yazılım modülü, uygulama veya bileşen. | ||
| Açıklama Bu öznitelik, geliştirme işini sistemin etkilediği kısmına göre kategorize eder. Bu, belirli bir Süreci modüle veya bileşene göre segmentlere ayırmak, yerelleşmiş Neden önemli Analizin uygulama veya bileşen bazında segmentlere ayrılmasını sağlayarak, sistemin belirli bölümlerine özgü darboğazları veya kalite sorunlarını izole etmeye yardımcı olur. Nereden alınır Bu, genellikle özel bir alan veya Yapılandırma Yönetimi Veritabanına (CMDB) bir referanstır ve iş öğesini bir 'cmdb_ci' kaydına bağlar. ServiceNow DevOps belgelerine danışın. Örnekler Faturalama HizmetiKullanıcı Kimlik Doğrulama UIRaporlama VeritabanıAPI Gateway | |||
| Geliştirme Kalemi Döngü Süresi DevelopmentItemCycleTime | Geliştirme öğesinin oluşturulmasından nihai kapanışına veya dağıtımına kadar geçen toplam süre. | ||
| Açıklama Bu öznitelik, tek bir geliştirme öğesi için uçtan uca süreyi temsil eden hesaplanmış bir metriktir. Her Bu, tüm SDLC süreci için birincil bir temel performans göstergesidir ve 'Ortalama SDLC Döngü Süresi' KPI'ını doğrudan destekler. Süreç hızının ve verimliliğinin üst düzey bir ölçümünü sağlar. Bu metriği zaman içinde ve öncelik veya ekip gibi farklı boyutlarda analiz etmek, süreç iyileştirme girişimlerinin etkisini izlemeye yardımcı olur. Neden önemli Bir iş öğesi için toplam uçtan uca süreyi temsil eder; bu, genel süreç verimliliğini ve hızını ölçmek için önemli bir metriktir. Nereden alınır Bu, kaynak sisteminde bir alan değildir. Process Mining aracında, her Örnekler 15 gün 4 saat3 gün 12 saat32 gün 8 saat | |||
| Geliştirme Kalemi Durumu DevelopmentItemState | `Event` anındaki geliştirme öğesinin durumu veya `state`'i; örneğin 'Açık', 'Devam Ediyor' veya 'Kapalı'. | ||
| Açıklama Bu öznitelik, ServiceNow içindeki geliştirme öğesinin resmi durumunu yansıtır. Etkinlikler türetilmiş süreç adımları olsa da,
Neden önemli Bir iş öğesinin resmi sistem durumunu sağlar; bu durum, genellikle etkinlikleri türetmek için bir kaynak olup doğrulama ve üst düzey durum analizi için kullanılabilir. Nereden alınır Bu, genellikle ServiceNow'daki görevle ilgili tablolarda 'state' veya 'stage' olarak adlandırılan standart bir alandır. Örnekler BeklemedeİşlemdeTeste HazırTamamen Kapatıldı | |||
| Geliştirme Kalemi Türü DevelopmentItemType | İş öğesinin sınıflandırılması; örneğin 'Özellik', 'Hata', 'Teknik Borç' veya 'Görev'. | ||
| Açıklama Bu öznitelik, SDLC süreci boyunca akan farklı iş türleri arasında ayrım yapar. Örneğin, kritik bir hatayı düzeltme süreci, yeni bir özellik geliştirme sürecinden farklı ve daha hızlı olabilir. Süreci iş öğesi türüne göre analiz etmek, performansın daha ayrıntılı bir şekilde anlaşılmasını sağlar. 'Hataların yeni özelliklerden daha yüksek bir yeniden işleme oranı var mı?' veya 'Teknik borç azaltma döngü süremiz kabul edilebilir mi?' gibi soruları yanıtlamaya yardımcı olur. Bu segmentasyon, tek tip bir süreç görünümünden daha derin içgörüler sağlar. Neden önemli Farklı süreç yolları, öncelikler ve beklenen süreleri olabilecek özellikler ve hatalar gibi farklı iş türleri arasında ayrım yapar. Nereden alınır Bu, kaydın kaynak tablosundan (örn. 'rm_story' veya 'rm_bug') veya genel bir görev tablosundaki 'type' alanından belirlenebilir. Örnekler ÖzellikHataGörevSpike | |||
| Öncelik DevelopmentItemPriority | Geliştirme öğesine atanan öncelik düzeyi; örneğin 'Yüksek', 'Orta' veya 'Düşük'. | ||
| Açıklama Bu öznitelik, geliştirme öğelerini iş aciliyetlerine göre kategorize eder. Öncelik düzeyleri, ekiplerin en kritik görevlere odaklanmasına yardımcı olur ve genellikle SLA'ları ve paydaş beklentilerini yönetmek için kullanılır. Process Mining'de öncelik, karşılaştırmalı analiz için önemli bir boyuttur. Süreç haritasını filtreleyerek yüksek öncelikli öğelerin daha hızlı veya farklı bir yol izleyip izlemediğini görmeye olanak tanır. 'Yüksek Öncelikli Özellik Teslim Süresi' Neden önemli Farklı öncelik seviyeleri için süreçleri filtrelemeye ve karşılaştırmaya olanak tanıyarak, yüksek öncelikli kalemlerin daha hızlı ve verimli işlenip işlenmediğini doğrulamaya yardımcı olur. Nereden alınır Bu, genellikle ServiceNow'daki görevle ilgili tablolarda 'priority' olarak adlandırılan standart bir alandır. Örnekler 1 - Kritik2 - Yüksek3 - Orta4 - Düşük | |||
| Yeniden İşleme mi? IsRework | Etkinliğin, test sonrası geliştirme aşamasına geri dönme gibi bir yeniden işleme döngüsünün parçası olması durumunda 'doğru' olan bir boolean işaretidir. | ||
| Açıklama Bu, bir süreç önceki bir aşamaya geri döndükten sonra meydana gelen etkinlikleri tanımlayan türetilmiş bir özniteliktir. Örneğin, aynı öğe için 'QA Testleri Tamamlandı' etkinliğinden sonra bir 'Geliştirme Başlatıldı' etkinliği meydana gelirse, yeniden işleme (rework) olarak işaretlenir. Bu bayrak, yeniden işlemeyi nicel olarak ölçmek ve görselleştirmek için esastır. 'Yeniden İşleme ve Reddetme Akış Analizi' Neden önemli Bu bayrak, yeniden işlemeyi (rework) nicel olarak ölçmeyi ve analiz etmeyi kolaylaştırır, süreç kalitesini ölçmeye ve tekrarlanan işin temel nedenlerini belirlemeye yardımcı olur. Nereden alınır Bu öznitelik, süreç akışındaki geriye doğru hareketleri tespit etmek için her Örnekler truefalse | |||
| Bitiş Saati EventEndTime | Bir etkinliğin ne zaman tamamlandığını gösteren kesin zaman damgasıdır. Anlık `event`'ler için bu, Başlangıç Zamanı ile aynıdır. | ||
| Açıklama Bu öznitelik, geliştirme yaşam döngüsündeki her etkinliğin ne zaman tamamlandığına dair tarih ve saat bilgisini sağlar. Özellikle 'Kod İncelemesi Yapıldı' veya 'QA Testi' gibi ölçülebilir bir süresi olan etkinlikler için kullanışlıdır. Process Mining'de hem başlangıç hem de bitiş zamanına sahip olmak, etkinlik işlem sürelerinin hassas bir şekilde hesaplanmasına olanak tanır ve bunları etkinlikler arasındaki bekleme süresinden ayırır. Bu, gecikmelerin uzun görevlerden mi yoksa kaynaklar için uzun beklemelerden mi kaynaklandığını belirlemeye yardımcı olur. 'Yapı Tetiklendi' gibi anlık kabul edilen Neden önemli Etkinlik işlem süresinin kesin olarak hesaplanmasını sağlayarak, çalışma süresi ile bekleme süresi arasındaki ayrımı yapmaya yardımcı olur. Nereden alınır Bu durumun türetilmesi gerekebilir. Bir sonraki etkinliğin başlangıç zamanının zaman damgası olabilir veya kaynak sistemde mevcutsa ayrı bir 'bitiş tarihi' alanından alınabilir. Örnekler 2023-10-26T18:05:00Z2023-10-28T11:20:15Z2023-11-02T10:00:00Z | |||
| Commit ID CommitId | Geliştirme işiyle ilişkili kaynak kodu `commit`'inin benzersiz tanımlayıcısı. | ||
| Açıklama Bu öznitelik, bir geliştirme öğesinden Git gibi kaynak kodu deposundaki belirli kod değişikliğine doğrudan bir bağlantı sağlar. 'Kod Process Mining'de Neden önemli Süreç olayını belirli bir kod değişikliğine bağlar, bu sayede süreç metriklerini kod seviyesi detaylarla ilişkilendirerek daha derinlemesine kök neden analizi yapılmasını sağlar. Nereden alınır Bu, ServiceNow DevOps entegrasyonları tarafından Git veya SVN gibi kaynak kod yönetimi sistemleriyle yakalanır. Örnekler a1b2c3d4e5f6f0e9d8c7b6a59a8b7c6d5e4f | |||
| Dağıtım Durumu DeploymentStatus | Bir dağıtım etkinliğinin sonucunu belirtir, genellikle 'Başarılı' veya 'Başarısız'. | ||
| Açıklama Bu öznitelik, belirli bir ortama yapılan bir dağıtımın sonucunu kaydeder. Bu öznitelik, 'Dağıtım Başarısı ve Hata Trendleri' Neden önemli Dağıtım faaliyetlerinin başarısını doğrudan ölçer; bu, dağıtım hata oranını hesaplamak ve sürüm istikrarını analiz etmek için kritik öneme sahiptir. Nereden alınır Bu durum, genellikle ServiceNow DevOps ile entegre dağıtım izleme görevlerinde veya CI/CD Örnekler BaşarıBaşarısızlıkUyarılarla Tamamlandı | |||
| Planlanan Yayın Sürümü PlannedReleaseVersion | Geliştirme öğesinin teslim edilmesinin planlandığı hedef yazılım sürümü veya versiyonu. | ||
| Açıklama Bu öznitelik, bir geliştirme öğesini 'Sürüm 2.3' veya '2023 Q4 Sürümü' gibi belirli, planlanmış bir Process Mining için bu öznitelik, ' Neden önemli Geliştirme çalışmalarını belirli sürümlerle ilişkilendirerek, takvime uyumu ve süreç gecikmelerinin sürüm zaman çizelgeleri üzerindeki etkisini analiz etmeyi sağlar. Nereden alınır Bu bilgi, genellikle ServiceNow'daki bir Örnekler v3.4.12024 Q1 SürümüProject Phoenix Canlıya Geçiş | |||
| Yeniden İşleme Nedeni ReworkReason | Bir geliştirme kaleminin test sonrası neden yeniden işleme tabi tutulduğuna dair bir sınıflandırma veya açıklama. | ||
| Açıklama Bir öğe QA veya UAT'yi geçemediğinde, bu öznitelik hatanın nedenini yakalar. Bu, belirli bir Bu bilgi, 'Yeniden İşleme ve Reddetme Akış Analizi' Neden önemli Yeniden işleme nedenlerine dair niteliksel içgörüler sunarak, kaliteyi artırmak ve yeniden işleme döngülerini azaltmak için hedefe yönelik süreç iyileştirmeleri yapılmasını sağlar. Nereden alınır Bu, bir test başarısız olduğunda 'close_notes' alanında veya özel bir 'rework_reason' özel alanında yakalanabilir. ServiceNow DevOps belgelerine danışın. Örnekler Gereksinim Yanlış YorumlandıRegresyon HatasıBaşarısız Performans TestiUI/UX Sorunu | |||
Yazılım Geliştirme Yaşam Döngüsü Etkinlikleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Dağıtım Başarısız Oldu | Geliştirme kalemini üretime dağıtma girişiminin başarısız olduğunu belirtir. Bu durum, CI/CD pipeline bir hata bildirdiğinde ServiceNow DevOps tarafından açıkça yakalanır. | ||
| Neden önemli Bu, kritik bir hata bitiş noktasıdır. Sıklığını ve nedenlerini analiz etmek, Nereden alınır Bir Pipeline Execution [sn_devops_pipeline_execution] kaydının 'completion_status' bilgisinden alınır. Bitiş zamanındaki 'Failed' durumu bu olayı işaretler. Yakala Üretim dağıtım Pipeline'ı bir hata durumu bildirdiğinde kaydedilir. Event tipi explicit | |||
| Geliştirme Başladı | Bu etkinlik, bir geliştiricinin geliştirme öğesini aktif olarak kodlamaya veya uygulamaya başladığı noktayı işaret eder. Genellikle öğenin durumunun 'Devam Ediyor', 'Geliştirme' veya 'Kodlama' olarak değişmesinden çıkarılır. | ||
| Neden önemli Bu, katma değerli yapım aşamasının başlangıcını işaret eden çok önemli bir dönüm noktasıdır. Geliştirici teslim süresini ve kod inceleme döngü sürelerini ölçmek için esastır. Nereden alınır Geliştirme öğesi kaydındaki (örn. Story [rm_story]) 'State' alanının 'Devam Ediyor' veya eşdeğer bir duruma güncellendiği zaman damgasından çıkarılmıştır. Yakala 'Devam Ediyor' veya benzeri bir değere durum değişikliğinin zaman damgasına göre. Event tipi inferred | |||
| Geliştirme Kalemi Oluşturuldu | Bu etkinlik, ServiceNow içinde bir story, bug veya epic gibi yeni bir geliştirme öğesinin oluşturulmasını işaret eder. Bu `event`, genellikle Story [rm_story] tablosu gibi ilgili tabloya yeni bir kayıt eklendiğinde açıkça yakalanır. | ||
| Neden önemli Bu, SDLC süreci için birincil başlangıç Nereden alınır Geliştirme ile ilgili bir tabloda (örn. Story [rm_story], Epic [rm_epic] veya Defect [rm_defect]) bir kayıt oluşturulduğunda Yakala Geliştirme kalemi kaydının oluşturulma zaman damgasından alınır. Event tipi explicit | |||
| Kod İncelemesi Yapıldı | Bu etkinlik, genellikle bir Pull Request veya Merge Request ile ilişkili bir akran kod incelemesinin tamamlandığını gösterir. Bu `event`, DevOps entegrasyonları aracılığıyla açıkça yakalanabilir veya ilgili kayıtlardaki durum değişikliklerinden çıkarılabilir. | ||
| Neden önemli Bu kritik bir kalite geçididir. Süresini analiz etmek, SDLC'deki gecikmelerin yaygın bir kaynağı olan inceleme sürecindeki Nereden alınır ServiceNow'un Git entegrasyonundaki bir Pull Request kaydının 'Birleştirildi' veya 'Tamamlandı' olayından yakalanabilir ya da geliştirme kaleminin durum değişikliğinden 'Kod İncelemesi Tamamlandı' olarak çıkarılabilir. Yakala İş öğesine bağlı bir Pull Request birleştirildiğinde kaydedilir. Event tipi explicit | |||
| QA Testleri Tamamlandı | Kalite Güvence ekibinin geliştirme öğesi için test faaliyetlerini başarıyla tamamladığını gösterir. Bu durum genellikle, öğenin test aşamasından 'UAT'ye Hazır' veya 'Tamamlandı' gibi bir duruma geçmesinden çıkarılır. | ||
| Neden önemli Bu dönüm noktası, önemli bir kalite geçidinin tamamlanmasını işaret eder. Kullanıcı Kabul Testi veya Nereden alınır Bir test durumundan (örn. 'QA'da') test sonrası bir duruma (örn. 'UAT'ye Hazır' veya 'Çözüldü') durum değişikliğinin zaman damgasından çıkarılmıştır. Yakala 'Test Ediliyor' durumundan sonraki bir duruma geçişin zaman damgasına göre. Event tipi inferred | |||
| UAT Onaylandı | İş paydaşlarının Kullanıcı Kabul Testi sonrasında geliştirme kalemini resmi olarak onayladığını belirtir. Bu, 'UAT'de' durumundan 'Sürüm İçin Hazır' veya 'Onaylandı' gibi bir durum değişikliğinden çıkarılan önemli bir kilometre taşıdır. | ||
| Neden önemli Bu, bir öğe üretim dağıtımı için onaylanmadan önceki son iş onayıdır. Kritik bir kalite ve yönetişim kontrol noktasıdır. Nereden alınır Geliştirme kalemi kaydındaki, UAT'nin başarılı bir şekilde tamamlandığını gösteren bir durum geçişinden çıkarılmıştır. Bu, kalemin etkinlik geçmişine kaydedilir. Yakala 'UAT' durumundan onaylanmış veya sürüme hazır bir duruma geçişten çıkarılmıştır. Event tipi inferred | |||
| Üretime Dağıtıldı | Bu `event`, üretim ortamına dağıtımın başarılı bir şekilde tamamlandığını işaret eder. CI/CD aracı başarılı bir `pipeline` tamamlaması bildirdiğinde ServiceNow DevOps tarafından açıkça yakalanır. | ||
| Neden önemli Bu, SDLC sürecinin birincil başarı bitiş noktasıdır. Değer akışını tamamlar ve toplam döngü süresini hesaplamak için esastır. Nereden alınır Bir Pipeline Execution [sn_devops_pipeline_execution] kaydının veya ilişkili Aşama Yürütme Çalışmasının 'completion_status' bilgisinden alınır. Bitiş zamanındaki 'Success' durumu bu olayı işaretler. Yakala Üretim dağıtım Pipeline'ı başarıyla tamamlandığında kaydedilir. Event tipi explicit | |||
| Derleme Tetiklendi | Bu `event`, genellikle bir kod `commit`'i tarafından tetiklenen bir CI/CD `pipeline` yapısının başlangıcını gösterir. ServiceNow DevOps bunu bir `pipeline` yürütmesi olarak kaydeder ve orijinal geliştirme öğelerine geri bağlar. | ||
| Neden önemli Bu etkinlik, geliştirme ile otomatik test veya dağıtım arasındaki köprüdür. Nereden alınır Entegre CI/CD aracında (örn. Jenkins, Azure DevOps) bir yapı başlatıldığında Pipeline Execution [sn_devops_pipeline_execution] tablosuna açıkça kaydedilir. Yakala Pipeline Execution tablosundaki bir kaydın başlangıç zamanından alınır. Event tipi explicit | |||
| Geliştirme Kalemi İptal Edildi | Bir geliştirme öğesinin tamamlanmadan sonlandırılmasını temsil eder. Bu, genellikle öğenin durumunun 'İptal Edildi' veya 'Eksik Kapatıldı' olarak ayarlanmasından çıkarılan alternatif bir son durumdur. | ||
| Neden önemli İptalleri izlemek, boşa harcanan çabayı belirlemeye ve kapsam değişiklikleri veya yeniden önceliklendirme nedenlerini anlamaya yardımcı olur. Tüm olası süreç sonuçlarının daha eksiksiz bir resmini sağlar. Nereden alınır Geliştirme öğesi kaydındaki 'State' alanının 'İptal Edildi' gibi nihai, tamamlanmamış bir duruma güncellendiği zaman damgasından çıkarılmıştır. Yakala 'İptal Edildi' veya eşdeğeri bir son duruma geçişten çıkarılmıştır. Event tipi inferred | |||
| Kod Commit Edildi | Bir geliştiricinin geliştirme öğesiyle ilişkili bir sürüm kontrol sistemi deposuna kod kaydetmesini temsil eder. ServiceNow DevOps, bu olayları Git veya GitHub gibi entegre SCM araçlarından açıkça yakalar. | ||
| Neden önemli
Nereden alınır Entegre kaynak kod yönetim sisteminden gelen webhooks tarafından doldurulan ServiceNow DevOps Commits [sn_devops_commit] tablosunda açık bir olay olarak yakalanır. Yakala SCM aracından bir commit webhook alındığında kaydedilir. Event tipi explicit | |||
| QA Testleri Başlatıldı | Resmi Kalite Güvence test aşamasının başlangıcını işaret eder. Bu, neredeyse her zaman geliştirme öğesinin durumunun 'QA'da', 'Test Ediliyor' veya 'Test İçin Hazır' gibi bir değere değişmesinden çıkarılır. | ||
| Neden önemli Bu etkinlik, geliştirmeden QA ekibine aktarımı işaret eder. Test aşamasının süresini ölçmeye ve test kapasitesi Nereden alınır Geliştirme öğesi kaydındaki (örn. Story, Defect) 'State' alanının QA'ya özel bir duruma güncellendiği zaman damgasından çıkarılmıştır. Yakala 'Test Ediliyor' veya eşdeğeri bir duruma geçişin zaman damgasına göre. Event tipi inferred | |||
| Tasarım Başladı | Geliştirme öğesi için teknik tasarım veya çözüm mimarisinin oluşturulduğu aşamayı temsil eder. Bu durum genellikle, geliştirme öğesi kaydındaki bir durum veya `state` alanının 'Tasarım' veya 'Çözümleme' gibi bir değere değişmesinden çıkarılır. | ||
| Neden önemli Tasarım aşamasının süresini analiz etmek, geliştirme çalışmaları başlamadan önce gereksinim çevirisi ve çözüm planlamasındaki darboğazları belirlemeye yardımcı olur. Nereden alınır Geliştirme öğesi kaydındaki (örn. Story [rm_story]) durum geçişlerinden çıkarılmıştır. 'State' veya özel bir 'Stage' alanının tasarımla ilgili bir değere değiştiği durumları arayın. Yakala 'Tasarım' veya benzeri bir duruma geçişten çıkarılmıştır. Event tipi inferred | |||
| UAT Başlatıldı | İş paydaşlarının işlevselliği doğruladığı Kullanıcı Kabul Testinin başlangıcını temsil eder. Bu olay, 'UAT', 'UAT'de' veya 'Kullanıcı Kabul Testi' durum değişikliğinden çıkarılarak yakalanır. | ||
| Neden önemli Bu aşama, geliştirilen özelliğin iş gereksinimlerini karşıladığından emin olmak için kritiktir. Süresini analiz etmek, kullanıcı etkileşimi veya gereksinim uyumsuzlukları ile ilgili sorunları ortaya çıkarabilir. Nereden alınır Geliştirme kalemi kaydındaki bir durum geçişinden çıkarılmıştır. Bu, müşterinin durum modelinin UAT için ayrı bir durum içermesine dayanır. Yakala 'UAT' durumuna geçişten çıkarılmıştır. Event tipi inferred | |||
| Üretime Dağıtım Başladı | Bu etkinlik, üretim ortamına dağıtım `pipeline`'ının başlatılmasını işaret eder. ServiceNow DevOps, bir CI/CD `pipeline`'ının üretim aşaması yürütülmeye başladığında bunu açık bir `event` olarak yakalar. | ||
| Neden önemli Bu, yaşam döngüsünün son ve genellikle en kritik aşamasının başlangıcını işaret eder. Bunu izlemek, dağıtım sürelerini analiz etmeye ve otomasyon fırsatlarını belirlemeye yardımcı olur. Nereden alınır Stage Execution Run [sn_devops_stage_execution] tablosuna açıkça kaydedilir ve üretim ortamıyla ilgili aşamalar için filtrelenir. Yakala Bir Pipeline Execution'daki üretim dağıtım aşamasının başlangıç zamanından alınır. Event tipi explicit | |||
| Yayınlanmaya Hazır | Bu etkinlik, geliştirme öğesinin tüm kalite geçitlerini geçtiğini ve belirli bir `release`'e paketlendiğini gösterir. Öğenin bir `Release` kaydıyla ilişkilendirilmesinden veya durumunun 'Dağıtıma Hazır' olarak değişmesinden çıkarılabilir. | ||
| Neden önemli Bu adım, bir öğenin teknik ve işlevsel olarak tamamlandığını gösterir. Bu Nereden alınır 'State' alanının 'Yayınlanmaya Hazır' olarak değişmesinden veya geliştirme öğesi kaydındaki 'Release' alanının ne zaman doldurulduğu ya da güncellendiğinin izlenmesinden çıkarılmıştır. Yakala Bir durum değişikliğinden veya bir Sürüm kaydıyla ilişkilendirmeden çıkarılmıştır. Event tipi inferred | |||
| Yeniden İşleme Tespit Edildi | Test sırasında bir sorun bulunduğunu ve kalemin geliştirme aşamasına geri gönderilmesi gerektiğini belirtir. Bu olay, süreç akışında geriye doğru bir hareketin gözlemlenmesiyle, örneğin 'QA'da' durumundan 'Devam Ediyor' durumuna geri geçişle çıkarılır. | ||
| Neden önemli Yeniden işlemeyi (rework) izlemek, kalite sorunlarını ve süreç verimsizliklerini anlamak için esastır. Bu etkinliğin yüksek sıklığı, geliştirme veya gereksinim netliğindeki sorunlara işaret eder. Nereden alınır
Yakala Geriye doğru bir durum geçişinden çıkarılmıştır, örneğin 'Test Ediliyor' -> 'Devam Ediyor'. Event tipi inferred | |||
Veri Çekim Kılavuzları
Adımlar
- Durum Modelinizi Anlayın: Rapor oluşturmadan önce, geliştirme kaleminizin durum alanındaki (örneğin, Story
[rm_story]veya Defect[rm_defect]tablosunda) gerekli etkinliklere karşılık gelen belirli değerleri belgeleyin. Örneğin, 'Devam Ediyor' durum değeri 'Geliştirme Başladı' etkinliğiyle eşleşebilir. - Rapor Oluşturmaya Git: ServiceNow örneğinize giriş yapın. Filtre gezgininde
Reports > View / Runadresine gidin veCreate a reportdüğmesine tıklayın. - Durum Değişiklikleri İçin Rapor Oluşturun: Durum odaklı etkinlikleri yakalamak için ilk raporu oluşturun. Bunu aşağıdaki gibi yapılandırın:
- Rapor Adı:
ProcessMind - Durum Değişikliği Olayları - Kaynak Türü:
Table - Tablo:
Audit [sys_audit] - Tip:
List - Sütunları Yapılandır:
Document key,Created on,Table name,Field name,Old valueveNew valuesütunlarını ekleyin. - Filtre:
Table name'i geliştirme kalemi tablolarınızdan biri (örneğin,Story) veField name'i durum alanınız (örneğin,State) olarak ayarlayın. İstenen zaman aralığı içinCreated onalanına bir tarih filtresi ekleyin.
- Rapor Adı:
- Kalem Oluşturma İçin Rapor Oluşturun: İlk oluşturma olayı için yeni bir rapor oluşturun.
- Rapor Adı:
ProcessMind - Kalem Oluşturma Olayları - Kaynak Türü:
Table - Tablo:
Story [rm_story](veya birincil geliştirme kalemi tablonuz) - Tip:
List - Sütunları Yapılandır:
Number,Created on,Assigned to,Priority,Stategibi gerekli nitelikler için sütunlar ekleyin. - Filtre:
Created onalanına bir tarih filtresi uygulayın.
- Rapor Adı:
- Kod Commit'leri İçin Rapor Oluşturun: Commit'lerle ilgili açık DevOps olayları için bir rapor oluşturun.
- Rapor Adı:
ProcessMind - Commit Olayları - Kaynak Türü:
Table - Tablo:
Commit [sn_devops_commit] - Tip:
List - Sütunları Yapılandır:
Work item,Commit time,Authorgibi sütunlar ekleyin. - Filtre:
Commit timealanına bir tarih filtresi uygulayın.
- Rapor Adı:
- Derlemeler ve Dağıtımlar İçin Raporlar Oluşturun: Önceki adımdaki süreci
Build [sn_devops_build]veDeployment [sn_devops_deployment]tabloları için tekrarlayın. Bu tablolarBuild Triggered,Deployment to Production Started,Deployed to ProductionveDeployment Failedetkinlikleri için kayıtlar içerir. - Tüm Raporları Dışa Aktarın: Oluşturulan raporların her birini ayrı ayrı çalıştırın. Her rapor için, bağlam menüsü simgesine (üç nokta veya aşağı ok) tıklayın ve
Export > CSVveyaExport > Excelseçeneğini belirleyin. Tüm dosyaları kaydedin. - Verileri Birleştirin ve Dönüştürün: Dışa aktarılan dosyaları bir elektronik tablo programında açın veya bir veri hazırlama aracı kullanın. Tüm dosyalardaki verileri manuel olarak tek bir sayfada birleştirin. Gerekli olay günlüğü sütunlarını (
DevelopmentItem,ActivityName,EventTime, vb.) oluşturun ve verileri kaynak sütunlardan eşleştirin. Örneğin, denetim raporundanDocument key'i ve hikaye raporundanNumber'ıDevelopmentItemsütununa eşleştirin. - Etkinlik Adlarını Eşleştirin: Kaynak verileri çevirerek
ActivityNamesütununu oluşturun. Durum değişikliği raporu için, belgelenmiş durum modelinizi kullanarakNew valuegirişlerini etkinlik adlarıyla eşleştirin (örneğin, 'Testing' durumunu 'QA Testing Started' ile eşleştirin). Diğer raporlar için, her satır için sabit bir etkinlik adı atayın (örneğin, commit dışa aktarımından gelen tüm satırlar 'Code Committed' olur). - Sonlandırın ve Kaydedin: Tüm satırlar için statik değerlerle
SourceSystemveLastDataUpdatesütunlarını ekleyin. Tüm zaman damgalarının tutarlı bir formatta olduğundan emin olun. Nihai birleştirilmiş dosyayı, şimdi ProcessMind'e yüklenmeye hazır tek bir CSV olarak kaydedin.
Konfigürasyon
- Gerekli Tablolar: Bu veri çıkarma işlemi için gerekli olan birincil tablolar, çıkarılan olaylar için
Audit [sys_audit], özel geliştirme kalemi tablolarınız (örneğin,Story [rm_story],Defect [rm_defect]) ve ana ServiceNow DevOps tablolarıdır:Commit [sn_devops_commit],Build [sn_devops_build]veDeployment [sn_devops_deployment]. - Temel Filtreler: En önemli filtre,
Created on,Commit timeveyaStart timegibi bir zaman damgası alanında tüm raporlara tutarlı bir şekilde uygulanması gereken tarih aralığıdır.sys_auditraporu için, verileri yalnızca ilgili durum değişiklikleriyle sınırlamak amacıylaTable name(örneğin,rm_story) veField name(örneğin,state) üzerinde filtreleme yapmak kritik öneme sahiptir. - Tarih Aralığı Önerisi: Performans sorunlarına neden olmadan temsili bir veri seti sağlamak için 3 ila 6 aylık bir döneme ait verilerin çıkarılması önerilir. Daha büyük sistemler için, verileri aylık partiler halinde çıkarmayı düşünebilirsiniz.
- Durum Modeli Tanımı: Kuruluşunuzun iş kalemi durum modelini net bir şekilde anlamanız gerekmektedir. Bu,
sys_audittablosunda yakalanan durum değerlerini 'QA Testi Başladı' veya 'UAT Onaylandı' gibi ilgili iş etkinlikleriyle doğru bir şekilde eşleştirmek için gereklidir. - Ön Koşullar: Veri çıkarma işlemini gerçekleştiren kullanıcıların rapor oluşturma ve çalıştırma için
report_userrolüne veya eşdeğer izinlere sahip olması gerekir. Ayrıca yukarıda belirtilen DevOps ve uygulama geliştirme tablolarına okuma erişimine ihtiyaçları vardır. ServiceNow DevOps eklentisinin yüklü ve SCM ve CI/CD araçlarınızla aktif olarak entegre olması gerekmektedir.
a Örnek Sorgu config
/*
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.
--- Adımlar
- Ön Koşullar: ServiceNow örneğinize ağ erişiminizin olduğundan ve okuma izinlerine sahip özel bir hizmet hesabınızın (başlangıç noktası olarak
itilvesn_devops.viewerrolleri uygundur) sağlandığından emin olun. Bu kullanıcınınrm_story,sys_auditgibi tablolara vesn_devops_*şemasına erişimi olması gerekecektir. - ServiceNow ODBC Sürücüsünü Yükleyin: İşletim sisteminize uygun ServiceNow ODBC sürücüsünü ServiceNow destek portalından indirin. Sağlanan kurulum talimatlarını izleyin.
- DSN Yapılandırın: Sorguyu çalıştıracağınız makinede yeni bir Sistem DSN (Veri Kaynağı Adı) kurun. ODBC Veri Kaynağı Yöneticisinde, ServiceNow sürücüsünü ekleyin ve örnek URL'niz (örneğin,
yourinstance.service-now.com), kullanıcı adınız ve parolanızla yapılandırın. - Bir SQL İstemcisiyle Bağlanın: Yapılandırdığınız DSN'yi kullanarak ServiceNow'a bağlanmak için DBeaver, Microsoft SQL Server Management Studio (bağlantılı bir sunucu kullanarak) veya Python gibi bir ODBC kütüphanesine sahip bir komut dosyası dili gibi bir SQL istemci aracı kullanın.
- Durum Modelini Belirleyin: Sorguyu çalıştırmadan önce, kuruluşunuzun geliştirme kalemi tablolarında (örneğin,
rm_story,rm_defect)statealanı için kullandığı kesin değerleri belirlemelisiniz. Sağlanan sorgu, 'Devam Ediyor' veya 'QA'da' gibi yaygın örnekleri kullanır; bunları kendi özel değerlerinizle değiştirmeniz gerekecektir. - SQL Sorgusunu Özelleştirin: Sağlanan SQL sorgusunu istemcinize kopyalayın. Sorgunun üst kısmındaki yer tutucuları, veri çıkarma başlangıç tarihini ve geliştirme yaşam döngüsü etkinliklerinize karşılık gelen belirli durum değerlerini içerecek şekilde değiştirin.
- Sorguyu Çalıştırın: ODBC bağlantısı aracılığıyla tüm SQL sorgusunu ServiceNow veritabanına karşı çalıştırın. Bu, tarih aralığına ve veri hacmine bağlı olarak önemli miktarda zaman alabilir.
- Verileri İnceleyin: Sorgu tamamlandığında, döndürülen veri setini kısaca inceleyin. Çeşitli etkinlikleri kontrol edin ve
DevelopmentItem,ActivityNameveEventTimegibi ana sütunların beklendiği gibi doldurulduğundan emin olun. - CSV Olarak Dışa Aktarın: Tüm sonuç kümesini bir CSV dosyasına dışa aktarın. Dosyanın UTF-8 kodlamalı olduğundan ve sütun başlıklarının ProcessMind tarafından gerekli olan nitelik adlarıyla eşleştiğinden emin olun, örneğin
DevelopmentItem,ActivityName,EventTime. - Yüklemeye Hazırlayın: Son CSV dosyasının sonunda boş satır içermediğinden ve
EventTimeileLastDataUpdateiçin tarih formatının tutarlı ve ProcessMind tarafından desteklendiğinden (örneğin,YYYY-MM-DD HH:MM:SS) emin olun.
Konfigürasyon
- Ön Koşullar: DevOps modülünün etkin olduğu bir ServiceNow örneğine erişim gereklidir. Gerekli tablolara okuma izinlerine sahip özel bir kullanıcı hesabı zorunludur. ServiceNow ODBC sürücüsü istemci makineye yüklenmeli ve yapılandırılmalıdır.
- ODBC Sürücü Yapılandırması: Bağlantı için örnek URL, kullanıcı adı ve parola veya OAuth token gereklidir. Karmaşık sorgular çalıştırmadan önce DSN bağlantısını test etmek kritik öneme sahiptir.
- Tarih Aralığı Filtreleme: Sağlanan sorgu, çıkarılan veri miktarını sınırlamak için
s.sys_created_on >= '2023-01-01'gibi bir yer tutucu içerir. Yönetilebilir sorgu yürütme süreleri sağlamak için son 6 ila 12 ay gibi belirli bir dönem için veri çıkarılması şiddetle tavsiye edilir. - Durum Modeli Özelleştirmesi: Sorgunun çıkarılan olaylar için doğruluğu tamamen durum modeline bağlıdır. Yer tutucu durum değerlerini (örneğin,
[Your 'In Progress' State Value],[Your 'In QA' State Value]) ServiceNow yapılandırmanızda kullanılan tam değerlerle değiştirmelisiniz. Bunlar büyük/küçük harfe duyarlıdır. - İş Kalemi Tabloları: Sorgu, Story tablosu (
rm_story) için yazılmıştır. Kuruluşunuz ayrıca Hataları (rm_defect), İyileştirmeleri (rm_enhancement) veya diğer görev türlerini kullanıyorsa, bunlarıUNION ALLkullanarak ilkDevItemsOrtak Tablo İfadesine (CTE) eklemelisiniz. - Performans: Üretimdeki bir ServiceNow örneğine doğrudan sorgular, performansı etkileyebilir. Büyük veri çıkarma işlemlerini yoğun olmayan saatlerde çalıştırmanız önerilir. Çok büyük veri setleri için,
sys_updated_onalanına dayalı artımlı bir veri çıkarma stratejisi düşünebilirsiniz.
a Örnek Sorgu 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 ***