{
  "test_id": "ORCL.HCM.PAYROLL.RETRO",
  "scenario_name": "Retro Pay",
  "application": "Oracle Fusion Cloud",
  "product": "HCM",
  "module": "Payroll",
  "process": "Retro Pay",
  "business_flow": "Hire-to-Pay",
  "scenario_type": "Positive / Functional",
  "priority": "High",
  "automation_status": "SyntraFlow Ready",
  "library": "Syntra Standard",
  "canonical_url": "https://www.syntraflow.cloud/oracle-erp-testing-tool/test-library/hcm/payroll/retro-pay/",
  "objective": {
    "intro": "The objective of this test is to validate retroactive payroll processing in Oracle Fusion HCM Payroll when a prior-period, payroll-impacting worker or element change is identified after payroll has already been run, and to confirm that the resulting retro adjustment correctly reconciles prior and current payroll amounts.",
    "confirms": [
      "a retroactive event arising from a prior-period change is correctly identified by Oracle",
      "the retro calculation correctly reflects the original and revised element values",
      "the retro adjustment amount reconciles exactly to the difference between the original and revised values — Retro Adjustment = Revised Value − Original Value",
      "no duplicate retro adjustment amount is ever generated for the same retro event",
      "the current payroll period correctly includes the retro adjustment",
      "Oracle correctly enforces validation when data errors, configuration errors or security restrictions are introduced (DATA_ERROR, CONFIGURATION_ERROR, SECURITY_ERROR, EXPECTED_VALIDATION)"
    ],
    "scope_note": "This scenario covers retroactive payroll processing triggered by a prior-period, payroll-impacting change in Oracle Fusion HCM Payroll TEST/UAT environments. It does not cover the standard batch Payroll Calculation itself, which is covered by the separate Payroll Calculation scenario, or the QuickPay off-cycle process, which is covered by its own scenario in the same Payroll cluster."
  },
  "preconditions": [
    "The target worker has a payroll relationship with a prior payroll period that has already been processed.",
    "A payroll-impacting element or worker change has been entered with an effective date within that prior period.",
    "Retro-eligible elements and retro components are configured for the affected element type.",
    "The current payroll period is open and available to receive the retro adjustment.",
    "The test user has appropriate payroll access to review and process retroactive changes."
  ],
  "test_data": [
    {
      "field": "Worker",
      "example": "${WORKER}"
    },
    {
      "field": "Payroll",
      "example": "${PAYROLL}"
    },
    {
      "field": "Retro Event Date",
      "example": "${RETRO_EVENT_DATE}"
    },
    {
      "field": "Original Element Value",
      "example": "${ORIGINAL_ELEMENT_VALUE}"
    },
    {
      "field": "Revised Element Value",
      "example": "${REVISED_ELEMENT_VALUE}"
    },
    {
      "field": "Retro Adjustment Amount",
      "example": "${RETRO_ADJUSTMENT_AMOUNT}"
    },
    {
      "field": "Current Payroll Period",
      "example": "${CURRENT_PAYROLL_PERIOD}"
    },
    {
      "field": "Effective Date",
      "example": "${EFFECTIVE_DATE}"
    },
    {
      "field": "Retro Reason",
      "example": "${RETRO_REASON}"
    }
  ],
  "business_steps": [
    {
      "step_number": 1,
      "step_name": "Sign In to Oracle Fusion",
      "action": "Sign in to Oracle Fusion Cloud with a user account that has Payroll access.",
      "test_data": "",
      "expected_result": "The Oracle Fusion Cloud home page loads successfully for the authenticated user.",
      "validation_type": "action"
    },
    {
      "step_number": 2,
      "step_name": "Navigate to Payroll",
      "action": "Navigate to the Payroll work area used for retroactive processing.",
      "test_data": "${PAYROLL}",
      "expected_result": "The Payroll work area opens successfully for the correct payroll.",
      "validation_type": "action"
    },
    {
      "step_number": 3,
      "step_name": "Apply or Identify the Retroactive Change",
      "action": "Apply, or locate an already-entered, payroll-impacting worker or element change with an effective date in a prior processed period.",
      "test_data": "${RETRO_EVENT_DATE} / ${ORIGINAL_ELEMENT_VALUE} / ${REVISED_ELEMENT_VALUE}",
      "expected_result": "The retroactive change is accepted and recorded against the correct effective date.",
      "validation_type": "action"
    },
    {
      "step_number": 4,
      "step_name": "Verify the Retro Event Is Detected",
      "action": "Confirm that Oracle detects the prior-period change as a retro event requiring recalculation.",
      "test_data": "",
      "expected_result": "The retro event is correctly identified and flagged for retro processing.",
      "validation_type": "business_assertion",
      "note": "This is a primary business assertion — a change being accepted does not by itself confirm it was correctly recognized as a retro-triggering event."
    },
    {
      "step_number": 5,
      "step_name": "Review the Calculated Adjustment",
      "action": "Review the retro calculation results, including the original value, revised value and calculated adjustment amount.",
      "test_data": "${RETRO_ADJUSTMENT_AMOUNT}",
      "expected_result": "Oracle produces a calculated retro adjustment reflecting the prior-period change.",
      "validation_type": "action"
    },
    {
      "step_number": 6,
      "step_name": "Verify the Adjustment Reconciles to the Value Difference",
      "action": "Confirm that the retro adjustment amount reconciles exactly to the difference between the original and revised element values (Retro Adjustment = Revised Value − Original Value).",
      "test_data": "${ORIGINAL_ELEMENT_VALUE} / ${REVISED_ELEMENT_VALUE} / ${RETRO_ADJUSTMENT_AMOUNT}",
      "expected_result": "The retro adjustment amount matches the expected difference between the original and revised values.",
      "validation_type": "business_assertion",
      "note": "This is the central business assertion for Retro Pay — reconciliation, not merely the presence of an adjustment figure, confirms the retro calculation is correct."
    },
    {
      "step_number": 7,
      "step_name": "Process the Current Payroll With the Retro Adjustment",
      "action": "Run or continue the current payroll period so that it includes the retro adjustment, using the current payroll period reference.",
      "test_data": "${CURRENT_PAYROLL_PERIOD} / ${EFFECTIVE_DATE} / ${RETRO_REASON}",
      "expected_result": "The current payroll processes successfully and includes the retro adjustment for the worker.",
      "validation_type": "action"
    },
    {
      "step_number": 8,
      "step_name": "Confirm No Duplicate Adjustment Was Generated",
      "action": "Verify that only a single retro adjustment amount exists for this retro event across payroll runs, with no duplicate adjustment generated.",
      "test_data": "",
      "expected_result": "No duplicate retro amount is present for the same retro event; the adjustment appears exactly once.",
      "validation_type": "business_assertion",
      "note": "This isolation-style check protects against a retro event being recalculated and reapplied across multiple payroll runs for the same underlying change."
    }
  ],
  "expected_results": [
    "The retroactive change is correctly recorded against the prior-period effective date.",
    "The retro event is correctly identified and flagged for retro processing.",
    "The retro calculation correctly reflects the original and revised element values.",
    "The retro adjustment amount reconciles exactly to the difference between the original and revised values.",
    "The current payroll period correctly includes the retro adjustment.",
    "No duplicate retro adjustment amount is generated for the same retro event.",
    "The retro status correctly reflects a completed, reconciled adjustment."
  ],
  "validation_checkpoints": [
    "Retro event correctly identified.",
    "Adjustment amount correctly reconciles to the value difference.",
    "Prior and current values reconcile.",
    "Current payroll reflects the adjustment.",
    "No duplicate retro amount generated for the same event.",
    "Retro status correct."
  ]
}
