EDI Tasks
Overview
This document describes the tasks available for parsing, creating, and managing EDI (Electronic Data Interchange) files within the CargoXplorer TMS System. These tasks support various EDI transaction sets including 204, 214, 216, 856, 861, and 990.
YAML Structure
EDI tasks follow a consistent structure that allows for flexible configuration of EDI processing operations.
Attribute Description
EDI/Parse
The EDI/Parse task converts raw EDI data into structured JSON format for further processing.
task: "EDI/Parse@1"
name: parseEDI
inputs:
ediData: "ISA*00* *00* *ZZ*ABCDEFGH *ZZ*123456789 *210101*1030*U*00401*000000001*0*P*>\nGS*SH*ABCDEFGH*123456789*20210101*1030*1*X*004010\nST*856*0001\n..."
transactionSet: "856" # Optional - Specific transaction set to parse
validateSchema: true # Optional - Validate against EDI schema
preserveWhitespace: false # Optional - Preserve whitespace in element data
outputs:
- name: "parsedData"
mapping: "result"
- name: "transactionType"
mapping: "transactionType"
Attribute Details:
Input Parameter | Description |
---|---|
ediData | Raw EDI data string to be parsed |
transactionSet | Specific EDI transaction set to parse (e.g., 856, 214) |
validateSchema | Whether to validate the EDI data against its schema |
preserveWhitespace | Whether to preserve whitespace in element data |
Output:
{
"parsedData": {
"interchangeHeader": {...},
"functionalGroups": [...],
"segments": [...],
"transactionSets": [...]
},
"transactionType": "856"
}
EDI/Generate
The EDI/Generate task creates EDI files from structured data.
task: "EDI/Generate@1"
name: generateEDI
inputs:
data:
{
"header":
{
"senderId": "ABCDEFGH",
"receiverId": "123456789",
"controlNumber": "000000001",
},
"shipment": { "billOfLadingNumber": "BOL12345", "shipDate": "20230515" },
}
transactionSet: "856" # Required - Transaction set to generate
template: "standard" # Optional - Template name to use
options:
segmentTerminator: "~"
elementSeparator: "*"
subElementSeparator: ">"
lineEnding: "\n"
outputs:
- name: "ediString"
mapping: "ediString"
- name: "controlNumbers"
mapping: "controlNumbers"
Attribute Details:
Input Parameter | Description |
---|---|
data | Structured data to convert to EDI format |
transactionSet | EDI transaction set to generate |
template | Named template to use for generation |
options.segmentTerminator | Character used to terminate segments |
options.elementSeparator | Character used to separate elements |
options.subElementSeparator | Character used to separate sub-elements |
options.lineEnding | Line ending character sequence |
Output:
{
"ediString": "ISA*00* *00* *ZZ*ABCDEFGH *ZZ*123456789 *230515*1030*U*00401*000000001*0*P*>\nGS*SH*ABCDEFGH*123456789*20230515*1030*1*X*004010\nST*856*0001\n...",
"controlNumbers": {
"interchangeControlNumber": "000000001",
"groupControlNumber": "1",
"transactionSetControlNumber": "0001"
}
}
EDI/Validate
The EDI/Validate task validates EDI data against standard schemas or custom validation rules.
task: "EDI/Validate@1"
name: validateEDI
inputs:
ediData: "ISA*00* *00* *ZZ*ABCDEFGH *ZZ*123456789 *210101*1030*U*00401*000000001*0*P*>\nGS*SH*ABCDEFGH*123456789*20210101*1030*1*X*004010\nST*856*0001\n..."
transactionSet: "856" # Required - Transaction set to validate
customRules:
[
{
"segment": "REF",
"element": "REF01",
"rule": "required",
"message": "Reference qualifier is required",
},
]
strictMode: true # Optional - Fail on any validation error
outputs:
- name: "isValid"
mapping: "isValid"
- name: "validationErrors"
mapping: "errors"
Attribute Details:
Input Parameter | Description |
---|---|
ediData | Raw EDI data string to validate |
transactionSet | EDI transaction set to validate against |
customRules | Array of custom validation rules |
strictMode | Whether to fail on any validation error |
Output:
{
"isValid": false,
"validationErrors": [
{
"segment": "REF",
"position": 12,
"element": "REF01",
"message": "Reference qualifier is required",
"severity": "error"
}
]
}
EDI/Transform
The EDI/Transform task converts between different EDI formats or maps EDI data to custom formats.
task: "EDI/Transform@1"
name: transformEDI
inputs:
sourceData:
{
"interchangeHeader": { ... },
"functionalGroups": [...],
"segments": [...],
"transactionSets": [...],
}
sourceFormat: "X12" # Required - Source EDI format
targetFormat: "EDIFACT" # Required - Target EDI format
mappingTemplate: "x12ToEdifact856" # Optional - Named mapping template
customMapping:
{
"sourceField": "targetField",
"sourceSegment.element": "targetSegment.element",
}
outputs:
- name: "transformedData"
mapping: "result"
Attribute Details:
Input Parameter | Description |
---|---|
sourceData | Source EDI data (parsed or raw) |
sourceFormat | Source EDI format (X12, EDIFACT, etc.) |
targetFormat | Target EDI format |
mappingTemplate | Named template for transformation |
customMapping | Custom field mapping rules |
Output:
{
"transformedData": {
"raw": "UNB+UNOA:1+SENDER+RECEIVER+230515:1030+1+++++1'\nUNH+1+DESADV:D:96A:UN'\n...",
"structured": {
"interchangeHeader": {...},
"messages": [...]
}
}
}
EDI/ExtractData
The EDI/ExtractData task extracts specific data elements from EDI documents.
task: "EDI/ExtractData@1"
name: extractEDIData
inputs:
ediData: "ISA*00* *00* *ZZ*ABCDEFGH *ZZ*123456789 *210101*1030*U*00401*000000001*0*P*>\nGS*SH*ABCDEFGH*123456789*20210101*1030*1*X*004010\nST*856*0001\n..."
extractionRules:
[
{ "path": "ST-856/HL-S/TD1/TD101", "name": "packagingCode" },
{ "path": "ST-856/HL-S/TD1/TD102", "name": "ladingQuantity" },
{
"path": "ST-856/HL-S/REF[REF01=BM]/REF02",
"name": "billOfLadingNumber",
},
]
outputs:
- name: "extractedData"
mapping: "data"
Attribute Details:
Input Parameter | Description |
---|---|
ediData | Raw EDI data string to extract from |
extractionRules | Array of rules defining what data to extract |
Output:
{
"extractedData": {
"packagingCode": "PLT",
"ladingQuantity": "10",
"billOfLadingNumber": "BOL12345"
}
}