Uw data template voor crediteuren betalingsverwerking
Uw data template voor crediteuren betalingsverwerking
- Proces-specifieke attributes voor financiële analyse
- Kritieke activiteitsmijlpalen voor het volgen van betalingen
- Gedetailleerde extractie-instructies voor Dynamics 365
Attributes voor de verwerking van crediteurenfacturen
| Naam | Omschrijving | ||
|---|---|---|---|
| Activiteit Activity | De specifieke taak of statuswijziging die heeft plaatsgevonden. | ||
| Omschrijving Dit attribute beschrijft het event of de stap die in het proces is uitgevoerd, zoals 'Factuur Aangemaakt', 'Factuur Goedgekeurd' of 'Betaling Geboekt'. Het transformeert technische transactietypes en workflow statuswijzigingen in leesbare business events. In Dynamics 365 zijn deze activiteiten vaak afgeleid van een combinatie van tabel-inserts (bijv. een nieuw record in Het belang Het definieert de processtroom en de volgorde van gebeurtenissen voor de proceskaart. Vindplaats Afgeleid van diverse transactietabellen en workflowgeschiedenislogs Voorbeelden Factuur aangemaaktFactuur GoedgekeurdPayment Generated | |||
| Factuurnummer InvoiceNumber | De unieke identificatie die is toegewezen aan de leveranciersfactuur. | ||
| Omschrijving Het Factuurnummer dient als de definitieve case-identifier voor deze procesweergave. Het groepeert uniek alle events met betrekking tot één leveranciersfactuur, waardoor een uitgebreide analyse van het traject van ontvangst tot afwikkeling mogelijk is. In Microsoft Dynamics 365 komt dit doorgaans overeen met het veld Het belang Het is de fundamentele sleutel voor het koppelen van losgekoppelde AP-activiteiten aan één enkele procesinstantie. Vindplaats Tabel: VendInvoiceJour, Veld: InvoiceId Voorbeelden INV-2023-00198223344ACME-OCT-22 | |||
| Tijdstip Gebeurtenis EventTime | De `timestamp` van de activiteit. | ||
| Omschrijving Dit Voor Dynamics 365 wordt dit meestal verkregen uit Het belang Essentieel voor het berekenen van doorlooptijden en het identificeren van knelpunten. Vindplaats Systeemvelden CreatedDateTime of ModifiedDateTime op transactietabellen Voorbeelden 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Bronsysteem SourceSystem | De naam van het systeem waar de data vandaan komt. | ||
| Omschrijving Identificeert de bronsoftware of Dit is bijzonder nuttig in Het belang Zorgt voor Vindplaats Hardcoded of geconfigureerd tijdens extractie Voorbeelden Dynamics 365 F&OD365 PRODMicrosoft Dynamics | |||
| Laatste data-update LastDataUpdate | De `timestamp` van de `data`-extractie of -vernieuwing. | ||
| Omschrijving Geeft de actualiteit van de voor de analyse gebruikte data aan. Het helpt gebruikers te begrijpen of ze naar realtime data kijken of naar een momentopname van een voorgaande periode. Dit wordt doorgaans gegenereerd door het ETL (Extract, Transform, Load) proces in plaats van een veld binnen Dynamics 365 zelf. Het belang Cruciaal voor het opbouwen van vertrouwen in de dashboards en KPI's. Vindplaats Gegenereerd door het extractiescript Voorbeelden 2023-10-25T12:00:00Z2023-11-01T06:00:00Z | |||
| Afdeling Department | De afdeling die verantwoordelijk is voor de kosten. | ||
| Omschrijving De financiële dimensie die de interne afdeling aangeeft. In Dynamics 365 worden dimensies dynamisch opgeslagen (vaak in Dit attribute wordt gebruikt in de 'Vendor Relationship Complexity View' om te zien welke interne afdelingen het meeste AP-volume genereren. Het belang Maakt organisatorische Vindplaats Tabel: VendInvoiceJour, Veld: DefaultDimension (Vereist DimensionAttributeLevelValue view) Voorbeelden ITFinanciënOperationele taken | |||
| Bedrijfscode CompanyCode | De juridische entiteit of dochteronderneming-identifier. | ||
| Omschrijving Vertegenwoordigt de juridische entiteit binnen de organisatie waar de factuur wordt verwerkt. In Microsoft Dynamics 365 wordt dit strikt afgedwongen via het systeemveld Dit attribute is essentieel voor de 'End-to-End Lead Time Analysis', waardoor vergelijkingen tussen verschillende dochterondernemingen of geografische eenheden mogelijk zijn. Het belang Maakt vergelijkende analyse mogelijk tussen verschillende bedrijfsonderdelen of landen. Vindplaats Tabel: VendInvoiceJour, Veld: DataAreaId Voorbeelden USMFDEMFGBSI | |||
| Factuurbedrag InvoiceAmount | Het totale factuurbedrag. | ||
| Omschrijving De totale waarde van de factuur in de transactievaluta. In Dynamics 365 is dit te vinden in velden zoals Gebruikt in het Het belang Cruciaal voor het analyseren van uitgavevolume en financieel risico. Vindplaats Tabel: VendInvoiceJour, Veld: InvoiceAmount Voorbeelden 1500.00245.5010000.00 | |||
| Factuurdatum InvoiceDate | De factuurdatum vermeld op de factuur. | ||
| Omschrijving De datum die op de factuur van de leverancier is afgedrukt. In Dynamics 365 is dit het veld Gebruikt in 'End-to-End Lead Time Analysis' om de totale levenscyclus vanuit het perspectief van de leverancier te meten. Het belang Definieert het begin van de verouderingsperiode voor de factuur. Vindplaats Tabel: VendInvoiceJour, Veld: InvoiceDate Voorbeelden 2023-10-012023-10-15 | |||
| Gebruikers-ID UserId | De identificatie van de gebruiker die de activiteit heeft uitgevoerd. | ||
| Omschrijving Identificeert de systeemgebruiker die verantwoordelijk is voor een specifieke activiteit, zoals het goedkeuren van een factuur of het boeken van een betaling. Afkomstig uit de Gebruikt in de 'Betalingsblokkade- en Frictieanalyse' om te zien of specifieke verwerkers meer blokkades veroorzaken dan andere. Het belang Maakt analyse van het gedrag van medewerkers en functiescheiding mogelijk. Vindplaats Systeemvelden CreatedBy/ModifiedBy op transactie-/historietabellen Voorbeelden jdoeadminworkflow_sys | |||
| Inkoopordernummer PurchaseOrderNumber | Het referentienummer van de bijbehorende inkooporder. | ||
| Omschrijving Koppelt de factuur aan het originele inkoopdocument. In Dynamics 365 is dit het Dit attribuut ondersteunt het 'PO Match and Discrepancy Trends' dashboard door onderscheid te maken tussen facturen met een inkooporder en facturen zonder inkooporder. Het belang Essentieel voor het analyseren van het Vindplaats Tabel: VendInvoiceJour, Veld: PurchId Voorbeelden PO-000455000342PO-22-998 | |||
| Leveranciersrekening VendorAccount | Het unieke rekeningnummer van de leverancier. | ||
| Omschrijving De unieke identificatie voor de leverancier die betrokken is bij de transactie. In Dynamics 365 komt dit overeen met het Dit Het belang Maakt segmentatie van procesprestaties per leverancier mogelijk. Vindplaats Tabel: VendInvoiceJour, Veld: InvoiceAccount of OrderAccount Voorbeelden US-101V000452001 | |||
| Naam Leverancier VendorName | De naam van de leveranciersorganisatie. | ||
| Omschrijving De beschrijvende naam van de leverancier. In D365 fungeert de leveranciersrekening als een foreign key naar het Global Address Book ( Het verstrekken van menselijk leesbare namen vergemakkelijkt de 'Vendor Relationship Complexity View' en maakt dashboards toegankelijk voor zakelijke gebruikers. Het belang Biedt context voor het leveranciersrekeningnummer. Vindplaats Tabel: DirPartyTable (via VendTable), Veld: Name Voorbeelden Contoso Office SupplyFabrikam ElectronicsLitware Inc. | |||
| Vervaldatum DueDate | De datum waarop de factuur betaald moet zijn. | ||
| Omschrijving De contractuele datum waarop de betaling moet worden voldaan om boetes te voorkomen. In Dynamics 365 wordt dit opgeslagen als Het is de primaire basislijn voor de KPI 'On-Time Payment Rate' en helpt bij het prioriteren van werk in de 'AP Process Throughput and Volume' view. Het belang De benchmark voor het meten van prestaties op tijdige betaling. Vindplaats Tabel: VendInvoiceJour of VendTrans, Veld: DueDate Voorbeelden 2023-11-302023-12-15 | |||
| Betalingstermijnen PaymentTerms | De code die de overeengekomen betalingstermijnen vertegenwoordigt. | ||
| Omschrijving De configuratiecode die vervaldata en kortingen dicteert (bijv. Net30). In Dynamics 365 is dit de Geanalyseerd naast 'Cycle Time' om te zien of procesvertragingen de overeengekomen voorwaarden schenden. Het belang Biedt context voor de berekening van de vervaldatum. Vindplaats Tabel: VendInvoiceJour, Veld: PaymTermId Voorbeelden Net302%10Net30COD | |||
| Is betaling geblokkeerd IsPaymentBlocked | Vlag die aangeeft of de factuur momenteel is geblokkeerd voor betaling. | ||
| Omschrijving Een booleaanse indicator of de factuur in de wacht staat, afgeleid van de Het belang Identificeert directe frictiepunten en handmatige interventies. Vindplaats Tabel: VendTrans, Veld: Approved (omgekeerd) of gespecialiseerde Hold-velden Voorbeelden truefalse | |||
| Kortingsvervaldatum CashDiscountDate | De datum waarop betaling moet plaatsvinden om korting te ontvangen. | ||
| Omschrijving De deadline voor het benutten van vroegbetalingskortingen. In Dynamics 365 is dit de Dit attribute voedt het 'Cash Discount Capture Performance' dashboard, waardoor de organisatie gemiste besparingskansen kan kwantificeren. Het belang Heeft directe invloed op de KPI voor financiële efficiëntie van het proces. Vindplaats Tabel: VendInvoiceJour of VendTrans, Veld: CashDiscDate Voorbeelden 2023-10-102023-10-20 | |||
| Payment Method PaymentMethod | De methode die wordt gebruikt om de factuur te betalen (bijv. Cheque, Overschrijving, EFT). | ||
| Omschrijving Definieert hoe de gelden worden overgemaakt aan de leverancier. In Dynamics 365 is dit het Het belang Verklaart variaties in de betalingsuitvoeringsfase. Vindplaats Tabel: VendInvoiceJour (gekoppeld aan PaymMode info) of VendTrans Voorbeelden CHECKACHWIRE | |||
| Valuta Currency | De valutacode van de factuur. | ||
| Omschrijving De ISO-code voor de valuta waarin de factuur is uitgegeven. In Dynamics 365 is dit het veld Belangrijk voor het standaardiseren van bedragen in de 'Activity Amount' mapping als normalisatie van meerdere valuta's vereist is. Het belang Noodzakelijke context voor het interpreteren van financiële waarden. Vindplaats De ISO-code voor de valuta waarin de factuur is uitgegeven. In Dynamics 365 is dit het veld Belangrijk voor het standaardiseren van bedragen in de 'Activity Amount' mapping als normalisatie van meerdere valuta's vereist is. Voorbeelden USDEURGBP | |||
| Vouchernummer VoucherNumber | Het grootboekboekstuknummer gekoppeld aan de transactie. | ||
| Omschrijving De interne Grootboek-identifier voor de boekhoudkundige boeking. In Dynamics 365 verbindt het veld Hoewel technisch, is het nuttig voor de 'Process Path and Compliance Audit' om boekingen terug te traceren naar het Grootboek voor reconciliatie. Het belang Sleutel voor financiële audit en reconciliatie. Vindplaats Tabel: VendInvoiceJour, Veld: LedgerVoucher Voorbeelden VOU-10023INV-ACC-992 | |||
Activiteiten voor de verwerking van crediteurenfacturen
| Activiteit | Omschrijving | ||
|---|---|---|---|
| Betaling Geboekt | Het betalingsjournaal wordt in het grootboek verwerkt, waardoor de factuur wordt voldaan en het leverancierssaldo wordt vereffend. Dit voltooit het financiële proces. | ||
| Het belang De laatste activiteit voor de Average Invoice-to-Payment Cycle Time. Het bevestigt dat de boekhoudkundige posten voor kasvermindering zijn afgerond. Vindplaats LedgerJournalTrans is geboekt. VendTrans wordt bijgewerkt om de afwikkeling te tonen. De feitelijke gebeurtenis is de boeking van het journaal. Vastleggen Vastgelegd wanneer transactie X is uitgevoerd Gebeurtenistype explicit | |||
| Factuur aangemaakt | De initiële aanmaak van een record van een openstaande leveranciersfactuur in het systeem. Dit markeert de invoer van de factuur in de Dynamics 365 workflow, handmatig of via data entity import. | ||
| Het belang Bepaalt de starttijd voor de berekening van de procesdoorlooptijd. Het stelt organisaties in staat om te meten hoe lang facturen in het systeem blijven voordat ze worden verwerkt of geboekt. Vindplaats VendInvoiceInfoTable.CreatedDateTime of VendInvoiceInfoTable.RecId aanmaaktimestamp. Dit vertegenwoordigt de header van de 'Pending Vendor Invoice'. Vastleggen Vastgelegd wanneer record is aangemaakt in VendInvoiceInfoTable Gebeurtenistype explicit | |||
| Factuur geboekt | De factuur wordt geboekt in het Grootboek, waardoor een verplichting in het systeem ontstaat. Het record verplaatst zich van wachtende tabellen naar de geboekte transactietabellen. | ||
| Het belang Een belangrijke mijlpaal die de financiële erkenning van schuld aangeeft. Hiermee kan de factuur worden geselecteerd voor betaling. Vindplaats Creatie van record in VendInvoiceJour en VendTrans. De TransDate vertegenwoordigt de boekingsdatum. Vastleggen Vastgelegd wanneer transactie X is uitgevoerd Gebeurtenistype explicit | |||
| Factuur gematcht met inkooporder | Het systeem koppelt de factuurregel succesvol aan een inkooporder of productontvangst. Deze activiteit is een validatie van de factuur met de inkooporder. | ||
| Het belang Cruciaal voor de First-Pass PO Matching Rate KPI. Het onderscheidt 'touchless' verwerking van facturen die handmatige tussenkomst vereisen. Vindplaats VendInvoiceInfoLine.PurchId en VendInvoiceInfoTable.MatchStatus. Afgeleid wanneer MatchStatus verandert in Passed. Vastleggen Vergelijk het MatchStatus-veld voor/na Gebeurtenistype inferred | |||
| Factuur Goedgekeurd | De `workflow` instance voor de lopende factuur bereikt een voltooide of goedgekeurde status. De factuur is nu klaar om op het grootboek te worden geboekt. | ||
| Het belang Berekent de gemiddelde doorlooptijd voor goedkeuring. Vertragingen hierin hebben directe invloed op het vermogen om vroegbetalingskortingen te benutten. Vindplaats WorkflowTrackingStatusTable.CreatedDateTime waarbij TrackingStatus Voltooid is. Als alternatief is VendInvoiceInfoTable.RequestStatus gelijk aan Goedgekeurd. Vastleggen Vastgelegd wanneer workflow-instantie is voltooid Gebeurtenistype explicit | |||
| Payment Generated | Het systeem genereert het betaalbestand (EFT, ISO20022) of drukt cheques af. De betalingsstatus op de journaalregel wordt bijgewerkt tot Verzonden of Gegenereerd. | ||
| Het belang Ondersteunt de Approved-to-Executed Lag Time KPI. Het bevestigt dat de betalingsinstructie is gegenereerd. Vindplaats LedgerJournalTrans.PaymentStatus wijzigt in Sent/Received. Vaak afgeleid van updates van de regel. Vastleggen Vergelijk het PaymentStatus-veld voor/na Gebeurtenistype inferred | |||
| Payment Journal Created | De factuur wordt geselecteerd en toegevoegd aan een betalingsjournaalregel. Dit duidt op de intentie tot betaling en initieert gewoonlijk de betalingsbeoordelingsworkflow. | ||
| Het belang Markeert de overgang van aansprakelijkheid naar kasuitbetalingsverwerking. Gebruikt om Payment Execution Lead Times te meten. Vindplaats LedgerJournalTrans.CreatedDateTime. De factuur is gekoppeld via het veld MarkedInvoice of afwikkelingstabellen. Vastleggen Vastgelegd wanneer record is aangemaakt in LedgerJournalTrans Gebeurtenistype explicit | |||
| Factuur bijgewerkt | Legt wijzigingen vast in factuurkop/regels vóór boeking. Frequente updates duiden op extractieproblemen of handmatige correcties tijdens validatie. | ||
| Het belang Een hoge frequentie van updates duidt op herbewerkingslussen of slechte Vindplaats Database log (SysDatabaseLog) op VendInvoiceInfoTable indien ingeschakeld, of afgeleid uit ModifiedDateTime wijzigingen indien de polling frequentie hoog is. Vastleggen Vergelijk ModifiedDateTime bij opeenvolgende extracties Gebeurtenistype inferred | |||
| Factuur ter goedkeuring ingediend | De lopende factuur wordt ter beoordeling ingediend bij de `workflow` engine. Dit markeert de overgang van `data`-invoer en matching naar de autorisatiefase. | ||
| Het belang Markeert het begin van de goedkeuringscyclustijd. Essentieel voor het analyseren van de efficiëntie van interne hiërarchieën. Vindplaats WorkflowTrackingStatusTable.CreatedDateTime waarbij ContextTableId gelijk is aan VendInvoiceInfoTable ID en Status is Ingediend. Vastleggen Vastgelegd wanneer workflow-instantie is geïnitieerd Gebeurtenistype explicit | |||
| Factuurmatching mislukt | Het afstemmingsproces identificeert een discrepantie tussen de factuur en de inkooporder/ontvangst (prijs- of hoeveelheidsverschil). Dit legt het proces vaak stil totdat het is opgelost. | ||
| Het belang Identificeert specifieke frictiepunten in het afstemmingsproces. Ondersteunt het Vindplaats VendInvoiceInfoTable.MatchStatus verandert in Failed of Discrepancy. Ook zichtbaar in VendInvoiceInfoLine matchingverschillen. Vastleggen Vergelijk het MatchStatus-veld voor/na Gebeurtenistype inferred | |||
| Payment Block Applied | Een blokkering op de crediteurentransactie voorkomt selectie in een betalingsvoorstel. Vaak handmatig toegepast bij geschillen. | ||
| Het belang Ondersteunt Payment Block en Frictieanalyse. Onthult handmatige interventies die de uitgaande kasstroom vertragen. Vindplaats VendTrans.Approved Vastleggen Vergelijk het statusveld voor/na Gebeurtenistype inferred | |||
| Payment Journal Approved | De `workflow` van het betalingsjournaal is goedgekeurd, wat de aanmaak van betalingen autoriseert. Dit is de laatste controle voordat gelden klaargemaakt worden voor overboeking. | ||
| Het belang Scheidt de administratieve voorbereiding van betalingen van het autorisatie-knelpunt. Vindplaats WorkflowTrackingStatusTable gekoppeld aan de LedgerJournalTable (Header) ID. Status is Voltooid. Vastleggen Vastgelegd wanneer workflow-instantie is voltooid Gebeurtenistype explicit | |||
Extractie Guides
Stappen
Toegang tot de Werkruimte Gegevensbeheer: Log in bij uw Microsoft Dynamics 365 Finance-omgeving. Navigeer naar Werkruimtes en selecteer Gegevensbeheer. Dit is het centrale punt voor het configureren van gegevensexportprojecten.
Exportproject aanmaken: Klik op de tegel Exporteren om een nieuw gegevensproject aan te maken. Geef het project een duidelijke naam, bijvoorbeeld ProcessMining_AP_Export. Selecteer in het veld Doelgegevensindeling de gewenste bestemmingsindeling (bijv. Azure SQL DB voor BYOD of CSV voor bestandsexport).
Gegevensentiteiten toevoegen: Voeg de volgende standaard gegevensentiteiten één voor één toe aan het project: VendorInvoiceHeaderEntity (voor openstaande facturen), VendorInvoiceLineEntity (voor factuurregels), VendorInvoiceJournalHeaderEntity (voor geboekte facturen), VendorPaymentJournalLineEntity (voor betalingen) en WorkflowHistoryEntity (voor goedkeuringslogs). Als WorkflowHistoryEntity niet standaard beschikbaar is, moet u mogelijk een aangepaste entiteit of een specifieke systeementiteit inschakelen die voor export beschikbaar is.
Entiteitsfilters configureren: Klik voor elke entiteit op het filterpictogram. Pas filters toe om de data te beperken tot de relevante CompanyInfo (DataAreaId) en stel een datumbereik in op de velden CreatedDateTime of InvoiceDate om alleen data te extraheren voor de gewenste analyseperiode (bijv. de laatste 12 maanden).
Terugkerende export instellen: Om ervoor te zorgen dat het event log actueel blijft, maakt u een terugkerende data job aan. Definieer de frequentie van de herhaling (bijv. dagelijks of elk uur) en schakel Incremental push in waar dit wordt ondersteund. Dit vermindert de systeembelasting doordat alleen gewijzigde records worden geëxporteerd.
Eerste export uitvoeren: Voer het project de eerste keer handmatig uit door op Nu exporteren te klikken. Controleer het uitvoeroverzicht om er zeker van te zijn dat alle records zonder fouten succesvol zijn geëxporteerd.
Data transformeren: Zodra de data is geëxporteerd naar uw bestemming (Azure SQL of bestanden), gebruikt u het SQL-script in de sectie Query om deze tabellen samen te voegen. Deze transformatielogica converteert de verschillende entiteitsrecords naar één enkel, chronologisch event log.
Attributes toewijzen: Zorg ervoor dat de resulterende dataset het InvoiceNumber toewijst aan Case ID, EventTime aan Timestamp, en Activity aan Activity Name, volgens de vereisten van de process mining tool.
Valideren en uploaden: Voer de hieronder vermelde validatiecontroles uit om de nauwkeurigheid van de data te bevestigen. Eenmaal geverifieerd, exporteert u het eindresultaat als een CSV- of Parquet-bestand en uploadt u het naar ProcessMind.
Configuratie
- Entiteitselectie: Gebruik VendorInvoiceHeaderEntity en VendorInvoiceLineEntity voor processtappen vóór boeking. Gebruik VendorInvoiceJournalHeaderEntity voor het juridisch geboekte document. Gebruik VendorPaymentJournalLineEntity voor het volgen van betalingen.
- Incremental Push: Activeer deze instelling in het Data Management project om alleen nieuwe of gewijzigde records te exporteren na de initiële volledige load. Dit is cruciaal voor de prestaties.
- Datumbereiken: Filter op InvoiceDate >= [Start Date]. Vermijd onbegrensde exports die kunnen leiden tot timeouts.
- Bedrijfsfilter: D365 is een multi-entiteitssysteem. Filter altijd op DataAreaId om te voorkomen dat data van verschillende juridische entiteiten wordt gemengd, tenzij analyse over meerdere bedrijven is bedoeld.
- Workflow History: Standaard entiteiten voor workflow history kunnen zwaar zijn. Zorg ervoor dat u alleen history exporteert die gerelateerd is aan VendInvoice-typen om het volume beheersbaar te houden.
a Voorbeeldquery 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' Stappen
BYOD-connectiviteit verifiëren: Zorg ervoor dat u SQL Server Management Studio (SSMS) of een vergelijkbare tool hebt geïnstalleerd en verbinding kunt maken met de Azure SQL Database die is geconfigureerd als het Bring Your Own Database (BYOD)-doel voor uw Dynamics 365 Finance & Operations-omgeving.
Entiteitsexport bevestigen: Navigeer naar de Werkruimte Gegevensbeheer in Dynamics 365. Verifieer dat de volgende entiteiten (of hun onderliggende tabellen) zijn geconfigureerd voor export naar de BYOD-database:
VendInvoiceInfoTable(Openstaande Facturen),VendInvoiceInfoLine(Openstaande Regels),VendInvoiceJour(Geboekte Facturen),VendTrans(Crediteuren Transacties),LedgerJournalTrans(Journaalregels),LedgerJournalTable(Journaalkoppen) enWorkflowTrackingStatusTable(Workflowgeschiedenis).Exporttaak configureren: Als deze tabellen momenteel niet worden geëxporteerd, maak dan een nieuwe exporttaak aan. Stel de Doelgegevensindeling in op uw BYOD SQL-database. Kies Incremental Push om de data gesynchroniseerd te houden zonder volledige re-exports. Voer de taak uit om de tabellen te vullen.
SQL-omgeving voorbereiden: Open SSMS en maak verbinding met de BYOD Azure SQL-database. Open een nieuw queryvenster.
Parameters instellen: Zoek in het onderstaande script het gedeelte voor variabeledeclaratie bovenaan. Werk de variabelen
@StartDateen@EndDatebij zodat deze overeenkomen met de periode die u wilt analyseren. Als u wilt filteren op een specifieke juridische entiteit, werk dan deDATAAREAID-filtercondities bij.Script uitvoeren: Voer het volledige T-SQL script uit. Dit script gebruikt
UNION ALLom data van meerdere tabellen te combineren tot één gestandaardiseerd event log-formaat.Data valideren: Controleer de resultaten op null-waarden in de kolommen
InvoiceNumberofEventTime. Zorg ervoor dat zowel geboekte facturen (uitVendInvoiceJour) als openstaande facturen (uitVendInvoiceInfoTable) verschijnen.Resultaat exporteren: Klik met de rechtermuisknop op het resultatenraster in SSMS en selecteer Resultaten opslaan als.... Sla het bestand op als een CSV (Comma Delimited) bestand.
Formatteren voor upload: Open het CSV-bestand in Excel of een teksteditor om ervoor te zorgen dat datumformaten voldoen aan ISO 8601 (JJJJ-MM-DD UU:MM:SS), indien vereist door ProcessMind. Verdere transformatie zou niet nodig moeten zijn als het script succesvol is uitgevoerd.
Uploaden naar ProcessMind: Importeer het CSV-bestand in ProcessMind, waarbij de kolommen
InvoiceNumberworden toegewezen aan Case ID,Activityaan Activity Name enEventTimeaan Timestamp.
Configuratie
- Exportstrategie: Gebruik Incremental Push voor tabellen met een hoog volume zoals
LedgerJournalTransenVendTransom de BYOD load te minimaliseren. Gebruik alleen Full Push als data-inconsistenties worden vermoed. - Tijdzonebeheer: Dynamics 365 slaat data op in UTC. Het script gaat uit van UTC. Als uw analyse lokale tijd vereist, pas dan een
DATEADDaanpassing toe in het script of tijdens de ProcessMind import. - Bedrijfsfiltering: De
DataAreaIdkolom vertegenwoordigt de Juridische Entiteit. Het script extraheert data voor alle entiteiten standaard. VoegWHERE DataAreaId = 'usmf'(voorbeeld) toe om te filteren op een specifieke dochteronderneming. - Workflow History: De tabel
WorkflowTrackingStatusTableis cruciaal voor goedkeuringstimestamps. Zorg ervoor dat deze tabel is opgenomen in uw BYOD export configuration, aangezien deze vaak standaard wordt weggelaten. - Data Retention: Let op eventuele opschoonroutines in D365 die voltooide workflow history of geboekte journaalregels kunnen verwijderen, aangezien dit de historische diepte van de process mining analyse zal beperken.
a Voorbeeldquery 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;