BizTalk Dynamic Send Ports For Rest Services

Dynamic send ports are used to send the BizTalk messages dynamically from orchestration to destination systems based on some conditions.

Two Way Dynamic Send Port

Two-way dynamic sendports are used for request and response messages.

We need to create logical dynamic sendport with port direction as dynamic.

TwoWayDynamic1.png

We need to construct the message with all request and response message properties of Rest endpoint as below

In the message assignment shape we need to construct the message with below properties.

RequestForRouting = Request;

//Request is the input message type of your orchestration receive shape. RequestForRouting is the message which we construct in this message assignment shape.

RequestForRouting(BTS.RouteDirectToTP)=false;

headerhttp = Request(WCF.InboundHttpHeaders);//If you have any http headers

RequestForRouting(FILE.ReceivedFileName) = headerhttp;

RequestForRouting(WCF.HttpMethodAndUrl) = “POST” //For POST Operation

RequestForRouting(WCF.HttpMethodAndUrl)=”<BtsHttpUrlMapping><Operation Name=” Method=’GET’ Url=’/RestServiceURL’ /></BtsHttpUrlMapping>”; // For Get Operation

RequestForRouting(BTS.SendPipelineConfig)=”<Root xmlns:xsd=’http://www.w3.org/2001/XMLSchema&#8217; xmlns:xsi=’http://www.w3.org/2001/XMLSchema-instance’><Stages><Stage CategoryId=’9d0e4108-4cce-4536-83fa-4a5040674ad6′><Components><Component Name=’Microsoft.BizTalk.Component.JsonEncoder’><Properties><RemoveOuterEnvelope vt=’11’>-1</RemoveOuterEnvelope></Properties></Component></Components></Stage></Stages></Root>”;

RequestForRouting(BTS.SendPipelineResponseConfig) = “<Root xmlns:xsd=’http://www.w3.org/2001/XMLSchema&#8217; xmlns:xsi=’http://www.w3.org/2001/XMLSchema-instance’><Stages><Stage CategoryId=’9d0e4103-4cce-4536-83fa-4a5040674ad6′><Components><Component Name=’Microsoft.BizTalk.Component.JsonDecoder’><Properties><RootNode vt=’8′>” + RootNodeName + “</RootNode><RootNodeNamespace vt=’8′>” + Namespace + “</RootNodeNamespace></Properties></Component><Component Name=’Microsoft.BizTalk.Component.XmlDasmComp’><Properties><AllowUnrecognizedMessage vt=’11’>-1</AllowUnrecognizedMessage></Properties></Component></Components></Stage></Stages></Root>”; 

RequestForRouting(WCF.VariablePropertyMapping)=String.Empty;

//For POST Operation

RequestForRouting(WCF.VariablePropertyMapping)=

“<BtsVariablePropertyMapping xmlns:xsi=’http://www.w3.org/2001/XMLSchema-instance&#8217; xmlns:xsd=’http://www.w3.org/2001/XMLSchema’><Variable Name=NameoftheVariable PropertyName=’NameOftheProperty‘ PropertyNamespace=’NameSpace‘/></BtsVariablePropertyMapping>”;

//For Get Operation

RequestForRouting(WCF.SuppressMessageBodyForHttpVerbs)=String.Empty;

//For POST Operation

RequestForRouting(WCF.SuppressMessageBodyForHttpVerbs)=”GET”;

//For Get Operation

RequestForRouting(BTS.RetryCount) = 0;

RequestForRouting(WCF.MaxReceivedMessageSize)=2147483647;

RequestForRouting(WCF.OpenTimeout)=”00:01:00″;

RequestForRouting(WCF.CloseTimeout)=”00:01:00″;

RequestForRouting(WCF.SendTimeout)= “00:01:00”;

RequestForRouting(WCF.EndpointBehaviorConfiguration)=”<behavior name=’EndpointBehavior’><AddHttpHeader HeaderFields=’Field1,Field2,Content-Type: application/json’/></behavior>”;

// If you have http headers

In the expression shape, we need to specify Address and TransportType.

TwoWayDynamic2.png

DynamicCommonSendPort(Microsoft.XLANGs.BaseTypes.Address)=”Rest Endpoint URL Name”;

DynamicCommonSendPort(Microsoft.XLANGs.BaseTypes.TransportType)=”WCF-WebHttp”;

Good Luck…

BizTalk Server Monitoring

5 responses to “BizTalk Dynamic Send Ports For Rest Services”

  1. Getting “URI Scheme “HTTPS” Invalid expected “HTTP” ” error, even though I used security mode “Transport”

    Like

      • The issue is with Dynamic two-way sendport. Even after specifying Security Mode as Transport and other properties as mentioned in your blog, there is error connecting to the service URL. The error message is:
        System.ArgumentException: The provided URI scheme ‘https’ is invalid; expected ‘http’.
        Parameter name: via
        Is there something more to be done when sending a message to the service over HTTPS?

        Like

  2. I’m trying to set the BTS.SendPipelineConfig and ResposeConfig as per the article, but it doesn’t seem to work. I took the prop configs from BizTalkMgmt Db and mapped in the orchestration to the BTS properties.
    Share your thoughts.

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: