Ihre Datenvorlage für die Retouren- und Rückerstattungsabwicklung
Ihre Datenvorlage für die Retouren- und Rückerstattungsabwicklung
- Empfohlene Datenfelder zum Sammeln
- Wichtige Prozessschritte zur Verfolgung
- Anleitung zur Datenextraktion
Attribute der Retouren- und Rückerstattungsabwicklung
| Name | Beschreibung | ||
|---|---|---|---|
| Ereigniszeit EventTime | Der Zeitstempel, der angibt, wann eine bestimmte Aktivität oder ein Ereignis stattgefunden hat. | ||
| Beschreibung Event Time, oder der Zeitstempel, erfasst das genaue Datum und die Uhrzeit, zu der eine Aktivität stattgefunden hat. Jede Aktivität im Event Log hat einen entsprechenden Zeitstempel, der die chronologische Reihenfolge der Ereignisse liefert. Dieses Attribut ist entscheidend für alle zeitbasierten Process Mining-Analysen. Es wird verwendet, um Zykluszeiten zwischen Aktivitäten zu berechnen, Wartezeiten und Engpässe zu identifizieren, die Gesamtdauer eines Falls zu messen und die Einhaltung von Service Level Agreements (SLAs) zu überprüfen. Die Genauigkeit der Zeitstempel wirkt sich direkt auf die Zuverlässigkeit jeder Performance-Analyse aus. Bedeutung Dieser Timestamp ist entscheidend für die Berechnung aller dauerbasierten Metriken, wie Zykluszeiten und Wartezeiten, die grundlegend für die Leistungsanalyse sind. Datenquelle Entspricht den Erstellungs- oder Änderungsdatumsfeldern in verschiedenen Tabellen, wie 'SalesTable.createdDateTime' für die Auftragserstellung oder 'WMSJournalTrans.createdDateTime' für Lagerjournale. Beispiele 2023-10-26T10:00:00Z2023-10-26T14:30:15Z2023-10-27T09:05:42Z | |||
| Retourenfall-ID ReturnCaseId | Der eindeutige Bezeichner für den Retouren- und Rückerstattungsfall eines Kunden, der alle zugehörigen Aktivitäten verknüpft. | ||
| Beschreibung Die Retourenfall-ID dient als primärer Bezeichner für jede einzelne Retourenprozessinstanz. Sie verknüpft alle Aktivitäten, die mit einer spezifischen Kundenretoure oder einem Rückerstattungsantrag verbunden sind, von der anfänglichen Erstellung der Retourenbestellung bis zu deren endgültigem Abschluss. In der Prozessanalyse ist diese ID grundlegend für die Rekonstruktion der End-to-End-Reise jeder Retoure. Sie ermöglicht die Verfolgung des gesamten Lebenszyklus, die Messung der gesamten Zykluszeiten und die Analyse von Variationen zwischen verschiedenen Fällen. Alle Events, Daten und Metriken werden unter Verwendung dieses Bezeichners aggregiert und korreliert. Bedeutung Dies ist der essentielle Fall-Identifikator, der alle Prozessschritte verbindet und es ermöglicht, jede Retoure von Anfang bis Ende zu verfolgen und zu analysieren. Datenquelle Dies ist typischerweise die Return Material Authorization (RMA)-Nummer oder die Verkaufsauftragsnummer des Typs 'Returned Order' im Modul 'Vertrieb und Marketing'. Zu finden in Tabellen wie 'SalesTable', wo 'SalesType' 'Returned Order' ist. Beispiele RMA-001234RMA-001235RMA-001236 | |||
| Aktivitätsname ActivityName | Der Name des spezifischen Geschäfts-Event oder der Aufgabe, die innerhalb des Retouren- und Rückerstattungsprozesses aufgetreten ist. | ||
| Beschreibung Dieses Attribut beschreibt einen spezifischen Schritt oder ein Event im Retouren- und Rückerstattungslebenszyklus, wie 'Retourenbestellung erstellt', 'Artikel erhalten' oder 'Gutschrift gebucht'. Jede Aktivität stellt einen separaten Punkt im Prozess dar, der im System erfasst wird. Die Analyse der Reihenfolge und Häufigkeit dieser Aktivitäten ist der Kern des Process Mining. Sie ermöglicht die Visualisierung von Prozesslandkarten, die Identifizierung von Engpässen zwischen den Schritten und die Entdeckung gängiger und ungewöhnlicher Prozessvarianten. Die Menge der Aktivitäten definiert den Umfang des analysierten Prozesses. Bedeutung Es definiert die Prozessschritte und ermöglicht die Visualisierung des Prozessflusses sowie die Identifizierung von Engpässen, Nacharbeiten und Abweichungen. Datenquelle Dies ist ein konzeptionelles Attribut, das aus System-Events abgeleitet wird. Es kann durch die Zuordnung von Statusänderungen in Tabellen wie 'SalesTable' und 'WMSJournalTable' oder spezifischen Event Logs zu benutzerfreundlichen Namen generiert werden. Beispiele Retourenbestellung erstelltArtikel empfangenDispositionscode angewendetGutschrift gebucht | |||
| Dispositions-Code DispositionCode | Ein Code, der das Ergebnis der Artikelinspektion und die nächste zu ergreifende Maßnahme angibt. | ||
| Beschreibung Der Dispositionscode wird während der Qualitätsprüfung eines zurückgesendeten Artikels vergeben. Er bestimmt den nächsten Schritt im Prozess, wie 'Gutschrift', 'Ersatz', 'Verschrottung' oder 'Rücksendung an den Kunden'. Dieses Attribut ist ein kritischer Entscheidungspunkt im Retourenprozess. Die Analyse nach Dispositionscode ermöglicht es Unternehmen, die Ergebnisse von Retouren zu verstehen, die finanziellen Auswirkungen der Verschrottung von Artikeln zu verfolgen und die Effizienz verschiedener Lösungspfade, wie Ersatz versus Rückerstattung, zu bewerten. Bedeutung Dieser Code bestimmt den Weg, den ein Retourenfall nach der Prüfung nimmt, was für die Analyse von Prozessvarianten und deren Geschäftsergebnissen entscheidend ist. Datenquelle Dies ist ein Schlüsselfeld im Qualitätsmanagementmodul. Es ist mit der Bearbeitung von Qualitätsaufträgen oder Prüfaufträgen verbunden. Beispiele CRDTREPL-DVERSCHROTTUNGRTV | |||
| Produkt-ID ProductId | Der eindeutige Bezeichner für das zurückgesendete Produkt. | ||
| Beschreibung Die Produkt-ID, oft die Stock Keeping Unit (SKU), identifiziert den spezifischen Artikel, der vom Kunden zurückgesendet wird. Jede Retourenbestellposition ist mit einer Produkt-ID verknüpft. Die Analyse von Retouren nach Produkt ist wesentlich, um Artikel mit hohen Retourenquoten zu identifizieren. Dies kann auf Qualitätsprobleme, ungenaue Produktbeschreibungen oder Herstellungsfehler hinweisen. Diese Analyse hilft, produktbezogene Untersuchungen und Verbesserungen zu priorisieren. Bedeutung Ermöglicht die Analyse von Retouren auf Produktbasis, um Artikel mit Qualitätsproblemen oder hohem Retourenvolumen zu identifizieren. Datenquelle Dies entspricht dem Feld 'ItemId' in der 'SalesLine'-Tabelle für die Retourenbestellung. Beispiele SKU-A-123SKU-B-456SKU-C-789 | |||
| Retourengrundcode ReturnReasonCode | Der vom Kunden angegebene Grund für die Rücksendung des Artikels. | ||
| Beschreibung Der Retourengrundcode erfasst den vom Kunden angegebenen Grund für die Retoure, wie 'Defekter Artikel', 'Falsche Größe', 'Nicht wie beschrieben' oder 'Nicht mehr benötigt'. Diese Informationen werden typischerweise bei der Initiierung der Retoure erfasst. Die Analyse der Retourengründe ist entscheidend für die Ursachenanalyse. Sie hilft Unternehmen, Probleme mit der Produktqualität, ungenaue Produktbeschreibungen oder logistische Fehler zu identifizieren. Erkenntnisse aus diesen Daten können Verbesserungen im Produktdesign, Marketing und in den Lieferkettenabläufen vorantreiben, um zukünftige Retouren zu reduzieren. Bedeutung Bietet kritische Einblicke, warum Retouren auftreten, und ermöglicht eine Ursachenanalyse, um Retourenraten zu senken und die Kundenzufriedenheit zu verbessern. Datenquelle Dies wird typischerweise auf der Ebene der Retourenbestellposition gespeichert. Suchen Sie nach Grundcode-Feldern in der 'SalesLine'-Tabelle für Retourenbestellungen. Beispiele DEFECTFALSCHER_ARTIKELNO_LONGER_WANTEDDAMAGED_IN_TRANSIT | |||
| Retourenkanal ReturnChannel | Die Methode oder der Kanal, über den der Kunde die Retoure initiiert hat. | ||
| Beschreibung Dieses Attribut spezifiziert den Kanal, den der Kunde zur Initiierung des Retourenprozesses genutzt hat, beispielsweise 'Online-Portal', 'Im Geschäft', 'Kundenservice-Anruf' oder 'Post'. Die Segmentierung der Prozessanalyse nach Retourenkanal hilft bei der Bewertung der Leistung und Effizienz jedes Kanals. Ein Unternehmen kann Zykluszeiten, Kosten und Kundenzufriedenheit über verschiedene Kanäle hinweg vergleichen, um Best Practices und Bereiche für Investitionen oder Verbesserungen zu identifizieren. Dies ist entscheidend für das 'Return Channel Utilization Performance'-Dashboard. Bedeutung Es ermöglicht den Leistungsvergleich zwischen verschiedenen Retourenkanälen und hilft dabei, die effizientesten und kostengünstigsten zu optimieren. Datenquelle Diese Information könnte im Retourenbestellkopf ('SalesTable') gespeichert oder vom Benutzer abgeleitet werden, der die Bestellung erstellt hat. Sie erfordert möglicherweise eine benutzerdefinierte Logik oder ein dediziertes Feld. Beispiele Web-PortalIn-Store KioskKundensupport | |||
| Verantwortlicher Benutzer ResponsibleUser | Der Benutzer oder Mitarbeiter, der eine spezifische Aktivität durchgeführt hat oder dafür verantwortlich ist. | ||
| Beschreibung Dieses Attribut identifiziert den einzelnen Benutzer, der für die Ausführung eines Prozessschritts verantwortlich ist. Dies könnte der Lagerarbeiter sein, der den Artikel erhalten hat, der Qualitätsinspektor oder der Finanzsachbearbeiter, der die Gutschrift gebucht hat. Die Analyse des Prozesses nach Benutzer hilft beim Verständnis der Arbeitslastverteilung, der Identifizierung von Top-Performern und der Erkennung potenzieller Schulungsbedarfe. Sie kann auch verwendet werden, um Fälle zu untersuchen, die von spezifischen Personen oder Teams bearbeitet wurden, und um eine ordnungsgemäße Aufgabentrennung sicherzustellen. Bedeutung Es ermöglicht die Analyse der Arbeitslastverteilung, der Leistung von Einzelpersonen oder Teams und die Identifizierung von Schulungs- oder Ressourcenzuweisungsmöglichkeiten. Datenquelle In Feldern wie 'erstellt von' oder 'geändert von' in Transaktionsdatensätzen, wie 'SalesTable.createdBy' oder verknüpften Benutzer-IDs in Journaltabellen, gefunden. Beispiele Alice.WBob.JChris.P | |||
| Angefragter Rückerstattungsbetrag RequestedRefundAmount | Der gesamte monetäre Wert der vom Kunden angefragten Rückerstattung. | ||
| Beschreibung Dieses Attribut stellt den initialen Rückerstattungsbetrag dar, wie er zu Beginn des Retourenprozesses angefragt oder erwartet wurde. Er basiert typischerweise auf dem ursprünglichen Kaufpreis der zurückgegebenen Artikel. Dieser Wert dient als Ausgangspunkt für die 'Rückerstattungsbetrags-Diskrepanzanalyse'. Durch den Vergleich des angefragten Betrags mit dem tatsächlich erstatteten Betrag kann das Unternehmen Diskrepanzen identifizieren, die durch Wiedereinlagerungsgebühren, Teilerstattungen für beschädigte Waren oder andere Anpassungen verursacht werden. Dies hilft bei der Überwachung der finanziellen Genauigkeit und der Einhaltung von Richtlinien. Bedeutung Es dient als Basislinie zur Messung der finanziellen Genauigkeit, indem es mit dem tatsächlich bearbeiteten Rückerstattungsbetrag verglichen wird. Datenquelle Dies ist typischerweise der Positionsbetrag oder Gesamtbetrag der ursprünglichen zurückgesendeten Verkaufsauftragsposition, zu finden in 'SalesLine.LineAmount'. Beispiele 99.99150.0024,50 | |||
| Endzeit EndTime | Der Timestamp, der anzeigt, wann eine spezifische Aktivität abgeschlossen wurde. | ||
| Beschreibung Die Endzeit stellt den Abschluss-Timestamp einer Aktivität dar. Während die Startzeit den Beginn markiert, kennzeichnet die Endzeit den Abschluss und ermöglicht die Berechnung der Bearbeitungszeit für diese spezifische Aufgabe. Dieses Attribut ist entscheidend für eine detaillierte Leistungsanalyse, insbesondere für Aufgaben mit messbarer Dauer, wie die 'Artikelprüfung'. Durch den Vergleich von Startzeit und Endzeit können Analysten die aktive Bearbeitungszeit von Aufgaben präzise messen und sie von der Wartezeit zwischen den Aufgaben unterscheiden. Dies hilft, Ineffizienzen innerhalb spezifischer Aktivitäten, nicht nur zwischen ihnen, genau zu bestimmen. Bedeutung Es ermöglicht die Berechnung der aktiven Bearbeitungszeit für einzelne Aktivitäten und hilft, zwischen Wartezeit und tatsächlicher Arbeitszeit zu unterscheiden. Datenquelle Dies muss oft abgeleitet werden. Zum Beispiel könnte es das 'modifiedDateTime' einer Statusänderung sein, die eine Aktivität abschließt, oder es könnte die StartTime der nachfolgenden Aktivität sein. Beispiele 2023-10-26T10:15:00Z2023-10-26T14:45:20Z2023-10-27T09:55:12Z | |||
| Gutschrifts-ID CreditNoteId | Der eindeutige Bezeichner für das Gutschriftendokument, das für eine Rückerstattung erstellt wurde. | ||
| Beschreibung Wenn eine Rückerstattung bearbeitet wird, wird ein Finanzdokument, bekannt als Gutschrift oder Kreditmemo, generiert. Dieses Attribut speichert die eindeutige ID dieses Dokuments. Diese ID bietet eine direkte Verknüpfung vom operativen Retourenprozess zu den Finanzaufzeichnungen im Buchhaltungssystem. Sie ist nützlich für Audit-Zwecke und für tiefgehende Analysen von finanziellen Diskrepanzen, indem sie einem Analysten ermöglicht, einen Retourenfall bis zur spezifischen Finanztransaktion zu verfolgen, die ihn abgewickelt hat. Bedeutung Es verknüpft den operativen Retourenprozess mit der entsprechenden Finanztransaktion, was für die Prüfung und den finanziellen Abgleich entscheidend ist. Datenquelle Die Gutschriftnummer findet sich typischerweise im Feld 'InvoiceId' der Tabelle 'CustInvoiceJour', wo der Transaktionstyp 'Gutschrift' ist. Dies kann mit der Retourenbestellung verknüpft werden. Beispiele CN-10056CN-10057CN-10058 | |||
| Ist richtlinientreu IsPolicyAdherent | Ein Kennzeichen, das angibt, ob die Retourengenehmigung den festgelegten Retourenrichtlinien entspricht. | ||
| Beschreibung Dies ist ein berechnetes boolesches Attribut, das angibt, ob eine Retoure alle in der Retourenrichtlinie des Unternehmens definierten Kriterien erfüllt. Dies könnte auf Faktoren wie dem Retourenzeitfenster, dem Artikelzustand oder dem Retourengrund basieren. Dieses Attribut unterstützt direkt das Dashboard 'Return Approval Compliance Overview' und den KPI 'Compliant Return Approval Rate'. Es ermöglicht dem Unternehmen, die Richtlinieneinhaltung zu quantifizieren, Fälle zu identifizieren, die als Ausnahmen genehmigt wurden, und die Gründe und Häufigkeit solcher Ausnahmen zu analysieren. Dies ist entscheidend für Governance und Kostenkontrolle. Bedeutung Es misst direkt die Einhaltung von Geschäftsregeln und hilft, nicht-konforme Retourengenehmigungen zu identifizieren und zu reduzieren, die zu Umsatzeinbußen führen können. Datenquelle Dies ist ein abgeleitetes Attribut. Die Logik müsste durch den Vergleich von Attributen der Retoure (z.B. Retourendatum vs. Kaufdatum, Retourengrund) mit vordefinierten Geschäftsregeln aufgebaut werden. Beispiele truefalsch | |||
| Kunden-ID CustomerId | Der eindeutige Bezeichner für den Kunden, der die Retoure initiiert hat. | ||
| Beschreibung Die Kunden-ID ist der eindeutige Bezeichner für das Kundenkonto, das mit der Retoure verknüpft ist. Sie verknüpft die Retourentransaktion mit einem spezifischen Kunden in der CRM- oder Kundendatenbank. Die Analyse von Retouren nach Kunden ermöglicht die Identifizierung von Kunden mit ungewöhnlich hoher Retourenaktivität, was auf betrügerisches Verhalten oder chronische Unzufriedenheit hindeuten könnte. Sie kann auch zur Kundensegmentierung verwendet werden, beispielsweise um Premium-Retourendienste für hochwertige Kunden anzubieten. Bedeutung Es verknüpft den Retourenprozess mit einem bestimmten Kunden, was eine Analyse auf Kundenebene und die Identifizierung von Retourenmustern oder potenziellem Betrug ermöglicht. Datenquelle Dies ist das Feld 'CustAccount' in der 'SalesTable' für die Retourenbestellung. Beispiele CUST-00045CUST-00192CUST-00315 | |||
| Lager-ID WarehouseId | Der Bezeichner für das Lager oder den Standort, an dem der zurückgesendete Artikel empfangen wird. | ||
| Beschreibung Dieses Attribut identifiziert das spezifische physische Lager oder Retourenzentrum, das den zurückgesendeten Artikel verarbeitet. Unterschiedliche Standorte können unterschiedliche Prozesse, Ressourcen oder Leistungsniveaus aufweisen. Die Analyse des Prozesses nach Lager ermöglicht Leistungs-Benchmarks zwischen den Standorten. Sie kann dabei helfen, die effizientesten Einrichtungen bei der Bearbeitung von Retouren zu identifizieren, regionale Engpässe hervorzuheben und Entscheidungen über die Ressourcenzuweisung und Prozessstandardisierung im gesamten Logistiknetzwerk zu informieren. Bedeutung Ermöglicht den Leistungsvergleich zwischen verschiedenen Lagern oder Retourenzentren und hilft, regionale Engpässe oder Best Practices zu identifizieren. Datenquelle Diese Information ist im Feld 'InventLocationId' in bestandsbezogenen Transaktionen, wie dem Zugangsjournal ('WMSJournalTable') oder in der 'SalesLine', gespeichert. Beispiele WH-OSTWH-WESTCENTRAL-DC | |||
| Letzte Datenaktualisierung LastDataUpdate | Der Timestamp indicating the Last Time the Data for the Process was refreshed. | ||
| Beschreibung Dieses Attribut erfasst Datum und Uhrzeit der letzten Datenextraktion aus dem Quellsystem und der Aktualisierung im Process Mining Tool. Es bietet einen Referenzpunkt für die Aktualität der analysierten Daten. Die Kenntnis der letzten Datenaktualisierungszeit ist wichtig, um die Aktualität der Analyse zu verstehen. Sie hilft Benutzern, die Dashboards und KPIs korrekt zu interpretieren, indem sie wissen, ob sie Echtzeitdaten oder einen Snapshot von einem bestimmten Zeitpunkt betrachten. Dies ist entscheidend für die operative Überwachung. Bedeutung Gibt die Aktualität der Daten an und stellt sicher, dass Analysten wissen, wie aktuell ihre Prozesseinblicke sind. Datenquelle Dies ist ein Metadatenattribut, das während der Datenaufnahmepipeline generiert und gespeichert wird und typischerweise den Timestamp des ETL-Job-Abschlusses darstellt. Beispiele 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Quellsystem SourceSystem | Das Informationssystem, aus dem die Event-Daten extrahiert wurden. | ||
| Beschreibung Dieses Attribut identifiziert das Quellinformationssystem, aus dem die Daten stammen. In diesem Kontext wird es hauptsächlich 'Microsoft Dynamics 365' sein. In größeren Organisationen kann ein Prozess mehrere Systeme umfassen. Die Angabe des Quellsystems für jedes Event ist entscheidend für die Datengovernance, die Fehlerbehebung bei Datenextraktionsproblemen und das Verständnis der technologischen Landschaft des Prozesses. Es bestätigt den Ursprung der analysierten Daten. Bedeutung Es liefert entscheidenden Kontext über die Datenherkunft, der für die Data Governance, Validierung und das Verständnis der Systemlandschaft des Prozesses unerlässlich ist. Datenquelle Dies ist typischerweise ein statischer Wert, der während des Datenextraktions-, Transformations- und Ladevorgangs (ETL) hinzugefügt wird, um die Herkunft des Datensatzes zu kennzeichnen. Beispiele Microsoft Dynamics 365 F&OD365-PROD | |||
| Retourenbestellstatus ReturnOrderStatus | Der Gesamtstatus der Retourenbestellung zum Zeitpunkt des Events. | ||
| Beschreibung Dieses Attribut gibt den aktuellen Status des Retourenbestellkopfs an, z.B. 'Offen', 'Fakturiert' oder 'Storniert'. Es bietet eine übergeordnete Ansicht, wo sich der Fall in seinem Lebenszyklus befindet. Während Aktivitäten detaillierte Prozessschritte liefern, ist der Gesamtstatus nützlich zum Filtern und Segmentieren von Fällen. Ein Analyst könnte sich beispielsweise nur auf 'Offene' Fälle konzentrieren, um die aktuelle Arbeitslast zu verstehen, oder den Prozessfluss von Fällen analysieren, die letztendlich 'Storniert' werden. Bedeutung Bietet eine hochrangige Zusammenfassung des Fallstatus, die zum Filtern von Fällen und zum Verständnis von Ergebnissen wie Stornierungen nützlich ist. Datenquelle Diese Information befindet sich im Feld 'SalesStatus' oder 'DocumentStatus' der 'SalesTable'. Beispiele Offene BestellungGeliefertFakturiertStorniert | |||
| Retourentyp ReturnType | Kategorisiert die Retoure basierend auf dem erwarteten Ergebnis, z. B. Rückerstattung oder Ersatz. | ||
| Beschreibung Dieses Attribut klassifiziert den Retourenfall basierend auf der vom Kunden gewünschten oder vom Unternehmen angebotenen Lösungsart. Gängige Typen sind eine monetäre 'Rückerstattung', ein Umtausch gegen einen 'Ersatzartikel' oder eine 'Reparatur'. Diese Kategorisierung ist nützlich für die Analyse verschiedener Prozesspfade. Der Prozess zur Ausstellung einer Rückerstattung unterscheidet sich erheblich vom Prozess für den Versand eines Ersatzartikels. Die Segmentierung nach Retourentyp ermöglicht eine genauere Analyse der Zykluszeiten und Engpässe, die für jeden Lösungspfad spezifisch sind. Bedeutung Es ermöglicht die Segmentierung der Analyse basierend auf dem beabsichtigten Ergebnis, da Rückerstattungs- und Ersatzprozesse unterschiedliche Schritte und Zykluszeiten aufweisen. Datenquelle Dies kann ein benutzerdefiniertes Feld im Retourenbestellkopf sein oder basierend auf dem Dispositionscode oder nachfolgenden Transaktionen, wie der Erstellung eines Ersatz-Kundenauftrags, abgeleitet werden. Beispiele RückerstattungErsatzWarengutschrift | |||
| SLA-Status SlaStatus | Gibt an, ob der Fall innerhalb des Service Level Agreement-Ziels gelöst wurde. | ||
| Beschreibung Dieses berechnete Attribut bietet einen einfachen Status der SLA-Einhaltung, typischerweise 'Pünktlich' oder 'Verspätet'. Es wird durch den Vergleich des Timestamps der letzten Aktivität (z.B. 'Retourenbestellung geschlossen') mit dem 'RefundSlaTargetDate' ermittelt. Dieses Attribut vereinfacht die Leistungsberichterstattung auf Dashboards wie 'Refund Resolution SLA Performance'. Anstatt dass Benutzer Daten vergleichen müssen, bietet es einen direkten und leicht verständlichen Status. Dies ermöglicht ein schnelles Filtern und Aggregieren zur Berechnung der gesamten 'Resolution SLA Adherence Rate'. Bedeutung Bietet einen einfachen, auf einen Blick erkennbaren Indikator für die SLA-Compliance, der das Filtern nach verspäteten Fällen und die Analyse der Ursachen von Verzögerungen erleichtert. Datenquelle Dies ist ein abgeleitetes Attribut, das durch den Vergleich des Timestamps der finalen Lösungsaktivität mit dem Attribut 'RefundSlaTargetDate' berechnet wird. Beispiele PünktlichVerspätet | |||
| SLA-Zieldatum für Rückerstattung RefundSlaTargetDate | Das Zieldatum, bis zu dem der Retouren- und Rückerstattungsfall vollständig gelöst sein sollte. | ||
| Beschreibung Dieses Attribut definiert die Service Level Agreement (SLA)-Frist für die Lösung eines Retourenfalls. Es ist das Datum, bis zu dem der Kunde eine endgültige Lösung erwarten sollte, wie eine gebuchte Rückerstattung oder einen versandten Ersatz. Dieses Zieldatum ist entscheidend für die Leistungsüberwachung gegenüber Serviceverpflichtungen. Es wird verwendet, um den KPI 'Resolution SLA Adherence Rate' zu berechnen und das 'Refund Resolution SLA Performance'-Dashboard zu speisen. Der Vergleich dieses Datums mit dem tatsächlichen Abschlussdatum des Prozesses ermöglicht es dem Unternehmen, SLA-Verletzungen zu identifizieren und überalterte Fälle proaktiv zu verwalten. Bedeutung Es ist der Maßstab, an dem die Prozessleistung gemessen wird, und ermöglicht die Verfolgung der SLA-Compliance und die Identifizierung von verspäteten Fällen. Datenquelle Dies ist möglicherweise kein Standardfeld. Es wird oft basierend auf dem Retourenerstellungsdatum plus einer vordefinierten SLA-Periode (z.B. 14 Tage) berechnet. Es könnte in einem benutzerdefinierten Feld gespeichert sein. Beispiele 2023-11-10T23:59:59Z2023-11-15T23:59:59Z | |||
| Tatsächlicher Rückerstattungsbetrag ActualRefundAmount | Der endgültige monetäre Wert der an den Kunden ausgezahlten Rückerstattung. | ||
| Beschreibung Dieses Attribut ist der endgültige, bestätigte Betrag, der dem Kunden zurückerstattet wurde. Dieser Wert wird erfasst, wenn die Gutschrift erstellt und gebucht wird. Dies ist ein kritisches Attribut für die Finanzanalyse und wird direkt im 'Refund Amount Discrepancy Analysis'-Dashboard und dem KPI 'Refund Amount Accuracy Rate' verwendet. Die Analyse dieser Daten hilft, die finanziellen Auswirkungen von Retouren und eventuelle Anpassungen während des Prozesses zu verstehen. Bedeutung Dies stellt die tatsächlichen finanziellen Auswirkungen der Retoure dar und ist entscheidend für die Berechnung der Rückerstattungsgenauigkeit und das Verständnis finanzieller Ergebnisse. Datenquelle Dieser Wert kann in den Details der gebuchten Gutschriftentransaktion gefunden werden. Er bezieht sich auf die Tabellen 'CustTrans' und 'CustInvoiceJour' für die Gutschrift. Beispiele 99.99135,000.00 | |||
Aktivitäten der Retouren- und Rückerstattungsabwicklung
| Aktivität | Beschreibung | ||
|---|---|---|---|
| Artikel empfangen | Markiert den physischen Wareneingang des retournierten Artikels im Lager oder im dafür vorgesehenen Retourenzentrum. Dies wird erfasst, wenn das dem Retourenauftrag zugeordnete Wareneingangsjournal gebucht wird. | ||
| Bedeutung Dies ist ein kritischer Meilenstein, der den Prozess von der Kundenaktion zur internen Bearbeitung überführt. Er ist der Ausgangspunkt für die Berechnung aller internen Bearbeitungszeiten, wie Prüfung und Disposition. Datenquelle Der Buchungs-Timestamp des WMS-Journals oder des Artikelzugangsjournals, das mit der Retourenbestellposition verknüpft ist. Dies aktualisiert die Lagerbuchungen auf den Status 'Registriert' oder 'Empfangen'. Erfassen Buchungsereignis des Artikel-Wareneingangsjournals, verknüpft mit der Retourenauftragsposition. Ereignistyp explicit | |||
| Dispositionscode angewendet | Diese Aktivität stellt den Abschluss der Inspektion und die Entscheidung dar, was mit dem zurückgesendeten Artikel geschehen soll. Ein Dispositionscode, wie 'Gutschrift', 'Verschrottung' oder 'Ersatz', wird der Retourenposition zugewiesen. | ||
| Bedeutung Dies ist ein wichtiger Entscheidungspunkt, der den nachfolgenden Prozesspfad bestimmt, sei es eine Rückerstattung, ein Umtausch oder eine Ablehnung. Verzögerungen hier können die gesamte Lösungszeit erheblich beeinflussen. Datenquelle Dieses Event wird erfasst, wenn das Feld 'DispositionCode' in der Lagerbuchung der Retourenbestellposition oder einem zugehörigen Journal gefüllt wird. Erfassen Das Update-Event, wenn ein DispositionCode für die Retourenbestellposition gesetzt wird. Ereignistyp explicit | |||
| Gutschrift gebucht | Die Gutschrift wird offiziell in den Finanzbüchern verbucht, wodurch die Gutschrift dem Kunden zur Verfügung steht. Dies kennzeichnet den Abschluss der Rückerstattungsaktion aus Sicht des Unternehmens. | ||
| Bedeutung Dies ist ein entscheidender finanzieller Meilenstein, der bestätigt, dass die Rückerstattung im System verarbeitet wurde. Es ist oft eine Schlüsselaktivität zur Messung der SLA-Einhaltung bei Rückerstattungen. Datenquelle Der Buchungs-Timestamp des Rechnungsjournals für die Retourenbestellung, der die Gutschrift finalisiert. Der Status der Retourenbestellung ändert sich auf 'Fakturiert'. Erfassen Buchung des Rechnungsjournals des Retourenauftrags. Ereignistyp explicit | |||
| Retourenbestellung erstellt | Diese Aktivität markiert die Initiierung des Retourenprozesses, bei dem eine Return Material Authorization (RMA) oder Retourenbestellung im System erstellt wird. Dies ist ein explizites Event, das bei der Erstellung eines neuen ReturnOrder-Datensatzes in Dynamics 365 erfasst wird. | ||
| Bedeutung Dies ist das primäre Start-Event für den gesamten Retourenprozess. Die Analyse der Zeit von dieser Aktivität zu anderen Aktivitäten zeigt die gesamte Prozessdurchlaufzeit und hilft, frühzeitige Engpässe zu identifizieren. Datenquelle Dieses Event wird vom Erstellungs-Timestamp des ReturnOrder-Headers erfasst. Dies findet sich typischerweise in der SalesTable, wo der SalesType 'Returned Order' ist. Erfassen Erstellungsereignis des SalesTable-Datensatzes mit SalesType = 'Returned Order'. Ereignistyp explicit | |||
| Retourenbestellung geschlossen | Die Retourenbestellung hat ihren Endstatus erreicht, was bedeutet, dass alle physischen und finanziellen Transaktionen abgeschlossen sind. Dies geschieht typischerweise, nachdem die Gutschrift gebucht oder der Ersatz versandt wurde. | ||
| Bedeutung Dies ist das primäre End-Event für einen erfolgreich abgeschlossenen Retourenprozess. Die Dauer von der Erstellung bis zu diesem Punkt repräsentiert die gesamte Fall-Zykluszeit. Datenquelle Abgeleitet aus der Statusänderung des ReturnOrder-Feldes auf seinen Endwert, wie 'Invoiced' oder 'Closed'. Dies deutet darauf hin, dass keine weitere Bearbeitung erwartet wird. Erfassen Änderung des Feldes SalesTable.Status oder SalesTable.DocumentStatus in einen finalen Status. Ereignistyp inferred | |||
| Ersatzartikel versandt | Der Lieferschein für den Ersatzartikel wird gebucht, was den Versand an den Kunden anzeigt. Dies markiert den Abschluss des Umtausch-Erfüllungsprozesses. | ||
| Bedeutung Dies ist ein wichtiger Meilenstein in der Umtauschvariante, der die Erfüllung der Verpflichtung des Unternehmens gegenüber dem Kunden darstellt. Er ist entscheidend für die Verfolgung von Umtausch-Zykluszeiten. Datenquelle Das Buchungsdatum des Lieferscheinjournals für den Ersatz-Kundenauftrag. Dies aktualisiert den Bestellstatus auf 'Geliefert'. Erfassen Buchung des Lieferscheins für den Ersatz-Verkaufsauftrag. Ereignistyp explicit | |||
| Ersatzbestellung erstellt | Ein neuer Verkaufsauftrag wird erstellt, um einen Ersatzartikel an den Kunden zu senden. Diese Aktivität tritt auf, wenn die Dispositionshandlung 'Ersetzen und Gutschreiben' oder 'Ersetzen und Verschrottung' ist. | ||
| Bedeutung Diese Aktivität initiiert die Umtauschprozessvariante. Die separate Verfolgung dieses Pfades vom Rückerstattungspfad ist entscheidend, um die Komplexität und Kosten von Umtauschvorgängen zu verstehen. Datenquelle Die Erstellung eines neuen SalesTable-Datensatzes für den Ersatzartikel, oft automatisch generiert und mit der ursprünglichen Retourenbestellung verknüpft. Erfassen Erstellung eines neuen Verkaufsauftrags, der über die Dispositionsaktion mit dem Retourenauftrag verknüpft ist. Ereignistyp explicit | |||
| Gutschrift erstellt | Eine Gutschrift wird auf Basis einer Disposition von 'Gutschrift' erstellt, die eine Rückerstattung an den Kunden autorisiert. Dies ist der formale Beginn des finanziellen Abwicklungsteils des Prozesses. | ||
| Bedeutung Diese Aktivität markiert die Genehmigung der finanziellen Rückerstattung. Die Zeit zwischen Disposition und Gutschriftenerstellung verdeutlicht administrative Verzögerungen bei der Initiierung der Rückerstattung. Datenquelle Dies kann aus der Erstellung eines neuen SalesTable-Datensatzes mit einem negativen Wert, verknüpft mit der ursprünglichen Retourenbestellung, oder durch Ausführung des Batch-Jobs 'Gutschrift erstellen' abgeleitet werden. Erfassen Erstellung einer Gutschrift, oft durch Buchen der Retourenauftragsrechnung. Ereignistyp explicit | |||
| Qualitätsauftrag generiert | Ein formaler Qualitätsauftrag wird erstellt, der anzeigt, dass der zurückgegebene Artikel einem strukturierten Inspektionsprozess unterzogen werden muss. Dies ist in Szenarien üblich, in denen Retouren detaillierte Tests oder Prüfungen gegen Qualitätsstandards erfordern. | ||
| Bedeutung Diese Aktivität kennzeichnet den Beginn eines formalen Inspektionsprozesses. Die Zeitmessung ab diesem Punkt hilft, die Effizienz und Dauer des Qualitätssicherungs-Workflows zu messen. Datenquelle Erstellungs-Timestamp eines Datensatzes in der InventQualityOrderTable, der mit dem Retourenauftrag verknüpft ist. Erfassen Erstellung eines InventQualityOrderTable-Datensatzes. Ereignistyp explicit | |||
| Retourenbestellung bestätigt | Stellt die formale Bestätigung der Retourenbestellung innerhalb des Systems dar, die oft nachgelagerte Logik auslöst. Dies wird typischerweise als explizite Aktion oder Statusänderung im Retourenbestellkopf erfasst. | ||
| Bedeutung Die Bestätigung ist ein entscheidender Schritt, bevor die Logistik beginnen kann. Verzögerungen zwischen Erstellung und Bestätigung können auf administrative oder systembedingte Rückstände hinweisen. Datenquelle Dies kann durch die Buchung des 'Bestätigungs'-Journals für die Retourenbestellung oder eine Änderung im Feld 'DocumentStatus' in der SalesTable identifiziert werden. Erfassen Ausführung der Funktion 'Verkaufsauftrag bestätigen' für den Retourenauftrag. Ereignistyp explicit | |||
| Retourenbestellung storniert | Die Retourenbestellung wird vor Abschluss storniert. Dies könnte auf eine Kundenanfrage zurückzuführen sein oder darauf, dass der Artikel nie zurückgesendet wurde. | ||
| Bedeutung Dies stellt ein alternatives, erfolgloses Ende des Prozesses dar. Die Analyse, warum Retouren storniert werden, kann Einblicke in das Kundenverhalten oder Prozessfehler geben. Datenquelle Abgeleitet aus der Statusänderung des ReturnOrder-Feldes zu 'Cancelled'. Dies ist ein separater Endzustand im Vergleich zu einem erfolgreich abgeschlossenen Auftrag. Erfassen Änderung des Feldes SalesTable.Status auf 'Cancelled'. Ereignistyp inferred | |||
| Wareneingangsjournal erstellt | Diese Aktivität signalisiert, dass das Lager den Eingang des zurückgesendeten Artikels erwartet. Es ist die Erstellung eines Zugangsjournals, das das System auf den physischen Wareneingang vorbereitet. | ||
| Bedeutung Dieser Schritt trennt die logistische Vorbereitung vom tatsächlichen physischen Wareneingang. Er hilft bei der Analyse der Lagerbereitschaft und der Planung für eingehende Retouren. Datenquelle Erstellung eines Datensatzes in der WMSJournalTable mit JournalType 'Arrival'. Das Journal ist mit der Retourenposition verknüpft. Erfassen Erstellungs-Timestamp des WMSJournalTable-Datensatzes für die Retoure. Ereignistyp explicit | |||
Extraktionsleitfäden
Schritte
- Voraussetzung: Registrieren Sie eine Anwendung in Azure Active Directory. Bevor Sie eine Verbindung zur Dynamics 365 API herstellen können, müssen Sie eine Anwendung in Ihrem Azure AD Tenant registrieren. Gewähren Sie dieser Anwendung delegierte Berechtigungen für den Zugriff auf Dynamics 365 Finance & Operations, z. B.
Financials.ReadWrite.Alloder eine benutzerdefinierte Berechtigung. - Anwendungs-ID in Dynamics 365 konfigurieren. Navigieren Sie in Dynamics 365 zu Systemverwaltung > Einrichtung > Azure Active Directory-Anwendungen. Fügen Sie die Anwendungs- (Client-) ID aus Ihrer Azure AD-App-Registrierung hinzu und verknüpfen Sie sie mit einem Benutzerkonto, das die erforderlichen Sicherheitsrollen zum Lesen der erforderlichen Datenentitäten besitzt.
- OAuth 2.0 Access Token erhalten. Schreiben Sie ein Skript, zum Beispiel in PowerShell oder Python, um sich am Microsoft Identity Platform Endpoint zu authentifizieren. Verwenden Sie die Anmeldeinformationen der Anwendung (Client ID und Secret), um ein Access Token für die Dynamics 365 Ressourcen-URL anzufordern.
- Ihre Dynamics 365 Umgebungs-URL identifizieren. Suchen Sie die Basis-URL für Ihre Dynamics 365-Umgebung. Der Web-API-Endpoint sieht typischerweise so aus:
https://[YourD365FinanceAndOpsURL].dynamics.com/data. - OData API-Anfragen erstellen und ausführen. Erstellen Sie für jede der 12 erforderlichen Aktivitäten eine spezifische OData GET-Anfrage-URL. Verwenden Sie
$select, um nur die erforderlichen Spalten abzurufen, und$filter, um den Datumsbereich und etwaige Statusbedingungen festzulegen. Das in Schritt 3 erhaltene Authentifizierungs-Token muss als Bearer Token im Authorization Header jeder Anfrage enthalten sein. - Ein Extraktionsskript entwickeln. Erstellen Sie ein Skript, das die Liste der OData-Anfragen durchläuft. Dieses Skript sollte die Authentifizierung handhaben, jede GET-Anfrage ausführen und die resultierenden JSON-Daten speichern. Achten Sie auf API-Limits und implementieren Sie bei Bedarf Pausen.
- API Pagination behandeln. Dynamics 365 paginiert große Ergebnisse. Ihr Skript muss in der Antwort nach einer
@odata.nextLink-Eigenschaft suchen. Wenn diese vorhanden ist, muss Ihr Skript eine nachfolgende Anfrage an diese URL stellen, um die nächste Datenseite abzurufen, und dies fortsetzen, bis keinnextLinkmehr bereitgestellt wird. - Daten transformieren und vereinigen. Verarbeiten Sie die JSON-Antwort von jedem der 12 API-Aufrufe. Erstellen Sie für jede Aktivität einen standardisierten Datensatz, der
ReturnCaseId,ActivityName,EventTimeund andere Attribute enthält. Zum Beispiel: Für das Ereignis 'Return Order Created' ordnen Sie dieReturnOrderNumberdemReturnCaseIdzu, setzen SieActivityNameauf 'Return Order Created' und ordnen SiecreatedDateTimedemEventTimezu. Kombinieren Sie die transformierten Datensätze aller Aufrufe zu einer einzigen Liste oder Tabelle. - Timestamps bereinigen und standardisieren. Stellen Sie sicher, dass alle
EventTime-Werte in einem konsistenten Format vorliegen, vorzugsweise UTC mit einem Format wieYYYY-MM-DDTHH:MM:SSZ. Behandeln Sie alle Datensätze mit fehlenden oder ungültigen Timestamps nach Bedarf. - Das finale Event Log exportieren. Sobald alle Daten gesammelt und in einen einzigen, vereinheitlichten Datensatz transformiert wurden, exportieren Sie diesen in eine CSV-Datei. Stellen Sie sicher, dass die Spaltenüberschriften den Anforderungen für ProcessMind entsprechen:
ReturnCaseId,ActivityName,EventTime,ResponsibleUser,DispositionCodeusw. Die Datei ist nun zum Upload bereit.
Konfiguration
- API Endpoint URL: Die Basis-URL für Ihre Dynamics 365 Finance & Operations Instanz. Sie folgt dem Format
https://[YourEnvironmentName].dynamics.com/data. - Azure AD Application: Eine Anwendung muss in Azure AD mit einer Client ID und einem Secret registriert werden. Sie benötigt API-Berechtigungen, um auf Dynamics 365 Datenentitäten zugreifen zu können.
- Filterung des Datumsbereichs: Es ist entscheidend, bei jedem API-Aufruf einen Datumsbereichsfilter mittels des OData
$filterParameters auf einem relevanten Datumsfeld, wiecreatedDateTimeodermodifiedDateTime, anzuwenden. Ein typischer Startbereich sind die Daten der letzten 3 bis 6 Monate, um die Extraktion handhabbar zu halten. - Unternehmensfilter: Um Daten für eine bestimmte juristische Person zu extrahieren, fügen Sie den
cross-company=trueQuery Parameter hinzu und verwenden Sie dann$filterauf demdataAreaIdFeld. Zum Beispiel:?cross-company=true&$filter=dataAreaId eq '[YourCompanyCode]'. - Seitenumbruch-Präferenz (Pagination Preference): Verwenden Sie den
Prefer: odata.maxpagesize=[value]Header in Ihren Anfragen, um die Anzahl der pro Seite zurückgegebenen Datensätze zu steuern. Ein Wert von1000bis5000ist üblich. Dies hilft, API-Timeouts bei großen Entitäten zu verhindern. - API-Drosselung (API Throttling): Beachten Sie die Service-Schutzgrenzen der Dynamics 365 API. Das Extraktionsskript sollte eine Logik zur Behandlung von
429 (Too Many Requests)-Antworten enthalten, typischerweise durch Implementierung eines exponentiellen Backoff oder eines einfachen Pause-und-Wiederholungsmechanismus.
a Beispielabfrage graphql
/*
This is a conceptual guide representing multiple, distinct OData API calls.
You will need a script (e.g., Python, PowerShell) to execute these calls sequentially,
authenticate with a bearer token, handle pagination, and union the results into a single file.
Replace [YourD365URL], [StartDate], [EndDate], and [YourCompanyCode] with your specific values.
*/
// Base URL for all requests
const string BaseUrl = "https://[YourD365URL].dynamics.com/data";
const string CompanyFilter = "?cross-company=true&$filter=dataAreaId eq '[YourCompanyCode]' and ";
const string DateFilterCreated = "createdDateTime ge [StartDate]T00:00:00Z and createdDateTime le [EndDate]T23:59:59Z";
const string DateFilterModified = "modifiedDateTime ge [StartDate]T00:00:00Z and modifiedDateTime le [EndDate]T23:59:59Z";
// 1. Return Order Created
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}{DateFilterCreated}&$select=ReturnOrderNumber,createdDateTime,createdby,ReturnReasonCodeId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser, ReturnReasonCodeId -> ReturnReasonCode
// 2. Return Order Confirmed
// This often updates the header status. We look for a modification time on confirmed orders.
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Confirmed' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby,ReturnReasonCodeId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Confirmed' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 3. Arrival Journal Created
GET {BaseUrl}/WarehouseArrivalJournalHeaders{CompanyFilter}{DateFilterCreated}&$expand=WarehouseArrivalJournalLines($select=InventTransactionId)&$select=JournalNumber,createdDateTime,createdby
// Note: This requires post-processing to link JournalNumber to a ReturnCaseId via InventTransactionId.
// Mapping: Link via InventTrans -> ReturnCaseId, 'Arrival Journal Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 4. Item Received (Arrival Journal Posted)
GET {BaseUrl}/WarehouseArrivalJournalHeaders{CompanyFilter}JournalPosted eq 'Yes' and {DateFilterModified}&$expand=WarehouseArrivalJournalLines($select=InventTransactionId)&$select=JournalNumber,modifiedDateTime,modifiedby
// Mapping: Link via InventTrans -> ReturnCaseId, 'Item Received' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 5. Quality Order Generated
GET {BaseUrl}/InventQualityOrders{CompanyFilter}{DateFilterCreated}&$select=QualityOrderId,InventTransId,createdDateTime,CreatedByUserId,ItemId
// Mapping: Link via InventTransId -> ReturnCaseId, 'Quality Order Generated' -> ActivityName, createdDateTime -> EventTime, CreatedByUserId -> ResponsibleUser, ItemId -> ProductId
// 6. Disposition Code Applied
// This is a status change on the return line.
GET {BaseUrl}/ReturnOrderLines{CompanyFilter}ReturnDispositionCodeId ne '' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby,ReturnDispositionCodeId,ItemId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Disposition Code Applied' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser, ReturnDispositionCodeId -> DispositionCode, ItemId -> ProductId
// 7. Credit Note Created
// Look for sales orders with type 'Returned Order' that are not yet invoiced.
GET {BaseUrl}/SalesOrderHeadersV2{CompanyFilter}SalesOrderProcessingStatus eq 'Open' and SalesOrderType eq 'ReturnedOrder' and {DateFilterCreated}&$select=SalesOrderNumber,createdDateTime,createdby
// Mapping: SalesOrderNumber -> ReturnCaseId, 'Credit Note Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 8. Credit Note Posted
// Look for posted invoice journals linked to a return order.
GET {BaseUrl}/SalesInvoiceJournalHeaders{CompanyFilter}SalesOrderType eq 'ReturnedOrder' and {DateFilterCreated}&$select=SalesOrderNumber,InvoiceDate,createdby
// Mapping: SalesOrderNumber -> ReturnCaseId, 'Credit Note Posted' -> ActivityName, InvoiceDate -> EventTime, createdby -> ResponsibleUser
// 9. Replacement Order Created
// Disposition code on the return line triggers a replacement order.
GET {BaseUrl}/SalesOrderHeadersV2{CompanyFilter}SalesOrderOriginType eq 'ReturnOrder' and {DateFilterCreated}&$select=SalesOrderNumber,createdDateTime,createdby,ReturnOrderNumber
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Replacement Order Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 10. Replacement Item Shipped
// Check for posted packing slips related to the replacement sales order.
GET {BaseUrl}/SalesPackingSlipJournals{CompanyFilter}{DateFilterCreated}&$select=SalesOrderNumber,DeliveryDate,createdby
// Note: This requires linking SalesOrderNumber back to the original ReturnOrderNumber for the ReturnCaseId.
// Mapping: Link SalesOrderNumber -> ReturnCaseId, 'Replacement Item Shipped' -> ActivityName, DeliveryDate -> EventTime, createdby -> ResponsibleUser
// 11. Return Order Closed
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Closed' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Closed' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 12. Return Order Cancelled
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Canceled' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Cancelled' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser Schritte
- TDS Endpoint aktivieren: Stellen Sie sicher, dass der Tabular Data Stream (TDS) Endpoint für Ihre Dynamics 365 Dataverse-Umgebung aktiviert ist. Ein Systemadministrator kann dies im Power Platform Admin Center unter Umgebung > Einstellungen > Funktionen aktivieren.
- Umgebungs-URL identifizieren: Ermitteln Sie Ihre Umgebungs-URL. Sie sieht typischerweise wie
yourorg.crm.dynamics.comaus. Der TDS Endpoint Servername ist diese URL mit Port 5558, zum Beispielyourorg.crm.dynamics.com,5558. - Mit einem SQL-Client verbinden: Verwenden Sie einen SQL-Client, der TDS unterstützt, wie SQL Server Management Studio (SSMS) oder Azure Data Studio.
- Authentifizieren: Verbinden Sie sich mit dem Server über Ihr Azure Active Directory-Konto, das über entsprechende Berechtigungen verfügt, typischerweise System Administrator oder System Customizer, in der Dataverse-Umgebung.
- Abfrage vorbereiten: Kopieren Sie die vollständige SQL-Abfrage, die im
query-Abschnitt dieses Dokuments bereitgestellt wird, in ein neues Abfragefenster in Ihrem SQL-Client. - Parameter festlegen: Suchen Sie die Platzhalter innerhalb der Abfrage. Ersetzen Sie
'{StartDate}'und'{EndDate}'durch den gewünschten Datumsbereich für die Extraktion, zum Beispiel'2023-01-01'und'2023-12-31'. Aktualisieren Sie außerdem alle Platzhalterwerte für Statuscodes oder Dispositionscodes, um sie an Ihre spezifische Dynamics 365-Konfiguration anzupassen. - Abfrage ausführen: Führen Sie die geänderte Abfrage gegen die Dataverse-Datenbank aus. Die Ausführungszeit variiert je nach Datenvolumen und ausgewähltem Datumsbereich.
- Ergebnisse überprüfen: Sobald die Abfrage abgeschlossen ist, überprüfen Sie den zurückgegebenen Datensatz, um sicherzustellen, dass er die erwarteten Spalten enthält:
ReturnCaseId,ActivityName,EventTimeund die empfohlenen Attribute. - Event Log exportieren: Exportieren Sie die Abfrageergebnisse in eine CSV-Datei. Die meisten SQL-Clients verfügen über eine integrierte Funktion zum direkten Speichern von Ergebnissen in einer Datei. Stellen Sie sicher, dass die Datei mit UTF-8-Kodierung gespeichert wird.
- In ProcessMind hochladen: Die exportierte CSV-Datei ist nun bereit, in ProcessMind als neuer Event Log für die Process Mining-Analyse hochgeladen zu werden.
Konfiguration
- Voraussetzungen: Sie müssen über ein Benutzerkonto mit mindestens Lesezugriff auf die relevanten Dataverse-Tabellen (z. B. SalesTable, SalesLine, CustInvoiceJour) verfügen. Berechtigungen werden typischerweise über Sicherheitsrollen wie System Administrator oder eine benutzerdefinierte Rolle mit ausreichenden Tabellenberechtigungen verwaltet.
- TDS Endpoint: Der Dataverse TDS Endpoint muss für die Umgebung aktiviert sein. Diese Funktion ermöglicht direkte, schreibgeschützte SQL-Abfragen gegen die Dataverse-Datenbank.
- Datumsbereich: Die Abfrage enthält die Platzhalter
'{StartDate}'und'{EndDate}'. Für eine erste Analyse wird ein Datumsbereich von 3 bis 6 Monaten empfohlen, um einen repräsentativen Datensatz bereitzustellen, ohne Leistungsprobleme zu verursachen. - Unternehmensfilter: Die Abfrage in ihrer aktuellen Form wird über alle juristischen Personen (Unternehmen) ausgeführt, auf die der Benutzer Zugriff hat. Für eine Analyse eines einzelnen Unternehmens kommentieren Sie die
WHERE-Klausel aus und fügen Sie einen Filter für dasDATAAREAID-Feld in jedem Teil derUNION ALL-Anweisung hinzu, zum BeispielAND st.DATAAREAID = '[YourCompanyID]'. - Platzhalter für benutzerdefinierte Logik: Die Abfrage enthält Platzhalter wie
[YourReplaceCode1]für Dispositionscodes und Hinweise zur Verknüpfung von Ersatzaufträgen. Diese müssen basierend auf Ihrem spezifischen Geschäftsprozess und Ihrer Dynamics 365-Einrichtung konfiguriert werden. - Performance: Direkte Abfragen gegen den TDS Endpoint für große Datensätze können langsam sein. Die Verbindung ist für analytische Abfragen optimiert, aber komplexe Joins über Millionen von Zeilen können zu Timeouts führen. Es wird empfohlen, strenge Datumsfilter anzuwenden.
a Beispielabfrage sql
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Created' AS ActivityName,
st.CREATEDDATETIME AS EventTime,
st.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Confirmed' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.DOCUMENTSTATUS = 1 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Arrival Journal Created' AS ActivityName,
wjt.CREATEDDATETIME AS EventTime,
wjt.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN WMSJOURNALTABLE wjt ON st.SALESID = wjt.ORDERID AND st.DATAAREAID = wjt.DATAAREAID
WHERE st.SALESTYPE = 3 AND wjt.JOURNALTYPE = 4 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Item Received' AS ActivityName,
wjt.POSTEDDATETIME AS EventTime,
wjt.POSTEDUSERID AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN WMSJOURNALTABLE wjt ON st.SALESID = wjt.ORDERID AND st.DATAAREAID = wjt.DATAAREAID
WHERE st.SALESTYPE = 3 AND wjt.JOURNALTYPE = 4 AND wjt.POSTEDDATETIME IS NOT NULL AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Quality Order Generated' AS ActivityName,
iqot.CREATEDDATETIME AS EventTime,
iqot.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
iqot.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN INVENTQUALITYORDERTABLE iqot ON sl.INVENTTRANSID = iqot.INVENTTRANSID AND sl.DATAAREAID = iqot.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Disposition Code Applied' AS ActivityName,
iqot.VALIDATEDDATETIME AS EventTime,
iqot.VALIDATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
iqot.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN INVENTQUALITYORDERTABLE iqot ON sl.INVENTTRANSID = iqot.INVENTTRANSID AND sl.DATAAREAID = iqot.DATAAREAID
WHERE st.SALESTYPE = 3 AND iqot.VALIDATEDDATETIME IS NOT NULL AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Credit Note Created' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Credit Note Posted' AS ActivityName,
cij.CREATEDDATETIME AS EventTime,
cij.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN CUSTINVOICEJOUR cij ON st.SALESID = cij.SALESID AND st.DATAAREAID = cij.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
ro.RETURNITEMNUM AS ReturnCaseId,
'Replacement Order Created' AS ActivityName,
replacement_so.CREATEDDATETIME AS EventTime,
replacement_so.CREATEDBY AS ResponsibleUser,
NULL AS DispositionCode,
NULL AS ReturnReasonCode,
replacement_so.SALESORIGINID AS ReturnChannel,
replacement_sl.ITEMID AS ProductId
FROM SALESTABLE ro
JOIN SALESLINE rol ON ro.SALESID = rol.SALESID AND ro.DATAAREAID = rol.DATAAREAID
JOIN SALESTABLE replacement_so ON ro.CUSTACCOUNT = replacement_so.CUSTACCOUNT AND ro.DATAAREAID = replacement_so.DATAAREAID
JOIN SALESLINE replacement_sl ON replacement_so.SALESID = replacement_sl.SALESID AND replacement_so.DATAAREAID = replacement_sl.DATAAREAID
WHERE ro.SALESTYPE = 3
AND rol.RETURNDISPOSITIONCODEID IN ('[YourReplaceCode1]', '[YourReplaceCode2]')
AND replacement_so.SALESTYPE = 1
AND replacement_so.CREATEDDATETIME > ro.CREATEDDATETIME
-- The join above is a basic example and must be replaced with your system's specific logic for linking returns to replacements.
AND ro.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
ro.RETURNITEMNUM AS ReturnCaseId,
'Replacement Item Shipped' AS ActivityName,
cpsj.CREATEDDATETIME AS EventTime,
cpsj.CREATEDBY AS ResponsibleUser,
NULL AS DispositionCode,
NULL AS ReturnReasonCode,
replacement_so.SALESORIGINID AS ReturnChannel,
cpsl.ITEMID AS ProductId
FROM SALESTABLE ro
JOIN SALESLINE rol ON ro.SALESID = rol.SALESID AND ro.DATAAREAID = rol.DATAAREAID
JOIN SALESTABLE replacement_so ON ro.CUSTACCOUNT = replacement_so.CUSTACCOUNT AND ro.DATAAREAID = replacement_so.DATAAREAID
JOIN CUSTPACKINGSLIPJOUR cpsj ON replacement_so.SALESID = cpsj.SALESID AND replacement_so.DATAAREAID = cpsj.DATAAREAID
JOIN CUSTPACKINGSLIPTRANS cpsl ON cpsj.PACKINGSLIPID = cpsl.PACKINGSLIPID AND cpsj.SALESID = cpsl.SALESID AND cpsj.DATAAREAID = cpsl.DATAAREAID
WHERE ro.SALESTYPE = 3
AND rol.RETURNDISPOSITIONCODEID IN ('[YourReplaceCode1]', '[YourReplaceCode2]')
AND replacement_so.SALESTYPE = 1
AND replacement_so.CREATEDDATETIME > ro.CREATEDDATETIME
-- The join above is a basic example and must be replaced with your system's specific logic for linking returns to replacements.
AND ro.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Closed' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Cancelled' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 4 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}';