Templat data pemrosesan pembayaran utang usaha Anda
Templat data pemrosesan pembayaran utang usaha Anda
- Atribut khusus proses untuk analisis keuangan
- Tahapan aktivitas penting untuk melacak pembayaran
- Panduan ekstraksi terperinci untuk Dynamics 365
Atribut pemrosesan pembayaran utang usaha
| Nama | Deskripsi | ||
|---|---|---|---|
| Aktivitas Activity | Tugas atau perubahan status tertentu yang terjadi. | ||
| Deskripsi Atribut ini menjelaskan peristiwa atau langkah dalam proses, seperti 'Faktur dibuat', 'Faktur disetujui', atau 'Pembayaran dibukukan'. Atribut ini mengubah jenis transaksi teknis dan perubahan status workflow menjadi peristiwa bisnis yang mudah dipahami. Di Dynamics 365, aktivitas ini biasanya diturunkan dari gabungan penyisipan data ke tabel, misalnya catatan baru di Mengapa ini penting Atribut ini menentukan alur proses dan urutan peristiwa pada peta proses. Sumber data Ditentukan dari berbagai tabel transaksi dan log riwayat workflow Contoh Faktur dibuatFaktur disetujuiPembayaran dibuat | |||
| Nomor faktur InvoiceNumber | Pengenal unik yang diberikan kepada faktur vendor. | ||
| Deskripsi Invoice Number berfungsi sebagai pengenal kasus utama untuk tampilan proses ini. Nomor ini mengelompokkan semua peristiwa yang terkait dengan satu faktur vendor, sehingga Anda dapat menganalisis seluruh perjalanannya dari penerimaan hingga pelunasan. Di Microsoft Dynamics 365, nomor ini biasanya sesuai dengan kolom Mengapa ini penting Ini adalah kunci utama untuk menghubungkan aktivitas utang usaha yang terpisah menjadi satu instans proses. Sumber data Tabel: VendInvoiceJour, Kolom: InvoiceId Contoh INV-2023-00198223344ACME-OCT-22 | |||
| Waktu peristiwa EventTime | Stempel waktu saat aktivitas terjadi. | ||
| Deskripsi Atribut ini mencatat tanggal dan waktu persis saat aktivitas tertentu terjadi. Data ini digunakan untuk mengurutkan peristiwa secara kronologis dan menghitung durasi antarlangkah. Di Dynamics 365, data ini biasanya bersumber dari Mengapa ini penting Penting untuk menghitung waktu siklus dan waktu penyelesaian, serta menemukan hambatan. Sumber data Kolom sistem CreatedDateTime atau ModifiedDateTime pada tabel transaksi Contoh 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Pembaruan data terakhir LastDataUpdate | Stempel waktu saat data diekstrak atau diperbarui. | ||
| Deskripsi Menunjukkan seberapa baru data yang digunakan untuk analisis. Informasi ini membantu pengguna mengetahui apakah data yang dilihat bersifat waktu nyata atau berasal dari periode sebelumnya. Data ini biasanya dibuat oleh proses ETL (Extract, Transform, Load), bukan berasal dari kolom di dalam Dynamics 365. Mengapa ini penting Penting untuk membangun kepercayaan terhadap dasbor dan KPI. Sumber data Dibuat oleh skrip ekstraksi Contoh 2023-10-25T12:00:00Z2023-11-01T06:00:00Z | |||
| Sistem sumber SourceSystem | Nama sistem asal data. | ||
| Deskripsi Menunjukkan perangkat lunak atau lingkungan sumber tempat data proses diekstrak. Dalam konteks ini, sistem sumber selalu berupa instans Microsoft Dynamics 365. Atribut ini berguna terutama dalam lingkungan dengan banyak sistem, ketika data dapat digabungkan dari ERP dan solusi pemindaian eksternal. Mengapa ini penting Memastikan asal-usul dan keterlacakan data dalam analisis berbagai sistem. Sumber data Diisi secara tetap atau dikonfigurasi saat ekstraksi Contoh Dynamics 365 F&OD365 PRODMicrosoft Dynamics | |||
| Akun vendor VendorAccount | Nomor akun unik untuk vendor. | ||
| Deskripsi Pengenal unik untuk pemasok yang terlibat dalam transaksi. Di Dynamics 365, atribut ini sesuai dengan kolom Atribut ini menjadi bagian penting dari 'Vendor Relationship Complexity View' untuk menganalisis kinerja dan kendala pada hubungan dengan setiap vendor. Mengapa ini penting Memungkinkan segmentasi kinerja proses berdasarkan pemasok. Sumber data Tabel: VendInvoiceJour, Kolom: InvoiceAccount atau OrderAccount Contoh US-101V000452001 | |||
| Departemen Department | Departemen yang bertanggung jawab atas biaya tersebut. | ||
| Deskripsi Dimensi keuangan yang menunjukkan departemen internal. Di Dynamics 365, dimensi disimpan secara dinamis, biasanya di Atribut ini digunakan dalam 'Tampilan Kompleksitas Hubungan Vendor' untuk melihat departemen internal mana yang menghasilkan volume AP terbesar. Mengapa ini penting Mendukung penelusuran berdasarkan struktur organisasi dan analisis akuntabilitas. Sumber data Tabel: VendInvoiceJour, Kolom: DefaultDimension (memerlukan tampilan DimensionAttributeLevelValue) Contoh TIKeuanganOperasional | |||
| ID Pengguna UserId | Identitas pengguna yang melakukan aktivitas. | ||
| Deskripsi Menunjukkan pengguna sistem yang bertanggung jawab atas aktivitas tertentu, seperti menyetujui faktur atau mencatat pembayaran. Datanya berasal dari kolom Digunakan dalam 'Analisis Pemblokiran dan Kendala Pembayaran' untuk melihat apakah pemroses tertentu lebih sering memicu pemblokiran. Mengapa ini penting Mendukung analisis perilaku sumber daya dan pemisahan tugas. Sumber data Kolom sistem CreatedBy/ModifiedBy pada tabel transaksi/riwayat Contoh jdoeadminworkflow_sys | |||
| Jumlah faktur InvoiceAmount | Nilai total faktur dalam bentuk uang. | ||
| Deskripsi Nilai total faktur dalam mata uang transaksi. Di Dynamics 365, nilai ini terdapat pada kolom seperti Digunakan dalam dasbor 'Duplicate Payment Risk Detection' untuk menghubungkan jumlah dengan detail vendor. Mengapa ini penting Penting untuk menganalisis volume pengeluaran dan risiko keuangan. Sumber data Tabel: VendInvoiceJour, Kolom: InvoiceAmount Contoh 1500.00245.5010000.00 | |||
| Kode perusahaan CompanyCode | Pengenal entitas hukum atau anak perusahaan. | ||
| Deskripsi Menunjukkan entitas hukum dalam organisasi tempat faktur diproses. Di Microsoft Dynamics 365, entitas ini ditentukan melalui kolom sistem Atribut ini penting untuk 'End to End Lead Time Analysis' karena memungkinkan perbandingan antar-anak perusahaan atau wilayah geografis. Mengapa ini penting Memungkinkan analisis perbandingan antarunit bisnis atau negara. Sumber data Tabel: VendInvoiceJour, Kolom: DataAreaId Contoh USMFDEMFGBSI | |||
| Nama Vendor VendorName | Nama organisasi vendor. | ||
| Deskripsi Nama deskriptif pemasok. Di D365, akun pemasok berfungsi sebagai foreign key ke Global Address Book ( Nama yang mudah dibaca memudahkan penggunaan 'Vendor Relationship Complexity View' dan membuat dasbor lebih mudah dipahami pengguna bisnis. Mengapa ini penting Memberi konteks pada nomor Akun Vendor. Sumber data Tabel: DirPartyTable (melalui VendTable), Kolom: Name Contoh Contoso Office SupplyFabrikam ElectronicsLitware Inc. | |||
| Nomor Pesanan Pembelian PurchaseOrderNumber | Nomor referensi pesanan pembelian terkait. | ||
| Deskripsi Menghubungkan faktur dengan dokumen pembelian asal. Di Dynamics 365, informasi ini tersimpan pada kolom Atribut ini mendukung dashboard 'Tren Pencocokan dan Selisih PO' dengan membedakan faktur yang terkait PO dan yang tidak. Mengapa ini penting Penting untuk menganalisis tingkat pencocokan procure-to-pay. Sumber data Tabel: VendInvoiceJour, Kolom: PurchId Contoh PO-000455000342PO-22-998 | |||
| Tanggal Faktur InvoiceDate | Tanggal dokumen yang tercantum pada faktur. | ||
| Deskripsi Tanggal yang tercetak pada faktur vendor. Di Dynamics 365, tanggal ini tersimpan pada kolom Digunakan dalam 'Analisis Waktu Proses dari Awal hingga Akhir' untuk mengukur keseluruhan siklus dari sudut pandang vendor. Mengapa ini penting Menentukan awal periode umur faktur. Sumber data Tabel: VendInvoiceJour, Kolom: InvoiceDate Contoh 2023-10-012023-10-15 | |||
| Tanggal jatuh tempo DueDate | Tanggal batas pembayaran faktur. | ||
| Deskripsi Tanggal kontraktual saat pembayaran harus dilunasi agar tidak terkena penalti. Di Dynamics 365, tanggal ini disimpan sebagai Tanggal ini menjadi acuan utama KPI 'Tingkat Pembayaran Tepat Waktu' dan membantu menentukan prioritas kerja pada tampilan 'Throughput dan Volume Proses AP'. Mengapa ini penting Acuan untuk mengukur kinerja pembayaran tepat waktu. Sumber data Tabel: VendInvoiceJour atau VendTrans, Kolom: DueDate Contoh 2023-11-302023-12-15 | |||
| Ketentuan Pembayaran PaymentTerms | Kode yang menunjukkan ketentuan pembayaran yang disepakati. | ||
| Deskripsi Kode konfigurasi yang menentukan tanggal jatuh tempo dan diskon, misalnya Net30. Di Dynamics 365, kode ini tersimpan pada Analisis bersama 'Waktu Siklus' untuk mengetahui apakah keterlambatan proses melanggar ketentuan yang disepakati. Mengapa ini penting Memberi konteks untuk menghitung tanggal jatuh tempo. Sumber data Tabel: VendInvoiceJour, Kolom: PaymTermId Contoh Net302%10Net30COD | |||
| Mata Uang Currency | Kode mata uang faktur. | ||
| Deskripsi Kode ISO mata uang yang digunakan untuk menerbitkan faktur. Di Dynamics 365, kode ini tersimpan pada kolom Penting untuk menyeragamkan nilai pada pemetaan 'Jumlah Aktivitas' jika diperlukan normalisasi berbagai mata uang. Mengapa ini penting Konteks yang diperlukan untuk memahami nilai keuangan. Sumber data Tabel: VendInvoiceJour, Kolom: CurrencyCode Contoh USDEURGBP | |||
| Metode Pembayaran PaymentMethod | Metode yang digunakan untuk membayar faktur, misalnya cek, transfer bank, atau EFT. | ||
| Deskripsi Menentukan cara dana ditransfer ke vendor. Di Dynamics 365, informasi ini tersimpan pada kolom Atribut ini digunakan dalam dashboard 'Waktu Proses Pembayaran' untuk menilai efisiensi berbagai jenis batch pembayaran. Mengapa ini penting Menjelaskan variasi pada tahap pelaksanaan pembayaran. Sumber data Tabel: VendInvoiceJour (digabungkan dengan informasi PaymMode) atau VendTrans Contoh CEKACHTRANSFER BANK | |||
| Nomor Voucher VoucherNumber | Nomor voucher buku besar yang terkait dengan transaksi. | ||
| Deskripsi Identitas internal General Ledger untuk entri akuntansi. Di Dynamics 365, kolom Meski bersifat teknis, informasi ini berguna dalam 'Audit Jalur Proses dan Kepatuhan' untuk melacak entri ke GL saat rekonsiliasi. Mengapa ini penting Kunci untuk audit keuangan dan rekonsiliasi. Sumber data Tabel: VendInvoiceJour, Kolom: LedgerVoucher Contoh VOU-10023INV-ACC-992 | |||
| Pembayaran Diblokir IsPaymentBlocked | Penanda yang menunjukkan apakah pembayaran faktur sedang diblokir. | ||
| Deskripsi Penanda boolean untuk menunjukkan apakah faktur ditahan. Di Dynamics 365, status ini biasanya diturunkan dari status Informasi ini menjadi dasar 'Analisis Pemblokiran dan Kendala Pembayaran' untuk menyoroti gangguan dalam proses. Mengapa ini penting Menunjukkan titik kendala langsung dan intervensi manual. Sumber data Tabel: VendTrans, Kolom: Approved (dibalik) atau kolom Hold khusus Contoh truefalse | |||
| Tanggal Diskon Tunai CashDiscountDate | Tanggal batas pembayaran agar diskon dapat diperoleh. | ||
| Deskripsi Batas waktu untuk memanfaatkan insentif pembayaran lebih awal. Di Dynamics 365, tanggal ini tersimpan pada Atribut ini mendukung dashboard 'Kinerja Pemanfaatan Diskon Tunai' agar organisasi dapat menghitung peluang penghematan yang terlewat. Mengapa ini penting Berdampak langsung pada KPI efisiensi keuangan proses. Sumber data Tabel: VendInvoiceJour atau VendTrans, Kolom: CashDiscDate Contoh 2023-10-102023-10-20 | |||
Aktivitas pemrosesan pembayaran utang usaha
| Aktivitas | Deskripsi | ||
|---|---|---|---|
| Faktur dibuat | Pembuatan awal catatan faktur vendor yang masih menunggu proses di sistem. Ini menandai masuknya faktur ke alur kerja Dynamics 365, baik melalui pencatatan manual maupun impor entitas data. | ||
| Mengapa ini penting Menetapkan waktu mulai untuk menghitung waktu penyelesaian proses. Organisasi dapat mengukur berapa lama faktur berada di sistem sebelum diproses atau dibukukan. Sumber data Stempel waktu pembuatan VendInvoiceInfoTable.CreatedDateTime atau VendInvoiceInfoTable.RecId. Ini mewakili header Pending Vendor Invoice. Pengumpulan data Dicatat saat rekaman dibuat di VendInvoiceInfoTable Jenis peristiwa explicit | |||
| Faktur dibukukan | Faktur dibukukan ke General Ledger sehingga kewajiban tercatat di sistem. Catatan berpindah dari tabel yang masih menunggu proses ke tabel transaksi yang sudah dibukukan. | ||
| Mengapa ini penting Tahap penting yang menandai pengakuan utang secara keuangan. Setelah aktivitas ini, faktur dapat dipilih untuk pembayaran. Sumber data Pembuatan catatan di VendInvoiceJour dan VendTrans. TransDate menunjukkan tanggal pembukuan. Pengumpulan data Dicatat saat transaksi X dijalankan Jenis peristiwa explicit | |||
| Faktur dicocokkan dengan PO | Sistem berhasil menghubungkan baris faktur dengan Purchase Order atau Product Receipt. Aktivitas ini menandakan bahwa faktur telah divalidasi terhadap pesanan pengadaan. | ||
| Mengapa ini penting Penting untuk KPI First-Pass PO Matching Rate. Metrik ini membedakan pemrosesan tanpa intervensi manual dari faktur yang memerlukan penanganan manual. Sumber data VendInvoiceInfoLine.PurchId dan VendInvoiceInfoTable.MatchStatus. Disimpulkan saat MatchStatus berubah menjadi Passed. Pengumpulan data Bandingkan nilai MatchStatus sebelum dan sesudah Jenis peristiwa inferred | |||
| Faktur disetujui | Instans workflow untuk faktur yang masih menunggu proses mencapai status selesai atau disetujui. Faktur siap dibukukan ke buku besar. | ||
| Mengapa ini penting Menghitung Average Approval Lead Time. Keterlambatan pada tahap ini berdampak langsung pada peluang mendapatkan diskon pembayaran awal. Sumber data WorkflowTrackingStatusTable.CreatedDateTime saat TrackingStatus bernilai Completed. Alternatifnya, VendInvoiceInfoTable.RequestStatus bernilai Approved. Pengumpulan data Dicatat saat instans workflow selesai Jenis peristiwa explicit | |||
| Jurnal pembayaran dibuat | Faktur dipilih dan ditambahkan ke baris Payment Journal. Ini menandakan rencana pembayaran dan biasanya memulai workflow peninjauan pembayaran. | ||
| Mengapa ini penting Menandai peralihan dari pencatatan kewajiban ke pemrosesan pengeluaran kas. Digunakan untuk mengukur waktu pelaksanaan pembayaran. Sumber data LedgerJournalTrans.CreatedDateTime. Faktur ditautkan melalui kolom MarkedInvoice atau tabel penyelesaian. Pengumpulan data Dicatat saat rekaman dibuat di LedgerJournalTrans Jenis peristiwa explicit | |||
| Pembayaran dibuat | Sistem membuat file pembayaran (EFT, ISO20022) atau mencetak cek. Status pembayaran pada baris jurnal diperbarui menjadi Sent atau Generated. | ||
| Mengapa ini penting Mendukung KPI Approved-to-Executed Lag Time. Metrik ini memastikan instruksi pembayaran telah dibuat. Sumber data LedgerJournalTrans.PaymentStatus berubah menjadi Sent/Recieved. Perubahan ini sering disimpulkan dari pembaruan pada baris. Pengumpulan data Bandingkan kolom PaymentStatus sebelum dan sesudah Jenis peristiwa inferred | |||
| Pembayaran dibukukan | Payment Journal dibukukan ke General Ledger, melunasi faktur dan menghapus saldo vendor. Ini menyelesaikan proses keuangan. | ||
| Mengapa ini penting Aktivitas terakhir untuk Average Invoice-to-Payment Cycle Time. Ini memastikan pencatatan pengurangan kas telah selesai. Sumber data LedgerJournalTrans dibukukan. VendTrans diperbarui untuk menunjukkan penyelesaian. Peristiwa aktualnya adalah pembukuan jurnal. Pengumpulan data Dicatat saat transaksi X dijalankan Jenis peristiwa explicit | |||
| Blokir pembayaran diterapkan | Transaksi vendor ditahan sehingga tidak dapat dipilih dalam proposal pembayaran. Penahanan ini sering dilakukan secara manual saat terjadi sengketa. | ||
| Mengapa ini penting Mendukung Payment Block and Friction Analysis. Menunjukkan intervensi manual yang menunda pengeluaran kas. Sumber data Tanda VendTrans.Approved diatur ke No, atau kolom status OnHold tertentu terisi. Perlu melacak pembaruan pada VendTrans. Pengumpulan data Bandingkan kolom status sebelum dan sesudah Jenis peristiwa inferred | |||
| Faktur diajukan untuk persetujuan | Faktur yang masih menunggu proses diajukan ke mesin workflow untuk ditinjau. Ini menandai peralihan dari pencatatan dan pencocokan data ke tahap otorisasi. | ||
| Mengapa ini penting Menandai awal waktu siklus persetujuan. Penting untuk menganalisis efisiensi hierarki internal. Sumber data WorkflowTrackingStatusTable.CreatedDateTime saat ContextTableId sama dengan ID VendInvoiceInfoTable dan Status bernilai Submitted. Pengumpulan data Dicatat saat instans workflow dimulai Jenis peristiwa explicit | |||
| Faktur diperbarui | Mencatat perubahan pada header atau baris faktur sebelum pembukuan. Pembaruan yang sering dapat menunjukkan masalah ekstraksi data atau perlunya koreksi manual saat validasi. | ||
| Mengapa ini penting Pembaruan yang sering menunjukkan siklus pengerjaan ulang atau kualitas data sumber yang buruk, misalnya kesalahan OCR. Informasi ini mendukung Rework and Data Accuracy Monitor. Sumber data Log database (SysDatabaseLog) pada VendInvoiceInfoTable jika diaktifkan, atau disimpulkan dari perubahan ModifiedDateTime jika frekuensi polling tinggi. Pengumpulan data Bandingkan ModifiedDateTime pada ekstraksi berikutnya Jenis peristiwa inferred | |||
| Jurnal pembayaran disetujui | Workflow Payment Journal disetujui sehingga pembayaran dapat dibuat. Ini pemeriksaan terakhir sebelum dana disiapkan untuk transfer. | ||
| Mengapa ini penting Memisahkan persiapan administratif pembayaran dari hambatan otorisasi. Sumber data WorkflowTrackingStatusTable yang ditautkan ke ID LedgerJournalTable (Header). Status bernilai Completed. Pengumpulan data Dicatat saat instans workflow selesai Jenis peristiwa explicit | |||
| Pencocokan faktur gagal | Proses pencocokan menemukan perbedaan antara faktur dan PO/Receipt, seperti selisih harga atau jumlah. Proses sering kali terhenti sampai masalah ini diselesaikan. | ||
| Mengapa ini penting Menunjukkan kendala tertentu dalam proses pencocokan. Mendukung dasbor PO Match and Discrepancy Trends. Sumber data VendInvoiceInfoTable.MatchStatus berubah menjadi Failed atau Discrepancy. Selisih pencocokan juga terlihat di VendInvoiceInfoLine. Pengumpulan data Bandingkan nilai MatchStatus sebelum dan sesudah Jenis peristiwa inferred | |||
Panduan ekstraksi
Langkah
Buka Data Management Workspace: Masuk ke lingkungan Microsoft Dynamics 365 Finance Anda. Buka Workspaces, lalu pilih Data Management. Di sinilah Anda mengatur proyek ekspor data.
Buat proyek ekspor: Klik ubin Export untuk membuat proyek data baru. Beri nama yang jelas, misalnya, ProcessMining_AP_Export. Pada kolom Target data format, pilih format tujuan, misalnya Azure SQL DB untuk BYOD atau CSV untuk ekspor berbasis file.
Tambahkan entitas data: Tambahkan entitas data standar berikut ke proyek satu per satu: VendorInvoiceHeaderEntity (untuk faktur tertunda), VendorInvoiceLineEntity (untuk baris faktur), VendorInvoiceJournalHeaderEntity (untuk faktur yang sudah dibukukan), VendorPaymentJournalLineEntity (untuk pembayaran), dan WorkflowHistoryEntity (untuk log persetujuan). Jika WorkflowHistoryEntity tidak tersedia secara default, Anda mungkin perlu mengaktifkan entitas khusus atau entitas sistem tertentu yang tersedia untuk ekspor.
Atur filter entitas: Untuk setiap entitas, klik ikon Filter. Batasi data ke CompanyInfo yang relevan (DataAreaId), lalu tetapkan rentang tanggal pada kolom CreatedDateTime atau InvoiceDate agar hanya data untuk periode analisis yang diinginkan yang diekstrak, misalnya 12 bulan terakhir.
Jadwalkan ekspor berulang: Agar log peristiwa tetap mutakhir, buat tugas data berulang. Tentukan frekuensinya, misalnya setiap hari atau setiap jam, lalu aktifkan Incremental push jika tersedia. Cara ini mengurangi beban sistem karena hanya catatan yang berubah yang diekspor.
Jalankan ekspor awal: Jalankan proyek secara manual untuk pertama kali dengan mengeklik Export now. Pantau Execution summary untuk memastikan semua catatan berhasil diekspor tanpa kesalahan.
Transformasikan data: Setelah data diekspor ke tujuan, yaitu Azure SQL atau file, gunakan skrip SQL di bagian Query untuk menggabungkan tabel-tabel tersebut. Logika transformasi ini menyatukan catatan dari berbagai entitas menjadi satu log peristiwa kronologis.
Petakan atribut: Pastikan himpunan data yang dihasilkan memetakan InvoiceNumber ke Case ID, EventTime ke Timestamp, dan Activity ke Activity Name sesuai persyaratan alat process mining.
Validasi dan unggah: Jalankan pemeriksaan validasi di bawah untuk memastikan data akurat. Setelah diverifikasi, ekspor hasil akhir sebagai file CSV atau Parquet, lalu unggah ke ProcessMind.
Konfigurasi
- Pemilihan entitas: Gunakan VendorInvoiceHeaderEntity dan VendorInvoiceLineEntity untuk langkah proses sebelum pembukuan. Gunakan VendorInvoiceJournalHeaderEntity untuk dokumen resmi yang sudah dibukukan. Gunakan VendorPaymentJournalLineEntity untuk melacak pembayaran.
- Incremental Push: Aktifkan pengaturan ini di proyek Data Management agar setelah pemuatan penuh pertama, hanya catatan baru atau yang diubah yang diekspor. Pengaturan ini penting untuk menjaga kinerja.
- Rentang tanggal: Filter dengan InvoiceDate >= [Start Date]. Hindari ekspor tanpa batas tanggal karena prosesnya bisa kehabisan waktu.
- Filter perusahaan: D365 mendukung banyak entitas. Selalu filter berdasarkan DataAreaId agar data dari badan hukum yang berbeda tidak tercampur, kecuali jika Anda memang ingin menganalisis lintas perusahaan.
- Riwayat workflow: Entitas standar untuk riwayat workflow dapat menghasilkan data dalam jumlah besar. Ekspor hanya riwayat yang terkait dengan jenis VendInvoice agar volumenya tetap terkendali.
Contoh kueri sql
/*
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' Langkah
Periksa konektivitas BYOD: Pastikan SQL Server Management Studio (SSMS) atau alat serupa sudah terpasang dan Anda dapat terhubung ke Azure SQL Database yang dikonfigurasi sebagai tujuan Bring Your Own Database (BYOD) untuk lingkungan Dynamics 365 Finance & Operations Anda.
Pastikan entitas diekspor: Buka workspace Data Management di Dynamics 365. Pastikan entitas berikut, atau tabel yang mendasarinya, dikonfigurasi untuk diekspor ke basis data BYOD:
VendInvoiceInfoTable(Faktur Tertunda),VendInvoiceInfoLine(Baris Tertunda),VendInvoiceJour(Faktur Dibukukan),VendTrans(Transaksi Pemasok),LedgerJournalTrans(Baris Jurnal),LedgerJournalTable(Header Jurnal), danWorkflowTrackingStatusTable(Riwayat Workflow).Atur tugas ekspor: Jika tabel-tabel ini belum diekspor, buat tugas ekspor baru. Tetapkan Target Data Format ke basis data SQL BYOD Anda. Pilih Incremental Push agar data tetap tersinkron tanpa perlu mengekspor ulang semuanya. Jalankan tugas untuk mengisi tabel.
Siapkan lingkungan SQL: Buka SSMS dan hubungkan ke basis data Azure SQL BYOD. Buka jendela kueri baru.
Tetapkan parameter: Pada skrip di bawah, cari bagian deklarasi variabel di bagian atas. Ubah variabel
@StartDatedan@EndDatesesuai periode yang ingin Anda analisis. Jika perlu memfilter badan hukum tertentu, ubah kondisi filterDATAAREAID.Jalankan skrip: Jalankan seluruh skrip T-SQL. Skrip ini menggunakan
UNION ALLuntuk menggabungkan data dari beberapa tabel ke dalam format log peristiwa standar.Validasi data: Periksa apakah ada nilai null pada kolom
InvoiceNumberatauEventTime. Pastikan faktur yang sudah dibukukan (dariVendInvoiceJour) dan faktur tertunda (dariVendInvoiceInfoTable) sama-sama muncul.Ekspor hasil: Klik kanan kisi hasil di SSMS, lalu pilih Save Results As.... Simpan file sebagai CSV (Comma Delimited).
Siapkan format untuk diunggah: Buka CSV di Excel atau editor teks untuk memastikan format tanggal sesuai ISO 8601 (YYYY-MM-DD HH:MM:SS), jika diwajibkan ProcessMind. Jika skrip berhasil dijalankan, tidak perlu transformasi tambahan.
Unggah ke ProcessMind: Impor file CSV ke ProcessMind, lalu petakan kolom
InvoiceNumberke Case ID,Activityke Activity Name, danEventTimeke Timestamp.
Konfigurasi
- Strategi ekspor: Gunakan Incremental Push untuk tabel bervolume tinggi seperti
LedgerJournalTransdanVendTransagar beban BYOD berkurang. Gunakan Full Push hanya jika Anda menduga ada ketidakkonsistenan data. - Penanganan zona waktu: Dynamics 365 menyimpan data dalam UTC. Skrip ini mengasumsikan zona waktu UTC. Jika analisis memerlukan waktu lokal, sesuaikan dengan
DATEADDdi dalam skrip atau saat mengimpor data ke ProcessMind. - Filter perusahaan: Kolom
DataAreaIdmenunjukkan badan hukum. Secara default, skrip mengekstrak data dari semua entitas. TambahkanWHERE DataAreaId = 'usmf'(contoh) untuk memfilter anak perusahaan tertentu. - Riwayat workflow: Tabel
WorkflowTrackingStatusTablepenting untuk mendapatkan waktu persetujuan. Pastikan tabel ini disertakan dalam konfigurasi ekspor BYOD karena sering kali tidak disertakan secara default. - Retensi data: Perhatikan rutinitas pembersihan di D365 yang mungkin menghapus riwayat workflow yang sudah selesai atau baris jurnal yang sudah dibukukan. Hal ini membatasi rentang data historis yang dapat dianalisis dengan process mining.
Contoh kueri 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; Siap memulai?
Gunakan templat ini untuk menyiapkan fondasi data yang kuat dan mulai mengoptimalkan alur kerja pembayaran Anda. Jika perlu bantuan memetakan tabel Dynamics 365 yang digunakan, tim kami siap membantu.
Optimalkan pemrosesan pembayaran utang usaha sekarang
Pangkas waktu siklus hingga 30 persen dan atasi keterlambatan D365.
Tidak perlu kartu kredit. Penyiapan hanya lima menit.