Ihr Daten-Template für die Bearbeitung von Retouren und Erstattungen
Ihr Daten-Template für die Bearbeitung von Retouren und Erstattungen
- Empfohlene Datenfelder für die Erfassung
- Wichtige Prozessschritte für die Nachverfolgung
- Anleitung zum Datenexport
Attribute für die Bearbeitung von Retouren und Erstattungen
| Name | Beschreibung | ||
|---|---|---|---|
| Ereigniszeitpunkt EventTime | Der Timestamp, der angibt, wann eine bestimmte Aktivität oder ein Ereignis stattgefunden hat. | ||
| Beschreibung Die Ereigniszeit beziehungsweise der Timestamp erfasst das genaue Datum und die Uhrzeit einer Aktivität. Jede Aktivität im Event Log hat einen zugehörigen Timestamp, der die chronologische Reihenfolge der Ereignisse festlegt. Dieses Attribut ist für alle zeitbasierten Process-Mining-Analysen entscheidend. Es dient dazu, Zykluszeiten zwischen Aktivitäten zu berechnen, Wartezeiten und Engpässe zu erkennen, die gesamte Falldauer zu messen und die Einhaltung von Service Level Agreements (SLAs) zu prüfen. Die Genauigkeit der Timestamps wirkt sich direkt auf die Zuverlässigkeit jeder Leistungsanalyse aus. Warum das wichtig ist Dieser Timestamp ist erforderlich, um alle zeitbasierten Kennzahlen wie Zyklus- und Wartezeiten zu berechnen. Sie bilden eine wichtige Grundlage für die Leistungsanalyse. Woher beziehen Entspricht Datumsfeldern für Erstellung oder Änderung in verschiedenen Tabellen, zum Beispiel '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 | Die eindeutige Kennung für den Retouren- und Erstattungsfall eines Kunden. Sie verknüpft alle zugehörigen Aktivitäten. | ||
| Beschreibung Die Retourenfall-ID ist die zentrale Kennung für jeden einzelnen Retourenprozess. Sie verknüpft alle Aktivitäten zu einer bestimmten Retoure oder Erstattungsanfrage eines Kunden, von der Erstellung des Retourenauftrags bis zum endgültigen Abschluss. Für die Prozessanalyse ist diese ID entscheidend, um den gesamten Ablauf jeder Retoure zu rekonstruieren. Sie ermöglicht es, den vollständigen Prozessverlauf nachzuverfolgen, die gesamte Durchlaufzeit zu messen und Unterschiede zwischen einzelnen Fällen zu analysieren. Alle Ereignisse, Daten und Kennzahlen werden anhand dieser Kennung zusammengeführt und miteinander verknüpft. Warum das wichtig ist Diese zentrale Fallkennung verknüpft alle Prozessschritte. So lässt sich jede Retoure vom Anfang bis zum Abschluss nachverfolgen und analysieren. Woher beziehen Dies ist üblicherweise die Nummer der Return Material Authorization (RMA) oder die Nummer eines Verkaufsauftrags vom Typ 'Returned Order' im Modul 'Sales and marketing'. Sie ist in Tabellen wie 'SalesTable' zu finden, in denen 'SalesType' den Wert 'Returned Order' hat. Beispiele RMA-001234RMA-001235RMA-001236 | |||
| Aktivitätsname ActivityName | Der Name des konkreten Geschäftsvorfalls oder der Aufgabe im Retouren- und Erstattungsprozess. | ||
| Beschreibung Dieses Attribut bezeichnet einen bestimmten Schritt oder ein Ereignis im Retouren- und Erstattungsprozess, zum Beispiel 'Retourenauftrag erstellt', 'Ware eingegangen' oder 'Gutschrift gebucht'. Jede Aktivität steht für einen eigenen Prozessschritt, der im System erfasst wird. Die Analyse der Reihenfolge und Häufigkeit dieser Aktivitäten bildet die Grundlage von Process Mining. Sie ermöglicht die Visualisierung von Prozessabläufen, das Erkennen von Engpässen zwischen Schritten und das Aufdecken häufiger wie seltener Prozessvarianten. Die Aktivitäten legen fest, welcher Prozess analysiert wird. Warum das wichtig ist Das Attribut bildet die Prozessschritte ab und ermöglicht es, den Prozessablauf zu visualisieren sowie Engpässe, Nacharbeit und Abweichungen zu erkennen. Woher beziehen Dieses konzeptionelle Attribut wird aus Systemereignissen abgeleitet. Es lässt sich erstellen, indem Statusänderungen in Tabellen wie 'SalesTable' und 'WMSJournalTable' oder bestimmte Ereignisprotokolle verständlichen Namen zugeordnet werden. Beispiele Retourenauftrag erstelltWare eingegangenDispositionscode zugewiesenGutschrift gebucht | |||
| Dispositionscode DispositionCode | Ein Code, der das Ergebnis der Warenprüfung und die nächste auszuführende Aktion angibt. | ||
| Beschreibung Der Dispositionscode wird bei der Qualitätsprüfung einer retournierten Ware zugewiesen. Er legt den nächsten Prozessschritt fest, zum Beispiel 'Credit', 'Replace', 'Scrap' oder 'Return to Customer'. Dieses Attribut ist ein wichtiger Entscheidungspunkt im Retourenprozess. Eine Analyse nach Dispositionscode zeigt, wie Retouren abgeschlossen werden, welche finanziellen Auswirkungen die Verschrottung von Waren hat und wie effizient verschiedene Lösungswege sind, etwa Ersatzlieferung oder Erstattung. Warum das wichtig ist Dieser Code legt fest, welchen Weg ein Retourenfall nach der Prüfung nimmt. Er ist daher entscheidend für die Analyse von Prozessvarianten und deren geschäftlichen Auswirkungen. Woher beziehen Dieses Feld ist ein zentrales Element des Qualitätsmanagementmoduls. Es wird bei der Verarbeitung von Qualitäts- oder Prüfaufträgen verwendet. Beispiele CRDTREPL-DSCRAPRTV | |||
| Produkt-ID ProductId | Die eindeutige Kennung des zurückgesendeten Produkts. | ||
| Beschreibung Die Produkt-ID, häufig die Artikelnummer (SKU), kennzeichnet den konkreten Artikel, den der Kunde zurücksendet. Jede Position eines Retourenauftrags ist einer Produkt-ID zugeordnet. Die Analyse der Retouren nach Produkt ist wichtig, um Artikel mit hohen Retourenquoten zu erkennen. Das kann auf Qualitätsprobleme, ungenaue Produktbeschreibungen oder Herstellungsfehler hindeuten. Die Analyse hilft dabei, Untersuchungen und Verbesserungen für bestimmte Produkte zu priorisieren. Warum das wichtig ist Ermöglicht die Analyse von Retouren nach Produkt und hilft dabei, Artikel mit Qualitätsproblemen oder besonders vielen Rücksendungen zu erkennen. Woher beziehen Dies entspricht dem Feld 'ItemId' in der Tabelle 'SalesLine' des Retourenauftrags. 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 Rücksendegrund, zum Beispiel „Defekter Artikel“, „Falsche Größe“, „Entspricht nicht der Beschreibung“ oder „Wird nicht mehr benötigt“. Diese Information wird in der Regel bei der Einleitung der Retoure erfasst. Die Analyse der Retourengründe ist wichtig, um Ursachen zu ermitteln. Sie hilft Unternehmen, Qualitätsmängel, unzutreffende Produktbeschreibungen oder Fehler in der Logistik zu erkennen. Die daraus gewonnenen Erkenntnisse können Verbesserungen am Produktdesign, im Marketing und in der Lieferkette anstoßen und so künftige Retouren verringern. Warum das wichtig ist Zeigt, warum Retouren erfolgen, und ermöglicht so eine Ursachenanalyse, mit der sich die Retourenquote senken und die Kundenzufriedenheit verbessern lässt. Woher beziehen Diese Information ist üblicherweise auf Positionsebene des Retourenauftrags gespeichert. Suchen Sie bei Retourenaufträgen in der Tabelle 'SalesLine' nach Feldern für den Retourengrundcode. Beispiele DEFECTWRONG_ITEMNO_LONGER_WANTEDDAMAGED_IN_TRANSIT | |||
| Retourenkanal ReturnChannel | Die Methode oder der Kanal, über den der Kunde die Retoure eingeleitet hat. | ||
| Beschreibung Dieses Attribut gibt an, über welchen Kanal der Kunde die Retoure eingeleitet hat, zum Beispiel über das „Online-Portal“, im „Geschäft“, per „Anruf beim Kundenservice“ oder per „Post“. Wenn Sie die Prozessanalyse nach Retourenkanal aufschlüsseln, können Sie die Leistung und Effizienz der einzelnen Kanäle bewerten. Unternehmen können Durchlaufzeiten, Kosten und Kundenzufriedenheit kanalübergreifend vergleichen und so bewährte Vorgehensweisen sowie Bereiche mit Investitions- oder Verbesserungsbedarf erkennen. Diese Auswertung ist wichtig für das Dashboard „Leistung der Retourenkanäle“. Warum das wichtig ist Ermöglicht den Leistungsvergleich verschiedener Retourenkanäle und hilft dabei, die effizientesten und kostengünstigsten Kanäle zu optimieren. Woher beziehen Diese Information kann im Kopf des Retourenauftrags ('SalesTable') gespeichert oder anhand des Benutzers abgeleitet werden, der den Auftrag erstellt hat. Möglicherweise sind dafür eine benutzerdefinierte Logik oder ein eigenes Feld erforderlich. Beispiele WebportalKiosk im GeschäftKundenservice | |||
| Verantwortlicher Benutzer ResponsibleUser | Der Benutzer oder Mitarbeitende, der eine bestimmte Aktivität ausgeführt hat oder dafür verantwortlich ist. | ||
| Beschreibung Dieses Attribut gibt an, welcher Benutzer für die Ausführung eines Prozessschritts verantwortlich ist. Das kann der Lagerarbeiter sein, der die Ware entgegennimmt, der Qualitätsprüfer oder der Finanzsachbearbeiter, der die Gutschrift bucht. Eine Analyse nach Benutzern zeigt, wie sich die Arbeitslast verteilt, wer besonders gute Ergebnisse erzielt und wo Schulungsbedarf bestehen könnte. Außerdem können Sie Fälle untersuchen, die von bestimmten Personen oder Teams bearbeitet wurden, und die Funktionstrennung sicherstellen. Warum das wichtig ist Damit lassen sich die Arbeitslastverteilung und die Leistung einzelner Personen oder Teams analysieren. Außerdem können Sie Schulungsbedarf und Möglichkeiten zur Ressourcenverteilung erkennen. Woher beziehen Zu finden in den Feldern 'created by' oder 'modified by' von Transaktionsdatensätzen, zum Beispiel in 'SalesTable.createdBy' oder als verknüpfte Benutzer-IDs in Journaltabellen. Beispiele Alice.WBob.JChris.P | |||
| Angeforderter Erstattungsbetrag RequestedRefundAmount | Der Gesamtbetrag der vom Kunden angeforderten Erstattung. | ||
| Beschreibung Dieses Attribut enthält den ursprünglichen Erstattungsbetrag, der zu Beginn des Retourenprozesses angefordert oder erwartet wurde. Grundlage ist in der Regel der ursprüngliche Kaufpreis der zurückgesendeten Artikel. Dieser Wert dient als Ausgangspunkt für die „Analyse von Abweichungen beim Erstattungsbetrag“. Durch den Vergleich des angeforderten mit dem tatsächlich erstatteten Betrag können Unternehmen Abweichungen erkennen, die etwa durch Wiedereinlagerungsgebühren, Teilerstattungen für beschädigte Waren oder andere Anpassungen entstehen. So lassen sich die finanzielle Genauigkeit und die Einhaltung von Richtlinien überwachen. Warum das wichtig ist Dient als Ausgangswert für die Prüfung der finanziellen Genauigkeit, indem er mit dem tatsächlich verarbeiteten Erstattungsbetrag verglichen wird. Woher beziehen Dies ist üblicherweise der Positions- oder Gesamtbetrag der ursprünglichen Verkaufsauftragsposition, die zurückgesendet wird. Sie finden ihn in 'SalesLine.LineAmount'. Beispiele 99.99150.0024.50 | |||
| Endzeitpunkt EndTime | Der Timestamp, der angibt, wann eine bestimmte Aktivität abgeschlossen wurde. | ||
| Beschreibung Der Endzeitpunkt gibt den Abschluss-Timestamp einer Aktivität an. Während StartTime den Beginn markiert, bezeichnet EndTime das Ende. Damit lässt sich die Bearbeitungszeit der jeweiligen Aufgabe berechnen. Dieses Attribut ist für detaillierte Leistungsanalysen wichtig, insbesondere bei Aufgaben mit messbarer Dauer wie der 'Warenprüfung'. Durch den Vergleich von StartTime und EndTime können Analysten die aktive Bearbeitungszeit genau messen und von der Wartezeit zwischen Aufgaben unterscheiden. So lassen sich Ineffizienzen innerhalb einzelner Aktivitäten erkennen, nicht nur zwischen ihnen. Warum das wichtig ist Damit lässt sich die aktive Bearbeitungszeit einzelner Aktivitäten berechnen und von der Wartezeit unterscheiden. Woher beziehen Dieser Wert muss häufig abgeleitet werden. Er kann beispielsweise dem 'modifiedDateTime' einer Statusänderung entsprechen, mit der eine Aktivität abgeschlossen wird, oder der StartTime der nachfolgenden Aktivität. Beispiele 2023-10-26T10:15:00Z2023-10-26T14:45:20Z2023-10-27T09:55:12Z | |||
| Gutschrift-ID CreditNoteId | Die eindeutige Kennung des für eine Erstattung erstellten Gutschriftdokuments. | ||
| Beschreibung Bei der Verarbeitung einer Erstattung wird ein Finanzdokument erstellt, das als Gutschrift oder Gutschriftsanzeige bezeichnet wird. Dieses Attribut enthält die eindeutige ID des Dokuments. Über diese ID lässt sich der operative Retourenprozess direkt mit den Finanzdaten im Buchhaltungssystem verknüpfen. Sie ist für Prüfungen und detaillierte Analysen finanzieller Abweichungen hilfreich. So kann ein Analyst einen Retourenfall bis zur konkreten Finanztransaktion zurückverfolgen, mit der er abgeschlossen wurde. Warum das wichtig ist Verknüpft den operativen Retourenprozess mit der zugehörigen Finanztransaktion und ist damit wichtig für Prüfungen und den finanziellen Abgleich. Woher beziehen Die Gutschriftnummer steht üblicherweise im Feld 'InvoiceId' der Tabelle 'CustInvoiceJour', wenn der Transaktionstyp 'Credit note' lautet. Sie lässt sich mit dem Retourenauftrag verknüpfen. Beispiele CN-10056CN-10057CN-10058 | |||
| Kunden-ID CustomerId | Die eindeutige Kennung des Kunden, der die Retoure eingeleitet hat. | ||
| Beschreibung Die Kunden-ID ist die eindeutige Kennung des Kundenkontos, das der Retoure zugeordnet ist. Sie verknüpft den Retourenvorgang mit einem bestimmten Kunden im CRM- oder Kundendatenbanksystem. Die Analyse der Retouren nach Kunde hilft dabei, Kunden mit ungewöhnlich vielen Rücksendungen zu erkennen. Dies kann auf betrügerisches Verhalten oder anhaltende Unzufriedenheit hindeuten. Außerdem lassen sich Kunden segmentieren, um beispielsweise besonders wertvollen Kunden einen Premium-Retourenservice anzubieten. Warum das wichtig ist Verknüpft den Retourenprozess mit einem bestimmten Kunden und ermöglicht so Analysen auf Kundenebene sowie die Erkennung von Retourenmustern und möglichem Betrug. Woher beziehen Dies ist das Feld 'CustAccount' in der Tabelle 'SalesTable' des Retourenauftrags. Beispiele CUST-00045CUST-00192CUST-00315 | |||
| Lager-ID WarehouseId | Die Kennung des Lagers oder Standorts, an dem der zurückgesendete Artikel eingeht. | ||
| Beschreibung Dieses Attribut kennzeichnet das konkrete Lager oder Retourenzentrum, in dem der zurückgesendete Artikel bearbeitet wird. Je nach Standort können sich Prozesse, Ressourcen und Leistungsniveau unterscheiden. Die Analyse nach Lager ermöglicht Leistungsvergleiche zwischen Standorten. Sie zeigt, welche Einrichtungen Retouren besonders effizient bearbeiten, macht regionale Engpässe sichtbar und unterstützt Entscheidungen zur Ressourcenverteilung und Standardisierung von Prozessen im Logistiknetzwerk. Warum das wichtig ist Ermöglicht den Leistungsvergleich verschiedener Lager und Retourenzentren und hilft dabei, regionale Engpässe sowie bewährte Vorgehensweisen zu erkennen. Woher beziehen Diese Information ist im Feld 'InventLocationId' von bestandsbezogenen Transaktionen gespeichert, etwa im Wareneingangsjournal ('WMSJournalTable') oder in der Tabelle 'SalesLine'. Beispiele WH-EASTWH-WESTCENTRAL-DC | |||
| Letzte Datenaktualisierung LastDataUpdate | Der Timestamp, der angibt, wann die Prozessdaten zuletzt aktualisiert wurden. | ||
| Beschreibung Dieses Attribut erfasst Datum und Uhrzeit, zu denen die Daten zuletzt aus dem Quellsystem exportiert und im Process-Mining-Tool aktualisiert wurden. Es zeigt, wie aktuell die analysierten Daten sind. Der Zeitpunkt der letzten Datenaktualisierung ist wichtig, um die Aktualität der Analyse einzuschätzen. So können Benutzer Dashboards und KPIs richtig einordnen und erkennen, ob sie Echtzeitdaten oder einen Datenstand von einem bestimmten Zeitpunkt betrachten. Das ist für die operative Überwachung entscheidend. Warum das wichtig ist Das Attribut zeigt, wie aktuell die Daten sind, damit Analysten den zeitlichen Bezug ihrer Prozesserkenntnisse einschätzen können. Woher beziehen Dieses Metadatenattribut wird während der Datenübernahme erzeugt und gespeichert. Es entspricht üblicherweise dem Timestamp, zu dem der ETL-Auftrag abgeschlossen wurde. Beispiele 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Quellsystem SourceSystem | Das Informationssystem, aus dem die Ereignisdaten exportiert wurden. | ||
| Beschreibung Dieses Attribut gibt an, aus welchem Informationssystem die Daten stammen. In diesem Fall ist das in erster Linie 'Microsoft Dynamics 365'. In größeren Unternehmen kann sich ein Prozess über mehrere Systeme erstrecken. Das Quellsystem für jedes Ereignis anzugeben, ist wichtig für die Data Governance, die Fehlersuche beim Datenexport und das Verständnis der Systemlandschaft des Prozesses. So lässt sich die Herkunft der analysierten Daten nachvollziehen. Warum das wichtig ist Das Attribut liefert wichtigen Kontext zur Datenherkunft. Dieser ist für Data Governance, Validierung und das Verständnis der Systemlandschaft des Prozesses erforderlich. Woher beziehen Dabei handelt es sich üblicherweise um einen statischen Wert, der beim Prozess für Datenextraktion, Transformation und Laden (ETL) hinzugefügt wird, um die Herkunft des Datensatzes zu kennzeichnen. Beispiele Microsoft Dynamics 365 F&OD365-PROD | |||
| Retourentyp ReturnType | Ordnet die Retoure nach dem erwarteten Ergebnis ein, zum Beispiel Erstattung oder Ersatzlieferung. | ||
| Beschreibung Dieses Attribut klassifiziert den Retourenfall nach der Lösung, die der Kunde wünscht oder das Unternehmen anbietet. Übliche Typen sind eine Geldrückerstattung, ein Austausch gegen einen Ersatzartikel oder eine Reparatur. Diese Einteilung erleichtert die Analyse unterschiedlicher Prozessabläufe. Die Bearbeitung einer Erstattung unterscheidet sich deutlich vom Versand eines Ersatzartikels. Durch die Aufschlüsselung nach Retourentyp lassen sich Durchlaufzeiten und Engpässe für die einzelnen Lösungswege genauer analysieren. Warum das wichtig ist Ermöglicht die Analyse nach dem angestrebten Ergebnis, da Erstattungen und Ersatzlieferungen unterschiedliche Schritte und Durchlaufzeiten haben. Woher beziehen Dies kann ein benutzerdefiniertes Feld im Kopf des Retourenauftrags sein oder anhand des Dispositionscodes beziehungsweise nachfolgender Transaktionen abgeleitet werden, etwa der Erstellung eines Ersatzverkaufsauftrags. Beispiele ErstattungErsatzlieferungGutschrift für den Einkauf | |||
| Richtlinienkonform IsPolicyAdherent | Kennzeichnet, ob die Genehmigung der Retoure den festgelegten Retourenrichtlinien entspricht. | ||
| Beschreibung Dieses berechnete boolesche Attribut gibt an, ob eine Retoure alle Kriterien der Unternehmensrichtlinie erfüllt. Dabei können Faktoren wie die Rückgabefrist, der Zustand des Artikels oder der Retourengrund berücksichtigt werden. Das Attribut unterstützt direkt das Dashboard „Übersicht zur Compliance bei Retourengenehmigungen“ und die KPI „Anteil richtlinienkonformer Retourengenehmigungen“. Unternehmen können damit die Einhaltung der Richtlinien quantifizieren, als Ausnahme genehmigte Cases erkennen und Gründe sowie Häufigkeit solcher Ausnahmen analysieren. Das ist wichtig für Governance und Kostenkontrolle. Warum das wichtig ist Misst direkt die Einhaltung der Geschäftsregeln und hilft dabei, nicht richtlinienkonforme Retourengenehmigungen zu erkennen und zu verringern, die zu Umsatzeinbußen führen können. Woher beziehen Dies ist ein abgeleitetes Attribut. Für die Berechnung müssen Merkmale der Retoure, etwa das Retouren- und Kaufdatum oder der Retourengrund, mit vordefinierten Geschäftsregeln verglichen werden. Beispiele truefalse | |||
| SLA-Status SlaStatus | Gibt an, ob der Case innerhalb der SLA-Frist abgeschlossen wurde. | ||
| Beschreibung Dieses berechnete Attribut zeigt den SLA-Status in einfacher Form an, üblicherweise als „Fristgerecht“ oder „Verspätet“. Der Status ergibt sich aus dem Vergleich des Timestamps der letzten Aktivität, zum Beispiel „Retourenauftrag geschlossen“, mit dem Attribut 'RefundSlaTargetDate'. Das Attribut vereinfacht die Leistungsberichte in Dashboards wie „SLA-Leistung bei Erstattungen“. Statt Datumsangaben selbst vergleichen zu müssen, sehen Benutzer einen direkten und leicht verständlichen Status. So können sie schnell filtern und Daten zusammenfassen, um die „Einhaltung des SLA für die Falllösung“ zu berechnen. Warum das wichtig ist Zeigt auf einen Blick, ob das SLA eingehalten wurde. So lassen sich verspätete Cases einfach filtern und die Ursachen von Verzögerungen analysieren. Woher beziehen Dies ist ein abgeleitetes Attribut. Es wird berechnet, indem der Timestamp der letzten Aktivität zur Falllösung mit dem Attribut 'RefundSlaTargetDate' verglichen wird. Beispiele FristgerechtVerspätet | |||
| Status des Retourenauftrags ReturnOrderStatus | Der Gesamtstatus des Retourenauftrags zum Zeitpunkt des Ereignisses. | ||
| Beschreibung Dieses Attribut gibt den aktuellen Status des Retourenauftragskopfs an, zum Beispiel „Offen“, „Fakturiert“ oder „Storniert“. Es zeigt auf hoher Ebene, an welcher Stelle des Lebenszyklus sich der Case befindet. Aktivitäten bilden einzelne Prozessschritte ab, während der Gesamtstatus zum Filtern und Segmentieren von Cases dient. Ein Analyst kann sich beispielsweise auf „Offene“ Cases konzentrieren, um die aktuelle Arbeitslast zu verstehen, oder den Prozessablauf von Cases analysieren, die schließlich „Storniert“ werden. Warum das wichtig ist Fasst den Status des Cases auf hoher Ebene zusammen. Das erleichtert das Filtern und hilft, Ergebnisse wie Stornierungen nachzuvollziehen. Woher beziehen Diese Information steht im Feld 'SalesStatus' oder 'DocumentStatus' der Tabelle 'SalesTable'. Beispiele Offener AuftragGeliefertFakturiertStorniert | |||
| Tatsächlicher Erstattungsbetrag ActualRefundAmount | Der endgültige Geldbetrag, der dem Kunden erstattet wurde. | ||
| Beschreibung Dieses Attribut enthält den endgültigen, bestätigten Betrag, der dem Kunden erstattet wurde. Der Wert wird bei der Erstellung und Buchung der Gutschrift erfasst. Das Attribut ist für Finanzanalysen entscheidend und wird direkt im Dashboard „Analyse von Abweichungen beim Erstattungsbetrag“ sowie für die KPI „Genauigkeit der Erstattungsbeträge“ verwendet. Die Analyse dieser Daten zeigt die finanziellen Auswirkungen von Retouren und die während des Prozesses vorgenommenen Anpassungen. Warum das wichtig ist Zeigt die tatsächlichen finanziellen Auswirkungen der Retoure. Der Wert ist entscheidend, um die Genauigkeit der Erstattungen zu berechnen und finanzielle Ergebnisse nachzuvollziehen. Woher beziehen Diesen Wert finden Sie in den Details der gebuchten Gutschrifttransaktion. Er steht mit den Tabellen 'CustTrans' und 'CustInvoiceJour' zur Gutschrift in Verbindung. Beispiele 99.99135.000.00 | |||
| Zieldatum für die Erstattung gemäß SLA RefundSlaTargetDate | Das Zieldatum, bis zu dem der Retouren- und Erstattungsfall vollständig abgeschlossen sein soll. | ||
| Beschreibung Dieses Attribut legt die Frist des Service Level Agreement (SLA) für die Bearbeitung eines Retourenfalls fest. Bis zu diesem Datum soll der Kunde eine endgültige Lösung erhalten, etwa eine gebuchte Erstattung oder einen versendeten Ersatzartikel. Das Zieldatum ist wichtig, um die Leistung anhand der vereinbarten Serviceziele zu überwachen. Es dient zur Berechnung der KPI „Einhaltung des SLA für die Falllösung“ und als Grundlage für das Dashboard „SLA-Leistung bei Erstattungen“. Durch den Vergleich mit dem tatsächlichen Abschlussdatum können Unternehmen SLA-Verstöße erkennen und überfällige Cases frühzeitig bearbeiten. Warum das wichtig ist Dient als Maßstab für die Prozessleistung und ermöglicht es, die SLA-Einhaltung zu verfolgen und verspätete Cases zu erkennen. Woher beziehen Möglicherweise ist dies kein Standardfeld. Häufig wird der Wert anhand des Erstellungsdatums der Retoure und einer festgelegten SLA-Frist berechnet, zum Beispiel 14 Tage. Er kann in einem benutzerdefinierten Feld gespeichert sein. Beispiele 2023-11-10T23:59:59Z2023-11-15T23:59:59Z | |||
Aktivitäten bei der Bearbeitung von Retouren und Erstattungen
| Aktivität | Beschreibung | ||
|---|---|---|---|
| Dispositionscode zugewiesen | Diese Aktivität markiert den Abschluss der Prüfung und die Entscheidung über den weiteren Umgang mit der retournierten Ware. Der Retourenauftragsposition wird ein Dispositionscode zugewiesen, zum Beispiel 'Credit', 'Scrap' oder 'Replace'. | ||
| Warum das wichtig ist An diesem wichtigen Entscheidungspunkt wird der weitere Prozessablauf festgelegt: Erstattung, Umtausch oder Ablehnung. Verzögerungen an dieser Stelle können die gesamte Bearbeitungszeit deutlich verlängern. Woher beziehen Das Ereignis wird erfasst, wenn das Feld DispositionCode in der Bestandsbuchung der Retourenauftragsposition oder im zugehörigen Journal befüllt wird. Erfassung Aktualisierungsereignis beim Festlegen eines DispositionCode für die Retourenauftragsposition. Ereignistyp explicit | |||
| Gutschrift gebucht | Die Gutschrift wird offiziell in den Finanzbüchern gebucht und steht dem Kunden damit zur Verfügung. Aus Sicht des Unternehmens ist die Erstattung damit abgeschlossen. | ||
| Warum das wichtig ist Dieser wichtige finanzielle Meilenstein bestätigt, dass die Erstattung im System verarbeitet wurde. Er ist häufig eine zentrale Aktivität zur Messung der SLA-Einhaltung bei Erstattungen. Woher beziehen Der Buchungs-Timestamp des Rechnungsjournals für den Retourenauftrag, durch den die Gutschrift abgeschlossen wird. Der Status des Retourenauftrags wechselt zu 'Invoiced'. Erfassung Buchung des Rechnungsjournals für den Retourenauftrag. Ereignistyp explicit | |||
| Retourenauftrag abgeschlossen | Der Retourenauftrag hat seinen Endstatus erreicht. Alle physischen und finanziellen Vorgänge sind abgeschlossen. Dies geschieht üblicherweise nach der Buchung der Gutschrift oder dem Versand des Ersatzartikels. | ||
| Warum das wichtig ist Dies ist das zentrale End-Event eines erfolgreich abgeschlossenen Retourenprozesses. Die Zeit von der Erstellung bis zu diesem Punkt entspricht der gesamten Durchlaufzeit des Falls. Woher beziehen Abgeleitet aus der Änderung des ReturnOrder-Statusfelds auf einen Endstatus wie 'Invoiced' oder 'Closed'. Dies zeigt an, dass keine weitere Bearbeitung erwartet wird. Erfassung Änderung des Felds SalesTable.Status oder SalesTable.DocumentStatus auf einen Endstatus. Ereignistyp inferred | |||
| Retourenauftrag erstellt | Diese Aktivität markiert den Beginn des Retourenprozesses. Im System wird eine Return Material Authorization (RMA) oder ein Retourenauftrag angelegt. Das Ereignis wird beim Erstellen eines neuen ReturnOrder-Datensatzes in Dynamics 365 explizit erfasst. | ||
| Warum das wichtig ist Dies ist das zentrale Start-Event des gesamten Retourenprozesses. Die Zeit zwischen dieser Aktivität und den folgenden Schritten zeigt die gesamte Durchlaufzeit und hilft, frühe Engpässe zu erkennen. Woher beziehen Das Ereignis wird anhand des Erstellungs-Timestamps des ReturnOrder-Kopfs erfasst. Dieser befindet sich üblicherweise in der Tabelle SalesTable, wenn SalesType den Wert 'Returned Order' hat. Erfassung Erstellungsereignis des SalesTable-Datensatzes mit SalesType = 'Returned Order'. Ereignistyp explicit | |||
| Ware eingegangen | Markiert den physischen Eingang der retournierten Ware im Lager oder im zuständigen Retourenzentrum. Erfasst wird dieser Schritt, wenn das mit dem Retourenauftrag verknüpfte Wareneingangsjournal gebucht wird. | ||
| Warum das wichtig ist Dieser wichtige Meilenstein markiert den Übergang von der Kundenaktion zur internen Bearbeitung. Ab hier lassen sich alle internen Bearbeitungszeiten berechnen, etwa für Prüfung und Disposition. Woher beziehen Der Buchungs-Timestamp des WMS-Journals oder des Item Arrival Journal, das mit der ReturnOrder-Position verknüpft ist. Dadurch werden die Bestandsbuchungen auf den Status 'Registered' oder 'Received' gesetzt. Erfassung Buchungsereignis des Item Arrival Journal, das mit der Retourenauftragsposition verknüpft ist. Ereignistyp explicit | |||
| Ersatzartikel versandt | Der Lieferschein für den Ersatzartikel wird gebucht. Damit ist der Versand an den Kunden erfasst und die Abwicklung des Umtauschs abgeschlossen. | ||
| Warum das wichtig ist Dieser wichtige Meilenstein der Umtauschvariante zeigt, dass das Unternehmen seine Verpflichtung gegenüber dem Kunden erfüllt hat. Er ist entscheidend für die Messung der Durchlaufzeiten bei Umtauschvorgängen. Woher beziehen Das Buchungsdatum des Lieferscheinjournals für den Ersatz-Verkaufsauftrag. Dadurch wechselt der Auftragsstatus zu 'Delivered'. Erfassung Buchung des Lieferscheins für den Ersatz-Verkaufsauftrag. Ereignistyp explicit | |||
| Ersatzauftrag erstellt | Ein neuer Verkaufsauftrag wird erstellt, um dem Kunden einen Ersatzartikel zu senden. Diese Aktivität tritt ein, wenn die Dispositionsaktion 'Replace and Credit' oder 'Replace and Scrap' lautet. | ||
| Warum das wichtig ist Diese Aktivität leitet die Umtauschvariante des Prozesses ein. Umtauschfälle getrennt von Erstattungen zu verfolgen, ist wichtig, um die Komplexität und die Kosten von Umtauschvorgängen zu verstehen. Woher beziehen Erstellung eines neuen SalesTable-Datensatzes für den Ersatzartikel. Dieser wird häufig automatisch angelegt und mit dem ursprünglichen Retourenauftrag verknüpft. Erfassung Erstellung eines neuen Verkaufsauftrags, der über die Dispositionsaktion mit dem Retourenauftrag verknüpft ist. Ereignistyp explicit | |||
| Gutschrift erstellt | Bei der Disposition 'Credit' wird eine Gutschrift erstellt, die eine Erstattung an den Kunden ermöglicht. Damit beginnt offiziell der finanzielle Ausgleich im Prozess. | ||
| Warum das wichtig ist Diese Aktivität markiert die Freigabe der finanziellen Erstattung. Die Zeit zwischen der Disposition und der Erstellung der Gutschrift zeigt administrative Verzögerungen beim Einleiten der Erstattung. Woher beziehen Das Ereignis lässt sich aus der Erstellung eines neuen SalesTable-Datensatzes mit negativem Wert ableiten, der mit dem ursprünglichen Retourenauftrag verknüpft ist. Alternativ kann der Batchauftrag 'Create credit note' ausgeführt werden. Erfassung Erstellung einer Gutschrift, häufig durch Buchen der Rechnung zum Retourenauftrag. Ereignistyp explicit | |||
| Qualitätsauftrag erstellt | Ein formeller Qualitätsauftrag wird erstellt. Damit ist festgelegt, dass die retournierte Ware einem strukturierten Prüfprozess unterzogen werden muss. Das ist üblich, wenn Retouren detailliert getestet oder anhand von Qualitätsstandards geprüft werden müssen. | ||
| Warum das wichtig ist Diese Aktivität markiert den Beginn eines formellen Prüfprozesses. Die Zeit ab diesem Punkt zeigt, wie effizient der Qualitätssicherungs-Workflow abläuft und wie lange er dauert. Woher beziehen Erstellungs-Timestamp eines mit dem Retourenauftrag verknüpften Datensatzes in der InventQualityOrderTable. Erfassung Erstellung eines Datensatzes in der InventQualityOrderTable. Ereignistyp explicit | |||
| Retourenauftrag bestätigt | Diese Aktivität bezeichnet die formelle Bestätigung des Retourenauftrags im System, durch die häufig nachgelagerte Abläufe ausgelöst werden. Sie wird üblicherweise als explizite Aktion oder Statusänderung am ReturnOrder-Kopf erfasst. | ||
| Warum das wichtig ist Die Bestätigung muss erfolgen, bevor die Logistik beginnen kann. Verzögerungen zwischen Erstellung und Bestätigung können auf administrative oder systembedingte Rückstände hinweisen. Woher beziehen Erkennbar ist dies an der Buchung des Journals 'Confirmation' für den Retourenauftrag oder an einer Änderung des Felds DocumentStatus in der Tabelle SalesTable. Erfassung Ausführung der Funktion 'Confirm sales order' für den Retourenauftrag. Ereignistyp explicit | |||
| Retourenauftrag storniert | Der Retourenauftrag wird vor dem Abschluss storniert. Gründe dafür können eine Kundenanfrage oder der Umstand sein, dass die Ware nie zurückgesendet wurde. | ||
| Warum das wichtig ist Dies ist ein alternativer, nicht erfolgreicher Prozessabschluss. Die Analyse der Stornierungsgründe kann Erkenntnisse zum Kundenverhalten oder zu Prozessfehlern liefern. Woher beziehen Abgeleitet aus der Änderung des ReturnOrder-Statusfelds auf 'Cancelled'. Dies ist ein eigener Endstatus und unterscheidet sich von einem erfolgreich abgeschlossenen Auftrag. Erfassung Änderung des Felds SalesTable.Status auf 'Cancelled'. Ereignistyp inferred | |||
| Wareneingangsjournal erstellt | Diese Aktivität zeigt an, dass das Lager mit dem Eingang der retournierten Ware rechnet. Dabei wird ein Wareneingangsjournal erstellt, das den physischen Wareneingang im System vorbereitet. | ||
| Warum das wichtig ist Dieser Schritt trennt die logistische Vorbereitung vom tatsächlichen Wareneingang. So lässt sich die Bereitschaft des Lagers analysieren und der Eingang von Retouren planen. Woher beziehen Erstellung eines Datensatzes in der WMSJournalTable mit dem JournalType 'Arrival'. Das Journal ist mit der Retourenauftragsposition verknüpft. Erfassung Erstellungs-Timestamp des WMSJournalTable-Datensatzes für die Retoure. Ereignistyp explicit | |||
Anleitungen zum Datenexport
Schritte
- Voraussetzungen: 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-Mandanten registrieren. Erteilen Sie der Anwendung delegierte Berechtigungen für den Zugriff auf Dynamics 365 Finance & Operations, zum Beispiel
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-ID (Client-ID) aus Ihrer Azure AD-App-Registrierung hinzu und verknüpfen Sie sie mit einem Benutzerkonto, dem die erforderlichen Sicherheitsrollen zum Lesen der benötigten Datenentitäten zugewiesen sind.
- OAuth 2.0-Zugriffstoken abrufen. Schreiben Sie beispielsweise ein Skript in PowerShell oder Python, das sich beim Endpunkt der Microsoft Identity Platform authentifiziert. Verwenden Sie die Anmeldedaten der Anwendung (Client-ID und Geheimnis), um ein Zugriffstoken für die Ressourcen-URL von Dynamics 365 anzufordern.
- URL Ihrer Dynamics 365-Umgebung ermitteln. Suchen Sie die Basis-URL Ihrer Dynamics 365-Umgebung. Der Web-API-Endpunkt sieht üblicherweise 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 eigene OData-GET-Anfrage-URL. Verwenden Sie
$select, um nur die benötigten Spalten abzurufen, und$filter, um den Datumsbereich und etwaige Statusbedingungen festzulegen. Fügen Sie das in Schritt 3 abgerufene Authentifizierungstoken als Bearer-Token in den Autorisierungsheader jeder Anfrage ein. - Ein Extraktionsskript entwickeln. Erstellen Sie ein Skript, das die Liste der OData-Anfragen durchläuft. Es sollte die Authentifizierung übernehmen, jede GET-Anfrage ausführen und die zurückgegebenen JSON-Daten speichern. Beachten Sie die API-Limits und fügen Sie bei Bedarf Pausen ein.
- API-Paginierung berücksichtigen. Dynamics 365 teilt große Ergebnismengen in Seiten auf. Ihr Skript muss in der Antwort nach der Eigenschaft
@odata.nextLinksuchen. Ist sie vorhanden, muss das Skript eine weitere Anfrage an diese URL senden, um die nächste Datenseite abzurufen. Wiederholen Sie dies, bis keinnextLinkmehr bereitgestellt wird. - Daten transformieren und zusammenführen. Verarbeiten Sie die JSON-Antworten aller 12 API-Aufrufe. Erstellen Sie für jede Aktivität einen einheitlichen Datensatz mit
ReturnCaseId,ActivityName,EventTimeund weiteren Attributen. Ordnen Sie beispielsweise beim Ereignis „Retourenauftrag erstellt“ReturnOrderNumberdem FeldReturnCaseIdzu, setzen SieActivityNameauf „Retourenauftrag erstellt“ und ordnen SiecreatedDateTimedem FeldEventTimezu. Führen Sie die transformierten Datensätze aus allen Aufrufen in einer Liste oder Tabelle zusammen. - Timestamps bereinigen und vereinheitlichen. Sorgen Sie dafür, dass alle Werte von
EventTimeeinheitlich formatiert sind, vorzugsweise in UTC und im FormatYYYY-MM-DDTHH:MM:SSZ. Behandeln Sie fehlende oder ungültige Timestamps nach Bedarf. - Das fertige Event Log exportieren. Sobald alle Daten erfasst und in einem einheitlichen Datensatz zusammengeführt sind, exportieren Sie diesen als CSV-Datei. Achten Sie darauf, dass die Spaltenüberschriften den Anforderungen von ProcessMind entsprechen, zum Beispiel
ReturnCaseId,ActivityName,EventTime,ResponsibleUserundDispositionCode. Anschließend können Sie die Datei hochladen.
Konfiguration
- API-Endpunkt-URL: Die Basis-URL Ihrer Dynamics 365 Finance & Operations-Instanz. Das Format lautet
https://[YourEnvironmentName].dynamics.com/data. - Azure AD-Anwendung: Registrieren Sie eine Anwendung in Azure AD und halten Sie Client-ID und Geheimnis bereit. Die Anwendung benötigt API-Berechtigungen für den Zugriff auf Dynamics 365-Datenentitäten.
- Datumsbereichsfilter: Legen Sie bei jedem API-Aufruf unbedingt mithilfe des OData-Parameters
$filtereinen Datumsbereich für ein relevantes Datumsfeld fest, zum BeispielcreatedDateTimeodermodifiedDateTime. Für den Anfang empfiehlt sich ein Zeitraum von 3 bis 6 Monaten, damit der Datenexport überschaubar bleibt. - Unternehmensfilter: Um Daten für eine bestimmte juristische Person zu exportieren, fügen Sie den Abfrageparameter
cross-company=truehinzu und filtern Sie anschließend das FelddataAreaIdmit$filter. Beispiel:?cross-company=true&$filter=dataAreaId eq '[YourCompanyCode]'. - Seitengröße festlegen: Verwenden Sie den Header
Prefer: odata.maxpagesize=[value], um die Anzahl der Datensätze pro Seite zu bestimmen. Üblich sind Werte zwischen1000und5000. So lassen sich API-Zeitüberschreitungen bei großen Entitäten vermeiden. - API-Drosselung: Beachten Sie die Schutzlimits des Dynamics 365-API-Dienstes. Das Extraktionsskript sollte Antworten mit dem Status
429 (Too Many Requests)verarbeiten können, zum Beispiel mit exponentieller Wartezeit oder einer einfachen Pause mit anschließendem erneuten Versuch.
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-Endpunkt aktivieren: Stellen Sie sicher, dass der Tabular Data Stream (TDS)-Endpunkt für Ihre Dynamics 365 Dataverse-Umgebung aktiviert ist. Ein Systemadministrator kann ihn im Power Platform Admin Center unter Umgebung > Einstellungen > Funktionen aktivieren.
- Umgebungs-URL ermitteln: Suchen Sie die URL Ihrer Umgebung. Sie sieht üblicherweise so aus:
yourorg.crm.dynamics.com. Der Servername des TDS-Endpunkts entspricht dieser URL mit dem Port 5558, zum Beispielyourorg.crm.dynamics.com,5558. - Mit einem SQL-Client verbinden: Verwenden Sie einen TDS-kompatiblen SQL-Client, etwa SQL Server Management Studio (SSMS) oder Azure Data Studio.
- Authentifizierung: Stellen Sie mit Ihrem Azure Active Directory-Konto eine Verbindung zum Server her. Das Konto benötigt die entsprechenden Berechtigungen in der Dataverse-Umgebung, üblicherweise als Systemadministrator oder Systemanpasser.
- Abfrage vorbereiten: Kopieren Sie die vollständige SQL-Abfrage aus dem Abschnitt
querydieses Dokuments in ein neues Abfragefenster Ihres SQL-Clients. - Parameter festlegen: Suchen Sie die Platzhalter in der Abfrage. Ersetzen Sie
'{StartDate}'und'{EndDate}'durch den gewünschten Zeitraum für den Datenexport, zum Beispiel'2023-01-01'und'2023-12-31'. Passen Sie außerdem Platzhalter für Status- oder Dispositionscodes an Ihre Dynamics 365-Konfiguration an. - Abfrage ausführen: Führen Sie die angepasste Abfrage für die Dataverse-Datenbank aus. Die Ausführungsdauer hängt vom Datenvolumen und dem gewählten Zeitraum ab.
- Ergebnisse prüfen: Prüfen Sie nach Abschluss der Abfrage, ob der zurückgegebene Datensatz die erwarteten Spalten enthält:
ReturnCaseId,ActivityName,EventTimeund die empfohlenen Attribute. - Event Log exportieren: Exportieren Sie die Abfrageergebnisse als CSV-Datei. Die meisten SQL-Clients bieten eine integrierte Funktion, um Ergebnisse direkt in einer Datei zu speichern. Achten Sie auf die UTF-8-Kodierung.
- In ProcessMind hochladen: Die exportierte CSV-Datei kann jetzt als neues Event Log für die Process-Mining-Analyse in ProcessMind hochgeladen werden.
Konfiguration
- Voraussetzungen: Sie benötigen ein Benutzerkonto mit mindestens Lesezugriff auf die relevanten Dataverse-Tabellen, zum Beispiel SalesTable, SalesLine und CustInvoiceJour. Die Berechtigungen werden üblicherweise über Sicherheitsrollen wie Systemadministrator oder eine benutzerdefinierte Rolle mit ausreichenden Tabellenberechtigungen verwaltet.
- TDS-Endpunkt: Der Dataverse-TDS-Endpunkt muss für die Umgebung aktiviert sein. Diese Funktion ermöglicht direkte, schreibgeschützte SQL-Abfragen für die Dataverse-Datenbank.
- Datumsbereich: Die Abfrage enthält die Platzhalter
'{StartDate}'und'{EndDate}'. Für eine erste Analyse empfiehlt sich ein Zeitraum von 3 bis 6 Monaten. So erhalten Sie einen repräsentativen Datensatz, ohne die Leistung zu beeinträchtigen. - Unternehmensfilter: Die Abfrage läuft standardmäßig über alle juristischen Personen (Unternehmen), auf die der Benutzer Zugriff hat. Für die Analyse eines einzelnen Unternehmens heben Sie den Kommentar einer
WHERE-Klausel auf und ergänzen sie in jedem Teil derUNION ALL-Anweisung. Filtern Sie dabei das FeldDATAAREAID, zum Beispiel mitAND st.DATAAREAID = '[YourCompanyID]'. - Platzhalter für benutzerdefinierte Logik: Die Abfrage enthält Platzhalter wie
[YourReplaceCode1]für Dispositionscodes sowie Hinweise zur Verknüpfung von Ersatzaufträgen. Passen Sie diese an Ihren Geschäftsprozess und Ihre Dynamics 365-Konfiguration an. - Leistung: Direkte Abfragen großer Datensätze über den TDS-Endpunkt können langsam sein. Die Verbindung ist für analytische Abfragen optimiert, doch komplexe Verknüpfungen über Millionen von Zeilen können zu Zeitüberschreitungen führen. Verwenden Sie daher möglichst enge Datumsfilter.
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}'; Möchten Sie loslegen?
Mit diesem Template vereinfachen Sie die Datenerfassung und gewinnen erste Erkenntnisse zur Verbesserung Ihrer Retouren- und Erstattungsprozesse. Starten Sie noch heute und verkürzen Sie die Bearbeitungszeiten, während Sie die Kundenzufriedenheit steigern.
Verzögerungen bei Retouren und Erstattungen beenden: Optimieren Sie Ihren Prozess noch heute
Verkürzen Sie die Zykluszeit um 30 % und steigern Sie die Kundenzufriedenheit.
Keine Kreditkarte erforderlich. Die Einrichtung dauert nur wenige Minuten.