I have a standard bi-directional interface using biztalk 2009 as our interface engine. What is happening is that we are receiving order messages that parse fine except for the fact that they are sending a date time in MSH.7 to milliseconds. The 3 extra numbers cause it to fail with a data type error. If I remove the 3 extra numbers in MSH.7 the message will process fine.
To add a layer of complexity, I found this post: http://social.msdn.microsoft.com/Forums/en-US/biztalkgeneral/thread/d65bf4de-a3dd-47f3-babe-a82bdc260291/ which describes the issue and suggests I can change the MSH schema in order to fix it. I did that, and it did work where I could process the messages in as well as my result message back out, and it seemed all was working fine. However, when attempting to generate an ACK it completely fails. I think there may be a similar issue for batching but I didn't get that far. By changing the MSH schema, the built-in ACK functionality no longer works because the MSH header has an unexpected form (I think).
I am starting to run out of ideas, and thought I would try posting here, as I have found so many answers here in my travels. The weirdest part is that MSH.7 is defined as a string in the MSH schema, so it seems like it shouldn't matter what they pass in this field.
Instead of changing the schema you could add code to a transform and remove the offending milliseconds. When dealing with timestamps/dates this happens a lot.