ERPMedium setup

Microsoft Dynamics 365 + NeutronEDI

Add EDI translation and validation to your Microsoft Dynamics 365 workflows with a simple REST API.

Dynamics 365 (F&O and Business Central) leans heavily on Power Automate and Azure Logic Apps for integration. NeutronEDI fits as a single HTTP action in either flow: an inbound 850 lands in a SharePoint or blob folder, a Logic App POSTs it to the Read API, and a Dynamics action creates the Sales Order via the Dataverse Web API.

How Microsoft Dynamics 365 + NeutronEDI works

Inbound: trading-partner EDI flows into Microsoft Dynamics 365. Outbound: Microsoft Dynamics 365 data flows back out as compliant EDI.

Inbound — partner → Microsoft Dynamics 365

1

Trading partner sends EDI

The trading partner sends an X12 or EDIFACT document via SFTP, AS2, or a direct API call into your environment.

2

NeutronEDI translates

Your service POSTs the raw EDI to /api/v1/read/x12 (or /read/edifact). NeutronEDI returns clean JSON in milliseconds.

3

JSON flows into Microsoft Dynamics 365

The JSON lands in Microsoft Dynamics 365 — mapped to native objects, imported via middleware, or consumed directly by your code (Dynamics 365 F&O / Business Central via Power Automate or Azure Logic Apps).

Outbound — Microsoft Dynamics 365 → partner

1

Microsoft Dynamics 365 produces data

A shipment confirmation, invoice, or PO acknowledgment occurs inside Microsoft Dynamics 365. Your service picks it up via webhook, polling, or scheduled query.

2

NeutronEDI generates EDI

POST a JSON payload describing the document to /api/v1/write/x12 (or /write/edifact). NeutronEDI returns standards-compliant EDI.

3

Send to partner

Drop the resulting EDI document onto the partner's SFTP, AS2, or VAN — the same channel that delivered the inbound document.

Common EDI transactions for Microsoft Dynamics 365

These are the transaction sets you'll see most often in Microsoft Dynamics 365 integrations. The Read API parses every set NeutronEDI supports — this is just where teams typically start.

CodeNameDescription
850Purchase OrderRetailer sends purchase order to supplier
855Purchase Order AcknowledgmentSupplier confirms receipt and acceptance of PO
856Advance Ship NoticeSupplier notifies retailer of shipment details
810InvoiceSupplier sends invoice for delivered goods
997Functional AcknowledgmentTechnical receipt confirmation for any EDI document
ORDERSEDIFACT Purchase OrderInternational purchase order (EDIFACT equivalent of 850)
INVOICEDIFACT InvoiceInternational invoice (EDIFACT equivalent of 810)

How Microsoft Dynamics 365 teams use NeutronEDI

Process inbound EDI purchase orders into Dynamics sales orders

A Logic App or Power Automate flow calls /api/v1/read/x12 in a single HTTP action, then iterates the transactions array and writes each one to Dataverse. No custom Dynamics extension required.

Generate outbound ASN and invoice EDI from Dynamics data

Trigger on a Dataverse row create / update for shipped orders, build the 856 or 810 payload, and POST to /api/v1/write/x12. Hand the resulting X12 to your delivery action (Send Email, FTP connector, AS2 service).

Build Power Automate flows with NeutronEDI for no-code EDI processing

Both Read and Write are plain JSON HTTP actions, so business analysts can wire EDI translation into Dynamics workflows without writing C# or X++.

Validate EDI documents in Azure Logic Apps before Dynamics import

Add a /api/v1/validate/x12 step before the Dataverse write — failed documents branch into a Teams notification or a SharePoint review queue, while valid ones flow straight through.

Example integration

An Azure Logic App receives a raw X12 850 from blob storage, calls the NeutronEDI Read API in a single HTTP action, then writes the order to Dataverse.

logic-app-inbound-850.json
{
  "definition": {
    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
    "triggers": {
      "When_a_blob_is_added_or_modified": {
        "type": "ApiConnection",
        "inputs": {
          "host": { "connection": { "name": "@parameters('$connections')['azureblob']['connectionId']" } },
          "method": "get",
          "path": "/datasets/default/triggers/batch/onupdatedfile",
          "queries": { "folderId": "/edi-inbound", "maxFileCount": 10 }
        }
      }
    },
    "actions": {
      "Translate_X12": {
        "type": "Http",
        "inputs": {
          "method": "POST",
          "uri": "https://api.neutronedi.com/api/v1/read/x12",
          "headers": {
            "X-API-Key": "@parameters('neutronApiKey')",
            "Content-Type": "application/edi-x12"
          },
          "body": "@triggerBody()"
        }
      },
      "For_each_transaction": {
        "type": "Foreach",
        "foreach": "@body('Translate_X12')?['transactions']",
        "actions": {
          "Create_Sales_Order_in_Dataverse": {
            "type": "ApiConnection",
            "inputs": {
              "host": { "connection": { "name": "@parameters('$connections')['commondataservice']['connectionId']" } },
              "method": "post",
              "path": "/v2/datasets/@{encodeURIComponent('default.cds')}/tables/@{encodeURIComponent('salesorders')}/items",
              "body": {
                "name": "@items('For_each_transaction')?['poNumber']",
                "customerid_account@odata.bind": "/accounts(@{items('For_each_transaction')?['buyerAccountId']})",
                "ordernumber": "@items('For_each_transaction')?['poNumber']"
              }
            },
            "runAfter": {}
          }
        },
        "runAfter": { "Translate_X12": ["Succeeded"] }
      }
    }
  }
}

What the API returns

Read API response
{
  "interchange": { "sender": "DISTRIBUTOR", "receiver": "ACMECORP", "control": "000001012" },
  "transactions": [
    {
      "type": "850",
      "name": "Purchase Order",
      "poNumber": "DIST-77621",
      "date": "2026-04-22",
      "buyerAccountId": "0a3f7e91-5bd2-4e06-a0e6-7a18d5b2c011",
      "items": [
        { "sku": "PART-A1", "qty": 50, "unitPrice": "22.10" },
        { "sku": "PART-A2", "qty": 25, "unitPrice": "44.20" }
      ],
      "total": "2210.00"
    }
  ]
}

All code examples assume an API key issued from the Customer Portal. The free Developer tier includes 500 calls per month.

Getting started with Microsoft Dynamics 365 EDI

  1. 1

    Sign up for a free NeutronEDI Developer account

    Create an account in the NeutronEDI Customer Portal. The Developer tier includes 500 API calls per month at no cost.

    Open the portal
  2. 2

    Create an API key in the Customer Portal

    Generate an API key from the dashboard. The plaintext key is shown once at creation; copy it into your secret store.

    Read the docs
  3. 3

    Send your first EDI document to the Read endpoint

    POST a sample X12 or EDIFACT document to https://api.neutronedi.com/api/v1/read/x12 with the X-API-Key header. Confirm the JSON response shape matches what Microsoft Dynamics 365 expects on the receiving side.

    Read the docs
  4. 4

    Map the JSON response to your Microsoft Dynamics 365 data model

    Use the language and runtime that already integrates with Microsoft Dynamics 365 (Dynamics 365 F&O / Business Central via Power Automate or Azure Logic Apps). Map fields from the NeutronEDI JSON to Microsoft Dynamics 365 entities and persist them through the platform's standard create / update API.

Start Your Microsoft Dynamics 365 EDI Integration

500 API calls per month on the Developer plan. No credit card. No sales call. Read, write, and validate X12 and EDIFACT in minutes.