Transformation is one of the key elements in integration and BizTalk facilitates this in way which is one of the best.
Transformations in BizTalk can be done within the Orchestrations , or at the port level by specifying inbound or outbound maps.
Transformations can also be executed on pipelines so as to avoid persisting messages to database if the source is huge.
For example, you are receiving a big message say 100 MB which contains all the records extracted but for your business process within BizTalk we need only a subset of that, that meets some condition. One way of achieving this is by applying the filtering map at the port level and then feeding the business process orchestration with the smaller set. However there is limitation of one map that can be executed on port and for such scenario where we need to execute multiple maps on source the drawback here would be that whole message say 100-150 MB will be persisted to message box before further transforms applies and this becomes overhead if there are many such processes.
To overcome this, executing the map at the pipeline level before the persistence goes a long way in improving performance.
For this we can define a pipeline component with below properties.
MapFQN is the fully qualified name for the map to be executed.
(The same can be extended to include xsl transformations as well. Say a path to XSLT file that needs to be executed for transformation.)
Virtual stream takes care of disk offloading during transformation for big messages thus greatly reducing the server memory load.