Procurement + EDI in D365: Why It “Works” Until It Doesn’t
- Beau Schwieso
- 14 minutes ago
- 6 min read

If you have ever heard someone say “EDI is just mapping,” you have witnessed the origin story of a future war room.
Because EDI is not a connector. EDI is not a one-time technical project. EDI is a living relationship between your business rules and your supplier’s interpretation of them, mediated by a translator, wrapped in compliance timelines, and held together by master data that Procurement swears is clean.
The funniest part is that EDI usually does work. It works in the demo. It works in the test environment with three handpicked scenarios. It works until that first real supplier shipment shows up with a partial, a substitution, a different pack configuration, and freight charges that “have always been on the invoice.” Then suddenly Procurement is asking why receiving cannot find the ASN, AP is asking why match rates fell off a cliff, and IT is staring at an error log that might as well say: “Good luck, friend.”
Here is the truth: if you do not design ownership, monitoring, and exception handling up front, you are not implementing EDI. You are installing a surprise generator.
What we actually mean by Procurement + EDI
Procurement EDI is the automation of procure-to-pay documents between your ERP and your supplier or trading partner network.
Most common (ANSI X12):
850 Purchase Order
855 Purchase Order Acknowledgment
856 Advance Ship Notice (ASN)
810 Invoice
997 Functional Acknowledgment (did the partner receive and parse the file)
In Dynamics 365 Supply Chain Management, receiving can be recorded against purchase orders, and it can be automated via integrations such as EDI.
The golden rule
If you want EDI to reduce labor, you must decide what you will do when it fails.
That means you need, at minimum:
A clear “source of truth” per field (who owns item numbers, UOM, vendor item cross references, ship-to details)
A triage process (who fixes what, how fast, and how you keep work moving)
Monitoring that is business-readable (not just “it failed”)
The 10 failure modes that hit Procurement and AP the hardest
These are the ones that show up after go live and create real operational pain.
1) Item identity mismatch
Symptom: ASN or invoice fails import, or lands but cannot match.
Root causes: vendor item number not cross-referenced, wrong external item ID, substitution logic not agreed.
Prevention: vendor item cross reference governance, clear substitution rules, onboarding packet with examples.
Detection: daily exception queue, “top 10 failing items” report.
2) Unit of measure (UOM) and conversion gaps
Symptom: quantities look wrong, match fails, receipt over/under.
Root causes: supplier sends “CS” but you expect “EA”, conversions missing or wrong, rounding differences.
Prevention: lock UOM per supplier-item, verify conversions with real pack examples, not spreadsheets.
Detection: tolerance breach alerts, “quantity variance” trendline.
3) Pack structure lies (the ASN is technically correct, and functionally useless)
Symptom: warehouse cannot receive efficiently, load and case structure mismatches.
Root causes: partner sends ASN at the wrong level (line vs pack), mixed pallets, partials, missing license plates or carton IDs.
Prevention: define minimum ASN requirements per supplier tier, enforce required segments, run ugly-path tests (partials, mixed pallets).
Detection: “receipt effort” metric, receiving exceptions.
If you are using inbound ASN imports via data entities, D365 provides composite entities for inbound ASNs that support load, shipment, and packing structure details.
4) Timing gaps (invoice arrives before receipt, or receipt arrives before ASN)
Symptom: AP cannot post, Procurement gets escalations, “why is this blocked” becomes a daily meeting.
Root causes: supplier sends invoice on ship, not on receipt, ASN delayed, internal receiving backlog.
Prevention: agree event timing with suppliers, align AP posting rules, plan for “receipt-first” scenarios.
Detection: aged match exceptions by cause.
5) Price and charge variance (freight, fuel, misc charges)
Symptom: invoice match fails, or passes but costs go sideways.
Root causes: charges not modeled (or modeled inconsistently), price updates not synchronized, supplier adds “always included” charges.
Prevention: define charge strategy (line vs header, separate lines vs charges), update cadence, vendor compliance rules.
Detection: variance buckets with thresholds (by supplier, by category).
6) Taxes and tax-inclusive assumptions
Symptom: invoice totals do not match, AP reworks invoices, suppliers get short-paid.
Root causes: different tax calculation rules, tax included vs excluded mismatch, rounding.
Prevention: document tax assumptions and invoice structure per region and supplier type, validate totals in testing.
Detection: “invoice total mismatch” exception rate.
7) Duplicate documents and idempotency failures
Symptom: duplicated ASNs or invoices, double receipts, double liability risk.
Root causes: retry logic resends without unique keys, acknowledgments not used, partner resends on timeout.
Prevention: enforce unique document keys, idempotent processing rules, use acknowledgments (997 or EDIFACT CONTRL).
Detection: duplicate key alerts.
8) Unowned “small” fields that become big failures
Symptom: errors on ship-to, dock, delivery window, carrier codes.
Root causes: master data not standardized, ship-to mapping inconsistent by facility.
Prevention: ship-to governance, facility onboarding checklist, controlled code lists.
Detection: top failing fields report.
9) Overly strict validations with no business bypass
Symptom: EDI stops the business for non-critical issues.
Root causes: “fail the file” rules when you should “warn and continue,” no staged processing.
Prevention: define severity levels (stop-ship vs warn), staged processing, fallback workflows.
Detection: exception backlog aging.
10) No monitoring, no alerts, no one on point
Symptom: you discover failures because someone calls.Root causes: logs exist but nobody watches them, no SLA, no operational rhythm.Prevention: monitoring dashboard, daily triage, escalation paths, clear RACI.Detection: if your first alert is an angry email, your detection method is “human suffering.”
Build EDI like an operating model, not a project
Here is a practical ownership split that works in real life.
Suggested RACI (high level)
Procurement Operations
Own supplier onboarding rules and compliance
Own master data expectations (vendor item cross refs, lead times, ship-to rules)
Own PO change policy, substitutions, partial acceptance
Warehouse/Receiving
Own ASN minimum requirements and receiving process
Own exceptions that block physical flow
Accounts Payable
Own invoice match policy, tolerances, and charge handling
Own invoice exceptions and supplier communication
IT / Integration Team
Own transport, mappings, retries, security, and technical monitoring
Own uptime, performance, and incident response
EDI Provider / Network
Own translation, partner setup, and standards compliance
Mechanically, D365 supports multiple integration patterns including OData and event-based patterns (business events and data events) that external systems can subscribe to or call into, which is commonly used as the ERP side of an EDI flow.
(Translation: your EDI translator and middleware do the EDI-specific heavy lifting. D365 is usually handling structured business documents via APIs, entities, or events.)
The only testing approach that prevents go-live pain
Stop testing EDI like a demo. Test it like your worst supplier.
1) Golden path (yes, still do it)
PO created and transmitted
PO acknowledged
ASN received and imported
Receipt posted
Invoice received and matched
2) Ugly path (this is where value is)
Partial shipment with backorder
Substitutions (allowed and not allowed)
Mixed pallets, mixed cases
UOM differences that rely on conversions
Price change after PO sent
Charges added at invoice time
3) Failure path (prove your exception process)
Unknown item number
Invalid ship-to
Duplicate ASN and duplicate invoice
Invoice before receipt and receipt before ASN
Missing required pack identifiers
Deliverable you should insist on: a one-page “What we do when” guide that every AP and receiving lead can follow without IT translating error codes.
Go-live readiness: the 30 point checklist that actually matters
Print this. Use it. Argue about it early, not at 2:00 AM.
Supplier onboarding and governance
Supplier tiers defined (who gets EDI now vs later)
Onboarding packet includes: field requirements, examples, timing rules, contacts
Vendor item cross reference ownership defined
UOM and conversion strategy validated with real pack examples
Substitution rules documented and agreed
Charge policy documented (freight, fuel, misc, rebates)
D365 document readiness
PO numbering and external document keys agreed for idempotency
Ship-to and location master data standardized
Receiving process aligns with ASN structure (pack, case, pallet expectations)
AP match policy and tolerances set intentionally (not defaults, not vibes)
Exception queues are visible to business users (not just IT)
Integration reliability
Retry rules are safe (do not create duplicates)
Functional acknowledgments are used and monitored (997 or EDIFACT CONTRL)
Alerts exist for: failures, delays, volume spikes, duplicate keys
Support model is defined (Tier 0, Tier 1, Tier 2) with SLAs
Runbooks exist for top 10 failures, with screenshots and decision points
Cutover plan
Transition rules for in-flight POs (what is EDI vs manual during cutover)
Document timing freeze windows agreed with suppliers
First-week hypercare schedule with named owners (not “the team”)
Daily triage meeting cadence with a short agenda and decision authority
Metrics baseline captured (match rate, ASN success rate, cycle time)
KPIs that tell you if EDI is helping or hurting
If you track nothing else, track these:
Procurement
PO acknowledgment rate and cycle time
Supplier compliance rate (on-time ASN, required fields present)
Receiving
ASN import success rate
Receipt cycle time (dock-to-receipt)
Exceptions per 100 ASNs
AP
First-pass match rate (2-way or 3-way)
Average time to resolve invoice exceptions
Charge variance rate
IT
Time to detect and time to resolve EDI failures
Volume anomalies (spikes, drops)
Duplicate document attempts blocked
When you should NOT use EDI
Unpopular but true.
Low-volume suppliers where onboarding costs outweigh the labor savings
High-variability buying where every document is “special”
Environments where you cannot sustain master data governance
Teams that refuse to own exceptions and want IT to “just fix it”
In those cases, supplier portals, structured templates, or lighter integration patterns can be more sane.
DynamicsDad sign-off:
If your EDI is “quiet,” go check on it. Quiet EDI is how you end up in a loud meeting.
DynamicsDad