You construct a message any time that you introduce a message into your orchestration, either by receiving it or by assigning values to a message variable. Any message that you construct must have a message type, so that the runtime engine has a complete description of the object that it is working with. The multi-part message type can be user-defined, it can be a .NET class, or it can be a schema. You can construct messages in various ways: you can invoke a .NET class to create a message, assign one message to another, or use a transform to map certain values within a message to values within another message. Messages are also constructed by a receive action or when your orchestration accepts a message as a parameter.
A multi-part message type does not necessarily contain multiple parts; it might contain just one.
Messages are immutable in BizTalk; that is, once you have constructed it, you cannot modify the original. If you need to make a change, you must construct a new copy of the message and assign values to it appropriately.