Votre modèle de données de traitement de la paie
Votre modèle de données de traitement de la paie
- Champs de données optimisés pour l'analyse de la paie
- Suivi complet des activités pour la cartographie du cycle de vie
- Guide d'extraction détaillé pour Oracle HCM Cloud Payroll
Attributs de traitement de la paie
| Nom | Description | ||
|---|---|---|---|
| Dernière mise à jour des données LastDataUpdate | L'horodatage de la dernière modification de l'enregistrement dans la base de données source. | ||
| Description Indique la fraîcheur des données utilisées pour l'analyse. Ceci est distinct de l'horodatage de l'événement ; il reflète le moment où la ligne de la base de données a été touchée pour la dernière fois par un processus ETL ou une mise à jour système. Il est utilisé pour vérifier l'actualité des données et déboguer les problèmes de latence d'extraction. Pourquoi c'est important Garantit que les analystes savent s'ils consultent des données en temps réel ou obsolètes. Où obtenir Colonne LAST_UPDATE_DATE courante dans presque toutes les tables Oracle HCM. Exemples 2023-10-02T12:00:00Z2023-10-06T01:00:00Z | |||
| Dossier de paie PayrollRecord | Identifiant unique représentant un employé au cours d'une période de paie spécifique. | ||
| Description L'enregistrement de paie agit comme l'identifiant de cas central pour l'analyse Process Mining. C'est une concaténation ou une clé unique qui combine l'identifiant d'affectation de l'employé et l'identifiant de la période de paie. Cet attribut regroupe toutes les activités liées au paiement d'un seul employé pour un cycle spécifique, de la soumission initiale de la feuille de temps au transfert bancaire final et à la déclaration fiscale. Il garantit que l'analyse peut distinguer entre le même employé payé en janvier et en février. Pourquoi c'est important Il sert d'identifiant de cas, liant tous les événements disparates en une seule instance de processus pour l'analyse. Où obtenir Construit à partir de PAY_ASSIGNMENT_ACTIONS ou d'une combinaison du numéro de personne et du nom de la période de paie dans Oracle HCM. Exemples EMP1001-2023-M01EMP5992-2023-W42300000018273645US-NY-A123-JAN23 | |||
| Nom de l'activité ActivityName | L'étape ou l'événement spécifique effectué dans le cycle de paie. | ||
| Description Cet attribut capture le nom de l'événement se produisant dans le processus de paie. Des exemples incluent « Feuille de temps soumise », « Calcul de paie démarré » et « Paiement exécuté ». C'est la dimension principale pour la découverte de processus et l'analyse de variantes. Dans Oracle HCM Cloud, cela est souvent dérivé du Type d'Action ou du Statut d'Action dans les tables d'actions de paie. Pourquoi c'est important Cela définit le « quoi » du processus, permettant de reconstruire la cartographie du processus. Où obtenir Dérivé du code ACTION_TYPE dans PAY_PAYROLL_ACTIONS ou des changements de statut dans les pistes d'audit. Exemples Calcul de paie démarréFeuille de temps approuvéeVirement bancaire généréException d'audit signalée | |||
| Système source SourceSystem | Le nom du système où l'événement est survenu. | ||
| Description Identifie le logiciel ou le module qui a généré le point de données. Pour ce processus, la valeur principale est 'Oracle HCM Cloud Payroll'. Cependant, dans des environnements complexes, cela pourrait distinguer le moteur de paie principal, le module de temps et de travail, ou une interface bancaire externe. Pourquoi c'est important Fournit un contexte de lignage, surtout lors de l'intégration des données de sous-systèmes de suivi du temps ou bancaires. Où obtenir Codé en dur lors de l'extraction ou dérivé des ID d'interface. Exemples Oracle HCM Cloud PayrollOracle Time and LaborInterface bancaire externe | |||
| Timestamp de l'événement EventTimestamp | La date et l'heure exactes de l'activité. | ||
| Description Enregistre le moment précis où une activité a eu lieu. Ceci est crucial pour calculer les durées, les délais et identifier les goulots d'étranglement. Pour les étapes automatisées, il s'agit du temps d'exécution du système. Pour les étapes manuelles comme les approbations, il s'agit de l'horodatage de l'action de l'utilisateur enregistrée dans le journal des transactions. Pourquoi c'est important Essentiel pour ordonner les événements chronologiquement et calculer tous les KPI basés sur le temps. Où obtenir Colonnes CREATION_DATE ou ACTION_DATE dans les tables de transactions pertinentes comme PAY_ACTION_INFORMATION. Exemples 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Durée du processus en jours ProcessDurationDays | Temps total de l'initialisation au paiement. | ||
| Description La durée calculée entre la première activité et l'activité « Paiement exécuté ». Utilisé pour le dashboard « Temps de cycle de paie de bout en bout ». Cette métrique sert de bilan de santé de haut niveau pour la rapidité de la fonction de paie. Pourquoi c'est important KPI de haut niveau pour l'efficacité des processus. Où obtenir Calculé : Horodatage(Paiement exécuté) - Horodatage(Début). Exemples 3.55.00.5 | |||
| Est une correction manuelle IsManualCorrection | Indicateur signalant si l'activité a impliqué une intervention manuelle. | ||
| Description Un indicateur booléen défini sur vrai pour les activités telles que 'Correction de données effectuée' ou 'Enregistrement de paie corrigé'. Il est utilisé pour calculer les KPI 'Taux de correction manuelle des données' et 'Taux de précision de la paie au premier passage'. Pourquoi c'est important Distingue le traitement direct du retravail manuel. Où obtenir Dérivé du nom de l'activité ou de types d'action spécifiques indiquant des ajustements (par exemple, QuickPay, Ajustement de solde). Exemples truefaux | |||
| Groupe de données législatives LegislativeDataGroup | Partitionne les données de paie par pays ou environnement réglementaire. | ||
| Description Dans Oracle HCM Cloud, le Groupe de Données Législatives (GDL) partitionne la paie et les données associées. Il correspond généralement à la législation d'un pays ou d'un territoire spécifique. Cet attribut est vital pour filtrer l'analyse des processus par pays (par exemple, paie américaine vs paie britannique) et est souvent mappé à l'attribut générique Pays. Pourquoi c'est important Les règles de conformité et les flux de processus varient souvent considérablement selon la juridiction. Où obtenir Table PAY_ALL_PAYROLLS_F jointe aux définitions des groupes de données législatives. Exemples Groupe de données législatives (États-Unis)UK LDGPaie France | |||
| Groupe de paie PayGroup | Regroupement logique des employés pour le traitement de la paie. | ||
| Description Représente la définition de paie spécifique à laquelle l'employé appartient (par exemple, « Fabrication hebdomadaire », « Entreprise mensuelle »). Cet attribut est central à presque tous les dashboards, permettant la comparaison des performances entre différents cycles et fréquences de paie. Pourquoi c'est important L'objet de configuration principal qui gère la planification de la paie. Où obtenir Table PAY_ALL_PAYROLLS_F (Nom de la paie). Exemples US Semi-MonthlyUK MonthlyWeekly Union | |||
| Montant du salaire brut GrossPayAmount | Le salaire brut total calculé pour la période. | ||
| Description Représente la valeur monétaire du salaire brut calculé pendant le cycle. Ceci est utilisé dans l'analyse « Précision des calculs fiscaux et des avantages sociaux » et « Intégration des incitations ». Cela permet aux analystes de corréler les paiements de grande valeur avec le temps de traitement ou les taux d'erreur. Pourquoi c'est important Fournit un contexte financier à l'analyse Process Mining. Où obtenir Table PAY_RUN_RESULT_VALUES, agrégée pour le solde du salaire brut. Exemples 5000.002350.5010000.00 | |||
| Nom de la période de paie PayrollPeriodName | Le nom spécifique de l'intervalle de temps pour l'exécution de la paie. | ||
| Description Identifie le cycle spécifique, tel que 'Janvier mensuel 2024' ou 'Période hebdomadaire 42'. Ceci est essentiel pour le 'Moniteur de conformité aux délais SLA'. Il aide à regrouper les cas d'employés individuels dans leurs exécutions par lots respectives pour le reporting agrégé. Pourquoi c'est important Fondamental pour l'analyse au niveau des lots et le suivi des SLA. Où obtenir Table PAY_TIME_PERIODS ou Nom de la période de temps sur la Définition de la paie. Exemples Mensuel 10 2023Hebdomadaire 42 2023Exécution du bonus de décembre 2023 | |||
| Nom du département DepartmentName | L'unité organisationnelle où l'employé travaille. | ||
| Description Identifie le département responsable de l'employé associé à l'enregistrement de paie. Ceci est crucial pour le tableau de bord 'Efficacité de l'approbation des feuilles de temps'. En segmentant les données par département, les analystes peuvent identifier quelles unités commerciales sont systématiquement en retard dans l'approbation des feuilles de temps, retardant ainsi l'exécution globale de la paie. Pourquoi c'est important Permet une analyse des causes profondes des retards liés aux approbations de la direction. Où obtenir Dérivé de l'enregistrement d'affectation de l'employé effectif au moment de l'exécution de la paie. Exemples Sales North AmericaIngénierieRessources HumainesLogistique | |||
| SLA : Date limite de traitement SlaProcessingDeadline | La date/heure cible à laquelle le paiement doit être exécuté. | ||
| Description Stocke la date limite contractuelle ou légale pour le décaissement de la paie. Cet attribut est comparé à l'horodatage « Paiement exécuté ». Il est utilisé pour calculer le KPI « Respect des délais de traitement des SLA » et identifier les groupes de paie à risque. Pourquoi c'est important Le principal point de référence pour le succès ou l'échec du processus concernant la ponctualité. Où obtenir Généralement un champ configuré (DFF) sur la définition de la paie ou dérivé de la date du chèque moins X jours. Exemples 2023-10-28T17:00:00Z2023-11-30T17:00:00Z | |||
| Utilisateur de traitement ProcessingUser | L'ID utilisateur ou le nom de la personne effectuant l'activité. | ||
| Description Capture l'identité du spécialiste de paie, du gestionnaire ou du compte système qui a déclenché l'activité. Cela prend en charge le tableau de bord 'Répartition de la charge de travail des spécialistes de paie'. Cela aide à identifier les goulots d'étranglement des ressources et les besoins en formation au sein de l'équipe de paie. Pourquoi c'est important Permet l'analyse de la productivité des ressources et l'équilibrage de la charge de travail. Où obtenir Colonnes CREATED_BY ou LAST_UPDATED_BY dans les tables de transactions. Exemples sysadminj.smithpayroll_batch_userm.doe | |||
| Compte d'itérations d'aperçu PreviewIterationCount | Nombre de fois où les résultats ont été prévisualisés avant la finalisation. | ||
| Description Un compteur qui s'incrémente chaque fois qu'une activité 'Aperçu du résultat de la paie' se produit pour le même cas. C'est la mesure directe pour le tableau de bord 'Suivi des itérations de prévisualisation de la paie', indiquant la quantité de retouches ou d'hésitations avant l'approbation. Pourquoi c'est important Quantifie l'efficacité de la phase de validation. Où obtenir Calculé lors de la transformation des données en comptant les occurrences d'activités spécifiques par ID de cas. Exemples 1350 | |||
| Indicateur de changement rétroactif RetroactiveChangeFlag | Indique si l'exécution de la paie inclut des paiements rétroactifs. | ||
| Description Un indicateur booléen qui est vrai si des éléments de 'Rétroactivité' sont traités dans cet enregistrement. Cela aide à expliquer des temps de traitement plus longs ou des exceptions d'audit dans la 'Comparaison des variantes de chemin de processus'. Les modifications rétroactives déclenchent souvent des recalculs complexes s'étendant sur les périodes précédentes. Pourquoi c'est important Identifie les cas complexes qui nécessitent naturellement plus de temps de traitement. Où obtenir Présence d'éléments 'Retropay' dans PAY_ELEMENT_ENTRIES. Exemples truefaux | |||
| Juridiction fiscale TaxJurisdiction | L'état, la province ou la localité spécifique pour la déclaration fiscale. | ||
| Description Indique l'autorité fiscale principale liée à l'enregistrement de paie (par exemple, 'CA' pour la Californie, 'NY' pour New York). Ceci prend en charge le tableau de bord 'Durée de traitement de la conformité fiscale'. Cela aide à identifier si des régions spécifiques ont des processus de calcul et de dépôt fiscal plus complexes ou plus lents. Pourquoi c'est important Segmente la performance par complexité réglementaire. Où obtenir Dérivé de la fiche fiscale de l'employé ou des adresses de lieu de travail. Exemples CA-CalifornieNY-New YorkTX-TexasFédéral-US | |||
| Statut SLA SlaStatus | Statut catégoriel du respect du SLA (Respecté/Non respecté). | ||
| Description Dérivé en comparant l'horodatage 'Paiement exécuté' avec le 'Délai de traitement SLA'. Les valeurs peuvent inclure 'Dans les temps', 'À risque' ou 'Violé'. Cela simplifie le reporting pour le 'Moniteur de conformité aux délais SLA' en regroupant les cas par catégories de performance. Pourquoi c'est important Simplifie les comparaisons de temps complexes en catégories exploitables. Où obtenir Logique calculée comparant l'horodatage de l'événement et le délai SLA. Exemples AtteintDépasséRisque de non-conformité | |||
| Type d'employé EmployeeType | Catégorisation de l'employé (par exemple, Salarié, Horaire, Contractuel). | ||
| Description Classe l'enregistrement de l'employé. Ceci est vital pour le tableau de bord 'Retard de publication des fiches de paie numériques', car différents types d'employés peuvent avoir des règles de traitement ou des urgences différentes. Cela aide à filtrer l'analyse pour comparer les performances des processus entre différents segments de la main-d'œuvre. Pourquoi c'est important Différents types d'employés suivent souvent différentes variantes de processus. Où obtenir Catégorie d'affectation ou conditions d'emploi dans PER_ALL_ASSIGNMENTS_M. Exemples Salarié à temps pleinHoraire à temps partielContractuelExécutif | |||
| Type d'exception d'audit AuditExceptionType | La catégorie d'erreur ou d'avertissement signalé lors de l'audit. | ||
| Description Catégorise le problème spécifique trouvé lors de l'activité 'Exception d'audit signalée' (par exemple, 'Salaire net négatif', 'ID fiscal manquant'). Cet attribut prend en charge le tableau de bord 'Analyse des exceptions d'audit et des corrections' en identifiant les problèmes courants de qualité des données. Pourquoi c'est important Critique pour l'analyse des causes profondes des boucles de retravailler. Où obtenir Colonnes de messages ou de codes d'erreur dans les journaux de processus de paie ou les rapports d'exceptions. Exemples Salaire net négatifNuméro de sécurité sociale manquantCoordonnées bancaires invalidesLimite d'heures supplémentaires dépassée | |||
Activités de traitement de la paie
| Activité | Description | ||
|---|---|---|---|
| Calcul de paie démarré | L'initiation du processus principal d'exécution de la paie pour une définition et une période de paie spécifiques. Cela marque la transition de la collecte des données au traitement. | ||
| Pourquoi c'est important Établit le début de la fenêtre de traitement intense. Utilisé pour calculer le temps de cycle total de l'exécution technique de la paie. Où obtenir Interrogez la table PAY_PAYROLL_ACTIONS où ACTION_TYPE est R (Exécution) ou Q (QuickPay) et ACTION_STATUS est marqué comme démarré (ou inféré de la date de création). Capture Enregistré lorsqu'un enregistrement PAY_PAYROLL_ACTIONS est inséré Type d'événement explicit | |||
| Calcul de paie exécuté | L'achèvement réussi du processus de calcul de la paie, y compris les calculs brut-net. Cet événement indique que les revenus, les déductions et les impôts ont été calculés pour l'affectation. | ||
| Pourquoi c'est important Une étape majeure indiquant que les données sont prêtes pour la validation. Des durées élevées ici peuvent indiquer des problèmes de performance du système ou des formules rapides complexes. Où obtenir Interrogez PAY_PAYROLL_REL_ACTIONS en joignant à PAY_PAYROLL_ACTIONS où ACTION_TYPE est R ou Q et ACTION_STATUS passe à C (Complet). Capture Enregistré lorsque le statut de l'action d'exécution de paie passe à Terminé Type d'événement explicit | |||
| Paiement effectué | La confirmation finale que le paiement a été traité. Dans Oracle, cela correspond à l'achèvement du flux de paiement ou à la réconciliation dans Cash Management. | ||
| Pourquoi c'est important L'horodatage principal pour la conformité aux SLA. Utilisé pour déterminer si les employés ont été payés à temps. Où obtenir Peut être déduit de la date d'effet de l'action de virement bancaire, ou explicitement via les journaux de rapprochement de la gestion de trésorerie (CE_STATEMENT_LINES). Capture Enregistré via la date d'effet de l'action de paiement ou de l'événement de rapprochement Type d'événement explicit | |||
| Pré-paiements calculés | L'exécution du processus de pré-paiements qui distribue le salaire net aux méthodes de paiement choisies par l'employé (chèque, EFT, etc.). Cela valide que les montants calculés peuvent effectivement être payés. | ||
| Pourquoi c'est important Le pont entre le calcul et le décaissement. Les échecs ici indiquent généralement des détails bancaires manquants ou des méthodes de paiement invalides. Où obtenir Interrogez PAY_PAYROLL_ACTIONS où ACTION_TYPE est P (Pré-paiements) et le statut est Complet. Capture Enregistré lorsque l'action de pré-paiements est terminée Type d'événement explicit | |||
| Virement bancaire généré | La génération du fichier EFT (Electronic Funds Transfer) ou d'une sortie de paiement similaire. Il s'agit de l'étape technique de création du fichier d'instructions pour la banque. | ||
| Pourquoi c'est important Mesure le temps de cycle de génération des fichiers de paiement. Les retards à ce niveau peuvent entraîner le non-respect des heures limites bancaires. Où obtenir Interrogez PAY_PAYROLL_ACTIONS où ACTION_TYPE est M (Bande Magnétique) ou E (EFT) ou C (Émetteur de chèques). Capture Enregistré lorsque l'action EFT/chèque est terminée Type d'événement explicit | |||
| Comptabilisation des coûts transférée | Le transfert des résultats de la comptabilisation de la paie vers le Grand Livre. Cela représente la clôture comptable financière du cycle de paie. | ||
| Pourquoi c'est important Assure la conformité financière et une comptabilisation précise des coûts de main-d'œuvre. Les retards empêchent la Finance de clôturer les comptes. Où obtenir Interrogez PAY_PAYROLL_ACTIONS où ACTION_TYPE est T (Transfert au GL) et le statut est Complet. Capture Enregistré lorsque le processus de transfert au GL est terminé Type d'événement explicit | |||
| Déclaration fiscale complétée | La génération de fichiers fiscaux légaux (par exemple, Third Party Quarterly Tax File). Cela assure la conformité réglementaire pour la période de paie. | ||
| Pourquoi c'est important Critique pour le KPI Durée de traitement de la conformité fiscale. Un échec ici entraîne des pénalités. Où obtenir Interrogez PAY_PAYROLL_ACTIONS pour les actions spécifiques des groupes de données législatives liées à la déclaration fiscale (par exemple, US Third Party Tax Filing). Capture Enregistré lorsque le flux de déclaration fiscale spécifique est terminé Type d'événement explicit | |||
| Données d'incitations importées | La création d'éléments d'entrée pour la rémunération variable tels que les bonus ou les commissions via le chargeur de lots ou l'importation HDL. Cela représente l'intégration des données de compensation externes dans l'exécution de la paie. | ||
| Pourquoi c'est important Surveille la vitesse d'intégration de la paie variable. Les importations tardives forcent souvent des exécutions de paie supplémentaires ou des corrections manuelles. Où obtenir Interrogez PAY_BATCH_HEADERS pour l'achèvement de l'importation ou suivez la création de PAY_ELEMENT_ENTRIES_F avec une référence de système source spécifique. Capture Enregistré lorsque le processus de saisie des éléments par lot se termine avec succès Type d'événement explicit | |||
| Dossier de paie corrigé | Mises à jour manuelles appliquées aux éléments d'entrée ou aux données d'affectation après une première exécution de paie mais avant la finalisation. Cette activité représente le travail de reprise nécessaire pour corriger les erreurs ou les exceptions. | ||
| Pourquoi c'est important Indique l'inefficacité du processus et les problèmes de qualité des données. La réduction de cette activité est essentielle pour améliorer le taux de précision de la paie au premier passage. Où obtenir Inférentiel en identifiant les mises à jour de PAY_ELEMENT_ENTRIES_F où la dernière date de mise à jour se situe entre la date initiale de l'exécution de la paie et la date des prépaiements. Capture Comparer les horodatages de mise à jour des entrées d'éléments aux horodatages d'exécution de la paie Type d'événement inferred | |||
| Exception d'audit signalée | L'enregistrement d'un message d'erreur ou d'avertissement pendant la phase de calcul ou de validation de la paie. Cela capture les échecs de validation spécifiques qui nécessitent une intervention humaine. | ||
| Pourquoi c'est important Essentiel pour identifier les problèmes de qualité des données. Un volume élevé d'exceptions augmente l'effort manuel et le risque de non-respect des SLA. Où obtenir Interrogez la table PAY_MESSAGE_LINES liée à l'ID d'action spécifique PAY_PAYROLL_REL_ACTION_ID. Cette table stocke les erreurs et avertissements générés lors des exécutions. Capture Enregistré lorsqu'un enregistrement est inséré dans PAY_MESSAGE_LINES Type d'événement explicit | |||
| Exécution de paie approuvée | L'approbation formelle du registre de paie ou du flux dans le Dashboard de paie. Cela se produit généralement après l'examen des rapports de validation et avant la génération des fichiers bancaires. | ||
| Pourquoi c'est important Représente la validation managériale. Le temps entre le calcul et l'approbation représente la fenêtre de vérification. Où obtenir Interrogez PAY_REQ_FLOW_INSTANCES pour les changements de statut ou l'achèvement de tâches spécifiques dans un modèle de flux de paie défini. Capture Enregistré lorsque le statut de l'instance de flux passe à Terminée/Approuvée Type d'événement explicit | |||
| Feuille de temps approuvée | La confirmation que les données de temps soumises ont été examinées et autorisées par un responsable. Ce changement de statut déclenche le transfert des données vers les éléments d'entrée de paie. | ||
| Pourquoi c'est important Critique pour mesurer le délai d'approbation du gestionnaire. Les retards ici sont une cause principale des ajustements de paie rétroactifs dans les périodes suivantes. Où obtenir Interrogez la table HWM_TM_REC_GRP_DTLS ou la vue HXT_TIMECARDS où le statut passe à APPROUVÉ. Comparez l'horodatage d'approbation à l'horodatage de soumission. Capture Enregistré lorsque le statut passe à APPROUVÉ dans Time and Labor Type d'événement explicit | |||
| Feuille de temps soumise | L'événement initial où un employé ou un gestionnaire soumet les données de temps et de travail pour traitement. Dans Oracle HCM, cela est capturé lorsque le statut de la feuille de temps passe à Soumis dans le module Time and Labor. | ||
| Pourquoi c'est important Marque l'entrée des données brutes dans le circuit potentiel de la paie. Les retards à ce stade se propagent en aval, réduisant la fenêtre de temps dont disposent les spécialistes de paie pour valider les calculs. Où obtenir Interrogez la table HWM_TM_REC_GRP_DTLS ou la vue HXT_TIMECARDS où le statut passe à SOUMIS. Utilisez l'horodatage de soumission. Capture Enregistré lorsque le statut passe à SOUMIS dans Time and Labor Type d'événement explicit | |||
| Fiche de paie publiée | Le point où le document de fiche de paie devient visible pour l'employé dans Self Service. Cela suit l'Archiver et potentiellement un processus spécifique de 'Génération de fiche de paie'. | ||
| Pourquoi c'est important Impacte la satisfaction des employés. Des délais importants entre le paiement et la disponibilité de la fiche de paie génèrent des tickets de support. Où obtenir Interrogez la table Documents of Record (HR_DOCUMENTS_OF_RECORD) ou l'achèvement du processus de génération de fiche de paie dans PAY_PAYROLL_ACTIONS. Capture Enregistré lorsque le processus de génération de PDF de fiche de paie est terminé Type d'événement explicit | |||
| QuickPay exécuté | L'exécution d'une paie pour une seule personne (QuickPay) généralement utilisée pour vérifier les corrections. Cela sert de substitut à l'activité de prévisualisation des résultats de paie. | ||
| Pourquoi c'est important De fréquents QuickPays par personne indiquent une approche de traitement de la paie par tâtonnements plutôt qu'une Où obtenir Interrogez PAY_PAYROLL_ACTIONS où ACTION_TYPE est Q (QuickPay). Comptez les instances par période de paie par employé. Capture Enregistré lorsqu'une action QuickPay est enregistrée dans PAY_PAYROLL_ACTIONS Type d'événement explicit | |||
| Résultats d'archivage générés | L'achèvement du processus d'archivage périodique des résultats de paie. Cet instantané verrouille efficacement les données pour le reporting et la génération des fiches de paie. | ||
| Pourquoi c'est important Un prérequis technique pour la génération des fiches de paie et des rapports légaux. Il confirme que les données sont finalisées. Où obtenir Interrogez PAY_PAYROLL_ACTIONS où ACTION_TYPE est X (Archive) et le statut est Complet. Capture Enregistré lorsque l'action d'archivage est terminée Type d'événement explicit | |||
Guides d'extraction
Étapes
Accéder à l'échange de données : Connectez-vous à Oracle HCM Cloud avec un utilisateur disposant du rôle 'Spécialiste de l'intégration de la gestion du capital humain'. Naviguez vers Mes groupes de clients > Échange de données > Définitions d'extraction.
Créer une nouvelle extraction : Cliquez sur l'icône '+' pour créer une nouvelle extraction. Nommez-la 'ProcessMind_Payroll_Extract'. Sélectionnez 'Paie' comme consommateur et 'Archive RH' comme catégorie pour garantir l'accès aux données historiques d'action de paie.
Définir les groupes de données : Créez un groupe de données racine basé sur l'entité utilisateur
PAY_PAYROLL_REL_UE(Relation de paie). Cela ancre l'extraction à la relation de paie de l'employé. Créez des groupes de données enfants pourPAY_ACTION_INFORMATION_UE,PAY_ELEMENT_ENTRY_UEetHWM_MEASURE_DAY_V_UE(pour le temps et le travail).Configurer les enregistrements d'extraction : Au sein des groupes de données, définissez des enregistrements pour aplatir les données hiérarchiques. Vous devez créer des enregistrements spécifiques pour chaque type d'activité (par exemple, un enregistrement filtrant les événements 'Feuille de temps', un autre pour les 'Résultats d'exécution').
Implémenter la logique SQL via FastFormula ou BIP : En raison de la complexité de la transformation des données de paie hiérarchiques en un journal d'événements linéaire, l'approche la plus robuste consiste à utiliser l''Option de livraison d'extraction' pour appeler un rapport BI Publisher. Cela vous permet d'utiliser le SQL fourni dans la section 'Requête' ci-dessous comme modèle de données. Cette méthode est supérieure au filtrage GUI natif pour la création d'un journal d'événements unifié.
Créer un modèle de données BI Publisher : Naviguez vers Outils > Rapports et analyses > Parcourir le catalogue. Créez un nouveau modèle de données. Collez la requête SQL fournie ci-dessous. Définissez un paramètre pour
bind_start_dateetbind_end_date.Lier l'extraction à BIP : Dans l'onglet 'Livraison' de la Définition d'extraction, créez une option de livraison. Sélectionnez 'PDF' ou 'XML' comme type de sortie (ProcessMind préfère le CSV, mais vous convertirez la sortie BIP). Sélectionnez le rapport BI Publisher que vous avez créé à l'étape précédente.
Définir les paramètres : Dans l'arbre d'exécution de l'extraction, ajoutez des paramètres pour la date de début et la date de fin à transmettre dynamiquement à la requête BI Publisher.
Valider et soumettre : Validez la définition d'extraction pour vérifier les erreurs. Cliquez sur 'Soumettre l'extraction'. Entrez les paramètres (par exemple, les 90 derniers jours).
Surveiller le processus : Allez dans 'Afficher les résultats de l'extraction'. Attendez que le statut passe à 'Réussi'.
Télécharger la sortie : Téléchargez le fichier XML/CSV généré. Ouvrez-le pour vérifier que la structure contient les colonnes requises : PayrollRecord, ActivityName, EventTimestamp, etc.
Formater pour ProcessMind : Si la sortie est XML, convertissez-la en un fichier CSV plat en vous assurant que les en-têtes correspondent aux exigences des 'Attributs à inclure'. Téléchargez le fichier résultant vers ProcessMind.
Configuration
- Mode d'extraction : Modifications uniquement ou Extraction complète. Pour le chargement initial, utilisez l'Extraction complète. Pour les mises à jour quotidiennes, configurez 'Modifications uniquement' en fonction de la dernière date de mise à jour.
- Groupe de données législatives (GDL) : Il est fortement recommandé de filtrer par GDL si votre instance prend en charge plusieurs pays, car les définitions de paie varient selon la législation.
- Plage de dates : Définissez
bind_start_dateetbind_end_datepour couvrir au moins 3 à 6 mois afin que le process mining capture les temps de cycle complets. - Taille de bloc : Pour les paies à fort volume (plus de 10 000 employés), définissez la taille de bloc dans la Définition d'extraction à 2000 pour éviter les erreurs de dépassement de délai.
- Datation d'effet : Les tables de paie sont datées d'effet. La logique de la requête gère explicitement
effective_start_dateeteffective_end_datepour s'assurer que la version historique correcte de l'enregistrement est récupérée. - Sécurité : L'utilisateur exécutant doit disposer de profils de sécurité des données permettant de visualiser toutes les paies et les départements destinés à l'analyse.
a Exemple de requête config
/* Oracle HCM Cloud Payroll Extraction for ProcessMind */
/* Aggregating 16 specific activities into a unified Event Log */
SELECT
/* Attributes */
rel.person_number || '-' || ppa.payroll_action_id AS PayrollRecord,
'Time Card Submitted' AS ActivityName,
TO_CHAR(htr.creation_date, 'YYYY-MM-DD HH24:MI:SS') AS EventTimestamp,
'Oracle HCM Time and Labor' AS SourceSystem,
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS') AS LastDataUpdate,
pap.name AS PayrollPeriodName,
org.name AS DepartmentName,
NULL AS GrossPayAmount
FROM hwm_tm_rec htr
JOIN hwm_tm_rec_grp htrg ON htr.tm_rec_grp_id = htrg.tm_rec_grp_id
JOIN per_all_people_f rel ON htrg.person_id = rel.person_id
LEFT JOIN pay_all_payrolls_f pap ON htrg.payroll_id = pap.payroll_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id /* Adjust mapping */
WHERE htr.latest_version_flag = 'Y'
AND htr.tm_rec_status = 'SUBMITTED'
AND htr.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Time Card Approved',
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Time and Labor',
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM hwm_tm_rec htr
JOIN hwm_tm_rec_grp htrg ON htr.tm_rec_grp_id = htrg.tm_rec_grp_id
JOIN per_all_people_f rel ON htrg.person_id = rel.person_id
LEFT JOIN pay_all_payrolls_f pap ON htrg.payroll_id = pap.payroll_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE htr.latest_version_flag = 'Y'
AND htr.tm_rec_status = 'APPROVED'
AND htr.last_update_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || pee.element_entry_id,
'Incentive Data Imported',
TO_CHAR(pee.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
NULL,
org.name,
NULL
FROM pay_element_entries_f pee
JOIN pay_element_types_f pet ON pee.element_type_id = pet.element_type_id
JOIN per_all_assignments_m asg ON pee.assignment_id = asg.assignment_id
JOIN per_all_people_f rel ON asg.person_id = rel.person_id
LEFT JOIN per_departments org ON asg.organization_id = org.organization_id
WHERE pet.classification_name IN ('Supplemental Earnings', 'Voluntary Deductions')
AND pee.creator_type IN ('H', 'F') /* HDL or Flat File */
AND pee.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Calculation Started',
TO_CHAR(ppa.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(ppa.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_actions ppa
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id /* Simplified Join */
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('R', 'Q') /* Run or QuickPay */
AND ppa.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Calculation Executed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
(SELECT SUM(prrv.result_value) FROM pay_run_result_values prrv JOIN pay_run_results prr ON prrv.run_result_id = prr.run_result_id WHERE prr.payroll_rel_action_id = pra.payroll_rel_action_id) AS GrossPayAmount
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('R', 'Q')
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Audit Exception Flagged',
TO_CHAR(pml.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pml.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_message_lines pml
JOIN pay_payroll_rel_actions pra ON pml.source_id = pra.payroll_rel_action_id
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pml.message_level IN ('F', 'E') /* Fatal or Error */
AND pml.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Record Corrected',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_element_entries_f pee
JOIN pay_payroll_rel_actions pra ON pee.creator_id = pra.payroll_rel_action_id
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pee.last_update_date > pee.creation_date
AND pee.last_update_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'QuickPay Executed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'Q'
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Prepayments Calculated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'P' /* Distribution */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Run Approved',
TO_CHAR(pfi.action_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pfi.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_flow_instances pfi
JOIN pay_payroll_actions ppa ON pfi.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pfi.status = 'COMPLETED'
AND pfi.instance_name LIKE '%Approval%'
AND pfi.action_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Archive Results Generated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'X' /* Archive */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Bank Transfer Generated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
(SELECT SUM(ppp.value) FROM pay_pre_payments ppp WHERE ppp.payroll_action_id = ppa.payroll_action_id) AS GrossPayAmount
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('M', 'E') /* Mag Tape or EFT */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payment Executed',
TO_CHAR(ppp.base_currency_value, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(ppa.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
ppp.value AS GrossPayAmount
FROM pay_pre_payments ppp
JOIN pay_payroll_actions ppa ON ppp.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('H', 'E', 'M') /* Check or EFT */
AND ppa.effective_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Pay Slip Published',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'G' /* Generate Payslip */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Costing Transferred',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'T' /* Transfer to GL */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Tax Filing Completed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.report_category IN ('Tax', 'Regulatory') /* Customize based on local requirements */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date Étapes
- Se connecter à Oracle BI Publisher : Accédez à l'environnement Oracle Cloud et naviguez vers Outils > Rapports et analyses. Cliquez sur Parcourir le catalogue pour ouvrir l'interface BI Publisher.
- Créer un modèle de données : Cliquez sur Nouveau (en haut à gauche) et sélectionnez Modèle de données. C'est le conteneur de votre logique d'extraction SQL.
- Créer un jeu de données SQL : Sous l'onglet Diagramme, cliquez sur l'icône Nouveau jeu de données et sélectionnez Requête SQL.
- Configurer la source de données : Nommez le jeu de données (par exemple,
ProcessMind_Payroll_Extract). Définissez la Source de données surApplicationDB_HCM(ou votre connexion spécifique à la base de données d'application HCM). Laissez le type comme SQL standard. - Saisir la requête : Copiez le script SQL complet fourni dans la section Requête ci-dessous et collez-le dans la zone de texte Requête SQL. Assurez-vous de n'inclure aucun formatage Markdown.
- Définir les paramètres : La requête utilise les variables de liaison
:p_start_dateet:p_end_date. Dans l'onglet Paramètres du modèle de données, créez ces deux paramètres (type Date) pour filtrer la plage d'extraction (par exemple, basée surppa.EFFECTIVE_DATE). - Valider la structure des données : Cliquez sur OK. Passez à l'onglet Données dans l'éditeur de modèle de données. Saisissez des dates d'exemple (par exemple,
2023-01-01à2023-03-31) et cliquez sur Afficher. Assurez-vous que la sortie contient des lignes avecPayrollRecord,ActivityNameetEventTimestamp. - Enregistrer le modèle de données : Enregistrez le modèle dans un dossier partagé (par exemple,
/Shared Folders/Custom/ProcessMining). - Créer un rapport pour l'exportation : Cliquez sur Créer un rapport, sélectionnez le modèle de données que vous venez d'enregistrer. Utilisez l'Assistant de rapport pour créer une mise en page de tableau simple contenant toutes les colonnes. Décochez 'Afficher les totaux généraux'.
- Exporter en CSV : Affichez le rapport dans l'Afficheur de rapports. Cliquez sur le menu Actions (icône d'engrenage) > Exporter > Données > CSV.
- Transformer : Ouvrez le CSV. Assurez-vous que les formats de date sont ISO 8601 (
AAAA-MM-JJ HH:MM:SS) s'ils ne sont pas automatiquement formatés. Aucune autre transformation ne devrait être nécessaire si le SQL a été correctement copié. - Télécharger : Importez le fichier CSV résultant dans ProcessMind, en mappant les colonnes comme défini dans les Exigences de données.
Configuration
- Connexion à la source de données : Doit utiliser
ApplicationDB_HCMou la source de données JNDI équivalente ayant un accès en lecture aux schémasPAY_etPER_. - Plage de dates : La fenêtre d'extraction recommandée est de 3 à 6 mois pour capturer des cycles de paie complets. Utilisez les paramètres
:p_start_dateet:p_end_datepour contrôler ce chargement dynamique. - Groupe de données législatives (GDL) : La requête extrait tous les GDL par défaut. Si vous opérez dans plusieurs pays, envisagez d'ajouter un filtre
AND ppa.LEGISLATIVE_DATA_GROUP_ID = [Your_LDG_ID]pour partitionner les données. - Performance : La requête interroge des tables à fort volume (
PAY_RUN_RESULTS,PAY_ASSIGNMENT_ACTIONS). Assurez-vous que la plage de dates n'est pas trop large (par exemple, > 1 an) afin d'éviter les erreurs de dépassement de délai dans BI Publisher. - Sécurité : L'utilisateur exécutant le rapport doit disposer des autorisations d'accès aux données pour les définitions de paie cibles.
a Exemple de requête 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