Ihre Datenvorlage für die Gehaltsabrechnungsverarbeitung
Ihre Datenvorlage für die Gehaltsabrechnungsverarbeitung
- Optimierte Datenfelder für die Gehaltsabrechnungsanalyse
- Umfassende Aktivitätsverfolgung für die Lebenszyklus-Kartierung
- Detaillierte Extraktionsanleitung für Oracle HCM Cloud Payroll
Attribute der Gehaltsabrechnungsverarbeitung
| Name | Beschreibung | ||
|---|---|---|---|
| Aktivitätsname ActivityName | Der spezifische Schritt oder das Ereignis, das im Gehaltsabrechnungszyklus durchgeführt wird. | ||
| Beschreibung Dieses Attribut erfasst den Namen des Ereignisses, das innerhalb des Gehaltsabrechnungsprozesses auftritt. Beispiele sind 'Zeiterfassung eingereicht', 'Gehaltsberechnung gestartet' und 'Zahlung ausgeführt'.\n\nEs ist die primäre Dimension für die Prozesserkennung und Variantenanalyse. In Oracle HCM Cloud wird dies oft vom Aktionstyp oder dem Aktionsstatus innerhalb der Gehaltsabrechnungsaktionstabellen abgeleitet. Bedeutung Dies definiert das 'Was' des Prozesses und ermöglicht die Rekonstruktion der Prozesskarte. Datenquelle Abgeleitet vom ACTION_TYPE-Code in PAY_PAYROLL_ACTIONS oder Statusänderungen in Audit-Trails. Beispiele Gehaltsabrechnungsberechnung gestartetZeiterfassung genehmigtBanküberweisung generiertAudit-Ausnahme markiert | |||
| Ereignis-Timestamp EventTimestamp | Das genaue Datum und die Uhrzeit, zu der die Aktivität stattgefunden hat. | ||
| Beschreibung Erfasst den genauen Zeitpunkt, zu dem eine Aktivität stattgefunden hat. Dies ist entscheidend für die Berechnung von Dauern, Durchlaufzeiten und die Identifizierung von Engpässen.\n\nBei automatisierten Schritten handelt es sich um die Systemausführungszeit. Bei manuellen Schritten wie Genehmigungen ist es der Timestamp der Benutzeraktion, die im Transaktionsprotokoll aufgezeichnet wurde. Bedeutung Essentiell für die chronologische Anordnung von Ereignissen und die Berechnung aller zeitbasierten KPIs. Datenquelle CREATION_DATE- oder ACTION_DATE-Spalten in relevanten Transaktionstabellen wie PAY_ACTION_INFORMATION. Beispiele 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Gehaltsabrechnungsdatensatz PayrollRecord | Eindeutiger Bezeichner für einen Mitarbeiter innerhalb einer spezifischen Abrechnungsperiode. | ||
| Beschreibung Der Gehaltsabrechnungsdatensatz dient als zentrale Case-ID für die Process Mining-Analyse. Es ist eine Verkettung oder ein eindeutiger Schlüssel, der die Mitarbeiter-Zuordnungs-ID und die Gehaltsabrechnungsperioden-ID kombiniert.\n\nDieses Attribut gruppiert alle Aktivitäten im Zusammenhang mit der Bezahlung eines einzelnen Mitarbeiters für einen spezifischen Zyklus, von der ersten Zeiterfassung bis zur endgültigen Banküberweisung und Steuererklärung. Es stellt sicher, dass die Analyse zwischen demselben Mitarbeiter, der im Januar und im Februar bezahlt wird, unterscheiden kann. Bedeutung Es dient als Case-ID, die alle disparaten Events zu einer einzigen Prozessinstanz für die Analyse zusammenführt. Datenquelle Konstruiert aus PAY_ASSIGNMENT_ACTIONS oder einer Kombination aus Personennummer und Gehaltsabrechnungszeitraumname in Oracle HCM. Beispiele EMP1001-2023-M01EMP5992-2023-W42300000018273645US-NY-A123-JAN23 | |||
| Letzte Datenaktualisierung LastDataUpdate | Der Timestamp, wann der Datensatz zuletzt in der Quelldatenbank geändert wurde. | ||
| Beschreibung Gibt die Aktualität der für die Analyse verwendeten Daten an. Dies unterscheidet sich vom Event Timestamp; es spiegelt wider, wann die Zeile in der Datenbank zuletzt durch einen ETL-Prozess oder eine Systemaktualisierung berührt wurde. Es wird verwendet, um die Datenaktualität zu überprüfen und Probleme mit der Extraktionslatenz zu debuggen. Bedeutung Stellt sicher, dass Analysten wissen, ob sie Echtzeit- oder veraltete Daten betrachten. Datenquelle LAST_UPDATE_DATE-Spalte, die in fast allen Oracle HCM-Tabellen üblich ist. Beispiele 2023-10-02T12:00:00Z2023-10-06T01:00:00Z | |||
| Quellsystem SourceSystem | Der Name des Systems, in dem das Ereignis seinen Ursprung hatte. | ||
| Beschreibung Identifiziert die Software oder das Modul, das den Datenpunkt generiert hat. Für diesen Prozess ist der primäre Wert „Oracle HCM Cloud Payroll“. In komplexen Landschaften könnte dies jedoch zwischen der Kern-Lohn- und Gehalts-Engine, dem Zeit- und Arbeitsmodul oder einer externen Bankschnittstelle unterscheiden. Bedeutung Bietet Herkunfts-Kontext, insbesondere bei der Integration von Daten aus Zeiterfassungs- oder Banken-Subsystemen. Datenquelle Hardcoded während der Extraktion oder abgeleitet von Schnittstellen-IDs. Beispiele Oracle HCM Cloud PayrollOracle Time and LaborExterne Bankschnittstelle | |||
| Abteilungsname DepartmentName | Die Organisationseinheit, in der der Mitarbeiter arbeitet. | ||
| Beschreibung Identifiziert die Abteilung, die für den Mitarbeiter zuständig ist, der mit dem Lohn- und Gehaltsdatensatz verknüpft ist. Dies ist entscheidend für das Dashboard „Timesheet Approval Efficiency“. Durch die Segmentierung der Daten nach Abteilung können Analysten identifizieren, welche Geschäftseinheiten die Zeiterfassungen ständig zu spät genehmigen, wodurch der gesamte Gehaltslauf verzögert wird. Bedeutung Ermöglicht die Ursachenanalyse von Verzögerungen im Zusammenhang mit Genehmigungen durch das Management. Datenquelle Abgeleitet aus dem zum Zeitpunkt des Gehaltslaufs gültigen Zuordnungsdatensatz des Mitarbeiters. Beispiele Vertrieb NordamerikaEngineeringPersonalwesenLogistik | |||
| Bearbeitender Benutzer ProcessingUser | Die Benutzer-ID oder der Name der Person, die die Aktivität ausführt. | ||
| Beschreibung Erfasst die Identität des Lohn- und Gehaltsspezialisten, Managers oder Systemkontos, der/das die Aktivität ausgelöst hat. Dies unterstützt das Dashboard „Payroll Specialist Workload Distribution“. Es hilft bei der Identifizierung von Ressourcenengpässen und Schulungsbedarfen innerhalb des Lohn- und Gehalts-Teams. Bedeutung Ermöglicht die Analyse der Ressourcenproduktivität und den Ausgleich der Arbeitslast. Datenquelle CREATED_BY- oder LAST_UPDATED_BY-Spalten in Transaktionstabellen. Beispiele sysadminj.smithpayroll_batch_userm.doe | |||
| Bruttogehaltsbetrag GrossPayAmount | Das insgesamt berechnete Bruttogehalt für die Periode. | ||
| Beschreibung Stellt den Geldwert des während des Zyklus berechneten Bruttoentgelts dar. Dies wird in der Analyse 'Steuer- und Leistungsberechnungsgenauigkeit' und 'Incentive-Integration' verwendet.\n\nEs ermöglicht Analysten, hochwertige Zahlungen mit Bearbeitungszeiten oder Fehlerraten zu korrelieren. Bedeutung Bietet finanziellen Kontext für die Process Mining-Analyse. Datenquelle Tabelle PAY_RUN_RESULT_VALUES, aggregiert für den Bruttogehaltsaldo. Beispiele 5000.002350.5010000.00 | |||
| Entgeltgruppe PayGroup | Logische Gruppierung von Mitarbeitern für die Gehaltsabrechnung. | ||
| Beschreibung Stellt die spezifische Gehaltsabrechnungsdefinition dar, zu der der Mitarbeiter gehört (z. B. 'Wöchentliche Fertigung', 'Monatliches Unternehmen').\n\nDieses Attribut ist zentral für fast alle Dashboards und ermöglicht den Leistungsvergleich über verschiedene Gehaltsabrechnungszyklen und -frequenzen hinweg. Bedeutung Das primäre Konfigurationsobjekt, das die Gehaltsabrechnungsplanung steuert. Datenquelle Tabelle PAY_ALL_PAYROLLS_F (Name der Gehaltsabrechnung). Beispiele US HalbmonatlichMonatlich UKWöchentliche Gewerkschaft | |||
| Ist manuelle Korrektur IsManualCorrection | Flag, das anzeigt, ob die Aktivität einen manuellen Eingriff erforderte. | ||
| Beschreibung Ein boolesches Flag, das für Aktivitäten wie „Data Correction Performed“ oder „Payroll Record Corrected“ auf „true“ gesetzt wird. Es wird zur Berechnung der KPIs „Manual Data Correction Rate“ und „First-Pass Payroll Accuracy Rate“ verwendet. Bedeutung Unterscheidet zwischen Straight-Through-Processing und manueller Nacharbeit. Datenquelle Abgeleitet vom Aktivitätsnamen oder spezifischen Aktionstypen, die Anpassungen anzeigen (z. B. QuickPay, Balance Adjustment). Beispiele truefalsch | |||
| Legislative Datengruppe LegislativeDataGroup | Unterteilt Gehaltsabrechnungsdaten nach Land oder regulatorischem Umfeld. | ||
| Beschreibung In Oracle HCM Cloud partitioniert die Legislative Data Group (LDG) die Lohn- und Gehaltsdaten sowie verwandte Daten. Sie entspricht typischerweise der Gesetzgebung eines Landes oder eines spezifischen Territoriums. Dieses Attribut ist entscheidend, um die Prozessanalyse nach Land zu filtern (z. B. US Payroll vs. UK Payroll) und wird oft dem generischen Attribut Land zugeordnet. Bedeutung Compliance-Regeln und Prozessabläufe variieren oft erheblich je nach Gerichtsbarkeit. Datenquelle Tabelle PAY_ALL_PAYROLLS_F verknüpft mit Definitionen der Legislative Data Group. Beispiele US Legislative Data GroupUK LDGLohn- und Gehalt Frankreich | |||
| Name der Gehaltsabrechnungsperiode PayrollPeriodName | Der spezifische Name des Zeitintervalls für den Gehaltslauf. | ||
| Beschreibung Identifiziert den spezifischen Zyklus, wie „Monatlich Januar 2024“ oder „Wöchentlich Periode 42“. Dies ist essentiell für den „SLA Deadline Compliance Monitor“. Es hilft, individuelle Mitarbeiter-Cases in ihre jeweiligen Batch-Läufe für die aggregierte Berichterstattung zu gruppieren. Bedeutung Grundlegend für die Batch-Level-Analyse und SLA-Verfolgung. Datenquelle Tabelle PAY_TIME_PERIODS oder Zeitperiodenname in der Gehaltsabrechnungsdefinition. Beispiele 2023 Monthly 102023 Weekly 42Bonuslauf Dez. 2023 | |||
| Prozessdauer in Tagen ProcessDurationDays | Gesamtzeit von der Initialisierung bis zur Zahlung. | ||
| Beschreibung Die berechnete Dauer zwischen der ersten Aktivität und der Aktivität 'Zahlung ausgeführt'. Verwendet für das Dashboard 'End-to-End Gehaltsabrechnungszykluszeit'.\n\nDiese Metrik dient als übergeordneter Gesundheitscheck für die Geschwindigkeit der Gehaltsabrechnungsfunktion. Bedeutung Hochrangiger KPI für Prozesseffizienz. Datenquelle Berechnet: Timestamp(Payment Executed) - Timestamp(Start). Beispiele 3.55.00.5 | |||
| SLA-Bearbeitungsfrist SlaProcessingDeadline | Das Zieldatum/-zeit, bis zu dem die Zahlung ausgeführt werden muss. | ||
| Beschreibung Speichert die vertragliche oder gesetzliche Frist für die Gehaltsauszahlung. Dieses Attribut wird mit dem 'Zahlung ausgeführt'-Timestamp verglichen.\n\nEs wird verwendet, um den KPI 'Einhaltung der SLA-Bearbeitungsfrist' zu berechnen und gefährdete Entgeltgruppen zu identifizieren. Bedeutung Der primäre Maßstab für Prozesserfolg oder -misserfolg hinsichtlich der Pünktlichkeit. Datenquelle Normalerweise ein konfiguriertes Feld (DFF) in der Gehaltsabrechnungsdefinition oder abgeleitet vom Scheckdatum minus X Tage. Beispiele 2023-10-28T17:00:00Z2023-11-30T17:00:00Z | |||
| Audit-Ausnahmetyp AuditExceptionType | Die Fehler- oder Warnkategorie, die während des Audits gekennzeichnet wurde. | ||
| Beschreibung Kategorisiert das spezifische Problem, das während der Aktivität „Audit Exception Flagged“ gefunden wurde (z. B. „Negative Net Pay“, „Missing Tax ID“). Dieses Attribut unterstützt das Dashboard „Audit Exception and Correction Analysis“, indem es häufige Datenqualitätsprobleme aufzeigt. Bedeutung Entscheidend für die Ursachenanalyse von Nacharbeitschleifen. Datenquelle Meldungs- oder Fehlercode-Spalten in Gehaltsabrechnungs-Protokollen oder Ausnahmenberichten. Beispiele Negativer NettoverdienstFehlende SozialversicherungsnummerUngültige BankdatenÜberstundenlimit überschritten | |||
| Mitarbeitertyp EmployeeType | Kategorisierung des Mitarbeiters (z. B. Angestellter, Stundenlohn, Auftragnehmer). | ||
| Beschreibung Klassifiziert den Mitarbeiterdatensatz. Dies ist entscheidend für das Dashboard „Digital Pay Slip Publishing Lag“, da verschiedene Mitarbeitertypen unterschiedliche Verarbeitungsregeln oder Dringlichkeiten haben können. Es hilft, die Analyse zu filtern, um die Prozessleistung zwischen verschiedenen Belegschaftssegmenten zu vergleichen. Bedeutung Verschiedene Mitarbeitertypen folgen oft unterschiedlichen Prozessvarianten. Datenquelle Zuordnungskategorie oder Beschäftigungsbedingungen in PER_ALL_ASSIGNMENTS_M. Beispiele Vollzeit-AngestellterTeilzeitstundenlohnAuftragnehmerFührungskraft | |||
| Rückwirkende Änderungs-Flag RetroactiveChangeFlag | Gibt an, ob der Gehaltslauf rückwirkende Zahlungen beinhaltet. | ||
| Beschreibung Ein boolescher Indikator, der auf „true“ gesetzt ist, wenn „Retropay“-Elemente in diesem Datensatz verarbeitet werden. Dies hilft, längere Bearbeitungszeiten oder Audit-Ausnahmen in der „Process Path Variant Comparison“ zu erklären. Retroaktive Änderungen lösen oft komplexe Neuberechnungen aus, die sich über frühere Zeiträume erstrecken. Bedeutung Identifiziert komplexe Cases, die naturgemäß mehr Bearbeitungszeit erfordern. Datenquelle Vorhandensein von 'Retropay'-Elementeingaben in PAY_ELEMENT_ENTRIES. Beispiele truefalsch | |||
| SLA-Status SlaStatus | Kategorischer Status der SLA-Einhaltung (Erfüllt/Verpasst). | ||
| Beschreibung Abgeleitet durch Vergleich des Zeitstempels „Payment Executed“ mit der „SLA Processing Deadline“. Werte können „Rechtzeitig“, „Risikobehaftet“ oder „Verletzt“ umfassen. Dies vereinfacht die Berichterstattung für den „SLA Deadline Compliance Monitor“, indem Fälle in Leistungs-Buckets gruppiert werden. Bedeutung Vereinfacht komplexe Zeitvergleiche in umsetzbare Kategorien. Datenquelle Berechnete Logik, die Event Timestamp mit SLA-Frist vergleicht. Beispiele ErfülltVerletztKurz vor Fristüberschreitung | |||
| Steuerhoheitsgebiet TaxJurisdiction | Der spezifische Bundesstaat, die Provinz oder die Gemeinde für die Steuererklärung. | ||
| Beschreibung Gibt die primäre Steuerbehörde an, die mit dem Lohn- und Gehaltsdatensatz verbunden ist (z. B. „CA“ für Kalifornien, „NY“ für New York). Dies unterstützt das Dashboard „Tax Compliance Processing Duration“. Es hilft zu identifizieren, ob bestimmte Regionen komplexere oder langsamere Steuerberechnungs- und Einreichungsprozesse haben. Bedeutung Segmentiert die Leistung nach regulatorischer Komplexität. Datenquelle Abgeleitet von der Steuerkarte des Mitarbeiters oder den Adressen des Arbeitsorts. Beispiele CA-KalifornienNY-New YorkTX-TexasBundes-US | |||
| Vorschau-Iterationsanzahl PreviewIterationCount | Anzahl der Vorschauen der Ergebnisse vor der Finalisierung. | ||
| Beschreibung Ein Zähler, der jedes Mal inkrementiert wird, wenn eine „Payroll Result Previewed“-Aktivität für denselben Case auftritt. Dies ist die direkte Messgröße für das Dashboard „Payroll Preview Iteration Tracker“ und gibt den Umfang der Nacharbeit oder des Zögerns vor der Genehmigung an. Bedeutung Quantifiziert die Effizienz der Validierungsphase. Datenquelle Berechnet während der Datentransformation durch Zählung spezifischer Aktivitäten pro Case-ID. Beispiele 1350 | |||
Gehaltsabrechnungsaktivitäten
| Aktivität | Beschreibung | ||
|---|---|---|---|
| Banküberweisung generiert | Die Generierung der EFT (Electronic Funds Transfer)-Datei oder einer ähnlichen Zahlungsdatei. Dies ist der technische Schritt zur Erstellung der Anweisungsdatei für die Bank. | ||
| Bedeutung Misst die Zykluszeit der Zahlungsdateigenerierung. Verzögerungen hier können dazu führen, dass Bankfristen verpasst werden. Datenquelle Abfrage von PAY_PAYROLL_ACTIONS, wobei ACTION_TYPE M (Magnetband) oder E (EFT) oder C (Scheckschreiber) ist. Erfassen Protokolliert, wenn die EFT-/Scheck-Aktion abgeschlossen ist Ereignistyp explicit | |||
| Gehaltsabrechnungsberechnung ausgeführt | Der erfolgreiche Abschluss des Prozesses 'Gehaltsabrechnung berechnen', einschließlich Brutto-Netto-Berechnungen. Dieses Ereignis zeigt an, dass Gehälter, Abzüge und Steuern für die Zuweisung berechnet wurden. | ||
| Bedeutung Ein wichtiger Meilenstein, der anzeigt, dass Daten zur Validierung bereit sind. Hohe Dauern hier können auf Systemleistungsprobleme oder komplexe Fast Formulas hindeuten. Datenquelle Abfrage von PAY_PAYROLL_REL_ACTIONS mit Verknüpfung zu PAY_PAYROLL_ACTIONS, wobei ACTION_TYPE R oder Q ist und sich ACTION_STATUS zu C (Abgeschlossen) ändert. Erfassen Protokolliert, wenn sich der Status der Gehaltsabrechnungslauf-Aktion zu Abgeschlossen aktualisiert Ereignistyp explicit | |||
| Gehaltsabrechnungsberechnung gestartet | Die Initiierung des Hauptprozesses für den Gehaltslauf für eine spezifische Gehaltsabrechnungsdefinition und -periode. Dies markiert den Übergang von der Datenerfassung zur Verarbeitung. | ||
| Bedeutung Definiert den Beginn des Zeitfensters für die intensive Verarbeitung. Wird verwendet, um die gesamte Zykluszeit für die technische Lohn- und Gehaltsausführung zu berechnen. Datenquelle Abfrage der Tabelle PAY_PAYROLL_ACTIONS, wobei ACTION_TYPE R (Lauf) oder Q (QuickPay) ist und ACTION_STATUS als gestartet markiert ist (oder aus dem Erstellungsdatum abgeleitet). Erfassen Protokolliert, wenn ein PAY_PAYROLL_ACTIONS-Datensatz eingefügt wird Ereignistyp explicit | |||
| Vorauszahlungen berechnet | Die Ausführung des Vorauszahlungsprozesses, der den Nettoverdienst an die vom Mitarbeiter gewählten Zahlungsmethoden (Scheck, EFT usw.) verteilt. Dies validiert, dass die berechneten Beträge tatsächlich ausgezahlt werden können. | ||
| Bedeutung Die Brücke zwischen Berechnung und Auszahlung. Fehler hier weisen in der Regel auf fehlende Bankdaten oder ungültige Zahlungsmethoden hin. Datenquelle Abfrage von PAY_PAYROLL_ACTIONS, wobei ACTION_TYPE P (Vorauszahlungen) ist und der Status Abgeschlossen ist. Erfassen Protokolliert, wenn die Vorauszahlungsaktion abgeschlossen ist Ereignistyp explicit | |||
| Zahlung ausgeführt | Die endgültige Bestätigung, dass die Zahlung verarbeitet wurde. In Oracle korreliert dies mit dem Abschluss des Zahlungs-Workflows oder der Abstimmung im Cash Management. | ||
| Bedeutung Der primäre Timestamp für die SLA-Compliance. Wird verwendet, um festzustellen, ob Mitarbeiter pünktlich bezahlt wurden. Datenquelle Kann aus dem effektiven Datum der Banküberweisungsaktion oder explizit über Cash Management-Abstimmungsprotokolle (CE_STATEMENT_LINES) abgeleitet werden. Erfassen Protokolliert über das effektive Datum der Zahlungsaktion oder des Abstimmungsereignisses Ereignistyp explicit | |||
| Anreizdaten importiert | Die Erstellung von Elementeingaben für variable Vergütungen wie Boni oder Provisionen mittels Batch Loader oder HDL-Import. Dies stellt die Integration externer Vergütungsdaten in den Gehaltslauf dar. | ||
| Bedeutung Überwacht die Integrationsgeschwindigkeit variabler Vergütungen. Späte Importe erzwingen oft zusätzliche Gehaltsabrechnungsläufe oder manuelle Korrekturen. Datenquelle Abfrage von PAY_BATCH_HEADERS für den Importabschluss oder Verfolgung der Erstellung von PAY_ELEMENT_ENTRIES_F mit einer spezifischen Quellsystemreferenz. Erfassen Protokolliert, wenn der Stapelverarbeitungsprozess für Elementeingaben erfolgreich abgeschlossen ist Ereignistyp explicit | |||
| Archivierungsergebnisse generiert | Der Abschluss des Prozesses 'Periodische Gehaltsabrechnungsergebnisse archivieren'. Diese Momentaufnahme sperrt die Daten effektiv für die Berichterstattung und Lohnzettel-Generierung. | ||
| Bedeutung Eine technische Voraussetzung für die Erstellung von Gehaltsabrechnungen und gesetzlich vorgeschriebenen Berichten. Es bestätigt, dass die Daten finalisiert sind. Datenquelle Abfrage von PAY_PAYROLL_ACTIONS, wobei ACTION_TYPE X (Archiv) ist und der Status Abgeschlossen ist. Erfassen Protokolliert, wenn die Archivierungsaktion abgeschlossen ist Ereignistyp explicit | |||
| Audit-Ausnahme markiert | Die Aufzeichnung einer Fehler- oder Warnmeldung während der Gehaltsabrechnungsberechnungs- oder Validierungsphase. Dies erfasst spezifische Validierungsfehler, die menschliches Eingreifen erfordern. | ||
| Bedeutung Essentiell für die Identifizierung von Datenqualitätsproblemen. Ein hohes Volumen an Ausnahmen erhöht den manuellen Aufwand und das Risiko von SLA-Verletzungen. Datenquelle Abfrage der Tabelle PAY_MESSAGE_LINES, die mit der spezifischen PAY_PAYROLL_REL_ACTION_ID verknüpft ist. Diese Tabelle speichert Fehler und Warnungen, die während der Läufe generiert wurden. Erfassen Protokolliert, wenn ein Datensatz in PAY_MESSAGE_LINES eingefügt wird Ereignistyp explicit | |||
| Gehaltsabrechnungsdatensatz korrigiert | Manuelle Aktualisierungen, die auf Elementeingaben oder Zuordnungsdaten nach einem anfänglichen Gehaltsabrechnungslauf, aber vor der Finalisierung angewendet werden. Diese Aktivität stellt die erforderliche Nacharbeit dar, um Fehler oder Ausnahmen zu beheben. | ||
| Bedeutung Weist auf Prozesseffizienz- und Datenqualitätsprobleme hin. Die Reduzierung dieser Aktivität ist entscheidend für die Verbesserung der „First-Pass Payroll Accuracy Rate“. Datenquelle Abgeleitet durch Identifizierung von Aktualisierungen an PAY_ELEMENT_ENTRIES_F, wobei das Last Update Date zwischen dem ursprünglichen Gehaltslaufdatum und dem Vorauszahlungsdatum liegt. Erfassen Zeitstempel für Elementeingabe-Updates mit Zeitstempeln für Gehaltsläufe vergleichen Ereignistyp inferred | |||
| Gehaltslauf genehmigt | Die formelle Genehmigung des Gehaltsabrechnungsregisters oder -flows innerhalb des Payroll Dashboards. Dies geschieht typischerweise nach der Überprüfung von Validierungsberichten und vor der Generierung von Bankdateien. | ||
| Bedeutung Stellt die Unterschrift des Managements dar. Die Zeit zwischen Berechnung und Genehmigung repräsentiert das Prüfungsfenster. Datenquelle Abfrage von PAY_REQ_FLOW_INSTANCES für Statusänderungen oder den Abschluss spezifischer Aufgaben innerhalb eines definierten Gehaltsabrechnungs-Flow-Musters. Erfassen Protokolliert, wenn sich der Status der Flow-Instanz zu Abgeschlossen/Genehmigt ändert Ereignistyp explicit | |||
| Kostenrechnung übertragen | Die Übertragung der Ergebnisse der Gehaltsabrechnungskostenrechnung an das Hauptbuch. Dies stellt den finanzbuchhalterischen Abschluss des Gehaltsabrechnungszyklus dar. | ||
| Bedeutung Stellt die finanzielle Compliance und genaue Buchung der Arbeitskosten sicher. Verzögerungen hindern die Finanzabteilung am Monatsabschluss. Datenquelle Abfrage von PAY_PAYROLL_ACTIONS, wobei ACTION_TYPE T (Übertragung ins Hauptbuch) ist und der Status Abgeschlossen ist. Erfassen Protokolliert, wenn der Prozess zur Übertragung ins Hauptbuch abgeschlossen ist Ereignistyp explicit | |||
| Lohnzettel veröffentlicht | Der Zeitpunkt, an dem das Lohnzettel-Dokument für den Mitarbeiter im Self Service sichtbar wird. Dies erfolgt nach dem Archiver und potenziell einem spezifischen Prozess 'Lohnzettel generieren'. | ||
| Bedeutung Beeinflusst die Mitarbeiterzufriedenheit. Lange Verzögerungen zwischen Zahlung und Verfügbarkeit des Gehaltszettels erzeugen Support-Tickets. Datenquelle Abfrage der Tabelle Documents of Record (HR_DOCUMENTS_OF_RECORD) oder des Abschlusses des Prozesses zur Lohnzettel-Generierung in PAY_PAYROLL_ACTIONS. Erfassen Protokolliert, wenn der Prozess zur Erstellung des Lohnzettel-PDFs abgeschlossen ist Ereignistyp explicit | |||
| QuickPay ausgeführt | Die Ausführung eines Einzelpersonen-Gehaltslaufs (QuickPay), der im Allgemeinen zur Überprüfung von Korrekturen verwendet wird. Dies dient als Proxy für die Aktivität 'Gehaltsabrechnungsergebnis in der Vorschau angezeigt'. | ||
| Bedeutung Häufige QuickPays pro Person deuten auf einen Trial-and-Error-Ansatz bei der Lohn- und Gehaltsabrechnung hin, anstatt auf eine Datenquelle Abfrage von PAY_PAYROLL_ACTIONS, wobei ACTION_TYPE Q (QuickPay) ist. Zählung der Instanzen pro Gehaltsabrechnungsperiode pro Mitarbeiter. Erfassen Protokolliert, wenn eine QuickPay-Aktion in PAY_PAYROLL_ACTIONS erfasst wird Ereignistyp explicit | |||
| Steuererklärung abgeschlossen | Die Generierung von gesetzlichen Steuerdateien (z. B. Vierteljährliche Steuererklärung Dritter). Dies gewährleistet die Einhaltung gesetzlicher Vorschriften für die Abrechnungsperiode. | ||
| Bedeutung Entscheidend für den KPI zur Dauer der Steuer-Compliance-Verarbeitung. Fehler hier führen zu Strafen. Datenquelle Abfrage von PAY_PAYROLL_ACTIONS nach spezifischen Aktionen der Legislative Data Group im Zusammenhang mit der Steuerberichterstattung (z. B. US Third Party Tax Filing). Erfassen Protokolliert, wenn ein spezifischer Steuerberichts-Workflow abgeschlossen ist Ereignistyp explicit | |||
| Zeiterfassung eingereicht | Das initiale Ereignis, bei dem ein Mitarbeiter oder Manager Zeit- und Arbeitsdaten zur Verarbeitung einreicht. In Oracle HCM wird dies erfasst, wenn sich der Status der Zeiterfassungskarte im Time and Labor-Modul auf Eingereicht ändert. | ||
| Bedeutung Markiert die Eingabe von Rohdaten in die potenzielle Gehaltsabrechnungspipeline. Verzögerungen hier wirken sich auf nachgelagerte Prozesse aus und verkürzen das Zeitfenster für Payroll-Spezialisten zur Validierung von Berechnungen. Datenquelle Abfrage der Tabelle HWM_TM_REC_GRP_DTLS oder der Ansicht HXT_TIMECARDS, wo sich der Status zu EINGEREICHT ändert. Verwenden Sie den Einreichungs-Timestamp. Erfassen Protokolliert, wenn sich der Status in Zeit- und Arbeitserfassung zu EINGEREICHT ändert Ereignistyp explicit | |||
| Zeiterfassung genehmigt | Die Bestätigung, dass die eingereichten Zeitdaten von einem Manager überprüft und autorisiert wurden. Diese Statusänderung löst die Übertragung der Daten an die Gehaltsabrechnungs-Elementeingaben aus. | ||
| Bedeutung Entscheidend für die Messung der Vorlaufzeit der Managergenehmigung. Verzögerungen hier sind eine Hauptursache für Nachzahlungsanpassungen in nachfolgenden Perioden. Datenquelle Abfrage der Tabelle HWM_TM_REC_GRP_DTLS oder der Ansicht HXT_TIMECARDS, wo sich der Status zu GENEHMIGT ändert. Vergleich des Genehmigungs-Timestamps mit dem Einreichungs-Timestamp. Erfassen Protokolliert, wenn sich der Status in Zeit- und Arbeitserfassung zu GENEHMIGT ändert Ereignistyp explicit | |||
Extraktionsleitfäden
Schritte
Datenzugriff über Data Exchange: Melden Sie sich bei Oracle HCM Cloud mit einem Benutzer an, der die Rolle „Human Capital Management Integration Specialist“ besitzt. Navigieren Sie zu My Client Groups > Data Exchange > Extract Definitions.
Neuen Extrakt erstellen: Klicken Sie auf das „+“-Symbol, um einen neuen Extrakt zu erstellen. Nennen Sie ihn „ProcessMind_Payroll_Extract“. Wählen Sie „Payroll“ als Consumer und „HR Archive“ als Kategorie, um den Zugriff auf historische Lohn- und Gehaltsaktionsdaten sicherzustellen.
Datengruppen definieren: Erstellen Sie eine Root Data Group basierend auf der User Entity
PAY_PAYROLL_REL_UE(Payroll Relationship). Dies verankert die Extraktion an der Gehaltsabrechnungsbeziehung des Mitarbeiters. Erstellen Sie untergeordnete Datengruppen fürPAY_ACTION_INFORMATION_UE,PAY_ELEMENT_ENTRY_UEundHWM_MEASURE_DAY_V_UE(für Zeit- und Arbeitsdaten).Extraktdatensätze konfigurieren: Innerhalb der Datengruppen definieren Sie Datensätze, um die hierarchischen Daten zu vereinfachen. Sie müssen spezifische Datensätze für jeden Aktivitätstyp erstellen (z.B. einen Datensatz zum Filtern von „Time Card“-Ereignissen, einen weiteren für „Run Results“).
SQL-Logik über FastFormula oder BIP implementieren: Aufgrund der Komplexität der Transformation hierarchischer Gehaltsdaten in ein lineares Event Log ist der robusteste Ansatz, die „Extract Delivery Option“ zu verwenden, um einen BI Publisher Report aufzurufen. Dies ermöglicht Ihnen die Verwendung des im Abschnitt „Query“ unten bereitgestellten SQL als Data Model. Dies ist der nativen GUI-Filterung für die Erstellung eines vereinheitlichten Event Logs überlegen.
BI Publisher Data Model erstellen: Navigieren Sie zu Tools > Reports and Analytics > Browse Catalog. Erstellen Sie ein neues Data Model. Fügen Sie die unten angegebene SQL-Abfrage ein. Definieren Sie einen Parameter für
bind_start_dateundbind_end_date.Extrakt mit BIP verknüpfen: Erstellen Sie auf der Registerkarte „Delivery“ der Extract Definition eine Zustelloption. Wählen Sie „PDF“ oder „XML“ als Ausgabetyp (ProcessMind bevorzugt CSV, aber Sie konvertieren die BIP-Ausgabe). Wählen Sie den im vorherigen Schritt erstellten BI Publisher-Bericht aus.
Parameter definieren: Fügen Sie im Extract Execution Tree Parameter für Start Date und End Date hinzu, um sie dynamisch an die BI Publisher-Abfrage zu übergeben.
Validieren und übermitteln: Validieren Sie die Extraktdefinition, um Fehler zu überprüfen. Klicken Sie auf „Submit Extract“. Geben Sie die Parameter ein (z.B. die letzten 90 Tage).
Prozess überwachen: Gehen Sie zu „View Extract Results“. Warten Sie, bis der Status auf „Succeeded“ wechselt.
Ausgabe herunterladen: Laden Sie die generierte XML-/CSV-Datei herunter. Öffnen Sie sie, um zu überprüfen, ob die Struktur die erforderlichen Spalten enthält: PayrollRecord, ActivityName, EventTimestamp usw.
Formatierung für ProcessMind: Wenn die Ausgabe XML ist, konvertieren Sie sie in eine flache CSV-Datei und stellen Sie sicher, dass die Header den Anforderungen unter „Attributes to include“ entsprechen. Laden Sie die resultierende Datei in ProcessMind hoch.
Konfiguration
- Extraktionsmodus: Nur Änderungen vs. Vollextraktion. Für die initiale Ladung verwenden Sie die Vollextraktion. Für tägliche Updates konfigurieren Sie 'Changes Only' basierend auf dem Last Update Date.
- Legislative Data Group (LDG): Es wird dringend empfohlen, nach LDG zu filtern, wenn Ihre Instanz mehrere Länder unterstützt, da die Payroll-Definitionen je nach Gesetzgebung variieren.
- Zeitbereich: Setzen Sie
bind_start_dateundbind_end_dateso, dass sie mindestens 3-6 Monate abdecken, damit Process Mining vollständige Zykluszeiten erfassen kann. - Chunk Size: Für Payrolls mit hohem Volumen (10.000+ Mitarbeiter) setzen Sie die Chunk Size in der Extract Definition auf 2000, um Timeout-Fehler zu vermeiden.
- Effektive Datierung: Payroll-Tabellen sind datumsbasiert. Die Abfragelogik behandelt explizit
effective_start_dateundeffective_end_date, um sicherzustellen, dass die korrekte historische Version des Datensatzes abgerufen wird. - Sicherheit: Der ausführende Benutzer muss über Datensicherheitsprofile verfügen, die das Anzeigen aller zur Analyse vorgesehenen Payrolls und Abteilungen ermöglichen.
a Beispielabfrage config
/* Oracle HCM Cloud Payroll Extraction for ProcessMind */
/* Aggregating 16 specific activities into a unified Event Log */
SELECT
/* Attributes */
rel.person_number || '-' || ppa.payroll_action_id AS PayrollRecord,
'Time Card Submitted' AS ActivityName,
TO_CHAR(htr.creation_date, 'YYYY-MM-DD HH24:MI:SS') AS EventTimestamp,
'Oracle HCM Time and Labor' AS SourceSystem,
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS') AS LastDataUpdate,
pap.name AS PayrollPeriodName,
org.name AS DepartmentName,
NULL AS GrossPayAmount
FROM hwm_tm_rec htr
JOIN hwm_tm_rec_grp htrg ON htr.tm_rec_grp_id = htrg.tm_rec_grp_id
JOIN per_all_people_f rel ON htrg.person_id = rel.person_id
LEFT JOIN pay_all_payrolls_f pap ON htrg.payroll_id = pap.payroll_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id /* Adjust mapping */
WHERE htr.latest_version_flag = 'Y'
AND htr.tm_rec_status = 'SUBMITTED'
AND htr.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Time Card Approved',
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Time and Labor',
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM hwm_tm_rec htr
JOIN hwm_tm_rec_grp htrg ON htr.tm_rec_grp_id = htrg.tm_rec_grp_id
JOIN per_all_people_f rel ON htrg.person_id = rel.person_id
LEFT JOIN pay_all_payrolls_f pap ON htrg.payroll_id = pap.payroll_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE htr.latest_version_flag = 'Y'
AND htr.tm_rec_status = 'APPROVED'
AND htr.last_update_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || pee.element_entry_id,
'Incentive Data Imported',
TO_CHAR(pee.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
NULL,
org.name,
NULL
FROM pay_element_entries_f pee
JOIN pay_element_types_f pet ON pee.element_type_id = pet.element_type_id
JOIN per_all_assignments_m asg ON pee.assignment_id = asg.assignment_id
JOIN per_all_people_f rel ON asg.person_id = rel.person_id
LEFT JOIN per_departments org ON asg.organization_id = org.organization_id
WHERE pet.classification_name IN ('Supplemental Earnings', 'Voluntary Deductions')
AND pee.creator_type IN ('H', 'F') /* HDL or Flat File */
AND pee.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Calculation Started',
TO_CHAR(ppa.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(ppa.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_actions ppa
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id /* Simplified Join */
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('R', 'Q') /* Run or QuickPay */
AND ppa.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Calculation Executed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
(SELECT SUM(prrv.result_value) FROM pay_run_result_values prrv JOIN pay_run_results prr ON prrv.run_result_id = prr.run_result_id WHERE prr.payroll_rel_action_id = pra.payroll_rel_action_id) AS GrossPayAmount
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('R', 'Q')
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Audit Exception Flagged',
TO_CHAR(pml.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pml.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_message_lines pml
JOIN pay_payroll_rel_actions pra ON pml.source_id = pra.payroll_rel_action_id
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pml.message_level IN ('F', 'E') /* Fatal or Error */
AND pml.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Record Corrected',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_element_entries_f pee
JOIN pay_payroll_rel_actions pra ON pee.creator_id = pra.payroll_rel_action_id
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pee.last_update_date > pee.creation_date
AND pee.last_update_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'QuickPay Executed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'Q'
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Prepayments Calculated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'P' /* Distribution */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Run Approved',
TO_CHAR(pfi.action_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pfi.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_flow_instances pfi
JOIN pay_payroll_actions ppa ON pfi.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pfi.status = 'COMPLETED'
AND pfi.instance_name LIKE '%Approval%'
AND pfi.action_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Archive Results Generated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'X' /* Archive */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Bank Transfer Generated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
(SELECT SUM(ppp.value) FROM pay_pre_payments ppp WHERE ppp.payroll_action_id = ppa.payroll_action_id) AS GrossPayAmount
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('M', 'E') /* Mag Tape or EFT */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payment Executed',
TO_CHAR(ppp.base_currency_value, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(ppa.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
ppp.value AS GrossPayAmount
FROM pay_pre_payments ppp
JOIN pay_payroll_actions ppa ON ppp.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('H', 'E', 'M') /* Check or EFT */
AND ppa.effective_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Pay Slip Published',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'G' /* Generate Payslip */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Costing Transferred',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'T' /* Transfer to GL */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Tax Filing Completed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.report_category IN ('Tax', 'Regulatory') /* Customize based on local requirements */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date Schritte
- Anmeldung bei Oracle BI Publisher: Greifen Sie auf die Oracle Cloud-Umgebung zu und navigieren Sie zu Tools > Reports and Analytics. Klicken Sie auf Browse Catalog, um die BI Publisher-Oberfläche zu öffnen.
- Data Model erstellen: Klicken Sie auf New (oben links) und wählen Sie Data Model. Dies ist der Container für Ihre SQL-Extraktionslogik.
- SQL Data Set erstellen: Klicken Sie unter der Registerkarte Diagram auf das Symbol New Data Set und wählen Sie SQL Query.
- Datenquelle konfigurieren: Benennen Sie das Dataset (z.B.
ProcessMind_Payroll_Extract). Setzen Sie die Data Source aufApplicationDB_HCM(oder Ihre spezifische HCM-Anwendungsdatenbankverbindung). Belassen Sie den Typ als Standard SQL. - Abfrage eingeben: Kopieren Sie das vollständige SQL-Skript, das im Abschnitt „Query“ unten bereitgestellt wird, und fügen Sie es in das SQL Query-Textfeld ein. Stellen Sie sicher, dass Sie keine Markdown-Formatierung einschließen.
- Parameter definieren: Die Abfrage verwendet Bind-Variablen
:p_start_dateund:p_end_date. Erstellen Sie auf der Registerkarte Parameters des Data Models diese beiden Parameter (Typ Datum), um den Extraktionsbereich zu filtern (z.B. basierend aufppa.EFFECTIVE_DATE). - Datenstruktur validieren: Klicken Sie auf OK. Wechseln Sie zur Registerkarte Data im Data Model-Editor. Geben Sie Beispieldaten ein (z.B.
2023-01-01bis2023-03-31) und klicken Sie auf View. Stellen Sie sicher, dass die Ausgabe Zeilen mitPayrollRecord,ActivityNameundEventTimestampenthält. - Data Model speichern: Speichern Sie das Modell in einem freigegebenen Ordner (z.B.
/Shared Folders/Custom/ProcessMining). - Bericht für den Export erstellen: Klicken Sie auf Create Report, wählen Sie das soeben gespeicherte Data Model aus. Verwenden Sie den Report Wizard, um ein einfaches Tabellenlayout mit allen Spalten zu erstellen. Deaktivieren Sie „Show Grand Totals“.
- Nach CSV exportieren: Zeigen Sie den Bericht im Report Viewer an. Klicken Sie auf das Menü Actions (Zahnradsymbol) > Export > Data > CSV.
- Transformieren: Öffnen Sie die CSV-Datei. Stellen Sie sicher, dass die Datumsformate ISO 8601 (
JJJJ-MM-TT HH:MM:SS) sind, falls sie nicht automatisch formatiert wurden. Wenn das SQL korrekt eingefügt wurde, sollten keine weiteren Umformungen erforderlich sein. - Hochladen: Importieren Sie die resultierende CSV-Datei in ProcessMind und ordnen Sie die Spalten gemäß den „Data Requirements“ zu.
Konfiguration
- Data Source Connection: Muss
ApplicationDB_HCModer die entsprechende JNDI-Datenquelle verwenden, die Lesezugriff auf diePAY_- undPER_-Schemas hat. - Zeitbereich: Das empfohlene Extraktionsfenster beträgt 3-6 Monate, um vollständige Lohn- und Gehaltszyklen zu erfassen. Verwenden Sie die Parameter
:p_start_dateund:p_end_date, um diese dynamische Ladung zu steuern. - Legislative Data Group (LDG): Die Abfrage extrahiert standardmäßig alle LDGs. Wenn Sie mehrere Länder betreiben, ziehen Sie in Betracht, einen Filter
AND ppa.LEGISLATIVE_DATA_GROUP_ID = [Your_LDG_ID]hinzuzufügen, um die Daten zu partitionieren. - Performance: Die Abfrage greift auf Tabellen mit hohem Volumen (
PAY_RUN_RESULTS,PAY_ASSIGNMENT_ACTIONS) zu. Stellen Sie sicher, dass der Zeitbereich nicht zu breit ist (z.B. >1 Jahr), um Timeout-Fehler in BI Publisher zu vermeiden. - Sicherheit: Der Benutzer, der den Bericht ausführt, benötigt Data Access Set-Berechtigungen für die Ziel-Payroll-Definitionen.
a Beispielabfrage sql
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Time Card Submitted' AS ActivityName,
peef.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME AS LegislativeDataGroup,
org.NAME AS DepartmentName,
peef.LAST_UPDATED_BY AS ProcessingUser,
NULL AS GrossPayAmount,
ptp.PERIOD_NAME AS PayrollPeriodName,
NULL AS SlaProcessingDeadline,
'N' AS IsManualCorrection,
pg.PAYROLL_NAME AS PayGroup,
NULL AS ProcessDurationDays
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE = 'H'
AND peef.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Time Card Approved' AS ActivityName,
peef.EFFECTIVE_START_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE = 'H'
AND peef.EFFECTIVE_START_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Incentive Data Imported' AS ActivityName,
peef.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE IN ('B', 'F')
AND peef.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
CASE
WHEN ppa.ACTION_TYPE = 'R' AND paa.ACTION_STATUS = 'C' THEN 'Payroll Calculation Executed'
WHEN ppa.ACTION_TYPE = 'R' THEN 'Payroll Calculation Started'
WHEN ppa.ACTION_TYPE = 'Q' THEN 'QuickPay Executed'
WHEN ppa.ACTION_TYPE IN ('P', 'U') THEN 'Prepayments Calculated'
WHEN ppa.ACTION_TYPE = 'X' THEN 'Archive Results Generated'
WHEN ppa.ACTION_TYPE = 'M' THEN 'Bank Transfer Generated'
WHEN ppa.ACTION_TYPE IN ('Z', 'E') THEN 'Payment Executed'
WHEN ppa.ACTION_TYPE = 'T' THEN 'Costing Transferred'
ELSE 'Payroll Process Action'
END AS ActivityName,
ppa.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
paa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
ptp.REGULAR_PAYMENT_DATE AS SlaProcessingDeadline,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE IN ('R', 'Q', 'P', 'U', 'X', 'M', 'Z', 'E', 'T')
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Audit Exception Flagged' AS ActivityName,
pml.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
pml.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
pml.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'Y',
pg.PAYROLL_NAME,
NULL
FROM PAY_MESSAGE_LINES pml
JOIN PAY_PAYROLL_ACTIONS ppa ON pml.PAYROLL_ACTION_ID = ppa.PAYROLL_ACTION_ID
LEFT JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE pml.MESSAGE_LEVEL IN ('E', 'W')
AND pml.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Payroll Record Corrected' AS ActivityName,
peef.LAST_UPDATE_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'Y',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.LAST_UPDATE_DATE > peef.CREATION_DATE
AND peef.LAST_UPDATE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Payroll Run Approved' AS ActivityName,
ppa.LAST_UPDATE_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'R'
AND paa.ACTION_STATUS = 'C'
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Pay Slip Published' AS ActivityName,
(ppa.CREATION_DATE + 1) AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'X'
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Tax Filing Completed' AS ActivityName,
ppa.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'Z'
AND ppa.CREATION_DATE BETWEEN :p_start_date AND :p_end_date