Hesaplar Ödeneği Ödeme İşleme Veri Şablonunuz
Hesaplar Ödeneği Ödeme İşleme Veri Şablonunuz
- Finansal analiz için sürece özel nitelikler
- Ödeme takibi için kritik aktivite kilometre taşları
- Dynamics 365 için detaylı veri çıkarma talimatları
Borç Hesapları Ödeme Süreci Nitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Aktivite Activity | Gerçekleşen belirli görev veya durum değişikliği. | ||
| Açıklama Bu öznitelik, süreçte gerçekleştirilen 'Fatura Oluşturuldu', 'Fatura Onaylandı' veya 'Ödeme İşlendi' gibi olayı veya adımı tanımlar. Teknik işlem türlerini ve Dynamics 365'te bu aktiviteler genellikle tablo eklemelerinin (örn. Neden önemli Süreç haritası için süreç akışını ve event'lerin dizisini tanımlar. Nereden alınır Çeşitli işlem tablolarından ve workflow geçmiş günlüklerinden türetilir. Örnekler Fatura OluşturulduFatura OnaylandıÖdeme Oluşturuldu | |||
| Fatura Numarası InvoiceNumber | Tedarikçi faturasına atanan benzersiz tanımlayıcı. | ||
| Açıklama Fatura Numarası, bu süreç görünümü için kesin vaka tanımlayıcısı olarak hizmet eder. Tek bir tedarikçi faturasına ait tüm olayları benzersiz bir şekilde gruplayarak, alımdan ödemeye kadar olan yolculuğunun kapsamlı bir analizine olanak tanır. Microsoft Dynamics 365'te bu, genellikle Neden önemli Ayrık AP activity'lerini tek bir process instance'ına bağlamak için fundamental key'dir. Nereden alınır Tablo: VendInvoiceJour, Alan: InvoiceId Örnekler INV-2023-00198223344ACME-OCT-22 | |||
| Olay Zamanı EventTime | Aktivitenin gerçekleştiği zaman damgası. | ||
| Açıklama Bu öznitelik, belirli bir aktivitenin gerçekleştiği tam tarihi ve saati kaydeder. Olayları kronolojik olarak sıralamak ve adımlar arasındaki süreleri hesaplamak için kullanılır. Dynamics 365 için bu genellikle sorgulanan tabloya bağlı olarak Neden önemli Döngü sürelerini, sağlama sürelerini hesaplamak ve darboğazları belirlemek için esastır. Nereden alınır İşlem tablolarındaki sistem alanları CreatedDateTime veya ModifiedDateTime Örnekler 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Kaynak Sistem SourceSystem | Verinin kaynaklandığı sistemin adı. | ||
| Açıklama Süreç verilerinin çıkarıldığı kaynak yazılımı veya ortamı tanımlar. Bu bağlamda, sürekli olarak Microsoft Dynamics 365 örneğini gösterecektir. Bu, özellikle datanın ERP'lerden ve harici scanning solution'lardan harmanlanabileceği multi-system landscape'lerde kullanışlıdır. Neden önemli Çoklu sistem analizlerinde veri kökeni ve izlenebilirlik sağlar. Nereden alınır Çıkarma sırasında kodlanmış veya yapılandırılmış Örnekler Dynamics 365 F&OD365 PRODMicrosoft Dynamics | |||
| Son Veri Güncellemesi LastDataUpdate | Verinin çıkarıldığı veya yenilendiği zaman damgası. | ||
| Açıklama Analiz için kullanılan datanın güncelliğini gösterir. Kullanıcıların real-time data'ya mı yoksa önceki bir döneme ait bir snapshot'a mı baktıklarını anlamalarına yardımcı olur. Bu, genellikle Dynamics 365'in kendi içinde bir field olmaktan ziyade ETL (Extract, Transform, Load) süreci tarafından oluşturulur. Neden önemli Dashboard'lara ve KPI'lara güvenin tesis edilmesi için kritiktir. Nereden alınır Çıkarma scripti tarafından oluşturuldu Örnekler 2023-10-25T12:00:00Z2023-11-01T06:00:00Z | |||
| Bölüm Department | Maliyetten sorumlu departman. | ||
| Açıklama Dahili departmanı gösteren finansal boyut. Dynamics 365'te boyutlar dinamik olarak (genellikle Bu öznitelik, 'Tedarikçi İlişkisi Karmaşıklığı Görünümü'nde hangi dahili departmanların en fazla AP hacmi oluşturduğunu görmek için kullanılır. Neden önemli Kurumsal detaylı inceleme ve hesap verebilirlik analizine olanak tanır. Nereden alınır Tablo: VendInvoiceJour, Alan: DefaultDimension (DimensionAttributeLevelValue görünümü gerektirir) Örnekler BTFinansOperasyonlar | |||
| Fatura Tarihi InvoiceDate | Faturada belirtilen belge tarihi. | ||
| Açıklama Tedarikçi faturasında basılı tarih. Dynamics 365'te bu, Tedarikçi perspektifinden toplam yaşam döngüsünü ölçmek için 'Uçtan Uca Süre Analizi'nde kullanılır. Neden önemli Fatura için yaşlandırma süresinin başlangıcını tanımlar. Nereden alınır Tablo: VendInvoiceJour, Alan: InvoiceDate Örnekler 2023-10-012023-10-15 | |||
| Fatura Tutarı InvoiceAmount | Faturanın toplam tutarıdır. | ||
| Açıklama Faturanın işlem para birimindeki toplam değeri. Dynamics 365'te bu, fatura kayıt tablolarında Tutarları tedarikçi detaylarıyla ilişkilendirmek için 'Yinelenen Ödeme Riski Tespiti' Neden önemli Harcama hacmini ve finansal riski analiz etmek için kritiktir. Nereden alınır Tablo: VendInvoiceJour, Alan: InvoiceAmount Örnekler 1500.00245.5010000.00 | |||
| Purchase Order Number PurchaseOrderNumber | İlişkili satın alma siparişinin referans numarası. | ||
| Açıklama Faturayı orijinal purchasing document'e bağlar. Dynamics 365'te bu, Bu attribute, PO-backed invoice'lar ile non-PO invoice'lar arasında ayrım yaparak 'PO Match and Discrepancy Trends' dashboard'unu destekler. Neden önemli Procure-to-pay eşleştirme oranını analiz etmek için esastır. Nereden alınır Tablo: VendInvoiceJour, Alan: PurchId Örnekler PO-000455000342PO-22-998 | |||
| Şirket Kodu CompanyCode | Yasal varlık veya bağlı kuruluş tanımlayıcısı. | ||
| Açıklama Faturanın işlendiği kuruluş içindeki yasal varlığı temsil eder. Microsoft Dynamics 365'te bu, Bu öznitelik, farklı bağlı kuruluşlar veya coğrafi birimler arasında karşılaştırmalar yapılmasını sağlayan 'Uçtan Uca Süre Analizi' için çok önemlidir. Neden önemli Farklı iş birimleri veya ülkeler arasında karşılaştırmalı analize olanak tanır. Nereden alınır Tablo: VendInvoiceJour, Alan: DataAreaId Örnekler USMFDEMFGBSI | |||
| Tedarikçi Adı VendorName | Tedarikçi kuruluşunun adı. | ||
| Açıklama Tedarikçinin açıklayıcı adı. D365'te tedarikçi hesabı, gerçek İnsan tarafından okunabilir adlar sağlamak, 'Tedarikçi İlişkisi Karmaşıklığı Görünümü'nü kolaylaştırır ve Neden önemli Tedarikçi Hesap numarası için bağlam sağlar. Nereden alınır Tablo: DirPartyTable (VendTable aracılığıyla), Alan: Name Örnekler Contoso Office SupplyFabrikam ElectronicsLitware Inc. | |||
| Tedarikçi Hesabı VendorAccount | Tedarikçi için benzersiz hesap numarası. | ||
| Açıklama İşlemde yer alan tedarikçi için benzersiz tanımlayıcı. Dynamics 365'te bu, Bu öznitelik, 'Tedarikçi İlişkisi Karmaşıklığı Görünümü' için merkezi olup, belirli tedarikçi ilişkisi başına performans ve sürtünme analizine olanak tanır. Neden önemli Süreç performansının tedarikçiye göre segmentasyonunu sağlar. Nereden alınır Tablo: VendInvoiceJour, Alan: InvoiceAccount veya OrderAccount Örnekler US-101V000452001 | |||
| User ID UserId | Aktiviteyi gerçekleştiren kullanıcının tanımlayıcısı. | ||
| Açıklama Bir faturayı onaylamak veya ödeme kaydetmek gibi belirli bir activity'den sorumlu sistem kullanıcısını tanımlar. D365'teki 'Payment Block and Friction Analysis' raporunda belirli işlemcilerin diğerlerinden daha fazla block tetikleyip tetiklemediğini görmek için kullanılır. Neden önemli Kaynak davranışlarının ve görevler ayrımının analiz edilmesini sağlar. Nereden alınır İşlem/geçmiş tablolarındaki sistem alanları CreatedBy/ModifiedBy Örnekler jdoeadminworkflow_sys | |||
| Vade Tarihi DueDate | Faturanın ödenmesi gereken tarih. | ||
| Açıklama Cezalardan kaçınmak için ödemenin yapılması gereken sözleşmeli tarih. Dynamics 365'te bu, fatura başlığında veya işlem kaydında 'Zamanında Ödeme Oranı' Neden önemli Zamanında ödeme performansını ölçmek için referans noktası. Nereden alınır Tablo: VendInvoiceJour veya VendTrans, Alan: DueDate Örnekler 2023-11-302023-12-15 | |||
| Belge Numarası VoucherNumber | İşlemle ilişkili defter fiş numarası. | ||
| Açıklama Muhasebe girişi için dahili Genel Muhasebe tanımlayıcısı. Dynamics 365'te Teknik olsa da, kayıtları mutabakat için Genel Muhasebe'ye geri izlemek amacıyla 'Süreç Yolu ve Uyumluluk Denetimi' için faydalıdır. Neden önemli Finansal denetim ve mutabakat için anahtar. Nereden alınır Tablo: VendInvoiceJour, Alan: LedgerVoucher Örnekler VOU-10023INV-ACC-992 | |||
| Nakit İskonto Tarihi CashDiscountDate | İndirim almak için ödemenin yapılması gereken tarih. | ||
| Açıklama Erken ödeme teşviklerini yakalamak için son tarih. Dynamics 365'te bu, Bu öznitelik, 'Nakit İndirim Yakalama Performansı' Neden önemli Sürecin finansal verimlilik KPI'ını doğrudan etkiler. Nereden alınır Tablo: VendInvoiceJour veya VendTrans, Alan: CashDiscDate Örnekler 2023-10-102023-10-20 | |||
| Ödeme Bloke Edildi mi IsPaymentBlocked | Faturanın şu anda ödeme için bloke edilip edilmediğini gösteren işaret. | ||
| Açıklama Faturanın bekletilip bekletilmediğini belirten bir boolean göstergedir. Dynamics 365'te bu, genellikle Neden önemli Anlık sürtünme noktalarını ve manuel müdahaleleri belirler. Nereden alınır Tablo: VendTrans, Alan: Approved (tersine çevrilmiş) veya özel Hold alanları Örnekler truefalse | |||
| Ödeme Vadeleri PaymentTerms | Kabul edilen ödeme koşullarını temsil eden kod. | ||
| Açıklama Son ödeme tarihlerini ve indirimleri (örn. Net30) belirleyen yapılandırma kodu. Dynamics 365'te bu, Süreç gecikmelerinin kabul edilen şartları ihlal edip etmediğini görmek için 'Döngü Süresi' ile birlikte analiz edilir. Neden önemli Son Ödeme Tarihi hesaplaması için bağlam sağlar. Nereden alınır Tablo: VendInvoiceJour, Alan: PaymTermId Örnekler Net302%10Net30COD | |||
| Ödeme Yöntemi PaymentMethod | Faturayı ödemek için kullanılan yöntem (örn. Çek, Havale, EFT). | ||
| Açıklama Fonların tedarikçiye nasıl aktarıldığını tanımlar. Dynamics 365'te bu, Bu nitelik, farklı ödeme toplu iş türlerinin verimliliğini değerlendirmek için 'Payment Execution Lead Times' dashboard'unda kullanılır. Neden önemli Ödeme gerçekleştirme aşamasındaki varyasyonları açıklar. Nereden alınır Tablo: VendInvoiceJour (PaymMode bilgisine birleştirildi) veya VendTrans Örnekler CHECKACHHAVALE | |||
| Para Birimi Currency | Faturanın para birimi kodu. | ||
| Açıklama Faturanın düzenlendiği para biriminin ISO kodu. Dynamics 365'te bu, Çoklu para birimi normalleştirmesi gerekliyse, 'Aktivite Tutarı' eşlemesindeki tutarları standartlaştırmak için önemlidir. Neden önemli Finansal değerleri yorumlamak için gerekli bağlam. Nereden alınır Tablo: VendInvoiceJour, Alan: CurrencyCode Örnekler USDEURGBP | |||
Borç Hesapları Ödeme Süreci Aktiviteleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Fatura Muhasebeleştirildi | Fatura Genel Muhasebe'ye işlenir ve sistemde bir yükümlülük oluşturur. Kayıt, bekleyen tablolardan işlenmiş işlem tablolarına taşınır. | ||
| Neden önemli Borcun finansal olarak tanındığını gösteren önemli bir kilometre taşıdır. Bu aktivite, faturanın ödeme için seçilmesini sağlar. Nereden alınır VendInvoiceJour ve VendTrans tablolarında kayıt oluşturma. TransDate, kayıt tarihini temsil eder. Yakala X işlemi yürütüldüğünde kaydedildi Event tipi explicit | |||
| Fatura Oluşturuldu | Sistemde bekleyen tedarikçi fatura kaydının ilk oluşturulması. Bu, faturanın Dynamics 365 `workflow`'una manuel olarak veya veri varlığı içe aktarımı yoluyla girişini işaretler. | ||
| Neden önemli Süreç sağlama süresi hesaplamaları için başlangıç zamanını belirler. Kuruluşların, faturaların işlenmeden veya kaydedilmeden önce sistemde ne kadar süre kaldığını ölçmelerini sağlar. Nereden alınır VendInvoiceInfoTable.CreatedDateTime veya VendInvoiceInfoTable.RecId oluşturma zaman damgası. Bu, Bekleyen Tedarikçi Faturası başlığını temsil eder. Yakala VendInvoiceInfoTable tablosunda kayıt oluşturulduğunda günlüğe kaydedilir. Event tipi explicit | |||
| Fatura Onaylandı | Bekleyen fatura için `workflow` örneği tamamlandı veya onaylandı durumuna ulaşır. Fatura artık deftere işlenmeye hazırdır. | ||
| Neden önemli Ortalama Onay Sağlama Süresi'ni hesaplar. Buradaki gecikmeler, erken ödeme indirimlerini yakalama yeteneğini doğrudan etkiler. Nereden alınır TrackingStatus'un Completed olduğu WorkflowTrackingStatusTable.CreatedDateTime. Alternatif olarak, VendInvoiceInfoTable.RequestStatus Approved'a eşittir. Yakala Workflow instance tamamlandığında loglanır. Event tipi explicit | |||
| Fatura Satın Alma Siparişi ile Eşleştirildi | Sistem, fatura satırını bir Satın Alma Siparişi veya Ürün Makbuzuna başarıyla bağlar. Bu aktivite, faturanın tedarik siparişine karşı doğrulanmasını ifade eder. | ||
| Neden önemli İlk Geçiş Satın Alma Siparişi Eşleştirme Oranı KPI'ı için kritiktir. Temassız işlem ile manuel müdahale gerektiren faturalar arasında ayrım yapar. Nereden alınır VendInvoiceInfoLine.PurchId ve VendInvoiceInfoTable.MatchStatus. MatchStatus Passed olarak değiştiğinde çıkarım yapılır. Yakala MatchStatus alanını öncesi/sonrası ile karşılaştırın Event tipi inferred | |||
| Ödeme Kaydedildi | Ödeme Kaydı Genel Muhasebe'ye işlenir, faturayı kapatır ve tedarikçi bakiyesini temizler. Bu, finansal süreci tamamlar. | ||
| Neden önemli Ortalama Faturadan Ödemeye Döngü Süresi için son aktivite. Nakit azaltma muhasebe girişlerinin kesinleştiğini doğrular. Nereden alınır LedgerJournalTrans kaydedildi. VendTrans'ı settlement'ı göstermek için günceller. Asıl event, journal'ın post edilmesidir. Yakala X işlemi yürütüldüğünde kaydedildi Event tipi explicit | |||
| Ödeme Kaydı Oluşturuldu | Fatura seçilir ve bir Ödeme Kaydı satırına eklenir. Bu, ödeme niyetini gösterir ve genellikle ödeme inceleme `workflow`'unu başlatır. | ||
| Neden önemli Yükümlülükten nakit ödeme işlemine geçişi işaret eder. Ödeme Gerçekleştirme Sürelerini ölçmek için kullanılır. Nereden alınır LedgerJournalTrans.CreatedDateTime. Fatura, MarkedInvoice field'ı veya settlement table'ları aracılığıyla bağlanır. Yakala LedgerJournalTrans'ta record oluşturulduğunda loglanır. Event tipi explicit | |||
| Ödeme Oluşturuldu | Sistem ödeme dosyasını (EFT, ISO20022) oluşturur veya çekleri yazdırır. Kayıt satırındaki ödeme durumu Gönderildi veya Oluşturuldu olarak güncellenir. | ||
| Neden önemli Onaylandı-Gerçekleştirildi Gecikme Süresi Nereden alınır LedgerJournalTrans.PaymentStatus Sent/Recieved olarak değişir. Genellikle line'daki update'lerden çıkarılır. Yakala PaymentStatus alanını öncesi/sonrası ile karşılaştırın Event tipi inferred | |||
| Fatura Eşleştirme Başarısız Oldu | Eşleştirme süreci, fatura ile Satın Alma Siparişi/Makbuz arasında (fiyat veya miktar farkı) bir uyuşmazlık tespit eder. Bu durum genellikle çözülene kadar süreci durdurur. | ||
| Neden önemli Eşleştirme sürecindeki belirli sürtünme noktalarını belirler. PO Match ve Discrepancy Trends dashboard'unu destekler. Nereden alınır VendInvoiceInfoTable.MatchStatus Failed veya Discrepancy olarak değişir. Ayrıca VendInvoiceInfoLine eşleştirme varyanslarında da görünür. Yakala MatchStatus alanını öncesi/sonrası ile karşılaştırın Event tipi inferred | |||
| Fatura Güncellendi | Göndermeden önce fatura başlığında veya satırlarında yapılan değişiklikleri kaydeder. Sık güncellemeler, veri çıkarma sorunlarını veya doğrulama sırasında gereken manuel düzeltmeleri gösterebilir. | ||
| Neden önemli Yüksek güncelleme sıklığı, rework loop'larını veya kaynaktan (örn. OCR hataları) düşük veri kalitesini gösterir. Bu, Rework ve Data Accuracy Monitor'ü destekler. Nereden alınır Etkinse VendInvoiceInfoTable üzerindeki database log (SysDatabaseLog) veya polling frekansı yüksekse ModifiedDateTime değişikliklerinden çıkarılır. Yakala Sonraki veri çekimlerinde ModifiedDateTime değerlerini karşılaştırın Event tipi inferred | |||
| Fatura Onaya Sunuldu | Bekleyen fatura, inceleme için `workflow` motoruna gönderilir. Bu, veri girişi/eşleştirmeden yetkilendirme aşamasına geçişi işaret eder. | ||
| Neden önemli Onay döngüsü süresinin başlangıcını işaret eder. İç hiyerarşilerin verimliliğini analiz etmek için çok önemlidir. Nereden alınır ContextTableId'nin VendInvoiceInfoTable ID'ye eşit olduğu ve Durumun Submitted olduğu WorkflowTrackingStatusTable.CreatedDateTime. Yakala Workflow instance başlatıldığında loglanır. Event tipi explicit | |||
| Ödeme Blokesi Uygulandı | Satıcı işlemine, bir ödeme teklifinde seçilmesini engelleyen bir bekletme konulur. Bu, genellikle anlaşmazlıklar için manuel olarak yapılır. | ||
| Neden önemli Ödeme Blokesi ve Sürtünme Analizini destekler. Nakit çıkışını geciktiren manuel müdahaleleri ortaya çıkarır. Nereden alınır VendTrans.Approved bayrağı No olarak ayarlanır veya belirli OnHold durum alanları doldurulur. VendTrans'a yapılan güncellemelerin takibini gerektirir. Yakala Durum alanını öncesi/sonrası ile karşılaştırın Event tipi inferred | |||
| Ödeme Kaydı Onaylandı | Ödeme Kaydı `workflow`'u onaylanır ve ödemelerin oluşturulmasını yetkilendirir. Bu, fonların transfer için hazırlanmasından önceki son kontroldür. | ||
| Neden önemli Ödemelerin idari hazırlığını yetkilendirme Nereden alınır LedgerJournalTable (Başlık) ID'sine bağlanan WorkflowTrackingStatusTable. Durum Tamamlandı. Yakala Workflow instance tamamlandığında loglanır. Event tipi explicit | |||
Veri Çekim Kılavuzları
Adımlar
Veri Yönetimi Çalışma Alanına Erişin: Microsoft Dynamics 365 Finance ortamınızda oturum açın. Çalışma Alanları'na gidin ve Veri Yönetimi'ni seçin. Burası, veri dışa aktarma projelerini yapılandırmak için merkezi merkezdir.
Dışa Aktarma Projesi Oluşturun: Yeni bir veri projesi oluşturmak için Dışa Aktar kutucuğuna tıklayın. Projeye ProcessMining_AP_Export gibi net bir ad verin. Hedef veri formatı alanında hedef biçimi seçin (örneğin, BYOD için Azure SQL DB veya dosya tabanlı dışa aktarma için CSV).
Veri Varlıkları Ekleyin: Projeye şu standart veri varlıklarını tek tek ekleyin: VendorInvoiceHeaderEntity (bekleyen faturalar için), VendorInvoiceLineEntity (fatura satırları için), VendorInvoiceJournalHeaderEntity (kaydedilen faturalar için), VendorPaymentJournalLineEntity (ödemeler için) ve WorkflowHistoryEntity (onay günlükleri için). WorkflowHistoryEntity varsayılan olarak mevcut değilse, özel bir varlığı veya dışa aktarma için sunulan belirli bir sistem varlığını etkinleştirmeniz gerekebilir.
Varlık Filtrelerini Yapılandırın: Her varlık için Filtre simgesine tıklayın. Verileri ilgili CompanyInfo (DataAreaId) ile kısıtlamak için filtreler uygulayın ve yalnızca istenen analiz dönemi (örneğin, son 12 ay) için veri çekmek üzere CreatedDateTime veya InvoiceDate alanlarında bir tarih aralığı belirleyin.
Düzenli Dışa Aktarma Ayarlayın: Olay günlüğünün güncel kalmasını sağlamak için yinelenen bir veri işi oluşturun. Yinelenme sıklığını (örneğin, günlük veya saatlik) tanımlayın ve desteklenen yerlerde Artımlı Gönderimi (Incremental push) etkinleştirin. Bu, yalnızca değişen kayıtları dışa aktararak sistem yükünü azaltır.
İlk Dışa Aktarmayı Gerçekleştirin: Şimdi dışa aktar seçeneğine tıklayarak projeyi ilk kez manuel olarak çalıştırın. Tüm kayıtların hatasız bir şekilde başarıyla dışa aktarıldığından emin olmak için Yürütme özetini izleyin.
Verileri Dönüştürün: Veriler hedefinize (Azure SQL veya dosyalar) aktarıldıktan sonra, bu tabloları birleştirmek için Sorgu bölümünde sağlanan SQL betiğini kullanın. Bu dönüştürme mantığı, farklı varlık kayıtlarını tek ve kronolojik bir olay günlüğüne dönüştürür.
Öznitelikleri Eşleştirin: Sonuç veri setinin, Process Mining aracı gereksinimlerine göre InvoiceNumber'ı Case ID, EventTime'ı Zaman Damgası ve Activity'yi Etkinlik Adı olarak eşleştirdiğinden emin olun.
Doğrulayın ve Yükleyin: Veri doğruluğunu onaylamak için aşağıda listelenen doğrulama kontrollerini çalıştırın. Doğrulandıktan sonra nihai sonucu CSV veya Parquet dosyası olarak dışa aktarın ve ProcessMind'a yükleyin.
Konfigürasyon
- Varlık Seçimi: Kayıt öncesi işlem adımları için VendorInvoiceHeaderEntity ve VendorInvoiceLineEntity kullanın. Yasal ve kaydedilmiş belgeler için VendorInvoiceJournalHeaderEntity kullanın. Ödeme takibi için VendorPaymentJournalLineEntity kullanın.
- Artımlı Gönderim (Incremental Push): İlk tam yüklemeden sonra yalnızca yeni veya değiştirilmiş kayıtları dışa aktarmak için Veri Yönetimi projesinde bu ayarı etkinleştirin. Bu, performans için kritiktir.
- Tarih Aralıkları: InvoiceDate >= [Başlangıç Tarihi] şeklinde filtreleyin. Zaman aşımına neden olabilecek ucu açık dışa aktarmalardan kaçının.
- Şirket Filtresi: D365 çoklu tüzel kişiliğe sahip bir sistemdir. Şirketler arası analiz amaçlanmadıkça, farklı tüzel kişiliklerin verilerinin karışmasını önlemek için her zaman DataAreaId ile filtreleme yapın.
- İş Akışı Geçmişi: İş akışı geçmişi için standart varlıklar yoğun veri içerebilir. Veri hacmini yönetilebilir tutmak için yalnızca VendInvoice türleriyle ilgili geçmişi dışa aktardığınızdan emin olun.
a Örnek Sorgu config
/*
SQL Transformation Script for D365 Finance AP Process
Assumes data is loaded into Staging tables in a SQL environment (BYOD/Data Lake)
*/
SELECT
I.InvoiceNumber AS [InvoiceNumber],
'Invoice Created' AS [Activity],
I.CreatedDateTime AS [EventTime],
I.DataAreaId AS [CompanyCode],
I.InvoiceAccount AS [VendorAccount],
I.InvoiceAmount AS [InvoiceAmount],
I.CurrencyCode AS [Currency],
'D365 FO' AS [SourceSystem],
GETDATE() AS [LastDataUpdate]
FROM Staging_VendorInvoiceHeaderEntity I
UNION ALL
/* Capture updates to invoice headers */
SELECT
I.InvoiceNumber,
'Invoice Updated',
I.ModifiedDateTime,
I.DataAreaId,
I.InvoiceAccount,
I.InvoiceAmount,
I.CurrencyCode,
'D365 FO',
GETDATE()
FROM Staging_VendorInvoiceHeaderEntity I
WHERE I.ModifiedDateTime > I.CreatedDateTime
UNION ALL
/* Invoice Matching Activities */
SELECT
I.InvoiceNumber,
'Invoice Matched to PO',
I.ModifiedDateTime,
I.DataAreaId,
I.InvoiceAccount,
I.InvoiceAmount,
I.CurrencyCode,
'D365 FO',
GETDATE()
FROM Staging_VendorInvoiceHeaderEntity I
WHERE I.MatchStatus = 'Matched' -- Adjust value based on system config
UNION ALL
SELECT
I.InvoiceNumber,
'Invoice Match Failed',
I.ModifiedDateTime,
I.DataAreaId,
I.InvoiceAccount,
I.InvoiceAmount,
I.CurrencyCode,
'D365 FO',
GETDATE()
FROM Staging_VendorInvoiceHeaderEntity I
WHERE I.MatchStatus = 'Failed'
UNION ALL
/* Workflow Activities */
SELECT
RelatedContext AS InvoiceNumber,
CASE
WHEN Status = 'Submitted' THEN 'Invoice Submitted for Approval'
WHEN Status = 'Approved' THEN 'Invoice Approved'
ELSE 'Workflow Activity'
END AS [Activity],
CreatedDateTime AS [EventTime],
DataAreaId,
NULL AS [VendorAccount],
NULL AS [InvoiceAmount],
NULL AS [Currency],
'D365 FO',
GETDATE()
FROM Staging_WorkflowHistoryEntity
WHERE ContextTableId = 12345 -- Replace with TableId for VendInvoiceInfoTable
AND Status IN ('Submitted', 'Approved')
UNION ALL
/* Invoice Posted */
SELECT
J.InvoiceNumber,
'Invoice Posted',
J.PostedDateTime,
J.DataAreaId,
J.InvoiceAccount,
J.InvoiceAmount,
J.CurrencyCode,
'D365 FO',
GETDATE()
FROM Staging_VendorInvoiceJournalHeaderEntity J
UNION ALL
/* Payment Block */
SELECT
I.InvoiceNumber,
'Payment Block Applied',
I.ModifiedDateTime,
I.DataAreaId,
I.InvoiceAccount,
I.InvoiceAmount,
I.CurrencyCode,
'D365 FO',
GETDATE()
FROM Staging_VendorInvoiceJournalHeaderEntity I
WHERE I.OnHold = 'Yes'
UNION ALL
/* Payment Activities */
SELECT
J.InvoiceId AS [InvoiceNumber],
'Payment Journal Created' AS [Activity],
P.CreatedDateTime AS [EventTime],
P.DataAreaId,
P.AccountDisplayValue AS [VendorAccount],
P.DebitAmount AS [InvoiceAmount],
P.CurrencyCode,
'D365 FO',
GETDATE()
FROM Staging_VendorPaymentJournalLineEntity P
JOIN Staging_VendorInvoiceJournalHeaderEntity J ON P.InvoiceId = J.InvoiceNumber AND P.DataAreaId = J.DataAreaId
UNION ALL
SELECT
J.InvoiceId AS [InvoiceNumber],
'Payment Journal Approved' AS [Activity],
P.ModifiedDateTime AS [EventTime],
P.DataAreaId,
P.AccountDisplayValue,
P.DebitAmount,
P.CurrencyCode,
'D365 FO',
GETDATE()
FROM Staging_VendorPaymentJournalLineEntity P
JOIN Staging_VendorInvoiceJournalHeaderEntity J ON P.InvoiceId = J.InvoiceNumber AND P.DataAreaId = J.DataAreaId
WHERE P.PaymentStatus = 'Approved'
UNION ALL
SELECT
J.InvoiceId AS [InvoiceNumber],
'Payment Generated' AS [Activity],
P.ModifiedDateTime AS [EventTime],
P.DataAreaId,
P.AccountDisplayValue,
P.DebitAmount,
P.CurrencyCode,
'D365 FO',
GETDATE()
FROM Staging_VendorPaymentJournalLineEntity P
JOIN Staging_VendorInvoiceJournalHeaderEntity J ON P.InvoiceId = J.InvoiceNumber AND P.DataAreaId = J.DataAreaId
WHERE P.PaymentStatus = 'Sent'
UNION ALL
SELECT
J.InvoiceId AS [InvoiceNumber],
'Payment Posted' AS [Activity],
P.PostedDate AS [EventTime],
P.DataAreaId,
P.AccountDisplayValue,
P.DebitAmount,
P.CurrencyCode,
'D365 FO',
GETDATE()
FROM Staging_VendorPaymentJournalLineEntity P
JOIN Staging_VendorInvoiceJournalHeaderEntity J ON P.InvoiceId = J.InvoiceNumber AND P.DataAreaId = J.DataAreaId
WHERE P.IsPosted = 'Yes' Adımlar
BYOD Bağlantısını Doğrulayın: SQL Server Management Studio (SSMS) veya benzer bir aracın yüklü olduğundan ve Dynamics 365 Finance & Operations ortamınız için Bring Your Own Database (BYOD) hedefi olarak yapılandırılan Azure SQL Veritabanına bağlanabildiğinizden emin olun.
Varlık Dışa Aktarımını Onaylayın: Dynamics 365'te Veri Yönetimi çalışma alanına gidin. Şu varlıkların (veya bunlara dayanan tabloların) BYOD veritabanına aktarılmak üzere yapılandırıldığını doğrulayın:
VendInvoiceInfoTable(Bekleyen Faturalar),VendInvoiceInfoLine(Bekleyen Satırlar),VendInvoiceJour(Kaydedilen Faturalar),VendTrans(Satıcı İşlemleri),LedgerJournalTrans(Yevmiye Satırları),LedgerJournalTable(Yevmiye Başlıkları) veWorkflowTrackingStatusTable(İş Akışı Geçmişi).Dışa Aktarma İşini Yapılandırın: Bu tablolar şu anda dışa aktarılmıyorsa yeni bir dışa aktarma işi oluşturun. Hedef Veri Formatını BYOD SQL veritabanınız olarak ayarlayın. Verilerin tam yeniden dışa aktarma yapılmadan senkronize kalmasını sağlamak için Artımlı Gönderim (Incremental Push) seçeneğini belirleyin. Tabloları doldurmak için işi çalıştırın.
SQL Ortamını Hazırlayın: SSMS'i açın ve BYOD Azure SQL veritabanına bağlanın. Yeni bir sorgu penceresi açın.
Parametreleri Ayarlayın: Aşağıda sunulan betiğin en üstündeki değişken tanımlama bölümünü bulun.
@StartDateve@EndDatedeğişkenlerini analiz etmek istediğiniz döneme göre güncelleyin. Belirli bir tüzel kişiliğe göre filtreleme yapmanız gerekiyorsaDATAAREAIDfiltre koşullarını güncelleyin.Betiği Çalıştırın: T-SQL betiğinin tamamını yürütün. Bu betik, birden fazla tablodaki verileri tek bir standartlaştırılmış olay günlüğü formatında birleştirmek için
UNION ALLkomutunu kullanır.Verileri Doğrulayın:
InvoiceNumberveyaEventTimesütunlarında boş (null) değer olup olmadığını kontrol edin. Hem kaydedilen faturaların (VendInvoiceJourtablosundan) hem de bekleyen faturaların (VendInvoiceInfoTabletablosundan) göründüğünden emin olun.Sonucu Dışa Aktarın: SSMS'teki sonuçlar ızgarasına sağ tıklayın ve Sonuçları Farklı Kaydet... seçeneğini belirleyin. Dosyayı bir CSV (Virgülle Ayrılmış) dosyası olarak kaydedin.
Yükleme İçin Formatlayın: ProcessMind tarafından isteniyorsa tarih formatlarının ISO 8601 uyumlu (YYYY-AA-GG SS:DD:SS) olduğundan emin olmak için CSV'yi Excel'de veya bir metin düzenleyicide açın. Betik başarıyla çalıştıysa başka bir dönüştürme gerekmemelidir.
ProcessMind'a Yükleme: CSV dosyasını ProcessMind'a aktarın;
InvoiceNumbersütununu Case ID,Activitysütununu Etkinlik Adı veEventTimesütununu Zaman Damgası olarak eşleştirin.
Konfigürasyon
- Dışa Aktarma Stratejisi: BYOD yükünü en aza indirmek için
LedgerJournalTransveVendTransgibi yüksek hacimli tablolarda Artımlı Gönderim (Incremental Push) kullanın. Tam Gönderimi (Full Push) yalnızca veri tutarsızlığından şüpheleniliyorsa kullanın. - Saat Dilimi Yönetimi: Dynamics 365 verileri UTC formatında saklar. Betik UTC varsayımıyla çalışır. Analiziniz yerel saat gerektiriyorsa, betikte veya ProcessMind içe aktarma sırasında bir
DATEADDdüzeltmesi uygulayın. - Şirket Filtreleme:
DataAreaIdsütunu Tüzel Kişiliği temsil eder. Betik, varsayılan olarak tüm birimlerin verilerini çeker. Belirli bir yan kuruluşu filtrelemek içinWHERE DataAreaId = 'usmf'(örnek) ekleyin. - İş Akışı Geçmişi:
WorkflowTrackingStatusTabletablosu onay zaman damgaları için kritiktir. Bu tablo genellikle varsayılan olarak atlandığından, BYOD dışa aktarma yapılandırmanıza dahil edildiğinden emin olun. - Veri Saklama: D365'te tamamlanmış iş akışı geçmişini veya kaydedilmiş yevmiye satırlarını silecek temizleme rutinlerine dikkat edin; bu durum Process Mining analizinin geçmiş derinliğini sınırlayabilir.
a Örnek Sorgu sql
/* T-SQL Extraction Script for D365 AP Payment Processing */
/* Tables required: VendInvoiceInfoTable, VendInvoiceInfoLine, VendInvoiceJour, VendTrans, LedgerJournalTrans, LedgerJournalTable, WorkflowTrackingStatusTable */
DECLARE @StartDate DATETIME = '2023-01-01 00:00:00';
DECLARE @EndDate DATETIME = GETDATE();
WITH RawData AS (
/* 1. Invoice Created: Pending Invoice Header Creation */
SELECT
T1.Num AS InvoiceNumber,
'Invoice Created' AS Activity,
T1.CreatedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
T1.InvoiceAccount AS VendorAccount,
T1.DataAreaId AS CompanyCode,
CAST(T1.InvoiceAmount AS DECIMAL(18,2)) AS InvoiceAmount,
T1.DueDate AS DueDate,
T1.PurchId AS PurchaseOrderNumber,
T1.CreatedBy AS UserId,
T1.VendorName AS VendorName,
T1.DocumentDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.VendInvoiceInfoTable T1
WHERE T1.CreatedDateTime BETWEEN @StartDate AND @EndDate
UNION ALL
/* 2. Invoice Updated: Modifications to Pending Invoice */
SELECT
T1.Num AS InvoiceNumber,
'Invoice Updated' AS Activity,
T1.ModifiedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
T1.InvoiceAccount AS VendorAccount,
T1.DataAreaId AS CompanyCode,
CAST(T1.InvoiceAmount AS DECIMAL(18,2)) AS InvoiceAmount,
T1.DueDate AS DueDate,
T1.PurchId AS PurchaseOrderNumber,
T1.ModifiedBy AS UserId,
T1.VendorName AS VendorName,
T1.DocumentDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.VendInvoiceInfoTable T1
WHERE T1.ModifiedDateTime BETWEEN @StartDate AND @EndDate
AND T1.ModifiedDateTime > T1.CreatedDateTime
UNION ALL
/* 3. Invoice Matched to PO: Line Matching Success */
SELECT
H.Num AS InvoiceNumber,
'Invoice Matched to PO' AS Activity,
L.ModifiedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
H.InvoiceAccount AS VendorAccount,
H.DataAreaId AS CompanyCode,
CAST(H.InvoiceAmount AS DECIMAL(18,2)) AS InvoiceAmount,
H.DueDate AS DueDate,
H.PurchId AS PurchaseOrderNumber,
L.ModifiedBy AS UserId,
H.VendorName AS VendorName,
H.DocumentDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.VendInvoiceInfoLine L
JOIN dbo.VendInvoiceInfoTable H ON L.TableRefId = H.TableRefId AND L.DataAreaId = H.DataAreaId
WHERE L.MatchStatus = 1 /* 1 usually denotes Matched/Passed in enum */
AND L.ModifiedDateTime BETWEEN @StartDate AND @EndDate
UNION ALL
/* 4. Invoice Match Failed: Line Matching Discrepancy */
SELECT
H.Num AS InvoiceNumber,
'Invoice Match Failed' AS Activity,
L.ModifiedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
H.InvoiceAccount AS VendorAccount,
H.DataAreaId AS CompanyCode,
CAST(H.InvoiceAmount AS DECIMAL(18,2)) AS InvoiceAmount,
H.DueDate AS DueDate,
H.PurchId AS PurchaseOrderNumber,
L.ModifiedBy AS UserId,
H.VendorName AS VendorName,
H.DocumentDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.VendInvoiceInfoLine L
JOIN dbo.VendInvoiceInfoTable H ON L.TableRefId = H.TableRefId AND L.DataAreaId = H.DataAreaId
WHERE L.MatchStatus = 2 /* 2 usually denotes Failed in enum */
AND L.ModifiedDateTime BETWEEN @StartDate AND @EndDate
UNION ALL
/* 5. Invoice Submitted for Approval: Workflow Submission */
SELECT
T1.Num AS InvoiceNumber,
'Invoice Submitted for Approval' AS Activity,
W.CreatedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
T1.InvoiceAccount AS VendorAccount,
T1.DataAreaId AS CompanyCode,
CAST(T1.InvoiceAmount AS DECIMAL(18,2)) AS InvoiceAmount,
T1.DueDate AS DueDate,
T1.PurchId AS PurchaseOrderNumber,
W.User AS UserId,
T1.VendorName AS VendorName,
T1.DocumentDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.WorkflowTrackingStatusTable W
JOIN dbo.VendInvoiceInfoTable T1 ON W.ContextRecId = T1.RecId
WHERE W.TrackingStatus = 1 /* Submitted */
AND W.ContextTableId = 1425 /* TableId for VendInvoiceInfoTable, adjust if different in version */
AND W.CreatedDateTime BETWEEN @StartDate AND @EndDate
UNION ALL
/* 6. Invoice Approved: Workflow Completion */
SELECT
T1.Num AS InvoiceNumber,
'Invoice Approved' AS Activity,
W.CreatedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
T1.InvoiceAccount AS VendorAccount,
T1.DataAreaId AS CompanyCode,
CAST(T1.InvoiceAmount AS DECIMAL(18,2)) AS InvoiceAmount,
T1.DueDate AS DueDate,
T1.PurchId AS PurchaseOrderNumber,
W.User AS UserId,
T1.VendorName AS VendorName,
T1.DocumentDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.WorkflowTrackingStatusTable W
JOIN dbo.VendInvoiceInfoTable T1 ON W.ContextRecId = T1.RecId
WHERE W.TrackingStatus = 2 /* Completed/Approved */
AND W.ContextTableId = 1425
AND W.CreatedDateTime BETWEEN @StartDate AND @EndDate
UNION ALL
/* 7. Invoice Posted: Creation of VendInvoiceJour */
SELECT
J.InvoiceId AS InvoiceNumber,
'Invoice Posted' AS Activity,
J.CreatedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
J.InvoiceAccount AS VendorAccount,
J.DataAreaId AS CompanyCode,
CAST(J.InvoiceAmount AS DECIMAL(18,2)) AS InvoiceAmount,
J.DueDate AS DueDate,
J.PurchId AS PurchaseOrderNumber,
J.CreatedBy AS UserId,
J.InvoicingName AS VendorName,
J.InvoiceDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.VendInvoiceJour J
WHERE J.CreatedDateTime BETWEEN @StartDate AND @EndDate
UNION ALL
/* 8. Payment Block Applied: Updated on VendTrans */
SELECT
J.InvoiceId AS InvoiceNumber,
'Payment Block Applied' AS Activity,
VT.ModifiedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
J.InvoiceAccount AS VendorAccount,
J.DataAreaId AS CompanyCode,
CAST(J.InvoiceAmount AS DECIMAL(18,2)) AS InvoiceAmount,
J.DueDate AS DueDate,
J.PurchId AS PurchaseOrderNumber,
VT.ModifiedBy AS UserId,
J.InvoicingName AS VendorName,
J.InvoiceDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.VendTrans VT
JOIN dbo.VendInvoiceJour J ON VT.Invoice = J.InvoiceId AND VT.AccountNum = J.InvoiceAccount AND VT.DataAreaId = J.DataAreaId
WHERE VT.Approved = 0 /* 0 indicates Not Approved/Blocked */
AND VT.ModifiedDateTime BETWEEN @StartDate AND @EndDate
UNION ALL
/* 9. Payment Journal Created: Line added to Journal */
SELECT
LJT.Invoice AS InvoiceNumber,
'Payment Journal Created' AS Activity,
LJT.CreatedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
LJT.AccountNum AS VendorAccount,
LJT.DataAreaId AS CompanyCode,
CAST(LJT.AmountCurCredit AS DECIMAL(18,2)) AS InvoiceAmount,
NULL AS DueDate,
NULL AS PurchaseOrderNumber,
LJT.CreatedBy AS UserId,
NULL AS VendorName,
LJT.TransDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.LedgerJournalTrans LJT
WHERE LJT.AccountType = 2 /* Vendor */
AND LJT.Invoice IS NOT NULL AND LJT.Invoice <> ''
AND LJT.CreatedDateTime BETWEEN @StartDate AND @EndDate
UNION ALL
/* 10. Payment Journal Approved: Workflow on Journal Header */
SELECT
LJT.Invoice AS InvoiceNumber,
'Payment Journal Approved' AS Activity,
LJH.ModifiedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
LJT.AccountNum AS VendorAccount,
LJT.DataAreaId AS CompanyCode,
CAST(LJT.AmountCurCredit AS DECIMAL(18,2)) AS InvoiceAmount,
NULL AS DueDate,
NULL AS PurchaseOrderNumber,
LJH.ModifiedBy AS UserId,
NULL AS VendorName,
LJT.TransDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.LedgerJournalTable LJH
JOIN dbo.LedgerJournalTrans LJT ON LJH.JournalNum = LJT.JournalNum AND LJH.DataAreaId = LJT.DataAreaId
WHERE LJH.WorkflowApprovalStatus = 2 /* Approved */
AND LJT.AccountType = 2
AND LJT.Invoice IS NOT NULL AND LJT.Invoice <> ''
AND LJH.ModifiedDateTime BETWEEN @StartDate AND @EndDate
UNION ALL
/* 11. Payment Generated: Payment Status Changed to Sent */
SELECT
LJT.Invoice AS InvoiceNumber,
'Payment Generated' AS Activity,
LJT.ModifiedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
LJT.AccountNum AS VendorAccount,
LJT.DataAreaId AS CompanyCode,
CAST(LJT.AmountCurCredit AS DECIMAL(18,2)) AS InvoiceAmount,
NULL AS DueDate,
NULL AS PurchaseOrderNumber,
LJT.ModifiedBy AS UserId,
NULL AS VendorName,
LJT.TransDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.LedgerJournalTrans LJT
WHERE LJT.PaymentStatus = 2 /* Sent/Generated */
AND LJT.AccountType = 2
AND LJT.Invoice IS NOT NULL AND LJT.Invoice <> ''
AND LJT.ModifiedDateTime BETWEEN @StartDate AND @EndDate
UNION ALL
/* 12. Payment Posted: Journal Line Posted */
SELECT
LJT.Invoice AS InvoiceNumber,
'Payment Posted' AS Activity,
LJT.ModifiedDateTime AS EventTime,
'D365 FO' AS SourceSystem,
GETDATE() AS LastDataUpdate,
LJT.AccountNum AS VendorAccount,
LJT.DataAreaId AS CompanyCode,
CAST(LJT.AmountCurCredit AS DECIMAL(18,2)) AS InvoiceAmount,
NULL AS DueDate,
NULL AS PurchaseOrderNumber,
LJT.ModifiedBy AS UserId,
NULL AS VendorName,
LJT.TransDate AS InvoiceDate,
'Unknown' AS Department
FROM dbo.LedgerJournalTrans LJT
WHERE LJT.Posted = 1 /* Posted */
AND LJT.AccountType = 2
AND LJT.Invoice IS NOT NULL AND LJT.Invoice <> ''
AND LJT.ModifiedDateTime BETWEEN @StartDate AND @EndDate
)
SELECT *
FROM RawData
WHERE InvoiceNumber IS NOT NULL AND InvoiceNumber <> ''
ORDER BY InvoiceNumber, EventTime;