Ok got it, so your DTL is currently setting the last NTE to the OBX. To have individual OBXs for each NTE plus the original OBX you need to put in a for loop to process each one of the NTEs into a new OBX. Something along the lines of this:

Quickly tested on my system:

Does the basic purge work for orphans? I thought that worked off the Header that the orphans don't have?

As I understand it, anywhere in code that you have an EnsLib.HL7.Message object that is created and saved, but not sent with a send request, it won't create the header and makes it an orphan. If you look through any of your custom code for anywhere you create one with a %New, or an ImportfromString or ImportfromStream, that might help track down where you are generating them from. One place you might look is if you have archiveIO turned on for anything. The messages that are generated from that tend to be orphans for me.  I have a process that is similar to Daniel's for getting rid of them. 

Open Exchange applications:
Robert has no followers yet.
Robert has not followed anybody yet.
Global Masters badges: