This post was originally published here

MessageContextPropertyBase vs MessageDataPropertyBase vs PartContextPropertyBase

By default, none of the value for the property schema base will be selected. But even though you have not selected anything, once you promote a field and assign it to promoted property field in Property Schema, property schema base value will be
“MessageDataPropertyBase” by default when deployed.

If you select the property schema base as MessageContextPropertyBase, then it will be added to the context property of the message but not promoted. To promote the field you need to use custom pipeline component to add that to promoted property field.

To use MessageDataPropertyBase promoted field value, you need to create an instance of the message and use it, where as MessageContextPropertyBase value can be accessed without creating an instance of the message. This behavior is similar to the static variable in any programming language.

So many times, I have wondered how to have a global variable assigned, while doing BizTalk Process. If you think little bit aloud and you can treat this MessageContextPropertyBase as global variable. But you have to make sure, this gets added to the newly created message or you have to get it in local variable. When you need to pass to another orchestration, you can do so by passing it as an Orchestration Parameter.


PartContextPropertyBase is used for setting context properties for individual Message Parts of a Multipart Message. A multipart message can have more than one part.

It is similar to MessageContextPropertyBase and works on Multipart Messages

Related Links: