Il template dei dati per l’elaborazione delle paghe
Il template dei dati per l’elaborazione delle paghe
- Campi dati ottimizzati per l’analisi delle paghe
- Monitoraggio completo delle attività per mappare il ciclo di vita
- Istruzioni dettagliate per l’estrazione dei dati delle paghe da Oracle HCM Cloud
Attributi dell’elaborazione delle paghe
| Nome | Descrizione | ||
|---|---|---|---|
| Data e ora dell’evento EventTimestamp | Data e ora esatte in cui si è verificata l’attività. | ||
| Descrizione Registra il momento preciso in cui si è svolta un’attività. È fondamentale per calcolare le durate e i tempi di attraversamento e individuare i colli di bottiglia. Per i passaggi automatizzati, corrisponde all’ora di esecuzione del sistema. Per quelli manuali, come le approvazioni, corrisponde alla data e all’ora dell’azione dell’utente registrata nel log delle transazioni. Perché è importante È essenziale per ordinare gli eventi cronologicamente e calcolare tutti i KPI basati sul tempo. Dove reperirli Colonne CREATION_DATE o ACTION_DATE nelle tabelle delle transazioni pertinenti, come PAY_ACTION_INFORMATION. Esempi 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Nome dell’attività ActivityName | Passaggio o evento specifico che si verifica durante il ciclo retributivo. | ||
| Descrizione Questo attributo registra il nome dell’evento che si verifica nel processo retributivo. Alcuni esempi sono «Foglio presenze inviato», «Calcolo delle retribuzioni avviato» e «Pagamento eseguito». È la dimensione principale per l’individuazione dei processi e l’analisi delle varianti. In Oracle HCM Cloud, spesso viene ricavato dal tipo di azione o dallo stato dell’azione nelle tabelle delle azioni retributive. Perché è importante Definisce il «che cosa» del processo e consente di ricostruirne la mappa. Dove reperirli Ricavato dal codice ACTION_TYPE in PAY_PAYROLL_ACTIONS o dalle modifiche di stato nei log di audit. Esempi Calcolo delle retribuzioni avviatoFoglio presenze approvatoFile per il bonifico bancario generatoEccezione di audit segnalata | |||
| Record retributivo PayrollRecord | Identificativo univoco che rappresenta un dipendente in uno specifico periodo retributivo. | ||
| Descrizione Il record retributivo funge da identificativo centrale del caso per l’analisi di Process Mining. È una concatenazione o una chiave univoca che combina l’identificativo dell’incarico del dipendente e quello del periodo retributivo. Questo attributo raggruppa tutte le attività relative al pagamento di un singolo dipendente per uno specifico ciclo, dall’invio iniziale del foglio presenze fino al bonifico bancario e alla dichiarazione fiscale. Consente di distinguere i pagamenti dello stesso dipendente effettuati a gennaio da quelli effettuati a febbraio. Perché è importante Funge da ID del caso e riunisce eventi distinti in un’unica istanza di processo da analizzare. Dove reperirli Ricavato da PAY_ASSIGNMENT_ACTIONS oppure dalla combinazione del numero della persona e del nome del periodo retributivo in Oracle HCM. Esempi EMP1001-2023-M01EMP5992-2023-W42300000018273645US-NY-A123-JAN23 | |||
| Sistema di origine SourceSystem | Nome del sistema in cui è stato generato l’evento. | ||
| Descrizione Identifica il software o il modulo che ha generato il dato. Per questo processo, il valore principale è 'Oracle HCM Cloud Payroll'. In architetture complesse, tuttavia, può distinguere il motore centrale delle paghe, il modulo per la gestione di presenze e attività lavorative oppure un’interfaccia bancaria esterna. Perché è importante Fornisce informazioni sulla provenienza dei dati, soprattutto quando si integrano dati provenienti da sistemi di rilevazione delle presenze o da sottosistemi bancari. Dove reperirli Impostato durante l’estrazione o ricavato dagli ID delle interfacce. Esempi Oracle HCM Cloud PayrollOracle Time and LaborInterfaccia bancaria esterna | |||
| Ultimo aggiornamento dei dati LastDataUpdate | Data e ora dell’ultima modifica del record nel database di origine. | ||
| Descrizione Indica quanto sono aggiornati i dati utilizzati per l’analisi. È un dato distinto dal timestamp dell’evento: indica quando la riga del database è stata modificata per l’ultima volta da un processo ETL o da un aggiornamento del sistema. Serve a verificare l’attualità dei dati e a individuare problemi di latenza nell’estrazione. Perché è importante Permette agli analisti di sapere se stanno consultando dati aggiornati in tempo reale oppure obsoleti. Dove reperirli Colonna LAST_UPDATE_DATE, presente in quasi tutte le tabelle Oracle HCM. Esempi 2023-10-02T12:00:00Z2023-10-06T01:00:00Z | |||
| È una correzione manuale IsManualCorrection | Indicatore che segnala se l’attività ha richiesto un intervento manuale. | ||
| Descrizione Indicatore booleano impostato su true per attività come 'Correzione dei dati eseguita' o 'Record delle paghe corretto'. Viene utilizzato per calcolare i KPI 'Tasso di correzione manuale dei dati' e 'Tasso di precisione delle paghe al primo tentativo'. Perché è importante Distingue l’elaborazione automatica senza interventi dalla rilavorazione manuale. Dove reperirli Ricavato dal nome dell’attività o da specifici tipi di azione che indicano rettifiche (ad esempio, QuickPay o rettifica del saldo). Esempi truefalse | |||
| Gruppo di dati legislativi LegislativeDataGroup | Suddivide i dati delle paghe in base al Paese o al contesto normativo. | ||
| Descrizione In Oracle HCM Cloud, il Legislative Data Group (LDG) suddivide i dati delle paghe e quelli correlati. In genere corrisponde a un Paese o alla normativa di un territorio specifico. Questo attributo è essenziale per filtrare l’analisi del processo per Paese (ad esempio, paghe USA o paghe Regno Unito) e spesso viene associato all’attributo generico Paese. Perché è importante Le regole di conformità e i flussi di processo possono variare notevolmente da una giurisdizione all’altra. Dove reperirli Tabella PAY_ALL_PAYROLLS_F unita alle definizioni dei Legislative Data Group. Esempi Gruppo di dati legislativi USALDG Regno UnitoPaghe Francia | |||
| Gruppo di pagamento PayGroup | Raggruppamento logico dei dipendenti ai fini dell’elaborazione delle paghe. | ||
| Descrizione Indica la definizione delle paghe a cui appartiene il dipendente (ad esempio, 'Settimanale produzione' o 'Mensile aziendale'). Questo attributo è centrale per quasi tutte le Dashboard, perché consente di confrontare le prestazioni tra cicli e frequenze di pagamento differenti. Perché è importante È l’oggetto di configurazione principale che determina la pianificazione delle paghe. Dove reperirli Tabella PAY_ALL_PAYROLLS_F (Payroll Name). Esempi USA due volte al meseRegno Unito mensileSindacato settimanale | |||
| Importo lordo della retribuzione GrossPayAmount | Importo lordo totale calcolato per il periodo. | ||
| Descrizione Rappresenta l’importo lordo calcolato durante il ciclo. Viene utilizzato nelle analisi 'Precisione del calcolo di imposte e benefit' e 'Integrazione degli incentivi'. Consente agli analisti di mettere in relazione i pagamenti di importo elevato con i tempi di elaborazione o i tassi di errore. Perché è importante Fornisce un contesto finanziario all’analisi di Process Mining. Dove reperirli Tabella PAY_RUN_RESULT_VALUES, aggregata per il saldo Gross Pay. Esempi 5000.002350.5010000.00 | |||
| Nome del periodo di paga PayrollPeriodName | Nome specifico dell’intervallo di tempo relativo all’elaborazione delle paghe. | ||
| Descrizione Identifica il ciclo specifico, ad esempio 'Mensile gennaio 2024' o 'Periodo settimanale 42'. È essenziale per il 'Monitoraggio del rispetto delle scadenze SLA'. Consente di raggruppare i singoli casi dei dipendenti nei rispettivi cicli di elaborazione e di produrre report aggregati. Perché è importante È fondamentale per l’analisi a livello di gruppo e il monitoraggio degli SLA. Dove reperirli Tabella PAY_TIME_PERIODS o campo Time Period Name nella definizione delle paghe. Esempi Mensile 2023 10Settimanale 2023 42Elaborazione bonus dicembre 2023 | |||
| Nome del reparto DepartmentName | Unità organizzativa in cui lavora il dipendente. | ||
| Descrizione Identifica il reparto responsabile del dipendente associato al record delle paghe. È fondamentale per la Dashboard 'Efficienza dell’approvazione dei fogli presenze'. Suddividendo i dati per reparto, gli analisti possono individuare le unità aziendali che approvano sistematicamente in ritardo i fogli presenze, rallentando l’elaborazione complessiva delle paghe. Perché è importante Consente di individuare le cause profonde dei ritardi legati alle approvazioni dei responsabili. Dove reperirli Ricavato dal record di assegnazione del dipendente valido al momento dell’elaborazione delle paghe. Esempi Vendite Nord AmericaIngegneriaRisorse umaneLogistica | |||
| Scadenza di elaborazione SLA SlaProcessingDeadline | Data e ora entro cui deve essere eseguito il pagamento. | ||
| Descrizione Registra la scadenza contrattuale o legale per l’erogazione delle paghe. Questo attributo viene confrontato con il timestamp 'Pagamento eseguito'. Serve a calcolare il KPI 'Rispetto della scadenza di elaborazione SLA' e a individuare i gruppi di pagamento a rischio. Perché è importante È il principale valore di riferimento per stabilire se il processo ha rispettato i tempi previsti. Dove reperirli Di solito è un campo configurato (DFF) nella definizione delle paghe oppure viene ricavato sottraendo X giorni alla data dell’assegno. Esempi 2023-10-28T17:00:00Z2023-11-30T17:00:00Z | |||
| Utente che esegue l’elaborazione ProcessingUser | ID utente o nome della persona che svolge l’attività. | ||
| Descrizione Registra l’identità dello specialista paghe, del responsabile o dell’account di sistema che ha avviato l’attività. È utile per la Dashboard 'Distribuzione del carico di lavoro degli specialisti paghe'. Aiuta a individuare i colli di bottiglia legati alle risorse e le esigenze di formazione del team paghe. Perché è importante Consente di analizzare la produttività delle risorse e di bilanciare i carichi di lavoro. Dove reperirli Colonne CREATED_BY o LAST_UPDATED_BY nelle tabelle delle transazioni. Esempi sysadminj.smithpayroll_batch_userm.doe | |||
| Giurisdizione fiscale TaxJurisdiction | Stato, provincia o località specifici ai fini della dichiarazione fiscale. | ||
| Descrizione Indica l’autorità fiscale principale associata al record delle paghe (ad esempio, 'CA' per la California, 'NY' per New York). È utile per la Dashboard 'Durata dell’elaborazione della conformità fiscale'. Aiuta a individuare le aree in cui il calcolo e la dichiarazione delle imposte sono più complessi o richiedono più tempo. Perché è importante Consente di confrontare le prestazioni in base alla complessità normativa. Dove reperirli Ricavato dalla scheda fiscale del dipendente o dagli indirizzi della sede di lavoro. Esempi CA-CaliforniaNY-New YorkTX-TexasFederale-USA | |||
| Indicatore di modifica retroattiva RetroactiveChangeFlag | Indica se l’elaborazione delle paghe include pagamenti retroattivi. | ||
| Descrizione Indicatore booleano impostato su true se nel record vengono elaborati elementi 'Retropay'. Aiuta a spiegare tempi di elaborazione più lunghi o eccezioni di audit nel 'Confronto delle varianti del percorso di processo'. Le modifiche retroattive spesso comportano ricalcoli complessi che interessano periodi precedenti. Perché è importante Individua i casi complessi che richiedono naturalmente più tempo per essere elaborati. Dove reperirli Presenza di voci dell’elemento 'Retropay' in PAY_ELEMENT_ENTRIES. Esempi truefalse | |||
| Numero di iterazioni di anteprima PreviewIterationCount | Numero di anteprime dei risultati prima della finalizzazione. | ||
| Descrizione Contatore che aumenta ogni volta che si verifica l’attività 'Anteprima dei risultati delle paghe' per lo stesso caso. È la misura diretta per la Dashboard 'Monitoraggio delle iterazioni di anteprima delle paghe' e indica l’entità delle rilavorazioni o delle esitazioni prima dell’approvazione. Perché è importante Quantifica l’efficienza della fase di convalida. Dove reperirli Calcolato durante la trasformazione dei dati contando le occorrenze di attività specifiche per ID del caso. Esempi 1350 | |||
| Stato SLA SlaStatus | Stato categoriale del rispetto dello SLA (rispettato/non rispettato). | ||
| Descrizione Ricavato confrontando il timestamp 'Pagamento eseguito' con la 'Scadenza di elaborazione SLA'. I valori possono includere 'In orario', 'A rischio' o 'Scaduto'. Semplifica la reportistica per il 'Monitoraggio del rispetto delle scadenze SLA', raggruppando i casi in categorie di prestazioni. Perché è importante Trasforma confronti temporali complessi in categorie utili per decidere come intervenire. Dove reperirli Logica di calcolo che confronta il timestamp dell’evento con la scadenza SLA. Esempi RispettatoScadutoIn prossimità della scadenza | |||
| Tipo di dipendente EmployeeType | Classificazione del dipendente (ad esempio, retribuzione fissa, retribuzione oraria, collaboratore esterno). | ||
| Descrizione Classifica il record del dipendente. È fondamentale per la Dashboard 'Ritardo nella pubblicazione dei cedolini digitali', poiché i diversi tipi di dipendente possono essere soggetti a regole di elaborazione o livelli di urgenza differenti. Consente di filtrare l’analisi e confrontare le prestazioni del processo tra diversi segmenti della forza lavoro. Perché è importante I diversi tipi di dipendente seguono spesso varianti di processo differenti. Dove reperirli Categoria di assegnazione o condizioni di impiego in PER_ALL_ASSIGNMENTS_M. Esempi Retribuzione fissa a tempo pienoRetribuzione oraria a tempo parzialeCollaboratore esternoDirigente | |||
| Tipo di eccezione di audit AuditExceptionType | Categoria dell’errore o dell’avviso rilevato durante l’audit. | ||
| Descrizione Classifica il problema specifico rilevato durante l’attività 'Eccezione di audit segnalata' (ad esempio, 'Retribuzione netta negativa' o 'Codice fiscale mancante'). Questo attributo supporta la Dashboard 'Analisi delle eccezioni di audit e delle correzioni', aiutando a individuare i problemi più comuni relativi alla qualità dei dati. Perché è importante È fondamentale per individuare le cause profonde dei cicli di rilavorazione. Dove reperirli Colonne Message o Error Code nei log del processo paghe o nei report delle eccezioni. Esempi Retribuzione netta negativaSSN mancanteCoordinate bancarie non valideLimite di straordinario superato | |||
Attività di elaborazione delle paghe
| Attività | Descrizione | ||
|---|---|---|---|
| Calcolo delle retribuzioni avviato | Avvio del processo principale di elaborazione delle retribuzioni per una specifica definizione e un determinato periodo retributivo. Segna il passaggio dalla raccolta dei dati alla loro elaborazione. | ||
| Perché è importante Segna l’inizio della fase di elaborazione intensiva. Viene utilizzato per calcolare il tempo di ciclo complessivo dell’elaborazione tecnica delle retribuzioni. Dove reperirli Interrogare la tabella PAY_PAYROLL_ACTIONS, dove ACTION_TYPE è R (Run) o Q (QuickPay) e ACTION_STATUS risulta avviato, oppure dedurlo dalla data di creazione. Acquisizione Registrato all’inserimento di un record in PAY_PAYROLL_ACTIONS Tipo di evento explicit | |||
| Calcolo delle retribuzioni eseguito | Completamento corretto del processo Calculate Payroll, compresi i calcoli dal lordo al netto. Questo evento indica che sono stati calcolati compensi, trattenute e imposte per l’incarico. | ||
| Perché è importante Una tappa fondamentale che indica che i dati sono pronti per la convalida. Una durata elevata può segnalare problemi di prestazioni del sistema o formule rapide complesse. Dove reperirli Interrogare PAY_PAYROLL_REL_ACTIONS collegandola a PAY_PAYROLL_ACTIONS, dove ACTION_TYPE è R o Q e ACTION_STATUS passa a C (Complete). Acquisizione Registrato quando lo stato dell’azione Payroll Run passa a Complete Tipo di evento explicit | |||
| File per il bonifico bancario generato | Generazione del file EFT (Electronic Funds Transfer) o di un altro file di pagamento. È il passaggio tecnico che crea il file di istruzioni per la banca. | ||
| Perché è importante Misura il tempo di ciclo di generazione del file di pagamento. I ritardi in questa fase possono far superare gli orari limite stabiliti dalla banca. Dove reperirli Interrogare PAY_PAYROLL_ACTIONS dove ACTION_TYPE è M (Magnetic Tape), E (EFT) o C (Check Writer). Acquisizione Registrato al completamento dell’azione EFT/Check Tipo di evento explicit | |||
| Pagamento eseguito | Conferma finale dell’avvenuta elaborazione del pagamento. In Oracle, corrisponde al completamento del flusso di pagamento o della riconciliazione in Cash Management. | ||
| Perché è importante La data e l’ora di riferimento per il rispetto degli SLA. Vengono utilizzate per determinare se i dipendenti sono stati pagati puntualmente. Dove reperirli Può essere dedotto dalla data di efficacia dell’azione Bank Transfer oppure rilevato esplicitamente dai log di riconciliazione di Cash Management (CE_STATEMENT_LINES). Acquisizione Registrato tramite la data di efficacia dell’azione di pagamento o l’evento di riconciliazione Tipo di evento explicit | |||
| Prepagamenti calcolati | Esecuzione del processo Prepayments, che distribuisce la retribuzione netta secondo i metodi di pagamento scelti dal dipendente (assegno, EFT e così via). Consente di verificare che gli importi calcolati possano essere effettivamente pagati. | ||
| Perché è importante Il collegamento tra calcolo ed erogazione. Gli errori in questa fase indicano in genere coordinate bancarie mancanti o metodi di pagamento non validi. Dove reperirli Interrogare PAY_PAYROLL_ACTIONS dove ACTION_TYPE è P (Prepayments) e lo stato è Complete. Acquisizione Registrato al completamento dell’azione Prepayments Tipo di evento explicit | |||
| Cedolino pubblicato | Momento in cui il cedolino diventa visibile al dipendente nell’area Self Service. Avviene dopo l’Archiver ed eventualmente dopo uno specifico processo Generate Payslip. | ||
| Perché è importante Incide sulla soddisfazione dei dipendenti. Un intervallo prolungato tra il pagamento e la disponibilità del cedolino genera richieste di assistenza. Dove reperirli Interrogare la tabella Documents of Record (HR_DOCUMENTS_OF_RECORD) oppure verificare il completamento del processo Generate Payslip in PAY_PAYROLL_ACTIONS. Acquisizione Registrato al completamento del processo di generazione del PDF del cedolino Tipo di evento explicit | |||
| Contabilizzazione trasferita | Trasferimento dei risultati della contabilizzazione delle retribuzioni alla contabilità generale. Rappresenta la chiusura contabile del ciclo retributivo. | ||
| Perché è importante Garantisce la conformità finanziaria e la corretta registrazione dei costi del lavoro. I ritardi impediscono all’ufficio Finanza di chiudere i conti. Dove reperirli Interrogare PAY_PAYROLL_ACTIONS dove ACTION_TYPE è T (Transfer to GL) e lo stato è Complete. Acquisizione Registrato al completamento del processo Transfer to GL Tipo di evento explicit | |||
| Dati sugli incentivi importati | Creazione di voci degli elementi retributivi per compensi variabili, come bonus o commissioni, tramite caricamento in batch o importazione HDL. Rappresenta l’integrazione nel ciclo retributivo dei dati sulle retribuzioni variabili provenienti da fonti esterne. | ||
| Perché è importante Monitora la velocità di integrazione dei compensi variabili. Le importazioni tardive spesso richiedono cicli retributivi supplementari o correzioni manuali. Dove reperirli Interrogare PAY_BATCH_HEADERS per verificare il completamento dell’importazione oppure monitorare la creazione di PAY_ELEMENT_ENTRIES_F con un riferimento specifico al sistema di origine. Acquisizione Registrato al completamento corretto del processo di inserimento in batch delle voci degli elementi retributivi Tipo di evento explicit | |||
| Dichiarazione fiscale completata | Generazione dei file fiscali previsti dalla legge, ad esempio il Third Party Quarterly Tax File. Garantisce la conformità normativa per il periodo retributivo. | ||
| Perché è importante È fondamentale per il KPI sulla durata dell’elaborazione fiscale conforme. Un errore in questa fase comporta il rischio di sanzioni. Dove reperirli Interrogare PAY_PAYROLL_ACTIONS per individuare le azioni dei gruppi di dati legislativi relative alla rendicontazione fiscale, ad esempio US Third Party Tax Filing. Acquisizione Registrato al completamento del flusso specifico di rendicontazione fiscale Tipo di evento explicit | |||
| Eccezione di audit segnalata | Registrazione di un messaggio di errore o avviso durante il calcolo o la convalida delle retribuzioni. Rileva specifici errori di convalida che richiedono l’intervento di una persona. | ||
| Perché è importante È essenziale per individuare i problemi di qualità dei dati. Un numero elevato di eccezioni aumenta il lavoro manuale e il rischio di non rispettare gli SLA. Dove reperirli Interrogare la tabella PAY_MESSAGE_LINES collegata allo specifico PAY_PAYROLL_REL_ACTION_ID. La tabella contiene gli errori e gli avvisi generati durante le elaborazioni. Acquisizione Registrato quando viene inserito un record in PAY_MESSAGE_LINES Tipo di evento explicit | |||
| Elaborazione delle retribuzioni approvata | Approvazione formale del registro o del flusso retributivo nella Dashboard Payroll. In genere avviene dopo la revisione dei report di convalida e prima della generazione dei file bancari. | ||
| Perché è importante Rappresenta l’approvazione formale da parte della direzione. Il tempo che intercorre tra il calcolo e l’approvazione corrisponde alla finestra di verifica. Dove reperirli Interrogare PAY_REQ_FLOW_INSTANCES per rilevare le modifiche di stato o il completamento di attività specifiche all’interno di un Payroll Flow Pattern definito. Acquisizione Registrato quando lo stato dell’istanza del flusso passa a Completed/Approved Tipo di evento explicit | |||
| Foglio presenze approvato | Conferma che i dati sulle ore inviati sono stati verificati e autorizzati da un responsabile. Questa modifica di stato avvia il trasferimento dei dati nelle voci degli elementi retributivi. | ||
| Perché è importante È fondamentale per misurare il tempo di attraversamento dell’approvazione del responsabile. I ritardi in questa fase sono una delle cause principali degli adeguamenti retroattivi delle retribuzioni nei periodi successivi. Dove reperirli Interrogare la tabella HWM_TM_REC_GRP_DTLS o la vista HXT_TIMECARDS, dove lo stato passa a APPROVED. Confrontare la data e l’ora di approvazione con quelle di invio. Acquisizione Registrato quando lo stato passa a APPROVED in Time and Labor Tipo di evento explicit | |||
| Foglio presenze inviato | Evento iniziale in cui un dipendente o un responsabile invia i dati relativi alle ore e al lavoro per l’elaborazione. In Oracle HCM, viene registrato quando lo stato del foglio presenze passa a Submitted nel modulo Time and Labor. | ||
| Perché è importante Segna l’inserimento dei dati grezzi nel flusso di elaborazione delle retribuzioni. Un ritardo in questa fase si ripercuote su quelle successive e riduce il tempo a disposizione degli specialisti per convalidare i calcoli. Dove reperirli Interrogare la tabella HWM_TM_REC_GRP_DTLS o la vista HXT_TIMECARDS, dove lo stato passa a SUBMITTED. Utilizzare la data e l’ora di invio. Acquisizione Registrato quando lo stato passa a SUBMITTED in Time and Labor Tipo di evento explicit | |||
| QuickPay eseguito | Esecuzione di un’elaborazione retributiva per una singola persona (QuickPay), generalmente utilizzata per verificare le correzioni. Funge da indicatore dell’attività di anteprima dei risultati retributivi. | ||
| Perché è importante Un numero elevato di QuickPay per persona indica un approccio per tentativi ed errori all’elaborazione delle retribuzioni, anziché un Dove reperirli Interrogare PAY_PAYROLL_ACTIONS dove ACTION_TYPE è Q (QuickPay). Contare le occorrenze per dipendente e periodo retributivo. Acquisizione Registrato quando un’azione QuickPay viene registrata in PAY_PAYROLL_ACTIONS Tipo di evento explicit | |||
| Record retributivo corretto | Aggiornamenti manuali applicati alle voci degli elementi retributivi o ai dati dell’incarico dopo la prima elaborazione delle retribuzioni e prima della finalizzazione. Questa attività rappresenta la rilavorazione necessaria per correggere errori o eccezioni. | ||
| Perché è importante Indica inefficienze del processo e problemi di qualità dei dati. Ridurre questa attività è fondamentale per migliorare il tasso di precisione delle retribuzioni al primo tentativo. Dove reperirli Dedotto individuando gli aggiornamenti a PAY_ELEMENT_ENTRIES_F in cui Last Update Date è compresa tra la data della prima elaborazione delle retribuzioni e quella dei prepagamenti. Acquisizione Confrontare le date e gli orari di aggiornamento delle voci degli elementi retributivi con quelli delle elaborazioni delle retribuzioni Tipo di evento inferred | |||
| Risultati archiviati generati | Completamento del processo Archive Periodic Payroll Results. Questa istantanea blocca di fatto i dati per la creazione dei report e dei cedolini. | ||
| Perché è importante Prerequisito tecnico per generare i cedolini e i report previsti dalla legge. Conferma che i dati sono stati finalizzati. Dove reperirli Interrogare PAY_PAYROLL_ACTIONS dove ACTION_TYPE è X (Archive) e lo stato è Complete. Acquisizione Registrato al completamento dell’azione Archive Tipo di evento explicit | |||
Guide all’estrazione
Passaggi
Accedere a Data Exchange: Acceda a Oracle HCM Cloud con un utente che dispone del ruolo 'Human Capital Management Integration Specialist'. Vada in My Client Groups > Data Exchange > Extract Definitions.
Creare una nuova estrazione: Faccia clic sull’icona '+' per creare un’estrazione. La denomini 'ProcessMind_Payroll_Extract'. Selezioni 'Payroll' come consumer e 'HR Archive' come categoria, per accedere ai dati storici delle azioni relative alle paghe.
Definire i gruppi di dati: Crei un Root Data Group basato sull’entità utente
PAY_PAYROLL_REL_UE(Payroll Relationship). In questo modo, l’estrazione sarà collegata al rapporto di lavoro del dipendente ai fini delle paghe. Crei gruppi di dati secondari perPAY_ACTION_INFORMATION_UE,PAY_ELEMENT_ENTRY_UEeHWM_MEASURE_DAY_V_UE(per orario e manodopera).Configurare i record dell’estrazione: All’interno dei gruppi di dati, definisca i record necessari per appiattire i dati gerarchici. Dovrà creare record specifici per ogni tipo di attività, ad esempio un record che filtra gli eventi 'Time Card' e un altro per 'Run Results'.
Implementare la logica SQL con FastFormula o BIP: Data la complessità della trasformazione dei dati gerarchici delle paghe in un Event Log lineare, l’approccio più affidabile consiste nell’utilizzare 'Extract Delivery Option' per richiamare un report BI Publisher. In questo modo potrà utilizzare come Data Model la query SQL riportata nella sezione 'Query' qui sotto. Questa soluzione è preferibile ai filtri dell’interfaccia nativa per creare un Event Log unificato.
Creare un Data Model BI Publisher: Vada in Tools > Reports and Analytics > Browse Catalog. Crei un nuovo Data Model e incolli la query SQL riportata qui sotto. Definisca i parametri per
bind_start_dateebind_end_date.Collegare l’estrazione a BIP: Nella scheda 'Delivery' della definizione dell’estrazione, crei un’opzione di consegna. Selezioni 'PDF' o 'XML' come formato di output (ProcessMind preferisce CSV, ma potrà convertire l’output BIP). Selezioni il report BI Publisher creato nel passaggio precedente.
Definire i parametri: Nell’Extract Execution Tree, aggiunga i parametri Start Date ed End Date da passare dinamicamente alla query BI Publisher.
Convalidare e inviare: Convalidi la definizione dell’estrazione per verificare che non vi siano errori. Faccia clic su 'Submit Extract' e inserisca i parametri, ad esempio gli ultimi 90 giorni.
Monitorare il processo: Vada in 'View Extract Results' e attenda che lo stato diventi 'Succeeded'.
Scaricare l’output: Scarichi il file XML/CSV generato e lo apra per verificare che la struttura includa le colonne richieste, come PayrollRecord, ActivityName ed EventTimestamp.
Preparare i dati per ProcessMind: Se l’output è in formato XML, lo converta in un file CSV semplice, verificando che le intestazioni corrispondano ai requisiti 'Attributes to include'. Carichi quindi il file risultante in ProcessMind.
Configurazione
- Modalità di estrazione: Changes Only o Full Extract. Per il caricamento iniziale, utilizzi Full Extract. Per gli aggiornamenti giornalieri, configuri 'Changes Only' in base a Last Update Date.
- Legislative Data Group (LDG): Se l’istanza supporta più paesi, è vivamente consigliato filtrare per LDG, poiché le definizioni delle paghe variano in base alla legislazione.
- Intervallo di date: Imposti
bind_start_dateebind_end_datein modo da coprire almeno 3-6 mesi, così che il Process Mining possa rilevare i tempi di ciclo completi. - Dimensione dei blocchi: Per volumi elevati di paghe (oltre 10.000 dipendenti), imposti la dimensione dei blocchi a 2000 nella definizione dell’estrazione, per evitare errori di timeout.
- Date di validità: Le tabelle delle paghe sono valide per intervalli di date. La logica della query gestisce esplicitamente
effective_start_dateeeffective_end_dateper recuperare la versione storica corretta del record. - Sicurezza: L’utente che esegue l’estrazione deve disporre di profili di sicurezza dei dati che consentano di visualizzare tutte le paghe e i reparti inclusi nell’analisi.
Query di esempio 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 Passaggi
- Accedere a Oracle BI Publisher: Acceda all’ambiente Oracle Cloud e selezioni Tools > Reports and Analytics. Faccia clic su Browse Catalog per aprire l’interfaccia BI Publisher.
- Creare un Data Model: Faccia clic su New (in alto a sinistra) e selezioni Data Model. Questo è il contenitore della logica di estrazione SQL.
- Creare un set di dati SQL: Nella scheda Diagram, faccia clic sull’icona New Data Set e selezioni SQL Query.
- Configurare l’origine dei dati: Assegni un nome al set di dati, ad esempio
ProcessMind_Payroll_Extract. Imposti Data Source suApplicationDB_HCM(o sulla connessione al database applicativo HCM specifica). Lasci il tipo impostato su Standard SQL. - Inserire la query: Copi lo script SQL completo riportato nella sezione Query qui sotto e lo incolli nella casella di testo SQL Query. Verifichi di non includere formattazione Markdown.
- Definire i parametri: La query utilizza le variabili di associazione
:p_start_datee:p_end_date. Nella scheda Parameters del Data Model, crei questi due parametri di tipo Date per filtrare l’intervallo di estrazione, ad esempio in base appa.EFFECTIVE_DATE. - Convalidare la struttura dei dati: Faccia clic su OK. Passi alla scheda Dati nell’editor del Data Model. Inserisca date di esempio, ad esempio dal
2023-01-01al2023-03-31, e faccia clic su View. Verifichi che l’output contenga righe conPayrollRecord,ActivityNameedEventTimestamp. - Salvare il Data Model: Salvi il modello in una cartella condivisa, ad esempio
/Shared Folders/Custom/ProcessMining. - Creare un report per l’esportazione: Faccia clic su Create Report e selezioni il Data Model appena salvato. Utilizzi Report Wizard per creare una semplice tabella contenente tutte le colonne. Deselezioni 'Show Grand Totals'.
- Esportare in CSV: Visualizzi il report nel Report Viewer. Faccia clic sul menu Azioni (icona a forma di ingranaggio) > Export > Dati > CSV.
- Trasformare i dati: Apra il file CSV. Se i formati non sono stati applicati automaticamente, verifichi che le date siano nel formato ISO 8601 (
YYYY-MM-DD HH:MM:SS). Se la query SQL è stata incollata correttamente, non dovrebbe essere necessario riorganizzare i dati. - Caricare il file: Importi il file CSV risultante in ProcessMind e associ le colonne secondo quanto indicato nei requisiti dei dati.
Configurazione
- Connessione all’origine dei dati: Deve utilizzare
ApplicationDB_HCMo un’origine dati JNDI equivalente con accesso in lettura agli schemiPAY_ePER_. - Intervallo di date: Si consiglia una finestra di estrazione di 3-6 mesi per acquisire cicli paghe completi. Utilizzi i parametri
:p_start_datee:p_end_dateper controllare il caricamento dinamico. - Legislative Data Group (LDG): Per impostazione predefinita, la query estrae tutti gli LDG. Se gestisce più paesi, valuti l’aggiunta del filtro
AND ppa.LEGISLATIVE_DATA_GROUP_ID = [Your_LDG_ID]per suddividere i dati. - Prestazioni: La query accede a tabelle con volumi elevati (
PAY_RUN_RESULTS,PAY_ASSIGNMENT_ACTIONS). Per evitare timeout in BI Publisher, verifichi che l’intervallo di date non sia troppo ampio, ad esempio superiore a un anno. - Sicurezza: L’utente che esegue il report deve disporre delle autorizzazioni Data Access Set per le definizioni delle paghe interessate.
Query di esempio 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 È pronto a iniziare?
Trasformi le operazioni di elaborazione delle paghe utilizzando questo template di dati per ottenere una visione completa dei cicli. Inizi oggi il percorso verso una maggiore efficienza e una rendicontazione accurata.
Ottimizzi oggi l’elaborazione delle paghe in Oracle HCM
Riduca del 30% il tempo di ciclo delle paghe ed elimini i colli di bottiglia.
Non è richiesta alcuna carta di credito. La configurazione richiede pochi minuti.