EDI Acknowledgements
EDI Acknowledgements
A functional acknowledgement — 997 in X12, 999 in some profiles, CONTRL in EDIFACT — reports whether a file arrived and whether it was structurally acceptable. It says nothing about whether anyone agreed to the order. See Concepts for the distinction.
Acknowledging what a partner sends you
DataMagik builds an acknowledgement for every inbound interchange as part of the pipeline. Whether it is sent depends on one setting.
Turning it on
On the trading partner, tick Send acknowledgements (997) on the routing row for that document. It is a per-partner, per-document decision, so you can acknowledge a customer's orders without acknowledging everything else they send.
With it on, DataMagik reserves a real interchange control number from the partner's counter, rebuilds the acknowledgement with that number, delivers it over the partner's transport, and logs it as an outbound transaction you can see in the console.
sendAck, the acknowledgement is still
built and handed back to the caller — a script can send it itself. What the setting adds is a
real control number and automatic delivery, which is the part a script cannot do well on its own.The acknowledgement agrees with what you did
Content problems are folded into the acknowledgement, not just envelope arithmetic. A document that
failed conformance and was sent to review is reported as
rejected (AK5*R), not accepted.
Acknowledgements are never acknowledged
An inbound 997/999/CONTRL never generates an acknowledgement of its own. That is how you build an infinite loop with a trading partner, and it is suppressed unconditionally.
Reconciling what a partner sends back
When a partner acknowledges a document you sent, that acknowledgement is recognised as an acknowledgement before partner routing is consulted — it needs no routing row and no spec. DataMagik parses it and settles the outbound documents it covers, recording the count on the acknowledgement's own row: "reconciled 2 outbound document(s)".
Only documents still awaiting an acknowledgement are touched, so a re-delivered acknowledgement is harmless.
The outbound rows move from Awaiting ack to Ack accepted or Ack rejected, and the console has filters for exactly those three states.
Reconciling one by hand
If a partner sends an acknowledgement out of band — by email, or through a channel DataMagik does not watch — press Reconcile ack… in the console, paste the raw acknowledgement, and submit. It reports how many documents it settled.
Chasing a document that was never acknowledged
- Filter the console to Outbound + Awaiting ack.
- Anything old in that list either never arrived, or arrived and was not acknowledged.
- The row carries the interchange control number — quote it to the partner. That is what it is for.
From a script
const parsed = edi.parse(raw);
const check = edi.validate(parsed);
const ack = edi.ack(parsed, { control: "000000101" });
const conf = edi.conformance(raw, "850-acme"); // content rules, separately