İade ve Geri Ödeme Süreçleri Veri Template'iniz
İade ve Geri Ödeme Süreçleri Veri Template'iniz
- Toplanması önerilen veri alanları
- Takip edilecek temel süreç adımları
- `Veri` çıkarma rehberliği
İade ve Geri Ödeme Süreçleri Nitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| İade Süreci ID'si ReturnCaseId | Bir müşterinin iade ve geri ödeme case'i için tüm ilgili etkinlikleri birbirine bağlayan benzersiz tanımlayıcı. | ||
| Açıklama İade Süreci ID'si, her benzersiz iade process instance'ı için birincil tanımlayıcı görevi görür. İade siparişinin ilk oluşturulmasından nihai kapanışına kadar belirli bir müşteri iadesi veya geri ödeme talebiyle ilişkili tüm activities'i birbirine bağlar. Process analizinde, bu ID, her iadenin uçtan uca journey'ini yeniden yapılandırmak için temeldir. Tam lifecycle'ı izlemeye, toplam cycle time'ları ölçmeye ve farklı case'ler arasındaki varyasyonları analiz etmeye olanak tanır. Tüm event'ler, data'lar ve metrikler bu tanımlayıcı kullanılarak toplanır ve correlated edilir. Neden önemli Bu, tüm süreç adımlarını birbirine bağlayan temel case tanımlayıcısıdır ve her iadenin başından sonuna kadar izlenmesini ve analiz edilmesini mümkün kılar. Nereden alınır Bu genellikle 'Satış ve pazarlama' modülünde 'İade Edilen Sipariş' tipindeki İade Malzeme Yetkilendirme (RMA) numarası veya Satış Siparişi numarasıdır. 'SalesType'ın 'Returned Order' olduğu 'SalesTable' gibi tablolarda bulunur. Örnekler RMA-001234RMA-001235RMA-001236 | |||
| Olay Zamanı EventTime | Belirli bir faaliyetin veya event'in ne zaman gerçekleştiğini gösteren zaman damgasıdır. | ||
| Açıklama Olay Zamanı veya zaman damgası, bir faaliyetin gerçekleştiği kesin tarih ve saati kaydeder. Olay günlüğündeki her faaliyetin, olayların kronolojik sırasını sağlayan ilgili bir zaman damgası vardır. Bu öznitelik, tüm zaman tabanlı process mining analizleri için kritik öneme sahiptir. Faaliyetler arasındaki döngü sürelerini hesaplamak, bekleme sürelerini ve darboğazları belirlemek, genel vaka süresini ölçmek ve hizmet seviyesi anlaşmalarına (SLA'lar) uyumluluğu kontrol etmek için kullanılır. Zaman damgalarının doğruluğu, herhangi bir performans analizinin güvenilirliğini doğrudan etkiler. Neden önemli Bu timestamp, döngü süreleri ve bekleme süreleri gibi süreye dayalı tüm metrikleri hesaplamak için çok önemlidir ve performans analizi için temel teşkil eder. Nereden alınır Çeşitli tablolardaki oluşturma veya değiştirme tarihi alanlarına karşılık gelir; sipariş oluşturma için 'SalesTable.createdDateTime' veya depo günlükleri için 'WMSJournalTrans.createdDateTime' gibi. Örnekler 2023-10-26T10:00:00Z2023-10-26T14:30:15Z2023-10-27T09:05:42Z | |||
| Faaliyet Adı ActivityName | İade ve geri ödeme süreci içinde gerçekleşen belirli iş event'inin veya görevinin adı. | ||
| Açıklama Bu nitelik, iade ve geri ödeme yaşam döngüsündeki belirli bir adımı veya event'i tanımlar; örneğin 'İade Siparişi Oluşturuldu', 'Ürün Alındı' veya 'Kredi Notu Kaydedildi'. Her etkinlik, sistemde kaydedilen süreçteki farklı bir noktayı temsil eder. Bu etkinliklerin sırasını ve sıklığını analiz etmek, Process Mining'in çekirdeğini oluşturur. Süreç haritalarının görselleştirilmesine, adımlar arasındaki darboğazların belirlenmesine ve yaygın ve nadir süreç varyantlarının keşfedilmesine olanak tanır. Etkinlik kümesi, analiz edilen sürecin kapsamını tanımlar. Neden önemli Sürecin adımlarını tanımlar, süreç akışının görselleştirilmesine ve darboğazların, yeniden işlemenin ve sapmaların belirlenmesine olanak tanır. Nereden alınır Bu, sistem event'lerinden türetilmiş kavramsal bir niteliktir. 'SalesTable' ve 'WMSJournalTable' gibi tablolardaki durum değişikliklerini veya belirli event log'larını kullanıcı dostu adlara eşleştirerek oluşturulabilir. Örnekler İade Siparişi OluşturulduÜrün Kabul EdildiTasfiye Kodu UygulandıKredi Notu Kaydedildi | |||
| Durum Kodu DispositionCode | Ürün incelemesinin sonucunu ve atılacak bir sonraki adımı belirten bir kod. | ||
| Açıklama Tasfiye Kodu (Disposition Code), iade edilen bir ürünün kalite denetimi sırasında atanır. Süreçteki sonraki adımı belirler; örneğin 'Kredi', 'Değiştirme', 'Hurdaya Ayırma' veya 'Müşteriye İade Etme'. Bu nitelik, iade sürecinde kritik bir karar noktasıdır. Tasfiye koduna göre analiz yapmak, işletmelerin iade sonuçlarını anlamalarını, hurdaya ayrılan ürünlerin finansal etkisini izlemelerini ve değişim ile geri ödeme gibi farklı çözüm yollarının verimliliğini değerlendirmelerini sağlar. Neden önemli Bu kod, bir iade case'inin denetim sonrası izleyeceği yolu belirler ve bu da süreç varyantlarını ve bunların iş sonuçlarını analiz etmek için kritik öneme sahiptir. Nereden alınır Bu, kalite yönetimi modülündeki önemli bir alandır. Kalite Siparişi veya Denetim Siparişi işlemiyle ilişkilidir. Örnekler CRDTREPL-DHURDARTV | |||
| İade Kanalı ReturnChannel | Müşterinin iadeyi başlattığı yöntem veya kanal. | ||
| Açıklama Bu nitelik, müşterinin iade sürecini başlatmak için kullandığı kanalı belirtir; örneğin 'Online Portal', 'In-Store', 'Customer Service Call' veya 'Mail'. Süreç analizini iade kanalına göre segmentlere ayırmak, her kanalın performansını ve verimliliğini değerlendirmeye yardımcı olur. Bir işletme, en iyi uygulamaları ve yatırım veya iyileştirme alanlarını belirlemek için kanallar arasındaki döngü sürelerini, maliyetleri ve müşteri memnuniyetini karşılaştırabilir. Bu, 'İade Kanalı Kullanım Performansı' dashboard'u için anahtardır. Neden önemli Farklı iade kanalları arasında performans karşılaştırmasına olanak tanır, en verimli ve uygun maliyetli olanları optimize etmeye yardımcı olur. Nereden alınır Bu bilgi, iade siparişi başlığında ('SalesTable') saklanabilir veya siparişi oluşturan kullanıcıdan türetilebilir. Özel mantık veya özel bir alan gerektirebilir. Örnekler Web PortalMağaza İçi KioskMüşteri Desteği | |||
| İade Neden Kodu ReturnReasonCode | Müşterinin ürünü iade etmek için belirttiği neden. | ||
| Açıklama İade Neden Kodu, müşterinin 'Kusurlu Ürün', 'Yanlış Beden', 'Açıklandığı Gibi Değil' veya 'Artık Gerekli Değil' gibi belirttiği iade nedenini kaydeder. Bu bilgi genellikle iade başlatıldığında toplanır. İade nedenlerini analiz etmek, temel neden analizleri için hayati önem taşır. İşletmelerin ürün kalitesi sorunlarını, ürün açıklamalarındaki problemleri veya lojistik hataları belirlemesine yardımcı olur. Bu veri'den elde edilen içgörüler, ürün tasarımı, pazarlama ve tedarik zinciri operasyonlarında gelecekteki iadeleri azaltmak için iyileştirmeleri teşvik edebilir. Neden önemli İadelerin neden gerçekleştiğine dair kritik öngörü sağlar, iade oranlarını azaltmak ve müşteri memnuniyetini artırmak için kök neden analizine olanak tanır. Nereden alınır Bu genellikle iade sipariş satırı düzeyinde saklanır. İade siparişleri için 'SalesLine' tablosundaki neden kodu alanlarına bakın. Örnekler DEFECTYANLIŞ_ÜRÜNNO_LONGER_WANTEDDAMAGED_IN_TRANSIT | |||
| Sorumlu Kullanıcı ResponsibleUser | Belirli bir etkinliği gerçekleştiren veya sorumlu olan kullanıcı veya çalışan. | ||
| Açıklama Bu nitelik, bir süreç adımını yürütmekten sorumlu olan bireysel kullanıcıyı tanımlar. Bu, ürünü teslim alan depo çalışanı, kalite denetçisi veya kredi notunu gönderen finans sorumlusu olabilir. Süreci kullanıcıya göre analiz etmek, iş yükü dağılımını anlamaya, en iyi performans gösterenleri belirlemeye ve potansiyel eğitim ihtiyaçlarını tespit etmeye yardımcı olur. Ayrıca, belirli bireyler veya ekipler tarafından ele alınan case'leri araştırmak ve görevlerin doğru ayrılmasını sağlamak için de kullanılabilir. Neden önemli İş yükü dağılımının analizine, bireysel veya ekip performansına ve eğitim veya kaynak tahsisi fırsatlarının belirlenmesine olanak tanır. Nereden alınır İşlem kayıtlarındaki 'oluşturan' veya 'değiştiren' alanlarında bulunur; 'SalesTable.createdBy' veya günlük tablolarındaki bağlantılı kullanıcı kimlikleri gibi. Örnekler Alice.WBob.JChris.P | |||
| Ürün ID ProductId | İade edilen ürünün benzersiz tanımlayıcısı. | ||
| Açıklama Ürün ID'si, genellikle Stok Tutma Birimi (SKU), müşteri tarafından iade edilen belirli ürünü tanımlar. Her iade sipariş satırı bir Ürün ID'si ile ilişkilidir. Ürüne göre iadeleri analiz etmek, yüksek iade oranlarına sahip ürünleri belirlemek için hayati önem taşır. Bu, kalite kontrol sorunlarına, yanlış ürün açıklamalarına veya üretim hatalarına işaret edebilir. Bu analiz, ürünle ilgili soruşturmaların ve iyileştirmelerin önceliklendirilmesine yardımcı olur. Neden önemli Ürün bazında iade analizine olanak tanır, kalite sorunları olan veya yüksek iade hacmine sahip ürünleri belirlemeye yardımcı olur. Nereden alınır Bu, iade siparişi için 'SalesLine' tablosundaki 'ItemId' alanına karşılık gelir. Örnekler SKU-A-123SKU-B-456SKU-C-789 | |||
| Alacak Dekontu Kimliği CreditNoteId | Bir geri ödeme için oluşturulan kredi notu belgesinin benzersiz tanımlayıcısı. | ||
| Açıklama Bir geri ödeme işlendiğinde, kredi notu veya kredi memo'su olarak bilinen bir finansal belge oluşturulur. Bu nitelik, o belgenin benzersiz ID'sini saklar. Bu ID, operasyonel iade sürecinden muhasebe sistemindeki finansal kayıtlara doğrudan bir bağlantı sağlar. Denetim amaçları ve finansal farklılıkları derinlemesine incelemek için faydalıdır, bir analistin bir iade case'ini onu çözen belirli finansal işleme kadar izlemesine olanak tanır. Neden önemli Operasyonel iade sürecini ilgili finansal işlemle bağlar, bu da denetim ve finansal mutabakat için kritik öneme sahiptir. Nereden alınır Kredi notu numarası genellikle 'CustInvoiceJour' tablosunun 'InvoiceId' alanında bulunur, burada işlem türü 'Kredi notu'dur. Bu, iade siparişine geri bağlanabilir. Örnekler CN-10056CN-10057CN-10058 | |||
| Bitiş Saati EndTime | Belirli bir etkinliğin ne zaman tamamlandığını gösteren zaman damgası. | ||
| Açıklama Bitiş Zamanı, bir etkinliğin tamamlanma timestamp'ini temsil eder. StartTime başlangıcı işaret ederken, EndTime sonu işaret eder ve bu belirli görevin işlem süresinin hesaplanmasına olanak tanır. Bu nitelik, özellikle 'Ürün Denetimi' gibi ölçülebilir bir süreye sahip görevler için ayrıntılı performans analizi için çok önemlidir. StartTime ve EndTime karşılaştırılarak, analistler görevlerin aktif işlem süresini hassas bir şekilde ölçebilir, bunu görevler arasındaki bekleme süresinden ayırabilirler. Bu, sadece görevler arasında değil, belirli etkinlikler içindeki verimsizlikleri de tespit etmeye yardımcı olur. Neden önemli Bireysel faaliyetler için aktif işleme süresinin hesaplanmasını sağlar, bekleme süresi ile gerçek çalışma süresi arasındaki ayrımı yapmaya yardımcı olur. Nereden alınır Bu genellikle türetilmesi gereken bir durumdur. Örneğin, bir etkinliği sonlandıran bir durum değişikliğinin 'modifiedDateTime'ı veya sonraki etkinliğin StartTime'ı olabilir. Örnekler 2023-10-26T10:15:00Z2023-10-26T14:45:20Z2023-10-27T09:55:12Z | |||
| Depo Kimliği WarehouseId | İade edilen ürünün alındığı depo veya konumun tanımlayıcısı. | ||
| Açıklama Bu nitelik, iade edilen ürünü işleyen belirli fiziksel depoyu veya iade merkezini tanımlar. Farklı konumlar farklı süreçlere, kaynaklara veya performans seviyelerine sahip olabilir. Süreci depoya göre analiz etmek, konumlar arasında performans karşılaştırması yapılmasına olanak tanır. Hangi tesislerin iadeleri işlemede en verimli olduğunu belirlemeye, bölgesel darboğazları vurgulamaya ve lojistik ağı genelinde kaynak tahsisi ve süreç standardizasyonu hakkında kararlar almaya yardımcı olabilir. Neden önemli Farklı depolar veya iade merkezleri arasındaki performans karşılaştırmasına olanak tanır, bölgesel darboğazları veya en iyi uygulamaları belirlemeye yardımcı olur. Nereden alınır Bu bilgi, Arrival Journal ('WMSJournalTable') veya 'SalesLine' gibi envanterle ilgili işlemlerdeki 'InventLocationId' alanında saklanır. Örnekler WH-EASTWH-WESTCENTRAL-DC | |||
| Gerçek Geri Ödeme Tutarı ActualRefundAmount | Müşteriye yapılan geri ödemenin nihai parasal değeri. | ||
| Açıklama Bu nitelik, müşteriye geri ödenen nihai, onaylanmış tutardır. Bu değer, kredi notu oluşturulduğunda ve gönderildiğinde kaydedilir. Bu, finansal analiz için kritik bir niteliktir ve doğrudan 'Geri Ödeme Tutarı Farklılık Analizi' dashboard'unda ve 'Geri Ödeme Tutarı Doğruluk Oranı' KPI'ında kullanılır. Bu veri'yi analiz etmek, iadelerin finansal etkisini ve süreç boyunca yapılan ayarlamaları anlamaya yardımcı olur. Neden önemli Bu, iadenin gerçek finansal etkisini temsil eder ve geri ödeme doğruluğunu hesaplamak ve finansal sonuçları anlamak için kritik öneme sahiptir. Nereden alınır Bu değer, gönderilen kredi notu işlem detaylarında bulunabilir. Kredi notu için 'CustTrans' ve 'CustInvoiceJour' tablolarıyla ilişkilidir. Örnekler 99.99135.000.00 | |||
| Geri Ödeme SLA Hedef Tarihi RefundSlaTargetDate | İade ve geri ödeme case'inin tamamen çözülmesi gereken hedef tarih. | ||
| Açıklama Bu nitelik, bir iade case'ini çözmek için Hizmet Seviyesi Anlaşması (SLA) son tarihini tanımlar. Bu, müşterinin gönderilmiş bir geri ödeme veya sevk edilmiş bir değişim gibi nihai bir çözüme sahip olmasının beklendiği tarihtir. Bu hedef tarih, hizmet taahhütlerine karşı performans izleme için çok önemlidir. 'Çözüm SLA Uyumu Oranı' KPI'ını hesaplamak ve 'Geri Ödeme Çözüm SLA Performansı' dashboard'unu desteklemek için kullanılır. Bu tarihi sürecin gerçek tamamlanma tarihiyle karşılaştırmak, işletmenin SLA ihlallerini belirlemesine ve yaşlanan case'leri proaktif olarak yönetmesine olanak tanır. Neden önemli Süreç performansının ölçüldüğü bir kıyaslama noktasıdır, SLA uyumluluğunun takibini ve gecikmiş vakaların belirlenmesini sağlar. Nereden alınır Bu standart bir alan olmayabilir. Genellikle iade oluşturma tarihi artı önceden tanımlanmış bir SLA süresi (örneğin, 14 gün) temel alınarak hesaplanır. Özel bir alanda saklanabilir. Örnekler 2023-11-10T23:59:59Z2023-11-15T23:59:59Z | |||
| İade Sipariş Durumu ReturnOrderStatus | event anındaki iade siparişinin genel durumu. | ||
| Açıklama Bu nitelik, iade siparişi başlığının 'Açık', 'Faturalandırılmış' veya 'İptal Edilmiş' gibi mevcut durumunu gösterir. case'in yaşam döngüsünde nerede olduğuna dair üst düzey bir görünüm sunar. Etkinlikler ayrıntılı süreç adımları sağlarken, genel durum case'leri filtrelemek ve segmentlere ayırmak için faydalıdır. Örneğin, bir analist mevcut iş yükünü anlamak için yalnızca 'Açık' case'lere odaklanmak isteyebilir veya nihayetinde 'İptal Edilen' case'lerin süreç akışını analiz edebilir. Neden önemli Vakanın durumuna dair üst düzey bir özet sunar, bu da vakaları filtrelemek ve iptaller gibi sonuçları anlamak için kullanışlıdır. Nereden alınır Bu bilgi 'SalesTable'ın 'SalesStatus' veya 'DocumentStatus' alanında bulunur. Örnekler Açık siparişTeslim EdildiFaturalandırıldıİptal Edildi | |||
| İade Türü ReturnType | İadeyi Geri Ödeme veya Değişim gibi beklenen sonuca göre kategorize eder. | ||
| Açıklama Bu nitelik, iade case'ini müşterinin aradığı veya işletmenin sunduğu çözüm türüne göre sınıflandırır. Yaygın türler arasında parasal bir 'Geri Ödeme', bir 'Değişim' ürünüyle takas veya 'Onarım' bulunur. Bu kategorizasyon, farklı süreç yollarını analiz etmek için faydalıdır. Geri ödeme yapma süreci, bir değişim ürününü gönderme sürecinden önemli ölçüde farklıdır. İade Türüne göre segmentlere ayırma, her çözüm yoluna özel döngü sürelerinin ve darboğazların daha doğru analiz edilmesini sağlar. Neden önemli Analizin, hedeflenen sonuca göre segmentasyonuna olanak tanır, çünkü geri ödeme ve değişim süreçleri farklı adımlara ve döngü sürelerine sahiptir. Nereden alınır Bu, iade siparişi başlığında özel bir alan olabilir veya tasfiye koduna veya bir değişim satış siparişinin oluşturulması gibi sonraki işlemlere göre türetilebilir. Örnekler Geri ÖdemeDeğişimMağaza Kredisi | |||
| Kaynak Sistem SourceSystem | event verilerinin çıkarıldığı bilgi sistemi. | ||
| Açıklama Bu nitelik, verinin kaynaklandığı kaynak bilgi sistemini tanımlar. Bu bağlamda, öncelikli olarak 'Microsoft Dynamics 365' olacaktır. Daha büyük kuruluşlarda, bir süreç birden fazla sistemi kapsayabilir. Her event için kaynak sistemi belirtmek, veri yönetimi, veri çıkarma sorunlarının giderilmesi ve sürecin teknolojik manzarasını anlamak için çok önemlidir. Analiz edilen verinin kökenini doğrular. Neden önemli Veri kaynağı hakkında kritik bağlam sağlar, bu da veri yönetimi, doğrulama ve sürecin sistem yapısını anlamak için esastır. Nereden alınır Bu, genellikle veri çıkarım (extraction), dönüşüm ve yükleme (ETL) süreci sırasında veri kümesinin kaynağını etiketlemek için eklenen statik bir değerdir. Örnekler Microsoft Dynamics 365 F&OD365-PROD | |||
| Müşteri Kimliği CustomerId | İadeyi başlatan müşterinin benzersiz tanımlayıcısı. | ||
| Açıklama Müşteri ID'si, iadeyle ilişkili müşteri hesabının benzersiz tanımlayıcısıdır. Bu, iade işlemini CRM'deki veya müşteri veri tabanındaki belirli bir müşteriye bağlar. Müşteriye göre iadeleri analiz etmek, alışılmadık derecede yüksek iade etkinliğine sahip müşterilerin belirlenmesini sağlar; bu durum dolandırıcılık davranışı veya kronik memnuniyetsizlik gösterebilir. Ayrıca, müşterileri segmentlere ayırmak için de kullanılabilir, örneğin yüksek değerli müşterilere ayrıcalıklı iade hizmetleri sunmak gibi. Neden önemli İade sürecini belirli bir müşteriye bağlar, müşteri düzeyinde analize ve iade kalıplarının veya potansiyel dolandırıcılığın belirlenmesine olanak tanır. Nereden alınır Bu, iade siparişi için 'SalesTable'daki 'CustAccount' alanıdır. Örnekler CUST-00045CUST-00192CUST-00315 | |||
| Politikaya Uygun mu IsPolicyAdherent | İade onayının belirlenmiş iade politikalarına uyumlu olup olmadığını belirten bir bayrak. | ||
| Açıklama Bu, bir iadenin şirketin iade politikasında tanımlanan tüm kriterleri karşılayıp karşılamadığını gösteren hesaplanmış bir boolean niteliktir. Bu, iade süresi, ürün durumu veya iade nedeni gibi faktörlere dayanabilir. Bu nitelik, 'İade Onay Uyumluluk Genel Bakışı' dashboard'unu ve 'Uyumlu İade Onay Oranı' KPI'ını doğrudan destekler. İşletmenin politika uyumluluğunu nicel olarak belirlemesine, istisna olarak onaylanan case'leri tanımlamasına ve bu tür istisnaların nedenlerini ve sıklığını analiz etmesine olanak tanır. Bu, yönetişim ve maliyet kontrolü için hayati önem taşır. Neden önemli İş kurallarına uyumluluğu doğrudan ölçer, gelir kaybına yol açabilecek uyumsuz iade onaylarını belirlemeye ve azaltmaya yardımcı olur. Nereden alınır Bu, türetilmiş bir niteliktir. Mantığın, iadenin niteliklerini (örneğin, iade tarihi ile satın alma tarihi, iade nedeni) önceden tanımlanmış iş kurallarıyla karşılaştırarak oluşturulması gerekir. Örnekler truefalse | |||
| SLA Statüsü SlaStatus | Vakanın Hizmet Seviyesi Anlaşması hedefi dahilinde çözülüp çözülmediğini gösterir. | ||
| Açıklama Bu hesaplanmış nitelik, genellikle 'Zamanında' veya 'Geç' olan basit bir SLA uyumluluk durumu sağlar. Nihai etkinliğin timestamp'ini (örneğin, 'İade Siparişi Kapatıldı') 'RefundSlaTargetDate' niteliğiyle karşılaştırarak belirlenir. Bu nitelik, 'Geri Ödeme Çözüm SLA Performansı' gibi dashboard'larda performans raporlamasını basitleştirir. Kullanıcıların tarihleri karşılaştırmasını gerektirmek yerine, doğrudan ve kolayca anlaşılır bir durum sunar. Bu, genel 'Çözüm SLA Uyumu Oranı'nı hesaplamak için hızlı filtrelemeye ve toplamaya olanak tanır. Neden önemli SLA uyumluluğunun basit, bir bakışta göstergesini sağlar, gecikmiş vakaları filtrelemeyi ve gecikmelerin temel nedenlerini analiz etmeyi kolaylaştırır. Nereden alınır Bu, nihai çözüm etkinliğinin timestamp'ini 'RefundSlaTargetDate' niteliğiyle karşılaştırarak hesaplanan türetilmiş bir niteliktir. Örnekler ZamanındaGecikmiş | |||
| Son Veri Güncellemesi LastDataUpdate | Süreç verilerinin en son yenilendiğini gösteren timestamp. | ||
| Açıklama Bu nitelik, verinin kaynak sistemden son olarak ne zaman çıkarıldığını ve Process Mining aracında ne zaman güncellendiğini kaydeder. Analiz edilen verinin güncelliği için bir referans noktası sağlar. Son veri güncelleme zamanını bilmek, analizin zamanlamasını anlamak için önemlidir. Kullanıcıların dashboard'ları ve KPI'ları doğru bir şekilde yorumlamalarına yardımcı olur, gerçek zamanlı verilere mi yoksa belirli bir zamandaki bir anlık görüntüye mi baktıklarını bilmelerini sağlar. Bu, operasyonel izleme için anahtardır. Neden önemli Verilerin güncelliğini gösterir, analistlerin süreç öngörülerinin ne kadar güncel olduğunun farkında olmasını sağlar. Nereden alınır Bu, veri alım pipeline'ı sırasında oluşturulan ve depolanan bir metadata niteliğidir, tipik olarak ETL işinin tamamlanma timestamp'ini temsil eder. Örnekler 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Talep Edilen Geri Ödeme Tutarı RequestedRefundAmount | Müşteri tarafından talep edilen geri ödemenin toplam parasal değeri. | ||
| Açıklama Bu nitelik, iade sürecinin başlangıcında talep edilen veya beklenen ilk geri ödeme tutarını temsil eder. Genellikle iade edilen ürünlerin orijinal satın alma fiyatına dayanır. Bu değer, 'Geri Ödeme Tutarı Farklılık Analizi' için bir temel teşkil eder. Talep edilen tutarı gerçek geri ödenen tutarla karşılaştırarak işletme, yeniden stoklama ücretleri, hasarlı ürünler için kısmi geri ödemeler veya diğer ayarlamalardan kaynaklanan farklılıkları belirleyebilir. Bu, finansal doğruluğun ve politika uyumunun izlenmesine yardımcı olur. Neden önemli Finansal doğruluğu ölçmek için bir referans noktası görevi görür, işlem gören gerçek geri ödeme tutarıyla karşılaştırarak. Nereden alınır Bu genellikle iade edilen orijinal satış sipariş satırındaki satır tutarı veya toplam tutardır ve 'SalesLine.LineAmount'ta bulunur. Örnekler 99.99150.0024.50 | |||
İade ve Geri Ödeme Süreçleri Etkinlikleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| İade Siparişi Kapatıldı | İade siparişi nihai durumuna ulaştı; yani tüm fiziksel ve finansal işlemler tamamlandı. Bu genellikle kredi notu gönderildikten veya değişim ürünü sevk edildikten sonra gerçekleşir. | ||
| Neden önemli Bu, başarıyla tamamlanmış bir iade süreci için birincil bitiş event'idir. Oluşturmadan bu noktaya kadar geçen süre, toplam case döngü süresini temsil eder. Nereden alınır ReturnOrder durum alanının 'Invoiced' veya 'Closed' gibi nihai değerine değişmesinden çıkarılır. Bu, daha fazla işlem beklenmediğini gösterir. Yakala SalesTable.Status veya SalesTable.DocumentStatus alanının nihai bir duruma değişmesi. Event tipi inferred | |||
| İade Siparişi Oluşturuldu | Bu etkinlik, sistemde bir İade Malzeme Yetkilendirmesi (RMA) veya İade Siparişi oluşturulduğu, iade sürecinin başlangıcını işaret eder. Bu, Dynamics 365'te yeni bir ReturnOrder kaydının oluşturulması üzerine yakalanan açık bir event'tir. | ||
| Neden önemli Bu, tüm iade süreci için birincil başlangıç event'idir. Bu etkinlikten diğerlerine kadar geçen sürenin analiz edilmesi, genel süreç teslim süresini ortaya çıkarır ve erken aşamadaki darboğazları belirlemeye yardımcı olur. Nereden alınır Bu event, ReturnOrder başlığının oluşturma timestamp'inden yakalanır. Bu genellikle SalesType'ın 'Returned Order' olduğu SalesTable'da bulunur. Yakala SalesType = 'Returned Order' olan SalesTable kaydının oluşturulma olayı. Event tipi explicit | |||
| Kredi Notu Kaydedildi | Kredi notu resmi olarak finansal defterlere kaydedilir ve krediyi müşterinin kullanımına sunar. Bu, şirketin bakış açısından geri ödeme işleminin tamamlandığını gösterir. | ||
| Neden önemli Bu, geri ödemenin sistemde işlendiğini doğrulayan kritik bir finansal dönüm noktasıdır. Genellikle geri ödeme SLA uyumluluğunu ölçmek için önemli bir etkinliktir. Nereden alınır İade siparişi için fatura defterinin gönderi timestamp'i, bu da kredi notunu kesinleştirir. İade siparişinin durumu 'Faturalandırıldı' olarak değişir. Yakala İade siparişinin fatura günlüğünün kaydı. Event tipi explicit | |||
| Tasfiye Kodu Uygulandı | Bu etkinlik, denetimin tamamlanmasını ve iade edilen ürünle ne yapılacağına dair kararı temsil eder. İade satırına 'Kredi', 'Hurda' veya 'Değiştirme' gibi bir tasfiye kodu atanır. | ||
| Neden önemli Bu, geri ödeme, değişim veya red olsun, sonraki süreç yolunu belirleyen önemli bir karar noktasıdır. Buradaki gecikmeler, genel çözüm süresini önemli ölçüde etkileyebilir. Nereden alınır Bu event, DispositionCode alanı iade sipariş satırının envanter işleminde veya ilgili journal'da doldurulduğunda yakalanır. Yakala İade sipariş satırı için bir DispositionCode ayarlandığında meydana gelen güncelleme event'i. Event tipi explicit | |||
| Ürün Kabul Edildi | İade edilen ürünün depoda veya belirlenen iade merkezinde fiziksel teslim alınmasını işaret eder. Bu, iade siparişiyle ilişkili varış günlüğü kaydedildiğinde yakalanır. | ||
| Neden önemli Bu, süreci müşteri eyleminden dahili işleme geçiren kritik bir dönüm noktasıdır. Denetim ve tasfiye gibi tüm dahili işlem sürelerinin hesaplanması için başlangıç noktasıdır. Nereden alınır İade Siparişi satırıyla ilişkili WMS Defteri veya Ürün Varış Defterinin gönderi timestamp'i. Bu, envanter işlemlerini 'Kaydedildi' veya 'Alındı' durumuna günceller. Yakala İade sipariş satırına bağlı Ürün Varış Günlüğünün kayıt olayı. Event tipi explicit | |||
| Alacak Notu Oluşturuldu | 'Kredi' tasfiyesine göre, müşteriye geri ödeme yetkisi veren bir alacak dekontu oluşturulur. Bu, sürecin finansal mutabakat kısmının resmi başlangıcıdır. | ||
| Neden önemli Bu etkinlik, finansal geri ödemenin onaylanmasını işaret eder. Tasfiye ve kredi notu oluşturma arasındaki süre, geri ödemenin başlatılmasındaki idari gecikmeleri vurgular. Nereden alınır Bu, orijinal iade siparişine bağlı, negatif değerli yeni bir SalesTable kaydının oluşturulmasından veya 'Kredi notu oluştur' batch job'ının çalıştırılmasından çıkarılabilir. Yakala Bir alacak dekontunun oluşturulması, genellikle iade siparişi faturasının kaydıyla. Event tipi explicit | |||
| Değişim Siparişi Oluşturuldu | Müşteriye bir yedek ürün göndermek için yeni bir satış siparişi oluşturulur. Bu faaliyet, tasfiye işlemi 'Değiştir ve Kredilendir' veya 'Değiştir ve Hurdaya Ayır' olduğunda gerçekleşir. | ||
| Neden önemli Bu etkinlik, değişim süreci varyantını başlatır. Bu yolu geri ödeme yolundan ayrı olarak izlemek, değişimlerin karmaşıklıklarını ve maliyetlerini anlamak için çok önemlidir. Nereden alınır Değişim ürünü için yeni bir SalesTable kaydının oluşturulması, genellikle otomatik olarak oluşturulur ve orijinal iade siparişine bağlanır. Yakala Yeni bir Satış Siparişinin, tasfiye işlemi aracılığıyla İade Siparişine bağlanan şekilde oluşturulması. Event tipi explicit | |||
| Değişim Ürünü Gönderildi | Değişim ürününe ait sevk irsaliyesi gönderildi, bu da müşteriye gönderildiğini gösterir. Bu, değişim karşılama sürecinin tamamlandığını işaret eder. | ||
| Neden önemli Bu, değişim varyantında önemli bir dönüm noktasıdır ve şirketin müşteriye karşı yükümlülüğünü yerine getirmesini temsil eder. Değişim döngü sürelerini izlemek için çok önemlidir. Nereden alınır Değişim satış siparişi için sevk irsaliyesi defterinin gönderi tarihi. Bu, sipariş durumunu 'Teslim Edildi' olarak günceller. Yakala Yedek satış siparişi için ambalaj fişinin kaydı. Event tipi explicit | |||
| İade Siparişi İptal Edildi | İade siparişi tamamlanmadan iptal edilir. Bu, müşteri talebinden veya ürünün hiç iade edilmemesinden kaynaklanabilir. | ||
| Neden önemli Bu, sürecin alternatif, başarısız bir sonunu temsil eder. İadelerin neden iptal edildiğini analiz etmek, müşteri davranışı veya süreç hataları hakkında içgörüler sağlayabilir. Nereden alınır ReturnOrder durum alanının 'Cancelled' olarak değişmesinden çıkarılır. Bu, başarıyla kapatılmış bir siparişten farklı bir nihai durumdur. Yakala SalesTable.Status alanının 'Cancelled' olarak değişmesi. Event tipi inferred | |||
| İade Siparişi Onaylandı | İade siparişinin sistem içinde resmi olarak onaylanmasını temsil eder ve genellikle sonraki işlemleri tetikler. Bu durum genellikle açık bir eylem veya ReturnOrder başlığındaki bir durum değişikliği olarak kaydedilir. | ||
| Neden önemli Onay, lojistiğin başlamasından önceki önemli bir adımdır. Oluşturma ve onay arasındaki gecikmeler, idari veya sistemle ilgili birikimleri gösterebilir. Nereden alınır Bu, iade siparişi için 'Onay' journal gönderisinden veya SalesTable'daki DocumentStatus alanındaki bir değişiklikten belirlenebilir. Yakala İade siparişi için 'Satış siparişini onayla' işlevinin yürütülmesi. Event tipi explicit | |||
| Kalite Emri Oluşturuldu | İade edilen ürünün yapılandırılmış bir inceleme sürecinden geçmesi gerektiğini belirten resmi bir kalite siparişi oluşturulur. Bu durum, iadelerin detaylı testler veya kalite standartlarına karşı kontroller gerektirdiği senaryolarda yaygındır. | ||
| Neden önemli Bu etkinlik, resmi bir denetim sürecinin başlangıcını işaret eder. Bu noktadan itibaren zamanı izlemek, kalite güvence workflow'unun verimliliğini ve süresini ölçmeye yardımcı olur. Nereden alınır İade siparişine bağlı InventQualityOrderTable'daki bir kaydın oluşturulma zaman damgası. Yakala Bir InventQualityOrderTable kaydının oluşturulması. Event tipi explicit | |||
| Varış Günlüğü Oluşturuldu | Bu etkinlik, deponun iade edilen ürünün gelmesini beklediğini gösterir. Bu, sistemin ürünlerin fiziksel olarak teslim alınması için hazırlandığı bir varış defteri oluşturulmasıdır. | ||
| Neden önemli Bu adım, lojistik hazırlığı gerçek fiziksel teslim alımdan ayırır. Depo hazırlığını ve gelen iadeler için planlamayı analiz etmeye yardımcı olur. Nereden alınır JournalType 'Arrival' olan WMSJournalTable'da bir kaydın oluşturulması. Günlük, iade sipariş satırına bağlıdır. Yakala İade için WMSJournalTable kaydının oluşturulma zaman damgası. Event tipi explicit | |||
Veri Çekim Kılavuzları
Adımlar
- Önkoşul: Azure Active Directory'de Bir Uygulama Kaydedin. Dynamics 365 API'ye bağlanmadan önce, Azure AD kiracınızda bir uygulama kaydetmeniz gerekir. Bu uygulamaya, örneğin
Financials.ReadWrite.Allveya özel bir izin olmak üzere Dynamics 365 Finance & Operations'a erişmek için temsilci izinleri verin. - Dynamics 365'te Uygulama Kimliğini Yapılandırın. Dynamics 365'te, Sistem yönetimi > Kurulum > Azure Active Directory uygulamaları yolunu izleyin. Azure AD uygulama kaydınızdaki Uygulama (istemci) Kimliğini ekleyin ve bunu, gerekli veri varlıklarını okumak için gerekli güvenlik rollerine sahip bir kullanıcı hesabıyla ilişkilendirin.
- Bir OAuth 2.0 Erişim Belirteci Edinin. Microsoft kimlik platformu uç noktasına karşı kimlik doğrulaması yapmak için örneğin PowerShell veya Python'da bir betik yazın. Dynamics 365 kaynak URL'si için bir erişim belirteci istemek üzere uygulamanın kimlik bilgilerini (istemci kimliği ve gizli anahtar) kullanın.
- Dynamics 365 Ortam URL'nizi Belirleyin. Dynamics 365 ortamınızın temel URL'sini bulun. Web API uç noktası tipik olarak şöyle görünecektir:
https://[Dynamics365FinansVeOperasyonURL'niz].dynamics.com/data. - OData API İstekleri Oluşturun ve Yürütün. Gerekli 12 faaliyetin her biri için belirli bir OData GET istek URL'si oluşturun. Yalnızca gerekli sütunları almak için
$selectve tarih aralığını ve herhangi bir durum koşulunu belirtmek için$filterkullanın. 3. adımda elde edilen kimlik doğrulama belirteci, her isteğin yetkilendirme başlığında bir Taşıyıcı belirteci olarak dahil edilmelidir. - Bir Çıkarma Betiği Geliştirin. OData istekleri listesi üzerinde yineleyen bir betik oluşturun. Bu betik, kimlik doğrulamasını işlemeli, her GET isteğini yürütmeli ve sonuçta elde edilen JSON verilerini saklamalıdır. API limitlerine dikkat edin ve gerekirse duraklamalar uygulayın.
- API Sayfalama İşlemini Yönetin. Dynamics 365 büyük sonuçları sayfalar. Betiğiniz, yanıtta bir
@odata.nextLinközelliği olup olmadığını kontrol etmelidir. Eğer varsa, betiğinizin verilerin bir sonraki sayfasını almak için bu URL'ye bir sonraki isteği yapması gerekir ve hiçbirnextLinksağlanana kadar devam etmelidir. - Veriyi Dönüştürün ve Birleştirin. 12 API çağrısının her birinden gelen JSON yanıtını işleyin. Her faaliyet için
ReturnCaseId,ActivityName,EventTimeve diğer öznitelikleri içeren standartlaştırılmış bir kayıt oluşturun. Örneğin, 'İade Siparişi Oluşturuldu' olayı içinReturnOrderNumber'ıReturnCaseId'ye eşleyin,ActivityName'i 'İade Siparişi Oluşturuldu' olarak ayarlayın vecreatedDateTime'ıEventTime'a eşleyin. Dönüştürülen kayıtları tüm çağrılardan tek bir liste veya tabloda birleştirin. - Zaman Damgalarını Temizleyin ve Standartlaştırın. Tüm
EventTimedeğerlerinin tutarlı bir formatta, tercihenYYYY-AA-GGTHH:DD:SSZgibi bir formatla UTC olarak olduğundan emin olun. Eksik veya geçersiz zaman damgalarına sahip kayıtları gerektiği gibi ele alın. - Son Olay Günlüğünü Dışa Aktarın. Tüm veriler toplandıktan ve tek bir birleşik veri kümesine dönüştürüldükten sonra, bunu bir CSV dosyasına dışa aktarın. Sütun başlıklarının ProcessMind gereksinimleriyle eşleştiğinden emin olun:
ReturnCaseId,ActivityName,EventTime,ResponsibleUser,DispositionCodevb. Dosya artık yüklenmeye hazırdır.
Konfigürasyon
- API Endpoint URL: Dynamics 365 Finance & Operations örneğinizin temel URL'sidir.
https://[OrtamAdınız].dynamics.com/dataformatını izler. - Azure AD Uygulaması: Azure AD'de bir istemci kimliği ve gizli anahtar ile bir uygulama kaydedilmiş olmalıdır. Dynamics 365 veri varlıklarına erişmek için API izinleri gerektirir.
- Tarih Aralığı Filtrelemesi: Her API çağrısında,
createdDateTimeveyamodifiedDateTimegibi ilgili bir tarih alanında OData$filterparametresini kullanarak bir tarih aralığı filtresi uygulamak kritik öneme sahiptir. Çıkarma işlemini yönetilebilir tutmak için tipik bir başlangıç aralığı, son 3 ila 6 aylık veridir. - Şirket Filtresi: Belirli bir tüzel kişilik için veri çıkarmak amacıyla,
cross-company=truesorgu parametresini ekleyin ve ardındandataAreaIdalanı üzerinde$filterkullanın. Örneğin,?cross-company=true&$filter=dataAreaId eq '[ŞirketKodunuz]'. - Sayfalama Tercihi: İsteklerinizde, sayfa başına döndürülen kayıt sayısını kontrol etmek için
Prefer: odata.maxpagesize=[değer]başlığını kullanın.1000ila5000arası bir değer yaygındır. Bu, büyük varlıklarda API zaman aşımlarını önlemeye yardımcı olur. - API Kısıtlaması: Dynamics 365 API hizmet koruma limitlerinin farkında olun. Çıkarma betiği,
429 (Çok Fazla İstek)yanıtlarını işlemek için genellikle üstel geri çekilme veya basit bir duraklatma ve yeniden deneme mekanizması uygulayarak bir mantık içermelidir.
a Örnek Sorgu graphql
/*
This is a conceptual guide representing multiple, distinct OData API calls.
You will need a script (e.g., Python, PowerShell) to execute these calls sequentially,
authenticate with a bearer token, handle pagination, and union the results into a single file.
Replace [YourD365URL], [StartDate], [EndDate], and [YourCompanyCode] with your specific values.
*/
// Base URL for all requests
const string BaseUrl = "https://[YourD365URL].dynamics.com/data";
const string CompanyFilter = "?cross-company=true&$filter=dataAreaId eq '[YourCompanyCode]' and ";
const string DateFilterCreated = "createdDateTime ge [StartDate]T00:00:00Z and createdDateTime le [EndDate]T23:59:59Z";
const string DateFilterModified = "modifiedDateTime ge [StartDate]T00:00:00Z and modifiedDateTime le [EndDate]T23:59:59Z";
// 1. Return Order Created
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}{DateFilterCreated}&$select=ReturnOrderNumber,createdDateTime,createdby,ReturnReasonCodeId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser, ReturnReasonCodeId -> ReturnReasonCode
// 2. Return Order Confirmed
// This often updates the header status. We look for a modification time on confirmed orders.
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Confirmed' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby,ReturnReasonCodeId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Confirmed' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 3. Arrival Journal Created
GET {BaseUrl}/WarehouseArrivalJournalHeaders{CompanyFilter}{DateFilterCreated}&$expand=WarehouseArrivalJournalLines($select=InventTransactionId)&$select=JournalNumber,createdDateTime,createdby
// Note: This requires post-processing to link JournalNumber to a ReturnCaseId via InventTransactionId.
// Mapping: Link via InventTrans -> ReturnCaseId, 'Arrival Journal Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 4. Item Received (Arrival Journal Posted)
GET {BaseUrl}/WarehouseArrivalJournalHeaders{CompanyFilter}JournalPosted eq 'Yes' and {DateFilterModified}&$expand=WarehouseArrivalJournalLines($select=InventTransactionId)&$select=JournalNumber,modifiedDateTime,modifiedby
// Mapping: Link via InventTrans -> ReturnCaseId, 'Item Received' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 5. Quality Order Generated
GET {BaseUrl}/InventQualityOrders{CompanyFilter}{DateFilterCreated}&$select=QualityOrderId,InventTransId,createdDateTime,CreatedByUserId,ItemId
// Mapping: Link via InventTransId -> ReturnCaseId, 'Quality Order Generated' -> ActivityName, createdDateTime -> EventTime, CreatedByUserId -> ResponsibleUser, ItemId -> ProductId
// 6. Disposition Code Applied
// This is a status change on the return line.
GET {BaseUrl}/ReturnOrderLines{CompanyFilter}ReturnDispositionCodeId ne '' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby,ReturnDispositionCodeId,ItemId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Disposition Code Applied' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser, ReturnDispositionCodeId -> DispositionCode, ItemId -> ProductId
// 7. Credit Note Created
// Look for sales orders with type 'Returned Order' that are not yet invoiced.
GET {BaseUrl}/SalesOrderHeadersV2{CompanyFilter}SalesOrderProcessingStatus eq 'Open' and SalesOrderType eq 'ReturnedOrder' and {DateFilterCreated}&$select=SalesOrderNumber,createdDateTime,createdby
// Mapping: SalesOrderNumber -> ReturnCaseId, 'Credit Note Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 8. Credit Note Posted
// Look for posted invoice journals linked to a return order.
GET {BaseUrl}/SalesInvoiceJournalHeaders{CompanyFilter}SalesOrderType eq 'ReturnedOrder' and {DateFilterCreated}&$select=SalesOrderNumber,InvoiceDate,createdby
// Mapping: SalesOrderNumber -> ReturnCaseId, 'Credit Note Posted' -> ActivityName, InvoiceDate -> EventTime, createdby -> ResponsibleUser
// 9. Replacement Order Created
// Disposition code on the return line triggers a replacement order.
GET {BaseUrl}/SalesOrderHeadersV2{CompanyFilter}SalesOrderOriginType eq 'ReturnOrder' and {DateFilterCreated}&$select=SalesOrderNumber,createdDateTime,createdby,ReturnOrderNumber
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Replacement Order Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 10. Replacement Item Shipped
// Check for posted packing slips related to the replacement sales order.
GET {BaseUrl}/SalesPackingSlipJournals{CompanyFilter}{DateFilterCreated}&$select=SalesOrderNumber,DeliveryDate,createdby
// Note: This requires linking SalesOrderNumber back to the original ReturnOrderNumber for the ReturnCaseId.
// Mapping: Link SalesOrderNumber -> ReturnCaseId, 'Replacement Item Shipped' -> ActivityName, DeliveryDate -> EventTime, createdby -> ResponsibleUser
// 11. Return Order Closed
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Closed' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Closed' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 12. Return Order Cancelled
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Canceled' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Cancelled' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser Adımlar
- TDS Uç Noktasını Etkinleştirin: Dynamics 365 Dataverse ortamınız için Tabular Data Stream (TDS) uç noktasının etkinleştirildiğinden emin olun. Bir sistem yöneticisi bunu Power Platform yönetim merkezinde Ortam > Ayarlar > Özellikler altında etkinleştirebilir.
- Ortam URL'sini Belirleyin: Ortam URL'nizi bulun. Genellikle
kuruluşunuz.crm.dynamics.comgibi görünür. TDS uç noktası sunucu adı, örneğinkuruluşunuz.crm.dynamics.com,5558gibi 5558 portu ile bu URL olacaktır. - Bir SQL İstemcisi ile Bağlanın: SQL Server Management Studio (SSMS) veya Azure Data Studio gibi TDS'yi destekleyen bir SQL istemcisi kullanın.
- Kimlik Doğrulama: Dataverse ortamında uygun izinlere sahip, tipik olarak Sistem Yöneticisi veya Sistem Özelleştirici olan Azure Active Directory hesabınızı kullanarak sunucuya bağlanın.
- Sorguyu Hazırlayın: Bu belgenin
sorgubölümünde sağlanan tam SQL sorgusunu SQL istemcinizde yeni bir sorgu penceresine kopyalayın. - Parametreleri Ayarlayın: Sorgudaki yer tutucuları bulun.
'{BaşlangıçTarihi}'ve'{BitişTarihi}'değerlerini, örneğin'2023-01-01've'2023-12-31'gibi, çıkarma için istenen tarih aralığıyla değiştirin. Ayrıca, durum kodları veya tasfiye kodları için yer tutucu değerlerini özel Dynamics 365 yapılandırmanıza uyacak şekilde güncelleyin. - Sorguyu Çalıştırın: Değiştirilen sorguyu Dataverse veritabanına karşı çalıştırın. Yürütme süresi, veri hacmine ve seçilen tarih aralığına bağlı olarak değişecektir.
- Sonuçları İnceleyin: Sorgu tamamlandıktan sonra, döndürülen veri kümesinin beklenen sütunları içerdiğinden emin olmak için inceleyin:
ReturnCaseId,ActivityName,EventTimeve önerilen öznitelikler. - Olay Günlüğünü Dışa Aktarın: Sorgu sonuçlarını bir CSV dosyasına dışa aktarın. Çoğu SQL istemcisinde sonuçları doğrudan bir dosyaya kaydetmek için yerleşik bir işlev bulunur. Dosyanın UTF-8 kodlamasıyla kaydedildiğinden emin olun.
- ProcessMind'e Yükleyin: Dışa aktarılan CSV dosyası artık process mining analizi için ProcessMind'e yeni bir olay günlüğü olarak yüklenmeye hazırdır.
Konfigürasyon
- Önkoşullar: İlgili Dataverse tablolarına (örn. SalesTable, SalesLine, CustInvoiceJour) en az okuma erişimi olan bir kullanıcı hesabınız olmalıdır. İzinler genellikle Sistem Yöneticisi gibi güvenlik rolleri veya yeterli tablo izinlerine sahip özel bir rol aracılığıyla yönetilir.
- TDS Uç Noktası: Dataverse TDS uç noktasının ortam için etkinleştirilmesi gerekir. Bu özellik, Dataverse veritabanına karşı doğrudan, salt okunur SQL sorgularına olanak tanır.
- Tarih Aralığı: Sorgu,
'{BaşlangıçTarihi}'ve'{BitişTarihi}'yer tutucularını içerir. İlk analiz için, performans sorunlarına neden olmadan temsili bir veri kümesi sağlamak üzere 3 ila 6 aylık bir tarih aralığı önerilir. - Şirket Filtresi: Yazıldığı şekliyle sorgu, kullanıcının erişebildiği tüm tüzel kişilikler (şirketler) üzerinde çalışacaktır. Tek bir şirket analizi için,
UNION ALLifadesinin her bölümündeDATAAREAIDalanında filtreleme yapan birWHEREyan cümlesini yorumdan çıkarın ve ekleyin, örneğinAND st.DATAAREAID = '[ŞirketKimliğiniz]'. - Özel Mantık Yer Tutucuları: Sorgu, tasfiye kodları ve yedek siparişleri bağlama notları için
[DeğişimKodunuz1]gibi yer tutucuları içerir. Bunlar, özel iş sürecinize ve Dynamics 365 kurulumunuza göre yapılandırılmalıdır. - Performans: Büyük veri kümeleri için TDS uç noktasına karşı doğrudan sorgular yavaş olabilir. Bağlantı analitik sorgular için optimize edilmiştir, ancak milyonlarca satır üzerindeki karmaşık birleştirmeler zaman aşımına uğrayabilir. Katı tarih filtreleri uygulanması önerilir.
a Örnek Sorgu sql
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Created' AS ActivityName,
st.CREATEDDATETIME AS EventTime,
st.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Confirmed' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.DOCUMENTSTATUS = 1 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Arrival Journal Created' AS ActivityName,
wjt.CREATEDDATETIME AS EventTime,
wjt.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN WMSJOURNALTABLE wjt ON st.SALESID = wjt.ORDERID AND st.DATAAREAID = wjt.DATAAREAID
WHERE st.SALESTYPE = 3 AND wjt.JOURNALTYPE = 4 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Item Received' AS ActivityName,
wjt.POSTEDDATETIME AS EventTime,
wjt.POSTEDUSERID AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN WMSJOURNALTABLE wjt ON st.SALESID = wjt.ORDERID AND st.DATAAREAID = wjt.DATAAREAID
WHERE st.SALESTYPE = 3 AND wjt.JOURNALTYPE = 4 AND wjt.POSTEDDATETIME IS NOT NULL AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Quality Order Generated' AS ActivityName,
iqot.CREATEDDATETIME AS EventTime,
iqot.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
iqot.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN INVENTQUALITYORDERTABLE iqot ON sl.INVENTTRANSID = iqot.INVENTTRANSID AND sl.DATAAREAID = iqot.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Disposition Code Applied' AS ActivityName,
iqot.VALIDATEDDATETIME AS EventTime,
iqot.VALIDATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
iqot.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN INVENTQUALITYORDERTABLE iqot ON sl.INVENTTRANSID = iqot.INVENTTRANSID AND sl.DATAAREAID = iqot.DATAAREAID
WHERE st.SALESTYPE = 3 AND iqot.VALIDATEDDATETIME IS NOT NULL AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Credit Note Created' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Credit Note Posted' AS ActivityName,
cij.CREATEDDATETIME AS EventTime,
cij.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN CUSTINVOICEJOUR cij ON st.SALESID = cij.SALESID AND st.DATAAREAID = cij.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
ro.RETURNITEMNUM AS ReturnCaseId,
'Replacement Order Created' AS ActivityName,
replacement_so.CREATEDDATETIME AS EventTime,
replacement_so.CREATEDBY AS ResponsibleUser,
NULL AS DispositionCode,
NULL AS ReturnReasonCode,
replacement_so.SALESORIGINID AS ReturnChannel,
replacement_sl.ITEMID AS ProductId
FROM SALESTABLE ro
JOIN SALESLINE rol ON ro.SALESID = rol.SALESID AND ro.DATAAREAID = rol.DATAAREAID
JOIN SALESTABLE replacement_so ON ro.CUSTACCOUNT = replacement_so.CUSTACCOUNT AND ro.DATAAREAID = replacement_so.DATAAREAID
JOIN SALESLINE replacement_sl ON replacement_so.SALESID = replacement_sl.SALESID AND replacement_so.DATAAREAID = replacement_sl.DATAAREAID
WHERE ro.SALESTYPE = 3
AND rol.RETURNDISPOSITIONCODEID IN ('[YourReplaceCode1]', '[YourReplaceCode2]')
AND replacement_so.SALESTYPE = 1
AND replacement_so.CREATEDDATETIME > ro.CREATEDDATETIME
-- The join above is a basic example and must be replaced with your system's specific logic for linking returns to replacements.
AND ro.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
ro.RETURNITEMNUM AS ReturnCaseId,
'Replacement Item Shipped' AS ActivityName,
cpsj.CREATEDDATETIME AS EventTime,
cpsj.CREATEDBY AS ResponsibleUser,
NULL AS DispositionCode,
NULL AS ReturnReasonCode,
replacement_so.SALESORIGINID AS ReturnChannel,
cpsl.ITEMID AS ProductId
FROM SALESTABLE ro
JOIN SALESLINE rol ON ro.SALESID = rol.SALESID AND ro.DATAAREAID = rol.DATAAREAID
JOIN SALESTABLE replacement_so ON ro.CUSTACCOUNT = replacement_so.CUSTACCOUNT AND ro.DATAAREAID = replacement_so.DATAAREAID
JOIN CUSTPACKINGSLIPJOUR cpsj ON replacement_so.SALESID = cpsj.SALESID AND replacement_so.DATAAREAID = cpsj.DATAAREAID
JOIN CUSTPACKINGSLIPTRANS cpsl ON cpsj.PACKINGSLIPID = cpsl.PACKINGSLIPID AND cpsj.SALESID = cpsl.SALESID AND cpsj.DATAAREAID = cpsl.DATAAREAID
WHERE ro.SALESTYPE = 3
AND rol.RETURNDISPOSITIONCODEID IN ('[YourReplaceCode1]', '[YourReplaceCode2]')
AND replacement_so.SALESTYPE = 1
AND replacement_so.CREATEDDATETIME > ro.CREATEDDATETIME
-- The join above is a basic example and must be replaced with your system's specific logic for linking returns to replacements.
AND ro.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Closed' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Cancelled' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 4 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}';