📘Release History
V2.7
Created: 2026-08-07
Fixed missing overnight shift hours in incremental syncs by padding the retrospective time window by an extra day
V2.6
Created: 2026-08-06
feat: ingest job descriptions via a new jobs stream (CS906) UKG Pro carries only the job code on timecard data, where Kronos carried the full description. This adds a jobs stream materialising VW_JOBS, the Generic job catalogue that decodes a code into a description (RN -> REGISTERED NURSE), for the warehouse to join against timecard rows.
src/schemas.py: jobs_schema(), 11 fields mirroring the API's native camelCase. Verified live to declare exactly the field set the API returns.
src/plugin.py: _fetch_jobs performs one unpaginated request for the whole catalogue (668 jobs in Calvary's tenant) and emits the current revision of every job, retired ones included, so historical timecards still resolve. FULL_REFRESH only with primary key
id— a small reference table does not justify the watermark machinery of ADRs 0002-0005.A permission denial (403 WFP-90005) is tolerated with a warning and zero rows rather than raised: a raising worker sets the shared cancellation token and would abort every other in-flight stream. Jobs access is granted per tenant, so production can legitimately deny while UAT succeeds. Detection is on the structured errorCode, not a body substring; an unrecognised 403 still raises.
A 401 is recovered in place, since a single-request fetch cannot benefit from the chunk-boundary refresh (cf. ADR 0009).
sync_inbound now skips employee enumeration when no enabled stream needs it, so a hyperfind failure cannot stop static reference data from refreshing.
ADR 0008 records the decision and the rejected alternative: the description is also reachable for free via CORE_GENERICJOB_DESCRIPTION on the existing timecard feed, but that is a projection of the fact table and structurally cannot describe a job nobody has worked.
CONTEXT.md: Generic job, Job revision, Org job, and a note that the segment feed carries a bare job code while the transaction and workload feeds carry full org paths, so they require different joins. 15 tests; full suite 207 passed / 17 skipped.
Added a new 'jobs' stream which ingests the UKG Pro job catalogue via full refresh
V2.5
Created: 2026-08-04
Fixed an issue where timecard_spans and schedules experienced data loss due to token expiry
V2.4
Created: 2026-07-23
Improved the workload_planner stream fetch pattern with early stopping logic
Added additional checks for sync cancellation so that cancelled runs respond more immediately
V2.3
Created: 2026-07-15
Flattened the timecards and timecard_spans stream by expanding the JSON-schema
V2.2
Created: 2026-07-13
Timecards: flattened costCenter and labor-category fields into dedicated columns (e.g. costCenterQualifier, awardClassificationQualifier, allowanceTriggerQualifier); the raw costCenter/laborCategories JSON columns are removed.
V2.1
Created: 2026-07-06
Records are now enqueued with each page of results, and checkpointed after each date chunk
Fixed column issues with schedule streams
Fixed some pay code data issues with the timecard data
Improved sync performance and incremental logic
V2.0
Created: 2026-06-10
Flattened timecards to one row per processedSegments entry
V1.5
Created: 2026-06-03
timecard_spans now uses the multi_read API
Adjusted batching
V1.4
Created: 2026-05-28
Fix schedule field mappings, employee enrichment, and observability
V1.3
Created: 2026-05-21
Fix schedule segment field names to match UKG API (orgJobRef, workruleRef, costCenter.costCenter.qualifier, laborCategories.laborString)
Compute HOURS from segment start/end datetimes when API omits hours field
Add some missing fields to employee and timecard_spans
Restored PAYCODENAME/PAYCODETYPE to schedules schema
Add INFO-level per-chunk/per-batch logs to timecards and timecard_spans
V1.2
Created: 2026-05-07
Added date/datetime format annotations to JSON schemas
Improved error messages when performing connection tests
Added help text for OAuth audience
V1.1
Created: 2026-05-04
Exposed rest_batch_size as inbound tuning parameter
Sync reliability improvements: retry, token refresh, date chunking, workload planner
V1.0
Created: 2026-05-01
Initial plugin release
Last updated