Security Notice
This document has been auto-published from the internal knowledge base. All passwords, API keys, tokens, and IP addresses have been redacted for security.
eAdaptor XML Integration — Specialist
Connection
- Endpoint:
https://jecprdservices.wisegrid.net/eAdaptor - n8n Credential: "EadaptorProdCredentials" (HTTP Basic Auth)
- Enterprise/Server/Company:
JEC/PRD/LAX - Protocol: SOAP 1.1 over HTTPS
Authentication — WS-Security
xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:edi="http://www.cargowise.com/Schemas/Communications/1.0">
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>eadaptor_user</wsse:Username>
<wsse:Password>eadaptor_password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<edi:SendStream>
<edi:message>{XML_PAYLOAD_HERE}</edi:message>
<edi:clientId>YOUR_CLIENT_ID</edi:clientId>
<edi:trackingId>{UUID}</edi:trackingId>
</edi:SendStream>
</soapenv:Body>
</soapenv:Envelope>XML Message Types
1. UniversalEvent (XUE) — Lightweight Milestone / Document Upload
Used by: AN Upload workflow (hJdFaSEsRZc1VtuF)
xml
<?xml version="1.0" encoding="utf-8"?>
<UniversalEvent xmlns="http://www.cargowise.com/Schemas/Universal/2011/11" version="1.1">
<Event>
<DataContext>
<DataTargetCollection>
<DataTarget>
<Type>ForwardingConsol | ForwardingShipment | CustomsDeclaration</Type>
<Key>{UniqueConsignRef or DeclarationReference}</Key>
</DataTarget>
</DataTargetCollection>
<EnterpriseID>JEC</EnterpriseID>
<ServerID>PRD</ServerID>
<Company>
<Code>LAX</Code>
</Company>
</DataContext>
<EventTime>{ISO 8601 timestamp}</EventTime>
<EventType>DDI</EventType>
<IsEstimate>false</IsEstimate>
<AttachedDocumentCollection>
<AttachedDocument>
<FileName>{filename.pdf}</FileName>
<ImageData>{base64 encoded file}</ImageData>
<Type>
<Code>ARN | RAN | CAN</Code>
</Type>
<IsPublished>true</IsPublished>
</AttachedDocument>
</AttachedDocumentCollection>
</Event>
</UniversalEvent>DataTarget Types
| Type | Maps to CW Table | Key Field |
|---|---|---|
ForwardingConsol | JobConsol (JK) | JK_UniqueConsignRef |
ForwardingShipment | JobShipment (JS) | JS_UniqueConsignRef |
CustomsDeclaration | JobDeclaration (JE) | JE_DeclarationReference |
Document Code Logic (AN Upload)
| Condition | Doc Code | Meaning |
|---|---|---|
| Target = CustomsDeclaration | ARN | Arrival Notice |
| Target has existing CAN | RAN | Replacement Arrival Notice |
| Target has no CAN | CAN | Container Arrival Notice |
2. UniversalShipment (XUS) — Full Shipment Record
Used for creating/updating complete shipment data with all parties, containers, transport legs, customs, and documents.
xml
<?xml version="1.0" encoding="utf-8"?>
<UniversalShipment xmlns="http://www.cargowise.com/Schemas/Universal/2011/11" version="1.1">
<Shipment>
<DataContext>
<DataTargetCollection>
<DataTarget>
<Type>ForwardingShipment</Type>
<Key>{JS_UniqueConsignRef}</Key>
</DataTarget>
</DataTargetCollection>
<EnterpriseID>JEC</EnterpriseID>
<ServerID>PRD</ServerID>
<Company><Code>LAX</Code></Company>
</DataContext>
<OrganizationAddressCollection>
<OrganizationAddress>
<AddressType>ConsigneeDocumentaryAddress</AddressType>
<OrganizationCode>{OH_Code}</OrganizationCode>
</OrganizationAddress>
</OrganizationAddressCollection>
<ContainerCollection>
<Container>
<ContainerNumber>{MSCU1234567}</ContainerNumber>
<ContainerType>40HC</ContainerType>
<SealNumber>{seal}</SealNumber>
</Container>
</ContainerCollection>
<TransportLegCollection>
<TransportLeg>
<VesselName>{vessel}</VesselName>
<VoyageFlightNo>{voyage}</VoyageFlightNo>
<PortOfLoading><Code>{CNSHA}</Code></PortOfLoading>
<PortOfDischarge><Code>{USLAX}</Code></PortOfDischarge>
<ETD>{ISO date}</ETD>
<ETA>{ISO date}</ETA>
<TransportMode>SEA</TransportMode>
</TransportLeg>
</TransportLegCollection>
</Shipment>
</UniversalShipment>3. NativeXml — Raw Database Queries
For complex queries not covered by Universal schemas. Essentially SQL-like access via XML.
xml
<NativeXml>
<Native>
<Body>
<Command>SELECT OH_Code, OH_FullName FROM OrgHeader WHERE OH_Code = 'JCSALELAX'</Command>
</Body>
</Native>
</NativeXml>Common Milestone/Event Codes
| Code | Meaning |
|---|---|
DDI | Document Delivery Instruction |
DEP | Departed |
ARR | Arrived |
DEL | Delivered |
TLR | Telex Release |
CUSTCLRD | Customs Cleared |
LOADED | Loaded on vessel |
DISCHARGED | Discharged from vessel |
GATEDIN | Gate In at terminal |
GATEDOUT | Gate Out from terminal |
BOOKED | Booking confirmed |
ONBOARD | On board vessel |
TRANSHIP | Transhipment |
eAdaptor Response Parsing
Success Indicator
xml
<Status>PRS</Status>Extract ProcessingLog element for confirmation details.
Common Errors
| Error | Cause | Fix |
|---|---|---|
| Auth failure | Wrong credentials or WS-Security format | Verify Registry credentials |
| XML validation | Invalid structure or missing required fields | Validate against XSD, check namespaces |
| Key not found | TargetKey doesn't match any CW record | Run BL match query first (see cargowise-schema.md) |
| Duplicate detection | Same document already uploaded | Check JobRequiredDocument.EQ_DocType before upload |
n8n Integration Pattern
HTTP Request Node Setup
- Method: POST
- URL:
https://jecprdservices.wisegrid.net/eAdaptor - Content-Type:
text/xml; charset=utf-8 - SOAPAction:
http://www.cargowise.com/Schemas/Communications/1.0/SendStream - Body: Full SOAP envelope with WS-Security header
Code Node — Build XML
javascript
// In n8n Code node before HTTP Request
const targetType = $json.TargetType; // from BL match query
const targetKey = $json.TargetKey;
const base64File = $json.fileBase64;
const filename = $json.filename;
const hasCAN = $json.HasCAN;
// Document code logic
let docCode;
if (targetType === 'CustomsDeclaration') {
docCode = 'ARN';
} else if (hasCAN) {
docCode = 'RAN';
} else {
docCode = 'CAN';
}
const xml = `<?xml version="1.0" encoding="utf-8"?>
<UniversalEvent xmlns="http://www.cargowise.com/Schemas/Universal/2011/11" version="1.1">
<Event>
<DataContext>
<DataTargetCollection>
<DataTarget>
<Type>${targetType}</Type>
<Key>${targetKey}</Key>
</DataTarget>
</DataTargetCollection>
<EnterpriseID>JEC</EnterpriseID>
<ServerID>PRD</ServerID>
<Company><Code>LAX</Code></Company>
</DataContext>
<EventTime>${new Date().toISOString()}</EventTime>
<EventType>DDI</EventType>
<IsEstimate>false</IsEstimate>
<AttachedDocumentCollection>
<AttachedDocument>
<FileName>${filename}</FileName>
<ImageData>${base64File}</ImageData>
<Type><Code>${docCode}</Code></Type>
<IsPublished>true</IsPublished>
</AttachedDocument>
</AttachedDocumentCollection>
</Event>
</UniversalEvent>`;
return { xml, docCode, targetType, targetKey };AI Parser Integration (Pre-eAdaptor Step)
- API:
udm.api.junctionnet.cloud - Auth: AWS Cognito (user:
wsi, pass:Test-1234!, ClientId:6cgkve34vmu2nv0f1rh1f0c9qi) - Flow: Upload PDF to S3 → Trigger AI parsing → Poll results (10s, max 2 min) → Get BL/vessel/voyage → Run CW match query → Build XML → Send to eAdaptor
Outbound eAdaptor (CW → External)
CW can push events outward via Workflow Templates:
- Process Type:
FWD(Forwarding),CUS(Customs),WOU(Warehouse) - Action:
XUS(full shipment) orXUE(event only) - Trigger: Milestone completion → sends to configured endpoint
- Recipient: Must be
ORP(Organization Proxy) - Monitor: Maintain → EDI Messaging → EDI Interchange
Port Codes (UN/LOCODE) — Common
| Code | Port |
|---|---|
USLAX | Los Angeles |
USLGB | Long Beach |
MXZLO | Manzanillo |
MXLZC | Lazaro Cardenas |
MXVER | Veracruz |
MXATM | Altamira |
CNSHA | Shanghai |
CNNGB | Ningbo |
CNYTN | Yantian |
KRPUS | Busan |
JPYOK | Yokohama |
TWKHH | Kaohsiung |
Workflows Using eAdaptor
| Workflow | ID | Status | Purpose |
|---|---|---|---|
| AN Upload | hJdFaSEsRZc1VtuF | ACTIVE | PDF → AI Parse → CW Match → eAdaptor upload |
| AP Upload | KmCdpSqMghk1yNqg | Inactive | AP invoice upload to CW |
| AN Audit Orchestrator | AsL9OZSRkD7calhd | Inactive | 6 sub-workflow audit system |
| AP Invoice Processor | YYUjYczdRH8kIfAG | Inactive | PDF → AI extract → CW match → exception check |