Reputation: 13063
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
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
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