Message Diff
Visualise, segment by segment, the differences between two EDIFACT or X12 messages. Ideal to explain an integration regression or to qualify the delta between two versions of the same flow.
Compare two messages
How it works
Both messages are tokenised by the appropriate structural parser —
EDIFACT (ISO 9735) or X12 (X12.5). The separators actually declared
in UNA or ISA are honoured. Once segments are
extracted, the engine computes the longest common subsequence
(LCS) over segment tags, then derives the alignment:
- Tag matches on both sides → segment marked equal or changed depending on element-level equality.
- Tag present on the left only → removed.
- Tag present on the right only → added.
For each changed segment, the affected elements are listed inline
with the left value and the right value side by side. EDIFACT composites
are rejoined on the actually declared component separator (:
by default) before comparison: a change from 5410…123::9 to
5410…123:91:9 appears as a single element change, with both
strings readable side by side.
Privacy
Known limits
-
Alignment is based on tag identity, not on business identifiers nested
inside segments. Two consecutive
LINsegments are matched in source order — if the second message reshuffles them, the resulting diff can look noisy. Reference-based alignment (LIN[1], LIN[2]…) is on the roadmap. - The LCS engine is capped at 2,000 segments per side; beyond that threshold inputs are truncated and a note is surfaced on the result.
- cXML comparison (by XPath) and three-way mode remain on the roadmap.
Related documentation
- EDIFACT — to understand the segment grammar the diff aligns against.
- ORDERS D.96A — the reference message used in the loadable example.
- EDIFACT Validator — shares the parser and the overall ergonomics.