We have an existing .net 3.5 WCF service with which PreserveObjectReferences is set to true on the server side.
When PreserveObjectReferences is set to false BizTalk can consume the response.
Is there a way to get BizTalk to consume the PreserveObjectReferences response payloads…
PreserveObjectReferences manifests itself with a z:id occurring for the first instance of an object and a z:ref occurring for any subsequent object occurrences:
<b:xyz *z:Id="5"* i:type="abc">...</b:xyz>
...
<b:xyz *z:ref="5"* />
Both BizTalk and JAX-B have issues with dealing with the payload for differing reasons. ID/IDREF are supported XML Schema options but every implementation seems to have problems consuming them.
For JAX-B when both idref and nil=true is specified it is unable to marshall the payload into objects:
Removal of the nil=true or setting preserve object references to false (i.e not returning a a payload utilising the idref capability means that Java coders can work around this.
BizTalk can work around this by re-hydrating the xml without the idref support through xslt transforms or other means.
Our solution to both was to ensure preserve object references was turned off. both systems were then able to integrate without significant hassle.