Enumeration has not started. Call MoveNext

Posted: March 13, 2018  |  Categories: BizTalk

Testing a BizTalk 2013 R2 map  I got this error; “Enumeration has not started. Call MoveNext”. What on earth does this mean?

A quick search reveals this Microsoft article about known issues when migrating BizTalk 2010 maps to BizTalk 2013.  Indeed the map contains two scripting  functoids  that convert an XMLpayload to  a string with this code in it.

The problem code is

public static string NodeToString(XPathNodeIterator nodes)
return nodes.Current.OuterXml;

First attempted solution –  Call MoveNext

The Microsoft solution requires the addition of the node.MoveNext() call. This old blog of mine describes how to convert an XML payload to a string and I had added this call as shown below;

namespace CopyXML2TextNodeBTSDemo.Utility
public class Utilities
public static string ConvertNodeToXmlString(XPathNodeIterator node)
{      node.MoveNext();
return node.Current.OuterXml;

The Final Solution

Unfortunately adding this call to the scripting functoids above I still does not resolve the error. In the end replacing the scripting functoid with a custom XSLT template resolves the issue. The script is shown below;

<!–Converts XML node to string.–>

<xsl:template name=”convertXML2Text”>
<xsl:param name=”XMLnode” />
<xsl:element name=”ns0:XML”>
<xsl:text disable-output-escaping=”yes”>&lt;![CDATA[</xsl:text>
<xsl:call-template name=”identity” />
<xsl:text disable-output-escaping=”yes”>]]&gt;</xsl:text>
<xsl:template name=”identity” match=”@*|node()”>
<xsl:apply-templates select=”@*|node()” />


Be careful migrating BizTalk 2010 maps to BizTalk 2013 R2 maps and test everyone. I have shown that you can use a custom XSLt template to get around the error “Enumeration has not started. Call MoveNext”.

BizTalk Server

Over 650+ customers across
30+ countries depend on BizTalk360

Learn More

Operate efficiently with enterprise-grade Azure monitoring,
tracing, remediation & governance in one platform

Learn More

Back to Top