UKG · Arazzo Workflow

UKG Pro WFM Daily Attendance Reconcile

Version 1.0.0

Compare a day's scheduled shifts to actual punches for an employee.

1 workflow 1 source API 1 provider
View Spec View on GitHub Human Capital ManagementHCMWorkforce ManagementHRPayrollTime and AttendanceBenefitsSchedulingArazzoWorkflows

Provider

ukg

Workflows

daily-attendance-reconcile
Pull a day's shifts and punches and branch on whether punches exist.
Retrieves the employee's scheduled shifts for the day, retrieves their actual punches for the same day, and branches on whether any punches were recorded to flag a potential no-show.
2 steps inputs: date, employeeId outputs: firstPunchTime, shiftId, shiftStatus
1
getScheduledShifts
getEmployeeShifts
Retrieve the employee's scheduled shifts for the day to establish what was expected.
2
getActualPunches
getEmployeePunches
Retrieve the actual clock punches for the same day and branch on whether any punches were recorded against the scheduled shift.

Source API Descriptions

Arazzo Workflow Specification

ukg-daily-attendance-reconcile-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: UKG Pro WFM Daily Attendance Reconcile
  summary: Compare a day's scheduled shifts to actual punches for an employee.
  description: >-
    Reconciles an employee's scheduled shifts against their actual clock punches
    for a single day in the UKG Pro Workforce Management API. The workflow pulls
    the scheduled shifts for the day, retrieves the actual punches for the same
    day, and branches on whether any punches were recorded so an attendance
    process can flag a no-show against a scheduled shift. Every step spells out
    its request inline so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: ukgProWfmApi
  url: ../openapi/ukg-pro-wfm-openapi.yml
  type: openapi
workflows:
- workflowId: daily-attendance-reconcile
  summary: Pull a day's shifts and punches and branch on whether punches exist.
  description: >-
    Retrieves the employee's scheduled shifts for the day, retrieves their
    actual punches for the same day, and branches on whether any punches were
    recorded to flag a potential no-show.
  inputs:
    type: object
    required:
    - employeeId
    - date
    properties:
      employeeId:
        type: string
        description: The employee to reconcile attendance for (e.g. EMP001).
      date:
        type: string
        description: The calendar day to reconcile (YYYY-MM-DD).
  steps:
  - stepId: getScheduledShifts
    description: >-
      Retrieve the employee's scheduled shifts for the day to establish what was
      expected.
    operationId: getEmployeeShifts
    parameters:
    - name: employeeId
      in: path
      value: $inputs.employeeId
    - name: startDate
      in: query
      value: $inputs.date
    - name: endDate
      in: query
      value: $inputs.date
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      shiftId: $response.body#/0/shiftId
      shiftStatus: $response.body#/0/status
      shiftHours: $response.body#/0/totalHours
  - stepId: getActualPunches
    description: >-
      Retrieve the actual clock punches for the same day and branch on whether
      any punches were recorded against the scheduled shift.
    operationId: getEmployeePunches
    parameters:
    - name: employeeId
      in: path
      value: $inputs.employeeId
    - name: startDate
      in: query
      value: $inputs.date
    - name: endDate
      in: query
      value: $inputs.date
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      firstPunchId: $response.body#/0/punchId
      firstPunchTime: $response.body#/0/punchTime
    onSuccess:
    - name: attended
      type: end
      criteria:
      - context: $response.body
        condition: $.length > 0
        type: jsonpath
    - name: noShow
      type: end
      criteria:
      - context: $response.body
        condition: $.length == 0
        type: jsonpath
  outputs:
    shiftId: $steps.getScheduledShifts.outputs.shiftId
    shiftStatus: $steps.getScheduledShifts.outputs.shiftStatus
    firstPunchTime: $steps.getActualPunches.outputs.firstPunchTime