You're loading assignment data through Oracle HCM Data Loader (HDL) and hit this error mid-run:
Object: WorkerAssignment | Line: [N]
The process aborts, your assignment records don't commit, and now you need to figure out which of several possible root causes is actually the problem. This guide walks through every cause in priority order so you can fix it in one pass.
How HDL Resolves Assignment Records
When HDL processes a WorkerAssignment object, it needs to link the assignment to a parent Worker. It does this by looking up the worker via one of three identifier paths:
- PersonId โ Oracle's internal numeric ID for the person
- PersonNumber โ The human-readable employee number
- SourceSystemId + SourceSystemOwner โ Your external system's identifier (e.g., the ID from your HRIS)
If none of these resolve to an existing, active worker record, you get "Worker assignment not found." The error message is the same regardless of which identifier failed โ which is why it's so frustrating to debug.
Root Cause #1: PersonId or PersonNumber Mismatch
The most common cause. Your .dat file contains a PersonId or PersonNumber that doesn't exist in Oracle HCM, or was typed incorrectly.
Validate with this SQL before loading:
If this returns no rows, the worker either doesn't exist, isn't active as of today, or the person number is wrong. Check your source data.
Root Cause #2: SourceSystemId Mismatch
If you originally loaded workers using SourceSystemId and SourceSystemOwner, you must use the same values in your assignment .dat file. A common mistake is switching from SourceSystemId to PersonId between loads โ HDL can't automatically cross-reference them.
Verify the SourceSystemId mapping:
If no row is returned, the SourceSystemId was never registered, or was registered under a different SourceSystemOwner. You'll need to either use the PersonId directly, or re-register the source mapping.
Root Cause #3: Loading Order โ Assignment Before Worker
HDL processes objects within a single load file in sequence. If your Worker record and Assignment record are in the same HDL .zip file but your Assignment rows appear before the Worker rows in the file ordering, the assignment will fail validation because the parent worker hasn't been committed yet.
01_Worker.dat02_WorkerAssignment.dat
HDL processes .dat files in the order they appear in the zip. Numeric prefixes guarantee correct sequencing.
Root Cause #4: EffectiveStartDate Outside Worker's Date Range
Even if the PersonId is correct, if your assignment's EffectiveStartDate falls before the worker's earliest effective date or after their termination date, Oracle will reject the assignment as "not found" โ because no valid worker record exists at that point in time.
Your assignment's EffectiveStartDate must fall within this window. If the worker was terminated before your assignment date, you'll need to either correct the date or rehire the worker first.
Root Cause #5: Wrong LegalEntityId or BusinessUnitId
A less obvious cause: the LegalEntityId or BusinessUnitId in your assignment record doesn't exist or isn't active. Oracle validates these reference data IDs during assignment creation, and the error message is often misleading โ it says "assignment not found" when the actual issue is an invalid org reference.
Diagnostic Checklist
Work through this table in order. The first failed check is usually your root cause:
| # | Check | How to Verify | Fix |
|---|---|---|---|
| 1 | Worker exists in Oracle HCM | Query PER_ALL_PEOPLE_F by PersonNumber | Correct PersonNumber or load worker first |
| 2 | PersonId or SourceSystemId matches exactly | Query HRC_SOURCE_SYSTEM_OWNER | Use consistent identifier type across all .dat files |
| 3 | Load file ordering is correct | Inspect .zip file contents | Rename files with numeric prefixes (01_, 02_) |
| 4 | EffectiveStartDate within worker date range | Query MIN/MAX effective dates from PER_ALL_PEOPLE_F | Correct the assignment date or rehire the worker |
| 5 | LegalEntityId and BusinessUnitId are valid | Query HR_ORGANIZATION_UNITS_F_TL | Correct org IDs to match active Oracle references |
| 6 | ActionCode + ActionReasonCode combination is valid | Query HR_LOOKUPS for LOOKUP_TYPE = 'EMP_ACTION' | Use a valid ActionCode/ActionReasonCode pair for the assignment type |
Sample HDL WorkerAssignment .dat Structure
Here's a minimal, correct WorkerAssignment .dat file that avoids the most common errors:
PersonId is left blank and SourceSystemId is used instead. Pick one identifier type and leave the other blank โ don't try to supply both.
HDL Error Log Locations
To find the exact error for a failed load:
- Go to HCM > Data Exchange > Import and Load Data
- Find your load in the list โ click the load set name
- Click View Error Report in the Actions menu
- The error log will show the exact line number and error code for each failed record
The detailed error report often includes the actual identifier Oracle tried to look up, which makes it much easier to spot the mismatch versus checking your .dat file manually.
Need to Look Up Oracle HCM Table Structures?
Search our database of 35,000+ Oracle Fusion Cloud tables. Find exact column names, data types, and relationships for PER_ALL_PEOPLE_F, PER_ALL_ASSIGNMENTS_M, and every HCM table in the schema.
Search Oracle HCM Tables โSummary
The HDL "Worker assignment not found" error always traces back to one of six root causes, ranked by frequency:
- Wrong PersonId or PersonNumber โ validate against PER_ALL_PEOPLE_F
- SourceSystemId mismatch โ verify via HRC_SOURCE_SYSTEM_OWNER
- Wrong file load order โ rename files with numeric prefixes
- EffectiveStartDate out of range โ check worker's date window
- Invalid LegalEntityId or BusinessUnitId โ validate org IDs
- Invalid ActionCode combination โ check HR_LOOKUPS
Run the validation SQL queries before submitting a load, and you'll catch most of these errors before HDL ever processes the file.