Skip to content

OrderLineFieldValues column serialized as escaped text in live integr…#70

Open
DWDBE wants to merge 1 commit into
mainfrom
dbe/28618-OrderLineFieldValues-column-serialized-as-escaped-text-in-live-integration-order-XML
Open

OrderLineFieldValues column serialized as escaped text in live integr…#70
DWDBE wants to merge 1 commit into
mainfrom
dbe/28618-OrderLineFieldValues-column-serialized-as-escaped-text-in-live-integration-order-XML

Conversation

@DWDBE

@DWDBE DWDBE commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Observed behaviour

When the Include custom order line fields in request setting is enabled, the OrderLineFieldValues column inside the EcomOrderLines table of the outgoing order XML contains HTML-escaped text instead of proper nested XML:

The ERP receives a literal string rather than structured XML, making the field unparseable.

Expected behaviour

MyField SomeValue

Root cause

The bug is in OrderXmlGenerator.cs at line 339:

AddChildXmlNode(itemNode, "OrderLineFieldValues", OrderLineFieldValuesToXml(orderline.OrderLineFieldValues).InnerXml);

OrderLineFieldValuesToXml() correctly builds an XmlDocument with proper XML nodes. .InnerXml is then called on it to extract the XML as a string. That string is passed to AddChildXmlNode(), which assigns it via:

node.InnerText = nodeValue; // XmlGenerator.cs

InnerText treats its input as plain text and XML-escapes all special characters (< → <, > → >). The result is the XML structure rendered as an escaped string rather than embedded XML nodes.

Fix

At the call site in OrderXmlGenerator.cs, bypass AddChildXmlNode and use XmlDocument.ImportNode to deep-copy the XML nodes into the parent document directly:

// Replace line 339: // AddChildXmlNode(itemNode, "OrderLineFieldValues", // OrderLineFieldValuesToXml(orderline.OrderLineFieldValues).InnerXml); var fieldValuesNode = itemNode.OwnerDocument.CreateElement("column"); fieldValuesNode.SetAttribute("columnName", "OrderLineFieldValues"); fieldValuesNode.AppendChild( itemNode.OwnerDocument.ImportNode( OrderLineFieldValuesToXml(orderline.OrderLineFieldValues).DocumentElement, deep: true)); itemNode.AppendChild(fieldValuesNode);

ImportNode copies the element tree into the target document's namespace as real XML nodes, so the output is properly structured XML rather than escaped text.

@DWDBE DWDBE requested review from a team as code owners June 22, 2026 15:10
@DWDBE DWDBE requested a review from Copilot June 22, 2026 15:11

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants