給与計算処理データテンプレート
給与計算処理データテンプレート
- 給与計算分析のために最適化されたデータフィールド
- ライフサイクルマッピングのための包括的なアクティビティ追跡
- Oracle HCM Cloud Payroll向け詳細抽出ガイド
給与計算処理アトリビュート
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ名 ActivityName | 給与計算サイクルで実行された特定のステップまたはイベント。 | ||
| 説明 このアトリビュートは、給与計算プロセス内で発生するイベントの名前を捕捉します。例として、「タイムカード提出済み」、「給与計算開始」、「支払実行済み」などがあります。 これはプロセスディスカバリとバリアント分析の主要なディメンションです。Oracle HCM Cloudでは、給与計算アクションテーブル内のアクションタイプまたはアクションステータスから導出されることがよくあります。 その重要性 これがプロセスの「何を」定義し、プロセスマップの再構築を可能にします。 取得元 PAY_PAYROLL_ACTIONSのACTION_TYPEコード、または監査証跡のステータス変更から導出されます。 例 給与計算開始タイムカード承認済み銀行振込生成済み監査例外フラグ付き | |||
| イベントのタイムスタンプ EventTimestamp | アクティビティが発生した正確な日時。 | ||
| 説明 アクティビティが行われた特定の瞬間を記録します。これは、期間、リードタイムの計算、およびボトルネックの特定に不可欠です。 自動化されたステップの場合、これはシステム実行時間です。承認などの手動ステップの場合、トランザクションログに記録されたユーザーアクションのタイムスタンプです。 その重要性 イベントを時系列で並べ、すべての時間ベースのKPIを計算するために不可欠です。 取得元 PAY_ACTION_INFORMATIONのような関連トランザクションテーブルのCREATION_DATEまたはACTION_DATE列。 例 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| ソースシステム SourceSystem | `イベント`が`発生`した`システム`の`名前`です。 | ||
| 説明 データポイントを生成したソフトウェアまたはモジュールを識別します。このプロセスでは、主要な値は「Oracle HCM Cloud Payroll」です。 ただし、複雑な環境では、これはコア給与計算エンジン、時間管理モジュール、または外部銀行インターフェースを区別する可能性があります。 その重要性 特に勤怠管理システムや銀行サブシステムからのデータを統合する際に、リネージコンテキストを提供します。 取得元 抽出時にハードコードされるか、インターフェースIDから導出されます。 例 Oracle HCM Cloud給与計算Oracle勤怠管理外部銀行インターフェース | |||
| 最終データ更新 LastDataUpdate | ソースデータベースでレコードが最後に変更されたときのタイムスタンプ。 | ||
| 説明 分析に使用されるデータの鮮度を示します。これはイベントタイムスタンプとは異なり、データベース内の行がETLプロセスまたはシステム更新によって最後に触れられた時期を反映します。 データ通貨を検証し、抽出遅延の問題をデバッグするために使用されます。 その重要性 アナリストがリアルタイムデータを見ているのか、古いデータを見ているのかを確認できます。 取得元 ほぼすべてのOracle HCMテーブルに共通するLAST_UPDATE_DATE列。 例 2023-10-02T12:00:00Z2023-10-06T01:00:00Z | |||
| 給与計算記録 PayrollRecord | 特定の給与計算期間内における従業員を表す一意の識別子。 | ||
| 説明 「給与計算記録(Payroll Record)」は、プロセスマイニング分析の中心的なケース識別子として機能します。これは、従業員割り当て識別子と給与計算期間識別子を組み合わせた連結キーまたは一意キーです。 このアトリビュートは、最初のタイムカード提出から最終的な銀行振込および税務申告に至るまで、特定のサイクルで一人の従業員に支払うことに関連するすべてのアクティビティをグループ化します。これにより、分析において同じ従業員が1月と2月に支払われる場合を区別できます。 その重要性 これはケースIDとして機能し、すべての異なるイベントを分析用の一つのプロセスインスタンスに結合します。 取得元 PAY_ASSIGNMENT_ACTIONS、またはOracle HCMにおける個人番号と給与計算期間名の組み合わせから構築されます。 例 EMP1001-2023-M01EMP5992-2023-W42300000018273645US-NY-A123-JAN23 | |||
| SLA処理期限 SlaProcessingDeadline | 支払いが実行されなければならない目標日時。 | ||
| 説明 給与支払いの契約上または法的な期限を格納します。このアトリビュートは、「Payment Executed」タイムスタンプと比較されます。 「SLA処理期限遵守率」KPIの計算や、リスクのある給与グループの特定に使用されます。 その重要性 適時性に関するプロセスの成否を判断する主要なベンチマーク。 取得元 通常、給与計算定義上の構成済みフィールド(DFF)であるか、小切手発行日からX日を引いた日付から派生します。 例 2023-10-28T17:00:00Z2023-11-30T17:00:00Z | |||
| プロセス期間日数 ProcessDurationDays | 初期化から支払いまでの合計時間。 | ||
| 説明 最初の活動から「Payment Executed」活動までの計算された期間。「End To End Payroll Cycle Time」ダッシュボードで使用されます。 この指標は、給与計算機能の速度に関する高レベルの健全性チェックとして機能します。 その重要性 プロセス効率のハイレベルKPI。 取得元 計算: タイムスタンプ(支払い実行済み) - タイムスタンプ(開始)。 例 3.55.00.5 | |||
| 処理ユーザー ProcessingUser | アクティビティを実行した人物のユーザーIDまたは氏名。 | ||
| 説明 アクティビティをトリガーした給与計算専門家、マネージャー、またはシステムアカウントのIDを捕捉します。これは「Payroll Specialist Workload Distribution」ダッシュボードをサポートします。 これにより、給与計算チームのリソースボトルネックやトレーニングニーズを特定するのに役立ちます。 その重要性 リソース生産性分析とワークロードバランスを可能にします。 取得元 トランザクションテーブルのCREATED_BYまたはLAST_UPDATED_BY列。 例 システム管理者j.smithpayroll_batch_userm.doe | |||
| 制度データグループ LegislativeDataGroup | 給与計算データを国または規制環境別に分割します。 | ||
| 説明 Oracle HCM Cloudでは、制度データグループ(LDG)は給与計算および関連データを区分します。これは通常、国または特定の地域の法律に対応しています。 この属性は、国(例:米国の給与計算 vs. 英国の給与計算)でプロセス分析をフィルタリングするために不可欠であり、多くの場合、汎用属性のCountryにマッピングされます。 その重要性 コンプライアンスルールとプロセスフローは、管轄区域によって大きく異なることがよくあります。 取得元 PAY_ALL_PAYROLLS_Fテーブルと立法データグループ定義を結合。 例 米国立法データグループ英国LDGフランス給与計算 | |||
| 手動修正済み IsManualCorrection | アクティビティが手作業による介入を伴ったかどうかを示すフラグ。 | ||
| 説明 「Data Correction Performed」や「Payroll Record Corrected」などのアクティビティに対してtrueに設定されるブールフラグです。 「Manual Data Correction Rate」および「First-Pass Payroll Accuracy Rate」KPIの計算に使用されます。 その重要性 ストレートスルー処理と手作業による手戻りを区別します。 取得元 アクティビティ名、または調整を示す特定のアクションタイプ(例: QuickPay、残高調整)から導出されます。 例 truefalse | |||
| 給与グループ PayGroup | 給与計算処理のための従業員の論理的グループ化。 | ||
| 説明 従業員が所属する特定の給与計算定義(例:「週次製造業向け」、「月次法人向け」)を表します。 このアトリビュートは、ほぼ全てのダッシュボードの中心であり、異なる給与計算サイクルや頻度間でのパフォーマンス比較を可能にします。 その重要性 給与計算スケジュールを駆動する主要な構成オブジェクト。 取得元 PAY_ALL_PAYROLLS_Fテーブル (給与計算名)。 例 米国半月次英国月次週次組合 | |||
| 給与計算期間名 PayrollPeriodName | 給与計算実行のための時間間隔の具体的な名称。 | ||
| 説明 「Monthly January 2024」や「Weekly Period 42」などの特定のサイクルを識別します。これは「SLA Deadline Compliance Monitor」にとって不可欠です。 これにより、個々の従業員ケースを集計レポートのためにそれぞれのバッチ実行にグループ化するのに役立ちます。 その重要性 バッチレベル分析とSLA追跡の基本となります。 取得元 PAY_TIME_PERIODSテーブル、または給与計算定義上の支払期間名。 例 2023年10月度2023年週次422023年12月ボーナス実行 | |||
| 総支給額 GrossPayAmount | 期間の総計算済み総支給額。 | ||
| 説明 サイクル中に計算された総支給額の金銭的価値を表します。これは「税金と福利厚生の計算精度」および「インセンティブ統合」分析で使用されます。 アナリストは、高額な支払いと処理時間またはエラー率を関連付けることができます。 その重要性 プロセスマイニング分析に財務コンテキストを提供します。 取得元 PAY_RUN_RESULT_VALUESテーブル、総支給額残高で集計。 例 5000.002350.5010000.00 | |||
| 部門名 DepartmentName | 従業員が勤務する組織単位。 | ||
| 説明 給与計算レコードに関連付けられた従業員を担当する部門を特定します。これは「Timesheet Approval Efficiency」ダッシュボードにとって非常に重要です。 データを部門ごとにセグメント化することで、アナリストはどの事業部門が常にタイムカード承認が遅れ、給与計算全体の実行を遅らせているかを特定できます。 その重要性 管理承認に関連する遅延の根本原因分析を可能にします。 取得元 給与計算実行時の従業員の割り当てレコードから導出されます。 例 北米営業エンジニアリング人事ロジスティクス | |||
| SLAステータス SlaStatus | SLA遵守のカテゴリ別ステータス(達成/未達成)。 | ||
| 説明 「Payment Executed」タイムスタンプと「SLA Processing Deadline」を比較して導出されます。値には「On Time」、「At Risk」、「Breached」などが含まれる場合があります。 これにより、ケースをパフォーマンスバケットにグループ化することで、「SLA Deadline Compliance Monitor」のレポート作成が簡素化されます。 その重要性 複雑な時間比較を実行可能なカテゴリに簡素化します。 取得元 イベントタイムスタンプとSLA期限を比較する計算ロジック。 例 達成違反違反寸前 | |||
| プレビュー反復回数 PreviewIterationCount | 最終化前に結果がプレビューされた回数。 | ||
| 説明 同じケースに対して「Payroll Result Previewed」アクティビティが発生するたびに増加するカウンターです。 これは「Payroll Preview Iteration Tracker」ダッシュボードの直接的な測定値であり、承認前の手戻りや保留の量を示します。 その重要性 検証フェーズの効率を定量化します。 取得元 データ変換中に、ケースIDごとの特定のアクティビティ発生回数を数えることで計算されます。 例 1350 | |||
| 従業員タイプ EmployeeType | 従業員の分類(例:月給制、時給制、契約社員)。 | ||
| 説明 従業員レコードを分類します。異なる従業員タイプは異なる処理ルールや緊急度を持つ可能性があるため、これは「Digital Pay Slip Publishing Lag」ダッシュボードにとって極めて重要です。 これにより、異なる労働力セグメント間のプロセスパフォーマンスを比較するための分析をフィルタリングするのに役立ちます。 その重要性 異なる従業員タイプは、異なるプロセスバリアントに従うことがよくあります。 取得元 PER_ALL_ASSIGNMENTS_Mにおける割り当てカテゴリまたは雇用条件。 例 正社員(月給制)パートタイム時給契約社員エグゼクティブ | |||
| 監査例外タイプ AuditExceptionType | 監査中にフラグ付けされたエラーまたは警告のカテゴリ。 | ||
| 説明 「Audit Exception Flagged」アクティビティ中に発見された特定の問題(例:「Negative Net Pay」、「Missing Tax ID」など)を分類します。 この属性は、一般的なデータ品質の問題を特定することで、「Audit Exception and Correction Analysis」ダッシュボードをサポートします。 その重要性 手戻りループの根本原因分析に不可欠です。 取得元 給与計算プロセスログまたは例外レポート内のメッセージまたはエラーコード列。 例 純支給額がマイナスSSN(社会保障番号)不足無効な銀行情報残業時間超過 | |||
| 税務管轄区域 TaxJurisdiction | 税務申告のための特定の州、県、または地方。 | ||
| 説明 給与計算レコードに関連する主要な税務当局(例: カリフォルニア州の場合は「CA」、ニューヨーク州の場合は「NY」)を示します。これは「Tax Compliance Processing Duration」ダッシュボードをサポートします。 特定の地域でより複雑または遅い税金計算および申告プロセスがあるかどうかを特定するのに役立ちます。 その重要性 規制の複雑さによってパフォーマンスをセグメント化します。 取得元 従業員の税務カードまたは勤務地住所から導出されます。 例 CA-カリフォルニアNY-ニューヨークテキサス州連邦-米国 | |||
| 遡及変更フラグ RetroactiveChangeFlag | 給与計算実行に遡及支払いが含まれているかどうかを示します。 | ||
| 説明 このレコードで「Retropay」要素が処理された場合にtrueとなるブールインジケーターです。「Process Path Variant Comparison」における処理時間の長期化や監査例外の説明に役立ちます。 遡及的な変更は、多くの場合、過去の期間にわたる複雑な再計算をトリガーします。 その重要性 より多くの処理時間を必要とする複雑なケースを特定します。 取得元 PAY_ELEMENT_ENTRIESに「遡及支払(Retropay)」要素エントリの存在。 例 truefalse | |||
給与計算処理アクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| 前払い計算済み | 従業員が選択した支払方法(小切手、EFTなど)に純支給額を分配する前払いプロセスの実行。これは、計算された金額が実際に支払可能であることを検証します。 | ||
| その重要性 計算と支払いの間の橋渡し役。ここでの失敗は通常、銀行情報の欠落または無効な支払方法を示します。 取得元 ACTION_TYPEがP(前払い)でステータスが完了であるPAY_PAYROLL_ACTIONSをクエリします。 取得 前払いアクション完了時にログ記録 イベントタイプ explicit | |||
| 支払い実行 | 支払いが処理された最終確認。Oracleでは、これは支払フローの完了または資金管理における照合と関連しています。 | ||
| その重要性 SLAコンプライアンスの主要なタイムスタンプ。従業員が時間通りに支払われたかを判断するために使用されます。 取得元 銀行振込アクションの有効日付から推測することも、キャッシュマネジメントの照合ログ(CE_STATEMENT_LINES)を通じて明示的に取得することも可能です。 取得 支払いアクションまたは調整イベントの有効日付を通じて記録されます イベントタイプ explicit | |||
| 給与計算実行済み | 総支給額から純支給額への計算を含む、給与計算プロセスの正常な完了。このイベントは、対象者の給与、控除、税金が計算されたことを示します。 | ||
| その重要性 データ検証の準備ができたことを示す重要なマイルストーンです。ここでの所要時間が長い場合、システムパフォーマンスの問題や複雑なFastFormulaを示している可能性があります。 取得元 ACTION_TYPEがRまたはQでACTION_STATUSがC(完了)に変わるPAY_PAYROLL_ACTIONSにPAY_PAYROLL_REL_ACTIONSを結合してクエリします。 取得 給与計算実行アクションのステータスが完了に更新された際にログ記録 イベントタイプ explicit | |||
| 給与計算開始 | 特定の給与計算定義と期間における主要な給与計算実行プロセスの開始。これはデータ収集から処理への移行を示します。 | ||
| その重要性 重い処理期間の開始を確立します。技術的な給与計算実行の総サイクル時間を計算するために使用されます。 取得元 ACTION_TYPEがR(実行)またはQ(QuickPay)であり、ACTION_STATUSが開始済みとマークされている(または作成日から推測される)PAY_PAYROLL_ACTIONSテーブルをクエリします。 取得 PAY_PAYROLL_ACTIONSレコードが挿入された際にログ記録 イベントタイプ explicit | |||
| 銀行振込生成済み | EFT(電子資金振替)ファイルまたは類似の支払出力の生成。これは、銀行への指示ファイルを作成する技術的なステップです。 | ||
| その重要性 支払ファイル生成サイクル時間を測定します。ここでの遅延は、銀行の締め切り時間を逃す原因となる可能性があります。 取得元 ACTION_TYPEがM(磁気テープ)またはE(EFT)またはC(小切手作成者)であるPAY_PAYROLL_ACTIONSをクエリします。 取得 EFT/チェックアクション完了時にログ記録 イベントタイプ explicit | |||
| QuickPay実行済み | 修正の検証に一般的に使用される個人別給与計算実行(QuickPay)。これは、「給与計算結果プレビュー済み」アクティビティの代理として機能します。 | ||
| その重要性 個々のQuickPayの頻度が高い場合、給与計算処理が試行錯誤のアプローチであることを示しており、 取得元 ACTION_TYPEがQ(QuickPay)であるPAY_PAYROLL_ACTIONSをクエリします。給与計算期間ごと、従業員ごとのインスタンス数をカウントします。 取得 PAY_PAYROLL_ACTIONSにQuickPayアクションが記録されたときにログに記録されます イベントタイプ explicit | |||
| アーカイブ結果生成済み | 定期給与計算結果アーカイブプロセスの完了。このスナップショットは、レポート作成と給与明細生成のためにデータを効果的にロックします。 | ||
| その重要性 給与明細および法定レポートを生成するための技術的前提条件です。データが確定されたことを確認します。 取得元 ACTION_TYPEがX(アーカイブ)でステータスが完了であるPAY_PAYROLL_ACTIONSをクエリします。 取得 「アーカイブ」アクション完了時にログ記録 イベントタイプ explicit | |||
| インセンティブデータインポート済み | バッチローダーまたはHDLインポートを介した、ボーナスやコミッションなどの変動給与の要素エントリの作成。これは、外部報酬データを給与計算実行に統合することを意味します。 | ||
| その重要性 変動給与の統合速度を監視します。インポートの遅延は、追加の給与計算実行や手動修正を余儀なくさせることがよくあります。 取得元 PAY_BATCH_HEADERSをクエリしてインポート完了を確認するか、特定のソースシステム参照を持つPAY_ELEMENT_ENTRIES_Fの作成を追跡します。 取得 バッチ要素入力プロセスが正常に完了した際にログ記録 イベントタイプ explicit | |||
| タイムカード承認済み | 提出された勤怠データがマネージャーによってレビューされ、承認されたことの確認。このステータス変更により、給与計算要素エントリへのデータ転送がトリガーされます。 | ||
| その重要性 マネージャー承認リードタイムを測定するために重要です。ここでの遅延は、その後の期間における遡及支払い調整の主な原因となります。 取得元 HWM_TM_REC_GRP_DTLSテーブルまたはHXT_TIMECARDSビューでステータスが承認済みに変更された箇所をクエリします。承認タイムスタンプと提出タイムスタンプを比較します。 取得 勤怠管理(Time and Labor)でステータスが承認済みに変更された際にログ記録 イベントタイプ explicit | |||
| タイムカード提出済み | 従業員または管理者が処理のために勤怠データを提出する最初のイベント。Oracle HCMでは、勤怠管理モジュールでタイムカードのステータスが「提出済み」に変更されたときにこれが記録されます。 | ||
| その重要性 未加工データが給与計算パイプラインに入る時点を示します。ここでの遅延は下流工程に波及し、給与担当者が計算を検証するための期間を短縮させます。 取得元 HWM_TM_REC_GRP_DTLSテーブルまたはHXT_TIMECARDSビューでステータスが提出済みに変更された箇所をクエリします。提出タイムスタンプを使用します。 取得 勤怠管理(Time and Labor)でステータスが提出済みに変更された際にログ記録 イベントタイプ explicit | |||
| 原価計算転送済み | 給与計算費用の結果を総勘定元帳に転送すること。これは、給与計算サイクルの財務会計上の締めを意味します。 | ||
| その重要性 財務コンプライアンスと労働コストの正確な計上を保証します。遅延は財務部門の帳簿締めを妨げます。 取得元 ACTION_TYPEがT(総勘定元帳への転送)でステータスが完了であるPAY_PAYROLL_ACTIONSをクエリします。 取得 総勘定元帳(GL)への転送プロセス完了時にログ記録 イベントタイプ explicit | |||
| 監査例外フラグ付き | 給与計算または検証フェーズ中に発生したエラーまたは警告メッセージの記録。これは、人間の介入が必要な特定の検証失敗を捉えます。 | ||
| その重要性 データ品質の問題を特定するために不可欠です。大量の例外は手作業を増加させ、SLA違反のリスクを高めます。 取得元 特定のPAY_PAYROLL_REL_ACTION_IDにリンクされたPAY_MESSAGE_LINESテーブルをクエリします。このテーブルには、実行中に生成されたエラーと警告が格納されます。 取得 PAY_MESSAGE_LINESにレコードが挿入されたときにログに記録されます イベントタイプ explicit | |||
| 税務申告完了 | 法定税務ファイル(例:四半期第三者税務申告ファイル)の生成。これにより、支払期間の規制遵守が保証されます。 | ||
| その重要性 税務コンプライアンス処理期間KPIにとって重要です。ここでの失敗はペナルティにつながります。 取得元 税務報告に関連する特定の立法データグループアクション(例:US Third Party Tax Filing)についてPAY_PAYROLL_ACTIONSをクエリします。 取得 特定の税務報告フロー完了時にログ記録 イベントタイプ explicit | |||
| 給与明細発行済み | 給与明細がセルフサービスで従業員に表示される時点。これはアーカイバの後に続き、場合によっては特定の「給与明細生成」プロセスが介在します。 | ||
| その重要性 従業員満足度に影響を与えます。支払いと給与明細の入手可能性の間の長い遅延は、サポートチケットを生成します。 取得元 Documents of Recordテーブル(HR_DOCUMENTS_OF_RECORD)またはPAY_PAYROLL_ACTIONS内の給与明細生成プロセスの完了をクエリします。 取得 給与明細PDF生成プロセス完了時にログ記録 イベントタイプ explicit | |||
| 給与計算実行承認済み | 給与計算ダッシュボード内での給与計算台帳またはフローの正式な承認。これは通常、検証レポートのレビュー後、銀行ファイル生成前に行われます。 | ||
| その重要性 管理職による承認を意味します。計算から承認までの時間は検証期間を表します。 取得元 定義された給与計算フローパターン内のステータス変更または特定のタスク完了についてPAY_REQ_FLOW_INSTANCESをクエリします。 取得 フローインスタンスのステータスが完了/承認済みに変更された際にログ記録 イベントタイプ explicit | |||
| 給与計算記録修正済み | 最初の給与計算実行後、最終化前に行われた要素入力または割り当てデータへの手動更新。このアクティビティは、エラーや例外を修正するために必要な手直し作業を示します。 | ||
| その重要性 プロセスの非効率性とデータ品質の問題を示します。このアクティビティを削減することは、First-Pass Payroll Accuracy Rateを改善するための鍵となります。 取得元 PAY_ELEMENT_ENTRIES_Fへの更新を特定することによって推測されます。その際、最終更新日が初期の給与計算実行日と前払い日との間であるものに注目します。 取得 要素エントリの更新タイムスタンプと給与計算実行タイムスタンプを比較 イベントタイプ inferred | |||
抽出ガイド
ステップ
データ交換へのアクセス: 「Human Capital Management Integration Specialist」ロールを持つユーザーとしてOracle HCM Cloudにログインします。「My Client Groups」>「Data Exchange」>「Extract Definitions」に移動します。
新規抽出の作成: 「+」アイコンをクリックして新しい抽出を作成します。名前を「ProcessMind_Payroll_Extract」とし、コンシューマーとして「Payroll」、カテゴリとして「HR Archive」を選択し、過去の給与計算アクションデータへのアクセスを確保します。
データグループの定義: ユーザーエンティティ
PAY_PAYROLL_REL_UE(給与計算関係)に基づいてルートデータグループを作成します。これにより、抽出が従業員の給与計算関係に紐付けられます。PAY_ACTION_INFORMATION_UE、PAY_ELEMENT_ENTRY_UE、およびHWM_MEASURE_DAY_V_UE(時間と労働用)の子データグループを作成します。抽出レコードの設定: データグループ内で、階層データをフラット化するレコードを定義します。各アクティビティタイプ(例: 「Time Card」イベントをフィルタリングするレコード、または「Run Results」のレコード)に対して特定のレコードを作成する必要があります。
FastFormulaまたはBIPによるSQLロジックの実装: 階層的な給与計算データを線形イベントログに変換する複雑さのため、最も堅牢なアプローチは「Extract Delivery Option」を使用してBI Publisherレポートを呼び出すことです。これにより、以下の「Query」セクションで提供されるSQLをデータモデルとして使用できます。これは、統合されたイベントログを作成するためのネイティブGUIフィルタリングよりも優れています。
BI Publisherデータモデルの作成: 「Tools」>「Reports and Analytics」>「Browse Catalog」に移動します。新しいデータモデルを作成します。以下のSQLクエリを貼り付けます。
bind_start_dateとbind_end_dateのパラメーターを定義します。抽出とBIPのリンク: 抽出定義の「Delivery」タブで、配信オプションを作成します。出力タイプとして「PDF」または「XML」を選択し(ProcessMindはCSVを推奨しますが、BIP出力は変換します)、前のステップで作成したBI Publisherレポートを選択します。
パラメーターの定義: 抽出実行ツリーで、開始日と終了日のパラメーターを追加し、BI Publisherクエリに動的に渡します。
検証と提出: 抽出定義を検証してエラーがないか確認します。「Submit Extract」をクリックします。パラメーター(例: 過去90日間)を入力します。
プロセスの監視: 「View Extract Results」に移動します。ステータスが「Succeeded」に変わるまで待ちます。
出力のダウンロード: 生成されたXML/CSVファイルをダウンロードします。開いて、構造に「PayrollRecord」、「ActivityName」、「EventTimestamp」などの必要な列が含まれていることを確認します。
ProcessMind用の形式設定: 出力がXMLの場合、ヘッダーが「Attributes to include」の要件と一致していることを確認し、フラットなCSVファイルに変換します。結果のファイルをProcessMindにアップロードします。
設定
- 抽出モード: 変更のみ vs. 完全抽出。初回ロードでは完全抽出を使用し、日次更新では最終更新日に基づいて「変更のみ」を設定します。
- 制度データグループ (LDG): 給与計算定義は法令によって異なるため、インスタンスが複数の国をサポートしている場合は、LDGでフィルタリングすることを強く推奨します。
- 日付範囲: プロセスマイニングで完全なサイクル時間を捕捉するために、
bind_start_dateとbind_end_dateを少なくとも3〜6ヶ月間カバーするように設定します。 - チャンクサイズ: 大量の給与計算(1万件以上の従業員)の場合、タイムアウトエラーを防ぐために、抽出定義のチャンクサイズを2000に設定します。
- 有効日付: 給与計算テーブルは日付有効です。クエリロジックは、レコードの正しい履歴バージョンが取得されるように、
effective_start_dateとeffective_end_dateを明示的に処理します。 - セキュリティ: 実行ユーザーは、分析対象となるすべての給与計算と部門の表示を許可するデータセキュリティプロファイルを持っている必要があります。
a クエリ例 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 ステップ
- Oracle BI Publisherにログイン: Oracle Cloud環境にアクセスし、Tools > Reports and Analyticsに移動します。Browse CatalogをクリックしてBI Publisherインターフェースを開きます。
- データモデルの作成: 新規(左上)をクリックし、データモデルを選択します。これはSQL抽出ロジックのコンテナとなります。
- SQLデータセットの作成: Diagramタブで、新規データセットアイコンをクリックし、SQL Queryを選択します。
- データソースの設定: データセットに名前を付け(例:
ProcessMind_Payroll_Extract)、データソースをApplicationDB_HCM(または特定のHCMアプリケーションデータベース接続)に設定します。タイプはStandard SQLのままにします。 - クエリの入力: 以下のQueryセクションで提供されている完全なSQLスクリプトをコピーし、SQL Queryテキストボックスに貼り付けます。Markdown形式を含めないでください。
- パラメーターの定義: クエリはバインド変数
:p_start_dateと:p_end_dateを使用します。データモデルのParametersタブで、これら2つのパラメーター(日付型)を作成し、抽出範囲をフィルタリングします(例:ppa.EFFECTIVE_DATEに基づきます)。 - データ構造の検証: OKをクリックします。データモデルエディター内のDataタブに切り替えます。サンプル日付(例:
2023-01-01から2023-03-31)を入力し、Viewをクリックします。出力にPayrollRecord、ActivityName、EventTimestampの行が含まれていることを確認します。 - データモデルの保存: モデルを共有フォルダー(例:
/Shared Folders/Custom/ProcessMining)に保存します。 - エクスポート用レポートの作成: Create Reportをクリックし、今保存したデータモデルを選択します。Report Wizardを使用して、すべての列を含むシンプルな表形式のレイアウトを作成します。「Show Grand Totals」のチェックを外します。
- CSVへのエクスポート: レポートビューアーでレポートを表示します。Actionsメニュー(歯車アイコン)> Export > Data > CSVをクリックします。
- 変換: CSVファイルを開きます。日付形式が自動的にISO 8601(
YYYY-MM-DD HH:MM:SS)に設定されていない場合は、その形式になっていることを確認します。SQLが正しく貼り付けられていれば、それ以上の整形は不要です。 - アップロード: 結果のCSVファイルをProcessMindにインポートし、データ要件で定義されているとおりに列をマッピングします。
設定
- データソース接続:
ApplicationDB_HCM、またはPAY_およびPER_スキーマへの読み取りアクセス権を持つ同等のJNDIデータソースを使用する必要があります。 - 日付範囲: 給与計算サイクル全体を捕捉するため、3~6ヶ月間の抽出期間を推奨します。この動的ロードを制御するには、
:p_start_dateおよび:p_end_dateパラメーターを使用します。 - 制度データグループ (LDG): クエリはデフォルトですべてのLDGを抽出します。複数の国で実行する場合は、データを分割するために
AND ppa.LEGISLATIVE_DATA_GROUP_ID = [Your_LDG_ID]フィルターを追加することを検討してください。 - パフォーマンス: クエリは大量のテーブル(
PAY_RUN_RESULTS、PAY_ASSIGNMENT_ACTIONS)にアクセスします。BI Publisherでのタイムアウトエラーを防ぐため、日付範囲を広すぎないよう(例:1年以上)注意してください。 - セキュリティ: レポートを実行するユーザーは、ターゲットの給与計算定義に対するデータアクセスセット権限が必要です。
a クエリ例 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