[{"data":1,"prerenderedAt":209},["ShallowReactive",2],{"article-eadapter-defaults-gap":3},{"id":4,"title":5,"author":6,"body":7,"category":191,"description":192,"extension":193,"featured":194,"image":195,"meta":196,"navigation":197,"path":198,"publishedAt":199,"readingTime":200,"seo":201,"stem":202,"tags":203,"videoUrl":207,"__hash__":208},"articles\u002Farticles\u002Feadapter-defaults-gap.md","API-Created CargoWise Jobs Skip the Defaults. Nobody Tells You.","Don Dappa",{"type":8,"value":9,"toc":185},"minimark",[10,14,22,27,52,59,63,66,155,165,168,171],[11,12,13],"p",{},"When an operator creates a shipment in the CargoWise UI, CW applies organisation- and UN\u002FLOCODE-based defaults as they type — transport mode, service type, charge codes. Jobs created via the eAdapter often do not inherit those defaults. The Inbound Service treats your XML as the source of truth: it does not run the UI's default-population logic.",[11,15,16,17,21],{},"This is a known architectural decision, not a bug: ",[18,19,20],"em",{},"the eAdapter assumes the sender is providing a complete, well-formed record."," API messages must be self-contained. The practical consequence: every serious integrator builds a \"shadow\" reference database of the defaults CW would have applied — with the drift risk that implies.",[23,24,26],"h2",{"id":25},"but-cw-doesnt-leave-your-input-alone-either","But CW doesn't leave your input alone either",[11,28,29,30,33,34,38,39,42,43,47,48,51],{},"\"No UI defaults\" does not mean no server-side rules. The sharpest example is party creation: the org code you send is just a ",[18,31,32],{},"seed",". Send ",[35,36,37],"code",{},"DAPPATAE"," and CW may assign ",[35,40,41],{},"DAPTESDXB1"," — and the creation response does ",[44,45,46],"strong",{},"not"," echo back the assigned code. Store your local code and every later sync fails with ",[35,49,50],{},"No match found for [Org. Code: DAPPATAE]",". The only way to learn the real code is to search CW by exact name afterwards.",[11,53,54,55,58],{},"The precise mental model: CW skips ",[18,56,57],{},"default population"," on API input, but still enforces certain server-side rules — code mapping among them. You own the defaults; CW still owns its master data.",[23,60,62],{"id":61},"the-defaults-engine-four-precedence-tiers","The defaults engine: four precedence tiers",[11,64,65],{},"The field recommendation is to build an opinionated \"defaults engine\" in middleware, maintained as configuration (not hardcode), treated as a first-class component. The design problem is precedence — when several rules could fill a field, which wins? Evaluate top-down; first answer wins:",[67,68,69,85],"table",{},[70,71,72],"thead",{},[73,74,75,79,82],"tr",{},[76,77,78],"th",{},"Tier",[76,80,81],{},"Rule",[76,83,84],{},"Production example",[86,87,88,100,123,137],"tbody",{},[73,89,90,94,97],{},[91,92,93],"td",{},"1 · Explicit",[91,95,96],{},"A value in the source data is never overridden",[91,98,99],{},"Operator chose a service level → send it",[73,101,102,105,108],{},[91,103,104],{},"2 · Derived",[91,106,107],{},"Compute from other fields in the message",[91,109,110,111,114,115,118,119,122],{},"Container mode: air → ",[35,112,113],{},"LSE","; ocean → ",[35,116,117],{},"FCL","\u002F",[35,120,121],{},"LCL"," by service type",[73,124,125,128,131],{},[91,126,127],{},"3 · Configured",[91,129,130],{},"Org\u002Fport-keyed config constants",[91,132,133,134],{},"Consol type: always ",[35,135,136],{},"AGT",[73,138,139,142,149],{},[91,140,141],{},"4 · Omit",[91,143,144,145,148],{},"Send ",[18,146,147],{},"nothing"," — let CW's job-template default win",[91,150,151,154],{},[35,152,153],{},"ServiceLevel"," omitted unless explicitly set",[11,156,157,158,161,162,164],{},"Tier 4 is the one integrators miss: ",[44,159,160],{},"omitting an element is itself a defaults decision."," Sending ",[35,163,153],{}," would stomp the defaults configured in CW's own job templates — so the mapper deliberately stays silent unless a human chose a value. Send to override; omit to delegate.",[11,166,167],{},"And sometimes no value beats any value: for air jobs, never fall back to a booking reference as the waybill number — an invalid AWB in CargoWise causes worse problems than a blank field.",[169,170],"hr",{},[11,172,173,179,180],{},[44,174,175,176],{},"Chapter 6 of ",[18,177,178],{},"eAdapter in Production"," builds the full engine — master-data sync with drift monitoring, the DOM-CWAF automation fee strategies, and CW's UTC date traps. ",[181,182,184],"a",{"href":183},"\u002Feadapter\u002Fproduction-ops?channel=article_defaults","Get Vol 2 →",{"title":186,"searchDepth":187,"depth":187,"links":188},"",2,[189,190],{"id":25,"depth":187,"text":26},{"id":61,"depth":187,"text":62},"technical","Jobs created via eAdapter do not inherit the org\u002FUNLOCODE defaults the CW UI applies. The defaults engine with four-tier precedence that closes the gap — including when NOT sending a field is the right move.","md",false,"\u002Fimages\u002Farticles\u002Feadapter-defaults-gap.webp",{},true,"\u002Farticles\u002Feadapter-defaults-gap","2026-09-02",5,{"title":5,"description":192},"articles\u002Feadapter-defaults-gap",[204,205,206],"CargoWise eAdapter","defaults engine","data quality",null,"iXV1S0HUiWKgEi7_QjxBLSUs9Z88tPQOFhyTeOXmRpI",1788800213420]