Silent failure modes
Some things the platform does are correct, deliberate, and completely invisible until you go looking. They produce no failed task, no red row and no log line — the run is green and the data is not there.
They are not defects, which is precisely why they are easy to miss: nothing is going to tell you. Each one below has a shape, a reason and a check.
Troubleshooting is what to do when something reports a failure. This page is for when nothing does.
1. A missing key mapping stops the model load
What happens. Every mapping group must contain at least one business key mapping and one attribute mapping. If the business key mapping is missing, DWA generates no SQL, and no data loads.
Why it is silent. There is nothing to fail. No SQL was generated, so no task ran, so no task failed. The Loading Tasks view has nothing to show, and a "no failures" metric reads zero — correctly.
What to check. The Mappings page flags an unmapped business key and offers to map it on the spot, so the fastest check is to open the mapping group and look. Per load type:
| Load type | What it requires |
|---|---|
| Object load | A complete key mapping |
| Attribute load | A key mapping plus at least one attribute mapping |
| Relationship load | Two complete keys, from the same source, in the same mapping group |
All mappings must sit within the same mapping group, which also shares the source file, the filter conditions and the sort orders.
2. Sorting is ignored unless the sort columns are also model attributes
What happens. Sorting is what lets a load keep only the latest record for a business key when the source carries several versions. It works only if the sorting columns are also attributes on the target model object.
Why it is silent. A sort order set on a mapping whose column is not in the target model is accepted, saved and then has nothing to act on. The load runs, completes and reports success — it just keeps an arbitrary version rather than the latest one.
What to check. For every attribute you sort on, confirm there is a matching attribute on the target model object. Add it there first, then set the sort order and direction per attribute in Mapping Properties.
See Sort order and sort direction.
3. An incomplete business key builds a relationship against a key that does not exist
What happens. When one source file populates the complete business keys of two related model objects within the same mapping group, DWA generates and runs the relationship load by itself. The condition is that the complete key is populated for both objects.
If it is not, the load does not stop. It creates the relationship anyway — against a false business key. The row exists, the foreign key exists, and it points at nothing real.
Why it is silent. The load succeeds. The relationship table has rows in it. What is missing is the related data downstream, which turns up as an empty join a long way from the cause.
What to check. For each relationship load, confirm every part of both composite keys is mapped, in the right businessKeyOrder. A partially mapped composite key is the usual culprit.
4. A task that completes, and returns nothing
What happens. An export runs to completion and returns zero rows. A source that stopped delivering, a whereClause whose window resolved to nothing, credentials that authenticate but no longer authorise.
Why it is silent. Zero rows is a legitimate result. The task is green.
What to check. The export row and file counts on INGEST Tasks, not the task status. And the checklist views — every console page carries one at the bottom, comparing configured against executed. Work that never started shows up there and nowhere else.
The common thread
Three of the four are a metadata gap rather than a runtime error, and the fourth is a legitimate result that happens to be empty. None of them is visible in a failure count, because in none of them did anything fail.
The general defence is the same in each case: check configured against executed, not failed against succeeded. That comparison is what the checklist views exist for, and it is the part of the daily pass that catches what the rest of the pass cannot.