Datatemplate voor payrollverwerking
Datatemplate voor payrollverwerking
- Geoptimaliseerde datavelden voor payrollanalyse
- Activiteiten in de levenscyclus volledig vastleggen
- Gedetailleerde extractie-instructies voor Payroll in Oracle HCM Cloud
Attributen voor payrollverwerking
| Naam | Beschrijving | ||
|---|---|---|---|
| Activiteitsnaam ActivityName | De specifieke stap of gebeurtenis in de salariscyclus. | ||
| Beschrijving Dit attribuut bevat de naam van de gebeurtenis in het salarisproces. Voorbeelden zijn 'Urenstaat ingediend', 'Salarisberekening gestart' en 'Betaling uitgevoerd'. Dit is de belangrijkste dimensie voor procesontdekking en variantanalyse. In Oracle HCM Cloud wordt de waarde vaak afgeleid van het Action Type of de Action Status in de tabellen met salarisacties. Waarom dit belangrijk is Dit beschrijft wat er in het proces gebeurt en maakt het mogelijk de proceskaart te reconstrueren. Waar vind je dit? Afgeleid van de code ACTION_TYPE in PAY_PAYROLL_ACTIONS of van statuswijzigingen in auditlogs. Voorbeelden Salarisberekening gestartUrenstaat goedgekeurdBankoverschrijving aangemaaktAudituitzondering gemeld | |||
| Bronsysteem SourceSystem | De naam van het systeem waaruit de gebeurtenis afkomstig is. | ||
| Beschrijving Geeft aan welke software of module het datapunt heeft gegenereerd. Voor dit proces is de belangrijkste waarde 'Oracle HCM Cloud Payroll'. In complexe systeemomgevingen kan hiermee onderscheid worden gemaakt tussen de centrale payroll-engine, de module voor tijdregistratie en arbeid of een externe bankkoppeling. Waarom dit belangrijk is Geeft inzicht in de herkomst van de data, vooral wanneer data uit tijdregistratie- of banksystemen wordt gecombineerd. Waar vind je dit? Wordt tijdens de extractie hard gecodeerd of afgeleid van interface-ID's. Voorbeelden Oracle HCM Cloud PayrollOracle Time and LaborExterne bankkoppeling | |||
| Laatste data-update LastDataUpdate | Het timestamp waarop de record voor het laatst is gewijzigd in de brondatabase. | ||
| Beschrijving Geeft aan hoe actueel de data voor de analyse is. Dit is iets anders dan de Event Timestamp: het geeft aan wanneer de rij in de database voor het laatst is bijgewerkt door een ETL-proces of systeemupdate. Je kunt dit gebruiken om te controleren of de data actueel is en problemen met vertraging bij de extractie op te sporen. Waarom dit belangrijk is Zo weten analisten of ze met realtime data werken of met verouderde data. Waar vind je dit? De kolom LAST_UPDATE_DATE, die in vrijwel alle Oracle HCM-tabellen voorkomt. Voorbeelden 2023-10-02T12:00:00Z2023-10-06T01:00:00Z | |||
| Salarisrecord PayrollRecord | Unieke identificatie van een medewerker binnen een specifieke salarisperiode. | ||
| Beschrijving Het salarisrecord is de centrale case-ID voor de process mining-analyse. Het is een combinatie of unieke sleutel van de identificatie van de aanstelling van de medewerker en de identificatie van de salarisperiode. Dit attribuut groepeert alle activiteiten rond de betaling van één medewerker in een specifieke cyclus, van de eerste indiening van de urenstaat tot de uiteindelijke bankoverschrijving en belastingaangifte. Zo kan de analyse onderscheid maken tussen de betaling aan dezelfde medewerker in januari en in februari. Waarom dit belangrijk is Dit is de Case-ID die alle afzonderlijke gebeurtenissen voor de analyse aan één procesinstantie koppelt. Waar vind je dit? Samengesteld op basis van PAY_ASSIGNMENT_ACTIONS of een combinatie van Person Number en Payroll Period Name in Oracle HCM. Voorbeelden EMP1001-2023-M01EMP5992-2023-W42300000018273645US-NY-A123-JAN23 | |||
| Tijdstempel van gebeurtenis EventTimestamp | De exacte datum en tijd waarop de activiteit plaatsvond. | ||
| Beschrijving Legt het exacte moment vast waarop een activiteit plaatsvond. Dit is belangrijk om doorlooptijden te berekenen en bottlenecks op te sporen. Bij geautomatiseerde stappen is dit het tijdstip waarop het systeem de stap uitvoerde. Bij handmatige stappen, zoals goedkeuringen, is het de timestamp van de gebruikersactie in het transactielog. Waarom dit belangrijk is Essentieel om gebeurtenissen chronologisch te ordenen en alle tijdgebonden KPI’s te berekenen. Waar vind je dit? De kolommen CREATION_DATE of ACTION_DATE in relevante transactietabellen, zoals PAY_ACTION_INFORMATION. Voorbeelden 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Afdelingsnaam DepartmentName | De organisatorische eenheid waar de medewerker werkt. | ||
| Beschrijving Geeft aan welke afdeling verantwoordelijk is voor de medewerker bij de payrollrecord. Dit is belangrijk voor het dashboard 'Efficiëntie van urenstaatgoedkeuring'. Door de data per afdeling te bekijken, kunnen analisten zien welke bedrijfseenheden urenstaten steeds te laat goedkeuren en zo de payrollrun vertragen. Waarom dit belangrijk is Maakt oorzaakanalyse mogelijk van vertragingen door goedkeuringen van managers. Waar vind je dit? Afgeleid van de toewijzingsrecord van de medewerker die geldig was tijdens de payrollrun. Voorbeelden Verkoop Noord-AmerikaEngineeringPersoneelszakenLogistiek | |||
| Bruto salarisbedrag GrossPayAmount | Het totale berekende brutoloon voor de periode. | ||
| Beschrijving Geeft de geldwaarde weer van het brutoloon dat tijdens de cyclus is berekend. Dit wordt gebruikt in de analyses 'Nauwkeurigheid van belasting- en berekeningsregels' en 'Integratie van incentives'. Analisten kunnen hiermee hoge betalingen vergelijken met de verwerkingstijd of het aantal fouten. Waarom dit belangrijk is Geeft de process mining-analyse financiële context. Waar vind je dit? De tabel PAY_RUN_RESULT_VALUES, samengevoegd voor het brutoloon. Voorbeelden 5000.002350.5010000.00 | |||
| Is handmatige correctie IsManualCorrection | Geeft aan of voor de activiteit handmatig ingrijpen nodig was. | ||
| Beschrijving Een booleaanse indicator die op true staat bij activiteiten zoals 'Data correction performed' of 'Payroll record corrected'. Deze wordt gebruikt om de KPI's 'Percentage handmatige datacorrecties' en 'Nauwkeurigheid van payroll in één keer goed' te berekenen. Waarom dit belangrijk is Maakt onderscheid tussen volledig geautomatiseerde verwerking en handmatig herstelwerk. Waar vind je dit? Afgeleid van de activiteitsnaam of specifieke actietypen die op aanpassingen wijzen, zoals QuickPay of Balance Adjustment. Voorbeelden truefalse | |||
| Legislative Data Group LegislativeDataGroup | Verdeelt payrolldata op basis van land of regelgeving. | ||
| Beschrijving In Oracle HCM Cloud verdeelt de Legislative Data Group (LDG) payroll- en gerelateerde data. Deze komt meestal overeen met de wetgeving van een land of specifiek gebied. Dit attribuut is belangrijk om de procesanalyse per land te filteren, bijvoorbeeld US Payroll tegenover UK Payroll. Vaak wordt het gekoppeld aan het generieke attribuut Country. Waarom dit belangrijk is Compliance-eisen en processtromen verschillen vaak sterk per rechtsgebied. Waar vind je dit? De tabel PAY_ALL_PAYROLLS_F, gekoppeld aan de definities van Legislative Data Group. Voorbeelden US Legislative Data GroupUK LDGPayroll Frankrijk | |||
| Naam van de payrollperiode PayrollPeriodName | De naam van de periode waarop de payrollrun betrekking heeft. | ||
| Beschrijving Geeft de specifieke cyclus aan, zoals 'Maandelijks januari 2024' of 'Wekelijkse periode 42'. Dit is belangrijk voor de 'Monitor voor naleving van SLA-deadlines'. Zo kun je cases van afzonderlijke medewerkers groeperen per batchrun voor rapportages op totaalniveau. Waarom dit belangrijk is Essentieel voor analyses per batch en het volgen van SLA's. Waar vind je dit? De tabel PAY_TIME_PERIODS of het veld Time Period Name in de payrolldefinitie. Voorbeelden 2023 Maandelijks 102023 Wekelijks 42Bonusrun december 2023 | |||
| Paygroep PayGroup | Logische groepering van medewerkers voor payrollverwerking. | ||
| Beschrijving Geeft de specifieke payrolldefinitie aan waartoe de medewerker behoort, bijvoorbeeld 'Wekelijks productie' of 'Maandelijks kantoor'. Dit attribuut speelt een centrale rol in vrijwel alle dashboards. Je kunt er de prestaties van verschillende payrollcycli en -frequenties mee vergelijken. Waarom dit belangrijk is Het belangrijkste configuratieobject voor de planning van payrollruns. Waar vind je dit? De tabel PAY_ALL_PAYROLLS_F (Payroll Name). Voorbeelden VS tweewekelijksVK maandelijksWekelijks vakbond | |||
| SLA-verwerkingsdeadline SlaProcessingDeadline | De datum en tijd waarop de betaling uiterlijk moet zijn uitgevoerd. | ||
| Beschrijving Legt de contractuele of wettelijke deadline voor de payrollbetaling vast. Dit attribuut wordt vergeleken met het timestamp van 'Betaling uitgevoerd'. Je kunt hiermee de KPI 'Naleving van de SLA-verwerkingsdeadline' berekenen en risicogroepen opsporen. Waarom dit belangrijk is De belangrijkste maatstaf om te bepalen of het proces op tijd is afgerond. Waar vind je dit? Meestal een ingesteld veld (DFF) in de payrolldefinitie, of afgeleid van de Check Date min X dagen. Voorbeelden 2023-10-28T17:00:00Z2023-11-30T17:00:00Z | |||
| Verwerkende gebruiker ProcessingUser | De gebruikers-ID of naam van de persoon die de activiteit uitvoert. | ||
| Beschrijving Legt vast welke payrollspecialist, manager of systeemaccount de activiteit heeft gestart. Dit ondersteunt het dashboard 'Werkverdeling onder payrollspecialisten'. Zo kun je knelpunten in de beschikbare capaciteit en opleidingsbehoeften binnen het payrollteam opsporen. Waarom dit belangrijk is Maakt analyse van de productiviteit en werkverdeling mogelijk. Waar vind je dit? De kolommen CREATED_BY of LAST_UPDATED_BY in transactietabellen. Voorbeelden sysadminj.smithpayroll_batch_userm.doe | |||
| Aantal voorbeeldberekeningen PreviewIterationCount | Hoe vaak de resultaten zijn bekeken voordat ze definitief werden gemaakt. | ||
| Beschrijving Een teller die met één wordt verhoogd telkens wanneer voor dezelfde case de activiteit 'Payrollresultaat bekeken' plaatsvindt. Dit is de directe maatstaf voor het dashboard 'Tracker voor payrollvoorbeeldberekeningen'. De teller laat zien hoeveel herstelwerk of twijfel er aan de goedkeuring voorafging. Waarom dit belangrijk is Meet de efficiëntie van de validatiefase. Waar vind je dit? Berekend tijdens de datatransformatie door specifieke activiteiten per Case-ID te tellen. Voorbeelden 1350 | |||
| Belastingrechtsgebied TaxJurisdiction | De staat, provincie of gemeente waar belastingaangifte wordt gedaan. | ||
| Beschrijving Geeft de belangrijkste belastingautoriteit voor de payrollrecord aan, bijvoorbeeld 'CA' voor Californië of 'NY' voor New York. Dit ondersteunt het dashboard 'Doorlooptijd van belastingverwerking voor compliance'. Zo kun je nagaan of de belastingberekening en aangifte in bepaalde regio's ingewikkelder of trager verlopen. Waarom dit belangrijk is Maakt vergelijking mogelijk op basis van de complexiteit van regelgeving. Waar vind je dit? Afgeleid van de belastingkaart van de medewerker of het adres van de werklocatie. Voorbeelden CA-CaliforniëNY-New YorkTX-TexasFederaal-VS | |||
| Indicator voor wijziging met terugwerkende kracht RetroactiveChangeFlag | Geeft aan of de payrollrun betalingen met terugwerkende kracht bevat. | ||
| Beschrijving Een booleaanse indicator die op true staat als in deze record 'Retropay'-elementen worden verwerkt. Dit helpt langere verwerkingstijden of audituitzonderingen te verklaren in de 'Vergelijking van procespadvarianten'. Wijzigingen met terugwerkende kracht leiden vaak tot complexe herberekeningen over eerdere perioden. Waarom dit belangrijk is Identificeert complexe cases die van nature meer verwerkingstijd vragen. Waar vind je dit? Aanwezigheid van 'Retropay'-elementen in PAY_ELEMENT_ENTRIES. Voorbeelden truefalse | |||
| SLA-status SlaStatus | Categorie voor de naleving van de SLA (gehaald/niet gehaald). | ||
| Beschrijving Afgeleid door het timestamp van 'Betaling uitgevoerd' te vergelijken met de 'SLA-verwerkingsdeadline'. Mogelijke waarden zijn 'Op tijd', 'Risico' en 'Deadline overschreden'. Dit vereenvoudigt de rapportage voor de 'Monitor voor naleving van SLA-deadlines' door cases in prestatiecategorieën in te delen. Waarom dit belangrijk is Zet complexe tijdsvergelijkingen om in categorieën waarop je actie kunt ondernemen. Waar vind je dit? Berekend door het Event Timestamp te vergelijken met de SLA-deadline. Voorbeelden GehaaldDeadline overschredenDeadline bijna overschreden | |||
| Type audituitzondering AuditExceptionType | De categorie fout of waarschuwing die tijdens een audit is gemarkeerd. | ||
| Beschrijving Deelt het specifieke probleem in dat is gevonden tijdens de activiteit 'Audituitzondering gemarkeerd', bijvoorbeeld 'Negatief nettoloon' of 'Ontbrekend belasting-ID'. Dit attribuut ondersteunt het dashboard 'Analyse van audituitzonderingen en correcties' door veelvoorkomende problemen met de datakwaliteit aan te wijzen. Waarom dit belangrijk is Belangrijk voor oorzaakanalyse van herstelwerk. Waar vind je dit? Kolommen met berichten of foutcodes in payrollproceslogboeken of uitzonderingsrapporten. Voorbeelden Negatief nettoloonOntbrekend SSNOngeldige bankgegevensLimiet voor overwerk overschreden | |||
| Type medewerker EmployeeType | Indeling van de medewerker, bijvoorbeeld in loondienst, op uurbasis of als contractant. | ||
| Beschrijving Classificeert de medewerkerrecord. Dit is belangrijk voor het dashboard 'Vertraging bij publicatie van digitale loonstroken', omdat per type medewerker andere verwerkingsregels of urgenties kunnen gelden. Je kunt de analyse hiermee filteren en de procesprestaties van verschillende groepen medewerkers vergelijken. Waarom dit belangrijk is Verschillende typen medewerkers volgen vaak verschillende procesvarianten. Waar vind je dit? De toewijzingscategorie of arbeidsvoorwaarden in PER_ALL_ASSIGNMENTS_M. Voorbeelden Fulltime in loondienstParttime op uurbasisContractantDirectielid | |||
Activiteiten voor payrollverwerking
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Bankoverschrijving aangemaakt | Het aanmaken van het EFT-bestand (Electronic Funds Transfer) of een vergelijkbaar betaalbestand. In deze technische stap wordt het betaalbestand voor de bank gemaakt. | ||
| Waarom dit belangrijk is Meet de doorlooptijd voor het aanmaken van betaalbestanden. Vertragingen kunnen ertoe leiden dat de uiterste verwerkingstijd van de bank wordt gemist. Waar vind je dit? Raadpleeg PAY_PAYROLL_ACTIONS wanneer ACTION_TYPE M (Magnetic Tape), E (EFT) of C (Check Writer) is. Vastleggen Vastgelegd wanneer de EFT- of chequeactie is afgerond Gebeurtenistype explicit | |||
| Betaling uitgevoerd | De definitieve bevestiging dat de betaling is verwerkt. In Oracle komt dit overeen met de afronding van de betaalstroom of de afstemming in Cash Management. | ||
| Waarom dit belangrijk is De belangrijkste timestamp voor SLA-compliance. Hiermee wordt bepaald of medewerkers op tijd zijn betaald. Waar vind je dit? Af te leiden uit de Effective Date van de Bank Transfer-actie, of rechtstreeks uit de afstemmingslogs van Cash Management (CE_STATEMENT_LINES). Vastleggen Vastgelegd via de ingangsdatum van de betaalactie of de afstemmingsgebeurtenis Gebeurtenistype explicit | |||
| Salarisberekening gestart | De start van de belangrijkste salarisrun voor een specifieke salarisdefinitie en periode. Hiermee begint de verwerking van de verzamelde gegevens. | ||
| Waarom dit belangrijk is Dit markeert het begin van de intensieve verwerkingsperiode. Het wordt gebruikt om de totale doorlooptijd van de technische salarisverwerking te berekenen. Waar vind je dit? Raadpleeg de tabel PAY_PAYROLL_ACTIONS wanneer ACTION_TYPE R (Run) of Q (QuickPay) is en ACTION_STATUS als gestart staat vermeld, of leid dit af uit de aanmaakdatum. Vastleggen Vastgelegd wanneer een record wordt toegevoegd aan PAY_PAYROLL_ACTIONS Gebeurtenistype explicit | |||
| Salarisberekening uitgevoerd | De succesvolle afronding van het proces Calculate Payroll, inclusief de berekening van bruto naar netto. Deze gebeurtenis geeft aan dat de inkomsten, inhoudingen en belastingen voor de aanstelling zijn berekend. | ||
| Waarom dit belangrijk is Een belangrijke mijlpaal: de gegevens zijn klaar voor controle. Een lange doorlooptijd kan wijzen op prestatieproblemen met het systeem of complexe fast formulas. Waar vind je dit? Raadpleeg PAY_PAYROLL_REL_ACTIONS in combinatie met PAY_PAYROLL_ACTIONS wanneer ACTION_TYPE R of Q is en ACTION_STATUS verandert in C (Complete). Vastleggen Vastgelegd wanneer de status van de Payroll Run-actie wordt bijgewerkt naar Complete Gebeurtenistype explicit | |||
| Vooruitbetalingen berekend | De uitvoering van het proces Prepayments, dat het nettosalaris verdeelt over de gekozen betaalmethoden van de medewerker (cheque, EFT enzovoort). Hiermee wordt gecontroleerd of de berekende bedragen daadwerkelijk kunnen worden uitbetaald. | ||
| Waarom dit belangrijk is De verbinding tussen berekening en uitbetaling. Problemen in deze stap wijzen meestal op ontbrekende bankgegevens of ongeldige betaalmethoden. Waar vind je dit? Raadpleeg PAY_PAYROLL_ACTIONS wanneer ACTION_TYPE P (Prepayments) is en de status Complete is. Vastleggen Vastgelegd wanneer de Prepayments-actie is afgerond Gebeurtenistype explicit | |||
| Archiefresultaten aangemaakt | De afronding van het proces Archive Periodic Payroll Results. Deze versiesnapshot legt de gegevens vast voor rapportages en het genereren van loonstroken. | ||
| Waarom dit belangrijk is Een technische voorwaarde voor het genereren van loonstroken en wettelijke rapportages. Hiermee wordt bevestigd dat de gegevens definitief zijn. Waar vind je dit? Raadpleeg PAY_PAYROLL_ACTIONS wanneer ACTION_TYPE X (Archive) is en de status Complete is. Vastleggen Vastgelegd wanneer de Archive-actie is afgerond Gebeurtenistype explicit | |||
| Audituitzondering gemeld | Een fout- of waarschuwingsmelding die wordt vastgelegd tijdens de salarisberekening of controle. Hiermee worden specifieke validatiefouten geregistreerd waarvoor iemand moet ingrijpen. | ||
| Waarom dit belangrijk is Essentieel om problemen met de datakwaliteit op te sporen. Veel uitzonderingen leiden tot meer handmatig werk en een groter risico op overschrijding van de SLA. Waar vind je dit? Raadpleeg de tabel PAY_MESSAGE_LINES die is gekoppeld aan de betreffende PAY_PAYROLL_REL_ACTION_ID. In deze tabel staan fouten en waarschuwingen die tijdens salarisruns zijn gegenereerd. Vastleggen Vastgelegd wanneer een record wordt toegevoegd aan PAY_MESSAGE_LINES Gebeurtenistype explicit | |||
| Belastingaangifte afgerond | Het aanmaken van wettelijke belastingbestanden, zoals het Third Party Quarterly Tax File. Hiermee wordt voldaan aan de regelgeving voor de salarisperiode. | ||
| Waarom dit belangrijk is Essentieel voor de KPI voor de verwerkingsduur van belastingaangiften. Problemen in deze stap kunnen leiden tot boetes. Waar vind je dit? Raadpleeg PAY_PAYROLL_ACTIONS voor acties van specifieke legislative data groups die betrekking hebben op belastingrapportages, zoals US Third Party Tax Filing. Vastleggen Vastgelegd wanneer de specifieke belastingrapportagestroom is afgerond Gebeurtenistype explicit | |||
| Incentivegegevens geïmporteerd | Het aanmaken van salariscomponenten voor variabele beloning, zoals bonussen of commissies, via een batch loader of HDL-import. Hiermee worden externe beloningsgegevens in de salarisrun opgenomen. | ||
| Waarom dit belangrijk is Meet hoe snel variabele beloning wordt verwerkt. Late imports leiden vaak tot aanvullende salarisruns of handmatige correcties. Waar vind je dit? Raadpleeg PAY_BATCH_HEADERS om te zien wanneer de import is afgerond, of volg het aanmaken van PAY_ELEMENT_ENTRIES_F met een specifieke verwijzing naar het bronsysteem. Vastleggen Vastgelegd wanneer het batchproces voor salariscomponenten succesvol is afgerond Gebeurtenistype explicit | |||
| Kostentoerekening overgezet | De overdracht van de resultaten van de salarisadministratie naar het grootboek. Hiermee wordt de financiële verwerking van de salariscyclus afgesloten. | ||
| Waarom dit belangrijk is Dit zorgt voor financiële compliance en een correcte boeking van loonkosten. Vertragingen verhinderen dat Finance de boekhouding afsluit. Waar vind je dit? Raadpleeg PAY_PAYROLL_ACTIONS wanneer ACTION_TYPE T (Transfer to GL) is en de status Complete is. Vastleggen Vastgelegd wanneer het proces Transfer to GL is afgerond Gebeurtenistype explicit | |||
| Loonstrook gepubliceerd | Het moment waarop de medewerker de loonstrook kan bekijken in Self Service. Dit gebeurt na de Archiver en mogelijk na een specifiek proces, 'Generate Payslip'. | ||
| Waarom dit belangrijk is Dit heeft invloed op de tevredenheid van medewerkers. Een lange wachttijd tussen betaling en de beschikbaarheid van de loonstrook leidt tot supportverzoeken. Waar vind je dit? Raadpleeg de tabel Documents of Record (HR_DOCUMENTS_OF_RECORD) of de afronding van het proces Generate Payslip in PAY_PAYROLL_ACTIONS. Vastleggen Vastgelegd wanneer het proces voor het genereren van de loonstrook-pdf is afgerond Gebeurtenistype explicit | |||
| QuickPay uitgevoerd | De uitvoering van een salarisrun voor één persoon (QuickPay), meestal om correcties te controleren. Dit dient als benadering van de activiteit Payroll Result Previewed. | ||
| Waarom dit belangrijk is Veel QuickPays per persoon wijzen op een aanpak van vallen en opstaan bij de salarisverwerking, in plaats van een Waar vind je dit? Raadpleeg PAY_PAYROLL_ACTIONS wanneer ACTION_TYPE Q (QuickPay) is. Tel het aantal instanties per salarisperiode en medewerker. Vastleggen Vastgelegd wanneer een QuickPay-actie wordt geregistreerd in PAY_PAYROLL_ACTIONS Gebeurtenistype explicit | |||
| Salarisgegevens gecorrigeerd | Handmatige wijzigingen in salariscomponenten of aanstellingsgegevens na de eerste salarisrun, maar vóór de definitieve verwerking. Deze activiteit staat voor herstelwerk om fouten of uitzonderingen op te lossen. | ||
| Waarom dit belangrijk is Dit wijst op inefficiëntie in het proces en problemen met de datakwaliteit. Minder van deze activiteit is belangrijk om het percentage salarisruns dat in één keer goed gaat te verhogen. Waar vind je dit? Af te leiden door wijzigingen in PAY_ELEMENT_ENTRIES_F op te sporen waarbij Last Update Date tussen de datum van de eerste Payroll Run en de datum van Prepayments valt. Vastleggen Vergelijk de timestamps van wijzigingen in salariscomponenten met de timestamps van salarisruns Gebeurtenistype inferred | |||
| Salarisrun goedgekeurd | De formele goedkeuring van het salarisregister of de processtroom in het Payroll Dashboard. Dit gebeurt meestal nadat de controlerapporten zijn beoordeeld en voordat de bankbestanden worden aangemaakt. | ||
| Waarom dit belangrijk is Dit is de formele goedkeuring door het management. De tijd tussen berekening en goedkeuring is de controleperiode. Waar vind je dit? Raadpleeg PAY_REQ_FLOW_INSTANCES voor statuswijzigingen of de afronding van specifieke taken binnen een vastgelegd Payroll Flow Pattern. Vastleggen Vastgelegd wanneer de status van de Flow Instance verandert in Completed/Approved Gebeurtenistype explicit | |||
| Urenstaat goedgekeurd | De bevestiging dat een manager de ingediende uren heeft gecontroleerd en goedgekeurd. Door deze statuswijziging worden de gegevens overgezet naar de salariscomponenten. | ||
| Waarom dit belangrijk is Essentieel voor het meten van de doorlooptijd tot goedkeuring door de manager. Vertragingen in deze stap zijn een belangrijke oorzaak van correcties met terugwerkende kracht in latere perioden. Waar vind je dit? Raadpleeg de tabel HWM_TM_REC_GRP_DTLS of de weergave HXT_TIMECARDS wanneer de status verandert in APPROVED. Vergelijk de goedkeuringstimestamp met de indieningstimestamp. Vastleggen Vastgelegd wanneer de status in Time and Labor verandert in APPROVED Gebeurtenistype explicit | |||
| Urenstaat ingediend | De eerste gebeurtenis: een medewerker of manager dient uren- en arbeidsgegevens in voor verwerking. In Oracle HCM wordt dit vastgelegd wanneer de status van de urenstaat in de module Time and Labor verandert in Submitted. | ||
| Waarom dit belangrijk is Hier worden de ruwe gegevens ingevoerd in de mogelijke salarisverwerkingsstroom. Vertragingen in deze stap werken door in de rest van het proces en verkorten de tijd die salarisspecialisten hebben om berekeningen te controleren. Waar vind je dit? Raadpleeg de tabel HWM_TM_REC_GRP_DTLS of de weergave HXT_TIMECARDS wanneer de status verandert in SUBMITTED. Gebruik de indieningstimestamp. Vastleggen Vastgelegd wanneer de status in Time and Labor verandert in SUBMITTED Gebeurtenistype explicit | |||
Extractiegidsen
Stappen
Open Data Exchange: Meld je aan bij Oracle HCM Cloud met een gebruiker met de rol 'Human Capital Management Integration Specialist'. Ga naar My Client Groups > Data Exchange > Extract Definitions.
Maak een extract: Klik op het pictogram '+' om een extract te maken. Geef het de naam 'ProcessMind_Payroll_Extract'. Selecteer 'Payroll' als consument en 'HR Archive' als categorie, zodat je toegang hebt tot historische gegevens over payrollacties.
Definieer datagroepen: Maak een Root Data Group op basis van de User Entity
PAY_PAYROLL_REL_UE(Payroll Relationship). Zo koppel je de extractie aan de payrollrelatie van de medewerker. Maak onderliggende datagroepen voorPAY_ACTION_INFORMATION_UE,PAY_ELEMENT_ENTRY_UEenHWM_MEASURE_DAY_V_UE(voor tijd en arbeid).Configureer extractrecords: Definieer binnen de datagroepen records om de hiërarchische data plat te maken. Maak aparte records voor elk activiteitstype, bijvoorbeeld één record dat filtert op 'Time Card'-gebeurtenissen en een ander voor 'Run Results'.
Voeg SQL-logica toe via FastFormula of BIP: Omdat hiërarchische payrollgegevens moeten worden omgezet naar een lineair event log, kun je het beste bij 'Extract Delivery Option' een BI Publisher-rapport aanroepen. Zo kun je de SQL uit het gedeelte 'Query' hieronder als datamodel gebruiken. Dit werkt beter dan filteren via de standaardinterface als je één event log wilt maken.
Maak een BI Publisher-datamodel: Ga naar Tools > Reports and Analytics > Browse Catalog. Maak een nieuw datamodel en plak de SQL-query hieronder. Definieer parameters voor
bind_start_dateenbind_end_date.Koppel het extract aan BIP: Maak op het tabblad 'Delivery' van de Extract Definition een afleveroptie. Selecteer 'PDF' of 'XML' als uitvoertype. ProcessMind gebruikt bij voorkeur CSV, maar je kunt de BIP-uitvoer omzetten. Selecteer het BI Publisher-rapport dat je in de vorige stap hebt gemaakt.
Definieer parameters: Voeg in de Extract Execution Tree parameters toe voor de start- en einddatum. Zo geef je deze waarden dynamisch door aan de BI Publisher-query.
Valideer en verstuur: Valideer de extractdefinitie om fouten op te sporen. Klik op 'Submit Extract' en vul de parameters in, bijvoorbeeld de afgelopen 90 dagen.
Controleer het proces: Ga naar 'View Extract Results'. Wacht tot de status verandert in 'Succeeded'.
Download de uitvoer: Download het gegenereerde XML- of CSV-bestand. Controleer of de vereiste kolommen erin staan, zoals PayrollRecord, ActivityName en EventTimestamp.
Maak het bestand geschikt voor ProcessMind: Zet de XML-uitvoer om naar een platte CSV, met kolomkoppen die overeenkomen met de vereisten voor 'Attributes to include'. Upload het resulterende bestand naar ProcessMind.
Configuratie
- Extractiemodus: Changes Only of Full Extract. Gebruik voor de eerste keer Full Extract. Stel voor dagelijkse updates 'Changes Only' in op basis van Last Update Date.
- Legislative Data Group (LDG): Filter bij voorkeur op LDG als je omgeving meerdere landen ondersteunt. Payrolldefinities verschillen namelijk per wetgeving.
- Datumbereik: Stel
bind_start_dateenbind_end_datezo in dat ze minimaal 3 tot 6 maanden beslaan. Zo kan process mining de volledige doorlooptijden vastleggen. - Batchgrootte: Stel bij grote payrollbestanden (meer dan 10.000 medewerkers) de batchgrootte in de Extract Definition in op 2000 om time-outs te voorkomen.
- Geldigheidsdatums: Voor payrolltabellen gelden datums. De query verwerkt
effective_start_dateeneffective_end_dateexpliciet, zodat de juiste historische versie van een record wordt opgehaald. - Beveiliging: De uitvoerende gebruiker moet beschikken over databeveiligingsprofielen waarmee alle payrollgegevens en afdelingen voor de analyse kunnen worden bekeken.
Voorbeeldquery sql
/* 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 Stappen
- Meld je aan bij Oracle BI Publisher: Open de Oracle Cloud-omgeving en ga naar Tools > Reports and Analytics. Klik op Browse Catalog om BI Publisher te openen.
- Maak een Data Model: Klik linksboven op Nieuw en selecteer Data Model. Hierin staat de SQL-logica voor de extractie.
- Maak een SQL Data Set: Klik op het tabblad Diagram op het pictogram Nieuw bij Data Set en selecteer SQL Query.
- Configureer de databron: Geef de Data Set een naam, bijvoorbeeld
ProcessMind_Payroll_Extract. Stel Databron in opApplicationDB_HCMof op de verbinding met je HCM Application Database. Laat het type op Standard SQL staan. - Voer de query in: Kopieer het volledige SQL-script uit het gedeelte Query hieronder en plak het in het tekstvak SQL Query. Gebruik geen markdown-opmaak.
- Definieer parameters: De query gebruikt bindvariabelen
:p_start_dateen:p_end_date. Maak deze twee parameters van het type Date aan op het tabblad Parameters van het Data Model. Hiermee filter je het extractiebereik, bijvoorbeeld op basis vanppa.EFFECTIVE_DATE. - Controleer de datastructuur: Klik op OK. Ga in de Data Model-editor naar het tabblad Data. Voer voorbeelddata in, bijvoorbeeld
2023-01-01tot2023-03-31, en klik op Weergave. Controleer of de uitvoer rijen bevat metPayrollRecord,ActivityNameenEventTimestamp. - Sla het Data Model op: Sla het model op in een gedeelde map, bijvoorbeeld
/Shared Folders/Custom/ProcessMining. - Maak een rapport voor export: Klik op Create Report en selecteer het Data Model dat je net hebt opgeslagen. Gebruik de Report Wizard om een eenvoudige tabel met alle kolommen te maken. Schakel 'Show Grand Totals' uit.
- Exporteer naar CSV: Open het rapport in Report Viewer. Klik op het menu Acties (tandwielpictogram) > Export > Data > CSV.
- Zet de data om: Open het CSV-bestand. Controleer of de datums de ISO 8601-notatie hebben (
YYYY-MM-DD HH:MM:SS), als dit niet automatisch is gebeurd. Als de SQL correct is geplakt, hoef je de gegevens verder niet aan te passen. - Uploaden: Importeer het CSV-bestand in ProcessMind en koppel de kolommen volgens de vereisten voor de data.
Configuratie
- Databronverbinding: Gebruik
ApplicationDB_HCMof de gelijkwaardige JNDI-databron met leestoegang tot de schema'sPAY_enPER_. - Datumbereik: Een extractieperiode van 3 tot 6 maanden wordt aanbevolen om volledige payrollcycli vast te leggen. Gebruik de parameters
:p_start_dateen:p_end_dateom deze periode dynamisch in te stellen. - Legislative Data Group (LDG): De query haalt standaard alle LDG's op. Als je meerdere landen verwerkt, kun je een filter toevoegen:
AND ppa.LEGISLATIVE_DATA_GROUP_ID = [Your_LDG_ID]. Zo splits je de data per land. - Prestaties: De query gebruikt tabellen met grote hoeveelheden data (
PAY_RUN_RESULTS,PAY_ASSIGNMENT_ACTIONS). Houd het datumbereik beperkt, bijvoorbeeld tot maximaal één jaar, om time-outs in BI Publisher te voorkomen. - Beveiliging: De gebruiker die het rapport uitvoert, heeft Data Access Set-rechten nodig voor de betreffende payrolldefinities.
Voorbeeldquery 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 Klaar om te beginnen?
Gebruik deze datatemplate om je payrollprocessen te verbeteren en inzicht te krijgen in je cycli. Zet vandaag de eerste stap naar efficiëntere verwerking en nauwkeurige rapportages.
Optimaliseer vandaag de payrollverwerking in Oracle HCM
Verkort de payrolldoorlooptijd met 30% en verwijder bottlenecks.
Geen creditcard nodig. Binnen enkele minuten ingesteld.