MarioDS
MarioDS

Reputation: 13063

Inexplicable routing failures for a direct-bound orchestration receiving XmlDocument

I've created an orchestration project with a property schema that contains a boolean property IsForFramework. My aim is to have an orchestration receive all messages of type System.Xml.XmlDocument that have the aformentioned property promoted with a value of true.

This is part of the property schema:

<xs:schema xmlns="http://Bakker.Framework.Orchestrations.Framework" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://Bakker.Framework.Orchestrations.Framework" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:annotation>
    <xs:appinfo>
      <b:schemaInfo schema_type="property" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" /> 
    </xs:appinfo>
  </xs:annotation>
  <xs:element name="IsForFramework" type="xs:boolean">
    <xs:annotation>
      <xs:appinfo>
        <b:fieldInfo propertyGuid="9358dd05-92f7-4c84-8dc1-8427bea580a6" propSchFieldBase="MessageContextPropertyBase" /> 
      </xs:appinfo>
    </xs:annotation>
  </xs:element>
</xs:schema>

The filter expression on the receive shape:

(Bakker.Framework.Orchestrations.IsForFramework == true)

The actual subscription queried from the BizTalk console:

http://Bakker.Framework.Orchestrations.Framework.IsForFramework == True

In the routing failure report context:

IsForFramework  True    Promoted    http://Bakker.Framework.Orchestrations.Framework

I can't, for the life of me, figure out what could possible be going wrong here.

Upvotes: 0

Views: 648

Answers (2)

Dijkgraaf
Dijkgraaf

Reputation: 11527

After some discussion with MDeSchaepmeester it was determined that the underlying issue is that the Pipeline component that was promoting that context property and all the others it was promoting as strings, however this context property was defined as a Boolean in the Property Schema. From IBaseMessageContext.Promote Method "If the types of the promoted properties do not match the values specified in subscription, the comparison fails and the message subscription does not occur. "

In this case you have two options

1) Either make sure that the object is cast to Boolean when you are promoting it.

2) Change the field type to String and change the filter expression to Bakker.Framework.Orchestrations.IsForFramework == "True" as suggested by Johns-305 (if they match type you won't get the error)

Upvotes: 1

DTRT
DTRT

Reputation: 11040

Try for the Filter Expression:

Bakker.Framework.Orchestrations.IsForFramework == "True"

Single quotes might also work, the expression editor in the Orchestration Designer is different from the one in BT Admin.

Upvotes: 2

Related Questions