I have a BizTalk 2016 FP3 solution. Using the wizard, I've created a flat file schema for my send port, to assemble from xml to a fixed position text file.
When I run through BizTalk, I get a suspended instance with the following Error Information:
Unable to read the stream produced by the pipeline.
Details: Value cannot be null.
Parameter name: format
So, I opened the message tab for the suspended message and copied the xml to a test file. I then ran this through the ffasm.exe tool, passing the path to my flat-file schema as the -bs parameter - the output from this tool was perfect, the exact flat file content I would expect.
On the send port (which contains only the Microsoft Flat file assembler components), I have populated as the "DocumentSpecName" property with the required schematypename,assemblystrongname . This is not really required since BizTalk is able to determine the schema from the promoted namespace#rootnode , so I've tried without the property being set but still get the same result.
I'm afraid this is one that was fixed without me knowing how. The problem had been driving me nuts for hours so I went back to basics and created a new solution on a different dev VM - it worked! So, I returned back to my main dev VM and it the problem was no more. Now I don't believe in magic, so I'm sure I must have changed something but I've since tried to recreate the error by meddling with the input file and the flat-file schema and I haven't been able to.
I have learned that using VS to "Generate Instance" of a flat-file for a given xml file is useless - it will produce a file but uses the xml element names as data. Better to use the FFAsm.exe that can be found in D:\Program Files (x86)\Microsoft BizTalk Server 2016\SDK\Utilities\PipelineTools
Off to wrap a unit test around this now in case the bug strikes again.