Ihr Data Template für die Kreditorenbuchhaltung: Zahlungsabwicklung
Ihr Data Template für die Kreditorenbuchhaltung: Zahlungsabwicklung
- Prozessspezifische `Attribute` für die Finanzanalyse
- Kritische Aktivitätsmeilensteine für die Zahlungsverfolgung
- Detaillierte Extraktionsanweisungen für Dynamics 365
Attribute der Kreditorenbuchhaltung Zahlungsabwicklung
| Name | Beschreibung | ||
|---|---|---|---|
| Aktivität Activity | Die spezifische Aufgabe oder Statusänderung, die aufgetreten ist. | ||
| Beschreibung Dieses In Dynamics 365 werden diese Bedeutung Es definiert den Prozessfluss und die Abfolge der Ereignisse für die Prozesskarte. Datenquelle Abgeleitet aus verschiedenen Transaktionstabellen und Workflow-Historienprotokollen Beispiele Rechnung erstelltRechnung freigegebenZahlung generiert | |||
| Ereigniszeit EventTime | Der `Timestamp`, wann die `Activity` aufgetreten ist. | ||
| Beschreibung Dieses Für Dynamics 365 wird dies normalerweise aus Bedeutung Entscheidend für die Berechnung von Zykluszeiten, Durchlaufzeiten und die Identifizierung von Engpässen. Datenquelle Systemfelder CreatedDateTime oder ModifiedDateTime in Transaktionstabellen Beispiele 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Rechnungsnummer InvoiceNumber | Der eindeutige Bezeichner, der der Lieferantenrechnung zugewiesen wurde. | ||
| Beschreibung Die Rechnungsnummer dient als eindeutiger In Microsoft Dynamics 365 entspricht dies typischerweise dem Bedeutung Es ist der grundlegende Schlüssel zur Verknüpfung von getrennten AP-Aktivitäten zu einer einzigen Prozessinstanz. Datenquelle Table: VendInvoiceJour, Field: InvoiceId Beispiele INV-2023-00198223344ACME-OCT-22 | |||
| Letzte Datenaktualisierung LastDataUpdate | Der `Timestamp`, wann die `data` extrahiert oder aktualisiert wurden. | ||
| Beschreibung Zeigt die Aktualität der für die Analyse verwendeten Daten an. Es hilft Benutzern zu verstehen, ob sie Echtzeitdaten oder eine Momentaufnahme aus einer früheren Periode betrachten. Dies wird typischerweise durch den ETL (Extract, Transform, Load)-Prozess generiert und ist kein Feld innerhalb von Dynamics 365 selbst. Bedeutung Entscheidend für den Aufbau von Vertrauen in Dashboards und KPIs. Datenquelle Generiert durch das Extraktionsskript Beispiele 2023-10-25T12:00:00Z2023-11-01T06:00:00Z | |||
| Quellsystem SourceSystem | Der Name des Systems, aus dem die `data` stammen. | ||
| Beschreibung Identifiziert die Quellsoftware oder -umgebung, aus der die Prozessdaten extrahiert wurden. In diesem Kontext wird es konsistent die Microsoft Dynamics 365-Instanz angeben. Dies ist besonders nützlich in Multi-System-Landschaften, wo Daten aus ERPs und externen Scan-Lösungen gemischt werden könnten. Bedeutung Sichert die Datenherkunft und Nachvollziehbarkeit in Multi-System-Analysen. Datenquelle Fest kodiert oder während der Extraktion konfiguriert Beispiele Dynamics 365 F&OD365 PRODMicrosoft Dynamics | |||
| Abteilung Department | Die für die Kosten verantwortliche Abteilung. | ||
| Beschreibung Die Finanzdimension, die die interne Abteilung angibt. In Dynamics 365 werden Dimensionen dynamisch gespeichert (oft in Dieses Bedeutung Ermöglicht organisatorisches Drill-down und Verantwortlichkeitsanalyse. Datenquelle Table: VendInvoiceJour, Field: DefaultDimension (Requires DimensionAttributeLevelValue view) Beispiele ITFinanzenVorgänge | |||
| Benutzer-ID UserId | Der Bezeichner des Benutzers, der die `Activity` durchgeführt hat. | ||
| Beschreibung Identifiziert den Systembenutzer, der für eine bestimmte Aktivität verantwortlich ist, wie die Genehmigung einer Rechnung oder die Buchung einer Zahlung. Stammt aus den Feldern Wird in der 'Zahlungssperren- und Reibungsanalyse' verwendet, um festzustellen, ob bestimmte Bearbeiter mehr Sperren auslösen als andere. Bedeutung Ermöglicht die Analyse des Ressourcenverhaltens und der Funktionstrennung. Datenquelle Systemfelder CreatedBy/ModifiedBy in Transaktions-/Historientabellen Beispiele jdoeadminworkflow_sys | |||
| Bestellnummer PurchaseOrderNumber | Die Referenznummer der zugehörigen Bestellung. | ||
| Beschreibung Verknüpft die Rechnung mit dem ursprünglichen Einkaufsdokument. In Dynamics 365 ist dies das Feld Dieses Attribut unterstützt das Dashboard 'Bestellungsabgleich und Diskrepanztrends', indem es zwischen Bestellungs-gestützten Rechnungen und Nicht-Bestellungs-Rechnungen unterscheidet. Bedeutung Wesentliche Bedeutung für die Analyse der Procure-to-Pay-Abgleichsrate. Datenquelle Table: VendInvoiceJour, Field: PurchId Beispiele PO-000455000342PO-22-998 | |||
| Buchungskreis CompanyCode | Der Bezeichner der juristischen Einheit oder Tochtergesellschaft. | ||
| Beschreibung Repräsentiert die juristische Einheit innerhalb der Organisation, in der die Rechnung verarbeitet wird. In Microsoft Dynamics 365 wird dies streng über das Systemfeld Dieses Bedeutung Ermöglicht eine vergleichende Analyse über verschiedene Geschäftseinheiten oder Länder hinweg. Datenquelle Table: VendInvoiceJour, Field: DataAreaId Beispiele USMFDEMFGBSI | |||
| Fälligkeitsdatum DueDate | Das Datum, bis zu dem die Rechnung bezahlt werden sollte. | ||
| Beschreibung Das vertragliche Datum, bis zu dem die Zahlung zur Vermeidung von Vertragsstrafen erfolgen muss. In Dynamics 365 wird dies als Es ist die primäre Basislinie für den KPI „Pünktliche Zahlungsquote“ und hilft, die Arbeit in der Ansicht „AP-Prozessdurchsatz und -Volumen“ zu priorisieren. Bedeutung Der Datenquelle Table: VendInvoiceJour or VendTrans, Field: DueDate Beispiele 2023-11-302023-12-15 | |||
| Lieferantenkonto VendorAccount | Die eindeutige Kontonummer des Lieferanten. | ||
| Beschreibung Der eindeutige Bezeichner für den an der Transaktion beteiligten Lieferanten. In Dynamics 365 entspricht dies dem Dieses Bedeutung Ermöglicht die Segmentierung der Prozessleistung nach Lieferanten. Datenquelle Table: VendInvoiceJour, Field: InvoiceAccount or OrderAccount Beispiele US-101V000452001 | |||
| Lieferantenname VendorName | Der Name der Lieferantenorganisation. | ||
| Beschreibung Der beschreibende Name des Lieferanten. In D365 fungiert das Lieferantenkonto als Fremdschlüssel zum Global Address Book ( Die Bereitstellung menschenlesbarer Namen erleichtert die „Vendor Relationship Complexity View“ und macht Bedeutung Bietet Kontext für die Lieferantenkontonummer. Datenquelle Table: DirPartyTable (via VendTable), Field: Name Beispiele Contoso Office SupplyFabrikam ElectronicsLitware Inc. | |||
| Rechnungsbetrag InvoiceAmount | Der monetäre Gesamtwert der Rechnung. | ||
| Beschreibung Der Gesamtwert der Rechnung in der Transaktionswährung. In Dynamics 365 findet sich dies in Feldern wie Wird im Bedeutung Entscheidend für die Analyse von Ausgabenvolumen und Finanzrisiko. Datenquelle Table: VendInvoiceJour, Field: InvoiceAmount Beispiele 1500.00245.5010000.00 | |||
| Rechnungsdatum InvoiceDate | Das auf der Rechnung angegebene Belegdatum. | ||
| Beschreibung Das auf der Lieferantenrechnung aufgedruckte Datum. In Dynamics 365 ist dies das Feld Wird in der „End-to-End Lead Time Analysis“ verwendet, um den gesamten Lebenszyklus aus Lieferantensicht zu messen. Bedeutung Definiert den Beginn der Alterungsperiode für die Rechnung. Datenquelle Table: VendInvoiceJour, Field: InvoiceDate Beispiele 2023-10-012023-10-15 | |||
| Belegnummer VoucherNumber | Die der Transaktion zugeordnete Buchungsbelegnummer. | ||
| Beschreibung Die interne Hauptbuch-ID für die Buchung. In Dynamics 365 verknüpft das Feld Dieser eher technische Wert ist für das „Process Path and Compliance Audit“ nützlich, um Buchungen für den Abgleich bis ins Hauptbuch zurückzuverfolgen. Bedeutung Schlüssel für Finanzprüfung und Abstimmung. Datenquelle Table: VendInvoiceJour, Field: LedgerVoucher Beispiele VOU-10023INV-ACC-992 | |||
| Ist Zahlung gesperrt IsPaymentBlocked | Kennzeichen, das anzeigt, ob die Rechnung derzeit zur Zahlung gesperrt ist. | ||
| Beschreibung Ein boolescher Indikator, der anzeigt, ob die Rechnung gesperrt ist. In Dynamics 365 wird dies oft vom Dies ist der Haupttreiber für die 'Zahlungssperren- und Reibungsanalyse' und hebt Prozessunterbrechungen hervor. Bedeutung Identifiziert unmittelbare Reibungspunkte und manuelle Eingriffe. Datenquelle Table: VendTrans, Field: Approved (inverted) or specialized Hold fields Beispiele truefalsch | |||
| Skontodatum CashDiscountDate | Das Datum, bis zu dem die Zahlung erfolgen muss, um einen Skonto zu erhalten. | ||
| Beschreibung Die Frist für die Inanspruchnahme von Skonti. In Dynamics 365 ist dies die Dieses Bedeutung Wirkt sich direkt auf den Finanzeffizienz-KPI des Prozesses aus. Datenquelle Table: VendInvoiceJour or VendTrans, Field: CashDiscDate Beispiele 2023-10-102023-10-20 | |||
| Währung Currency | Der Währungscode der Rechnung. | ||
| Beschreibung Der ISO-Code für die Währung, in der die Rechnung ausgestellt wurde. In Dynamics 365 ist dies das Wichtig für die Standardisierung von Beträgen im „Activity Amount“- Bedeutung Notwendiger Kontext zur Interpretation von Finanzwerten. Datenquelle Table: VendInvoiceJour, Field: CurrencyCode Beispiele USDEURGBP | |||
| Zahlungsbedingungen PaymentTerms | Der Code, der die vereinbarten Zahlungsbedingungen repräsentiert. | ||
| Beschreibung Der Konfigurationscode, der Fälligkeitstermine und Skonti festlegt (z.B. Net30). In Dynamics 365 ist dies die Wird zusammen mit der „Cycle Time“ analysiert, um festzustellen, ob Prozessverzögerungen gegen vereinbarte Bedingungen verstoßen. Bedeutung Bietet Kontext für die Fälligkeitsdatumsberechnung. Datenquelle Table: VendInvoiceJour, Field: PaymTermId Beispiele Net302%10Net30COD | |||
| Zahlungsmethode PaymentMethod | Die Methode zur Bezahlung der Rechnung (z.B. Scheck, Überweisung, EFT). | ||
| Beschreibung Definiert, wie die Gelder an den Kreditor überwiesen werden. In Dynamics 365 ist dies das Feld Dieses Attribut wird im Dashboard 'Durchlaufzeiten der Zahlungsausführung' verwendet, um die Effizienz verschiedener Zahlungsbatch-Typen zu bewerten. Bedeutung Erklärt Abweichungen in der Zahlungsabwicklungsphase. Datenquelle Table: VendInvoiceJour (joined to PaymMode info) or VendTrans Beispiele CHECKACHWIRE | |||
Aktivitäten der Kreditorenbuchhaltung Zahlungsabwicklung
| Aktivität | Beschreibung | ||
|---|---|---|---|
| Rechnung erstellt | Die initiale Erstellung eines offenen Lieferantenrechnungsdatensatzes im System. Dies markiert den Eintritt der Rechnung in den Dynamics 365 `Workflow`, entweder manuell oder über den `data` `entity import`. | ||
| Bedeutung Legt die Startzeit für die Berechnung der Prozessdurchlaufzeiten fest. Es ermöglicht Unternehmen zu messen, wie lange Rechnungen im System verweilen, bevor sie verarbeitet oder gebucht werden. Datenquelle VendInvoiceInfoTable.CreatedDateTime or VendInvoiceInfoTable.RecId creation Erfassen Protokolliert, wenn Datensatz in VendInvoiceInfoTable erstellt wurde Ereignistyp explicit | |||
| Rechnung freigegeben | Die `Workflow`-Instanz für die offene Rechnung erreicht einen abgeschlossenen oder genehmigten Status. Die Rechnung ist nun bereit zur Buchung ins Hauptbuch. | ||
| Bedeutung Berechnet die durchschnittliche Genehmigungsdurchlaufzeit. Verzögerungen hier wirken sich direkt auf die Möglichkeit aus, Skonti zu nutzen. Datenquelle WorkflowTrackingStatusTable.CreatedDateTime, wenn der TrackingStatus auf Completed steht. Alternativ entspricht VendInvoiceInfoTable.RequestStatus dem Wert Approved. Erfassen Protokolliert, wenn Workflow-Instanz abgeschlossen ist Ereignistyp explicit | |||
| Rechnung gebucht | Die Rechnung wird ins Hauptbuch gebucht, wodurch eine Verbindlichkeit im System entsteht. Der Datensatz wechselt von den offenen Tabellen zu den gebuchten Transaktionstabellen. | ||
| Bedeutung Ein wichtiger Meilenstein, der die finanzielle Anerkennung einer Schuld anzeigt. Diese Aktivität ermöglicht es, die Rechnung zur Zahlung auszuwählen. Datenquelle Erstellung eines Datensatzes in VendInvoiceJour und VendTrans. Die TransDate stellt das Buchungsdatum dar. Erfassen Protokolliert, wenn Transaktion X ausgeführt wurde Ereignistyp explicit | |||
| Rechnung mit Bestellung abgeglichen | Das System verknüpft die Rechnungszeile erfolgreich mit einer Bestellung oder einem Wareneingang. Diese `Activity` signalisiert die Validierung der Rechnung gegen den Beschaffungsauftrag. | ||
| Bedeutung Entscheidend für den KPI der Erstpass-PO-Abgleichsrate. Es unterscheidet zwischen touchless Processing und Rechnungen, die manuellen Eingriff erfordern. Datenquelle VendInvoiceInfoLine.PurchId und VendInvoiceInfoTable.MatchStatus. Wird abgeleitet, sobald der MatchStatus zu Passed wechselt. Erfassen Feld MatchStatus vor/nachher vergleichen Ereignistyp inferred | |||
| Zahlung gebucht | Das Zahlungsjournal wird ins Hauptbuch gebucht, wodurch die Rechnung beglichen und der Lieferantensaldo ausgeglichen wird. Dies schließt den Finanzprozess ab. | ||
| Bedeutung Die finale Datenquelle LedgerJournalTrans wird gebucht. Aktualisiert VendTrans, um die Verrechnung anzuzeigen. Das eigentliche Ereignis ist die Buchung des Journals. Erfassen Protokolliert, wenn Transaktion X ausgeführt wurde Ereignistyp explicit | |||
| Zahlung generiert | Das System generiert die Zahlungsdatei (EFT, ISO20022) oder druckt Schecks. Der Zahlungsstatus in der Journalzeile wird auf „Gesendet“ oder „Generiert“ aktualisiert. | ||
| Bedeutung Unterstützt den KPI „Verzögerungszeit Genehmigt-bis-Ausgeführt“. Er bestätigt, dass der Zahlungsauftrag generiert wurde. Datenquelle LedgerJournalTrans.PaymentStatus ändert sich zu Gesendet/Empfangen. Oftmals abgeleitet von Aktualisierungen der Zeile. Erfassen Feld PaymentStatus vor/nachher vergleichen Ereignistyp inferred | |||
| Zahlungsjournal erstellt | Die Rechnung wird ausgewählt und einer Zahlungsjournalzeile hinzugefügt. Dies zeigt die Zahlungsabsicht an und initiiert normalerweise den Zahlungsprüfungs-`Workflow`. | ||
| Bedeutung Markiert den Übergang von der Verbindlichkeit zur Auszahlungsbearbeitung. Dient zur Messung der Durchlaufzeiten der Zahlungsabwicklung. Datenquelle LedgerJournalTrans.CreatedDateTime. Die Rechnung ist über das Feld MarkedInvoice oder Abrechnungstabellen verknüpft. Erfassen Protokolliert, wenn Datensatz in LedgerJournalTrans erstellt wurde Ereignistyp explicit | |||
| Rechnung aktualisiert | Erfasst Änderungen an der Rechnungsüberschrift oder -positionen vor der Buchung. Häufige Aktualisierungen können auf `data` Extraction-Probleme oder manuelle Korrekturen während der Validierung hinweisen. | ||
| Bedeutung Hohe Aktualisierungsfrequenz deutet auf Nacharbeitsschleifen oder schlechte Datenqualität aus der Quelle hin (z.B. OCR-Fehler). Dies unterstützt den Nacharbeits- und Datenqualitätsmonitor. Datenquelle Datenbankprotokoll (SysDatabaseLog) auf VendInvoiceInfoTable, falls aktiviert, oder abgeleitet von ModifiedDateTime-Änderungen bei hoher Abfragefrequenz. Erfassen ModifiedDateTime bei nachfolgenden Extrakten vergleichen Ereignistyp inferred | |||
| Rechnung zur Genehmigung eingereicht | Die offene Rechnung wird zur Prüfung an die `Workflow`-Engine übermittelt. Dies markiert den Übergang von der `data` `entry`/Abgleich zur Autorisierungsphase. | ||
| Bedeutung Markiert den Beginn der Genehmigungsdurchlaufzeit. Dies ist wesentlich für die Analyse der Effizienz interner Hierarchien. Datenquelle WorkflowTrackingStatusTable.CreatedDateTime where ContextTableId equals VendInvoiceInfoTable ID and Status is Submitted. Erfassen Protokolliert, wenn Workflow-Instanz initiiert wurde Ereignistyp explicit | |||
| Rechnungsabgleich fehlgeschlagen | Der Abgleichprozess identifiziert eine Abweichung zwischen der Rechnung und der Bestellung/Wareneingang (Preis- oder Mengenabweichung). Dies stoppt den Prozess oft, bis das Problem gelöst ist. | ||
| Bedeutung Identifiziert spezifische Reibungspunkte im Abgleichprozess. Unterstützt das Dashboard 'Bestellungsabgleich und Diskrepanztrends'. Datenquelle VendInvoiceInfoTable.MatchStatus ändert sich zu Failed oder Discrepancy. Ebenfalls in den Abgleichabweichungen von VendInvoiceInfoLine sichtbar. Erfassen Feld MatchStatus vor/nachher vergleichen Ereignistyp inferred | |||
| Zahlungsjournal genehmigt | Der Zahlungsjournal-`Workflow` ist genehmigt, wodurch die Generierung von Zahlungen autorisiert wird. Dies ist die letzte Prüfung, bevor Gelder für die Überweisung vorbereitet werden. | ||
| Bedeutung Trennt die administrative Vorbereitung von Zahlungen vom Datenquelle WorkflowTrackingStatusTable linking to the LedgerJournalTable (Header) ID. Status is Completed. Erfassen Protokolliert, wenn Workflow-Instanz abgeschlossen ist Ereignistyp explicit | |||
| Zahlungssperre angewendet | Eine Sperre wird für die Kreditor-Transaktion verhängt, wodurch verhindert wird, dass sie in einem Zahlungsvorschlag ausgewählt wird. Dies geschieht oft manuell bei Streitigkeiten. | ||
| Bedeutung Unterstützt die Analyse von Zahlungssperren und Reibungspunkten. Zeigt manuelle Interventionen auf, die den Cash-Outflow verzögern. Datenquelle Das VendTrans.Approved-Flag wird auf No gesetzt oder spezifische OnHold-Statusfelder werden befüllt. Erfordert die Nachverfolgung von Aktualisierungen an VendTrans. Erfassen Statusfeld vor/nachher vergleichen Ereignistyp inferred | |||
Extraktionsleitfäden
Schritte
Auf den Data Management Arbeitsbereich zugreifen: Melden Sie sich in Ihrer Microsoft Dynamics 365 Finance Umgebung an. Navigieren Sie zu Workspaces und wählen Sie Data Management. Dies ist die zentrale Anlaufstelle für die Konfiguration von Datenexportprojekten.
Exportprojekt erstellen: Klicken Sie auf die Kachel Export, um ein neues Datenprojekt zu erstellen. Benennen Sie das Projekt klar, z.B. ProcessMining_AP_Export. Wählen Sie im Feld Ziel-Datenformat das Zielformat aus (z.B. Azure SQL DB für BYOD oder CSV für dateibasierten Export).
Datenentitäten hinzufügen: Fügen Sie die folgenden Standard-Datenentitäten einzeln zum Projekt hinzu: VendorInvoiceHeaderEntity (für ausstehende Rechnungen), VendorInvoiceLineEntity (für Rechnungszeilen), VendorInvoiceJournalHeaderEntity (für gebuchte Rechnungen), VendorPaymentJournalLineEntity (für Zahlungen) und WorkflowHistoryEntity (für Genehmigungsprotokolle). Sollte WorkflowHistoryEntity standardmäßig nicht verfügbar sein, müssen Sie möglicherweise eine benutzerdefinierte Entität oder eine spezifische Systementität für den Export aktivieren.
Entitätsfilter konfigurieren: Klicken Sie für jede Entität auf das Filtersymbol. Wenden Sie Filter an, um die Daten auf die relevante CompanyInfo (DataAreaId) zu beschränken und legen Sie einen Datumsbereich für die Felder CreatedDateTime oder InvoiceDate fest, um Daten nur für den gewünschten Analysezeitraum (z.B. die letzten 12 Monate) zu extrahieren.
Wiederkehrenden Export einrichten: Um sicherzustellen, dass das Event Log aktuell bleibt, erstellen Sie einen wiederkehrenden Datenjob. Definieren Sie die Wiederholungshäufigkeit (z.B. täglich oder stündlich) und aktivieren Sie, wo unterstützt, den Inkrementellen Push. Dies reduziert die Systemlast, indem nur geänderte Datensätze exportiert werden.
Ersten Export ausführen: Führen Sie das Projekt zum ersten Mal manuell aus, indem Sie auf Jetzt exportieren klicken. Überwachen Sie die Ausführungszusammenfassung, um sicherzustellen, dass alle Datensätze erfolgreich und fehlerfrei exportiert werden.
Daten transformieren: Sobald die Daten an Ihr Ziel (Azure SQL oder Dateien) exportiert wurden, verwenden Sie das im Abschnitt Abfrage bereitgestellte SQL-Skript, um diese Tabellen zu verbinden. Diese Transformationslogik wandelt die unterschiedlichen Entitätsdatensätze in ein einziges, chronologisches Event Log um.
Attribute zuordnen: Stellen Sie sicher, dass der resultierende Datensatz die InvoiceNumber der Case ID, die EventTime dem Timestamp und die Activity dem Activity Name gemäß den Anforderungen des Process Mining-Tools zuordnet.
Validieren und hochladen: Führen Sie die unten aufgeführten Validierungsprüfungen durch, um die Datengenauigkeit zu bestätigen. Nach der Überprüfung exportieren Sie das Endergebnis als CSV- oder Parquet-Datei und laden es in ProcessMind hoch.
Konfiguration
- Entitätsauswahl: Verwenden Sie VendorInvoiceHeaderEntity und VendorInvoiceLineEntity für Prozessschritte vor der Buchung. Nutzen Sie VendorInvoiceJournalHeaderEntity für das rechtliche, gebuchte Dokument. Verwenden Sie VendorPaymentJournalLineEntity für die Zahlungsverfolgung.
- Inkrementeller Push: Aktivieren Sie diese Einstellung im Data Management-Projekt, um nach der ersten Vollladung nur neue oder geänderte Datensätze zu exportieren. Dies ist entscheidend für die Performance.
- Datumsbereiche: Filtern Sie nach InvoiceDate >= [Startdatum]. Vermeiden Sie unbegrenzte Exporte, die zu einem Timeout führen können.
- Firmenfilter: D365 ist ein Multi-Entitäts-System. Filtern Sie immer nach DataAreaId, um das Mischen von Daten verschiedener juristischer Personen zu vermeiden, es sei denn, eine firmenübergreifende Analyse ist beabsichtigt.
- Workflow-Historie: Standard-Entitäten für die Workflow-Historie können umfangreich sein. Stellen Sie sicher, dass Sie nur Historie exportieren, die sich auf VendInvoice-Typen bezieht, um das Volumen überschaubar zu halten.
a Beispielabfrage 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' Schritte
BYOD-Konnektivität überprüfen: Stellen Sie sicher, dass Sie SQL Server Management Studio (SSMS) oder ein ähnliches Tool installiert haben und sich mit der Azure SQL-Datenbank verbinden können, die als Bring Your Own Database (BYOD)-Ziel für Ihre Dynamics 365 Finance & Operations-Umgebung konfiguriert ist.
Entitätsexport bestätigen: Navigieren Sie im Dynamics 365 zum Arbeitsbereich Data Management. Überprüfen Sie, ob die folgenden Entitäten (oder ihre zugrunde liegenden Tabellen) für den Export in die BYOD-Datenbank konfiguriert sind:
VendInvoiceInfoTable(Ausstehende Rechnungen),VendInvoiceInfoLine(Ausstehende Zeilen),VendInvoiceJour(Gebuchte Rechnungen),VendTrans(Kreditorentransaktionen),LedgerJournalTrans(Journalzeilen),LedgerJournalTable(Journalheader) undWorkflowTrackingStatusTable(Workflow-Historie).Exportauftrag konfigurieren: Wenn diese Tabellen derzeit nicht exportiert werden, erstellen Sie einen neuen Exportauftrag. Legen Sie das Ziel-Datenformat auf Ihre BYOD SQL-Datenbank fest. Wählen Sie Inkrementellen Push, um die Daten ohne vollständige Re-Exporte synchron zu halten. Führen Sie den Auftrag aus, um die Tabellen zu füllen.
SQL-Umgebung vorbereiten: Öffnen Sie SSMS und verbinden Sie sich mit der BYOD Azure SQL-Datenbank. Öffnen Sie ein neues Abfragefenster.
Parameter festlegen: Suchen Sie im untenstehenden Skript den Abschnitt zur Variablendeklaration am Anfang. Aktualisieren Sie die Variablen
@StartDateund@EndDate, um den Analysezeitraum anzupassen. Wenn Sie nach einer bestimmten juristischen Person filtern möchten, aktualisieren Sie dieDATAAREAID-Filterbedingungen.Skript ausführen: Führen Sie das vollständige T-SQL-Skript aus. Dieses Skript verwendet
UNION ALL, um Daten aus mehreren Tabellen in einem einzigen standardisierten Event Log-Format zu kombinieren.Daten validieren: Überprüfen Sie die Ergebnisse auf Nullwerte in den Spalten
InvoiceNumberoderEventTime. Stellen Sie sicher, dass sowohl gebuchte Rechnungen (ausVendInvoiceJour) als auch ausstehende Rechnungen (ausVendInvoiceInfoTable) angezeigt werden.Ergebnis exportieren: Klicken Sie mit der rechten Maustaste auf das Ergebnisraster in SSMS und wählen Sie Ergebnisse speichern unter.... Speichern Sie die Datei als CSV (kommagetrennte Datei).
Für den Upload formatieren: Öffnen Sie die CSV-Datei in Excel oder einem Texteditor, um sicherzustellen, dass die Datumsformate ISO 8601-konform sind (JJJJ-MM-TT HH:MM:SS), falls von ProcessMind erforderlich. Es sollten keine weiteren Transformationen erforderlich sein, wenn das Skript erfolgreich ausgeführt wurde.
Upload zu ProcessMind: Importieren Sie die CSV-Datei in ProcessMind und ordnen Sie die Spalten
InvoiceNumberder Case ID,Activitydem Activity Name undEventTimedem Timestamp zu.
Konfiguration
- Exportstrategie: Verwenden Sie Inkrementellen Push für große Tabellen wie
LedgerJournalTransundVendTrans, um die BYOD-Belastung zu minimieren. Verwenden Sie Full Push nur, wenn Dateninkonsistenzen vermutet werden. - Zeitzonenbehandlung: Dynamics 365 speichert Daten in UTC. Das Skript nimmt UTC an. Wenn Ihre Analyse lokale Zeit erfordert, wenden Sie eine
DATEADD-Anpassung im Skript oder während des ProcessMind-Imports an. - Firmenfilterung: Die Spalte
DataAreaIdrepräsentiert die juristische Person. Das Skript extrahiert Daten standardmäßig für alle Entitäten. Fügen SieWHERE DataAreaId = 'usmf'(Beispiel) hinzu, um nach einer bestimmten Tochtergesellschaft zu filtern. - Workflow-Historie: Die Tabelle
WorkflowTrackingStatusTableist entscheidend für Genehmigungs-Timestamps. Stellen Sie sicher, dass diese Tabelle in Ihrer BYOD-Exportkonfiguration enthalten ist, da sie oft standardmäßig weggelassen wird. - Datenaufbewahrung: Beachten Sie alle Bereinigungsroutinen in D365, die abgeschlossene Workflow-Historie oder gebuchte Journaleinträge löschen könnten, da dies die historische Tiefe der Process Mining-Analyse einschränkt.
a Beispielabfrage 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;