BizTalk Tips

Creating a BizTalk Development VM in Azure in less than 30 minutes

July 7th, 2015  |  Published in BizTalk Tips

Microsoft has recently come up with a Development VM in the Gallery in Azure. It has everything needed for development – BizTalk Server, SQL Server and Visual Studio pre-packaged. You just have to select and click. Azure takes care of the rest and creates the VM within 15 minutes. Here is how it can be done:

Could my developers just build this on their own using .NET?

December 19th, 2011  |  Published in BizTalk Tips

What’s in a BizTalk Host:

  1. Thread Management
  2. Memory Management
  3. Service Isolation
  4. Exception Configuration
  5. Failed Message Management
  6. Message Tracking
  7. Composite Execution Tracking
  8. Composite State Management
  9. Load Balancing
  10. Fail-over
  11. Throttling
  12. Scale-out Configuration
  13. Scripting and Programmability APIs
  14. Regulatory Compliance
  15. Archiving and Purging
  16. Disaster Recovery
  17. Utilization/Performance Tracking
  18. Health Monitoring
  19. Availability Monitoring
  20. Multi-environment Deployment Model
  21. Configuration Management
  22. Identity and Impersonation

Extracted from a Microsoft Canada Presentation prepared by Peter Kelcey

 

ESB Resolver Monikers

April 20th, 2011  |  Published in BizTalk Tips

The following is from Microsoft. I am adding this here for quick reference.

 

The BizTalk ESB Toolkit includes the following resolvers: STATIC, UDDI, UDDI3, XPATH, BRE, BRI, ITINERARY, ITINERARY-STATIC and LDAP.

A resolver’s connection string always consists of a moniker (such as BRE) followed by “:\\” and the connection or processing details. The moniker matches the definition of the associated resolver in the configuration file. The properties associated with each connection string are unique, and not all properties are required. The schema for each of the resolvers can be found in the ESB.Resolvers.Schemas project.

The following are examples of connection strings:

  • STATICSTATIC:\\TransportType=;

    TransportLocation=http://localhost/ESB.CanadianServices/SubmitPOService.asmx;

    Action=;

    EndPointConfig=;

    JaxRpcResponse=false;

    MessageExchangePattern=;

    TargetNamespace=http://globalbank.esb.dynamicresolution.com/canadianservices/;

    TransformType=;

  • UDDIUDDI:\\serverUrl=http://localhost:9901/rmengine;

    serviceName=OrderPurchaseWebService;

    serviceProvider=Microsoft Practices ESB

  • XPATH\\TransportType=;

    TransportLocation=/*[local-name()=’OrderDoc’ and namespace-uri()=’http://globalbank.esb.dynamicresolution.com/northamericanservices/’]/*[local-name()=’ID’ and namespace-uri()=’http://globalbank.esb.dynamicresolution.com/northamericanservices/’];

    Action=;

    EndPointConfig=;

    JaxRpcResponse=;

    MessageExchangePattern=;

    TargetNamespace=/*[local-name()=’OrderDoc’ and namespace-uri()=’http://globalbank.esb.dynamicresolution.com/northamericanservices/’]/*[local-name()=’customerName’ and namespace-uri()=’http://globalbank.esb.dynamicresolution.com/northamericanservices/’];

    TransformType=;

  • BREBRE:\\policy=GetCanadaEndPoint;

    version=;

    useMsg=;

  • BRIBRI:\\policy=ResolveItinerary;

    version=;

    useMsg=;

  • ITINERARYITINERARY:\\name=TwoWayTestItinerary;

    version=;

  • ITINERARY-STATICITINERARY-STATIC:\\name=TwoWayTestItinerary;

    version=;

  • LDAPLDAP:\\TransportType=SMTP;

    TransportLocation={mail}

    Filter=(&(objectClass=User)(|(userPrincipalName=yourname@domain.com)));

    SearchRoot=;

    SearchScope=Subtree;

    EndpointConfig=Subject=Itinerary Test Message to {mail}&

    SMTPAuthenticate=0&

    SMTPHost=127.0.0.1&

    From=test@globalbank.com&

    DeliveryReceipt=false&

    MessagePartsAttachments=0&

    ReadReceipt=false;

    ThrowErrorIfNotFound=false;

    Action=;

    JaxRpcResponse=false;

    MessageExchangePattern=;

    TargetNamespace=;

    TransformType=;

Soap Fault Xpath in Port Settings

July 7th, 2010  |  Published in BizTalk Tips

Again, this has been blogged previously by others. I am adding the entry here for my reference:

/*[local-name()=’Fault’]/*[local-name()=’Detail’ or local-name()=’detail’]/*|/*[not(local-name()=’Fault’)]

Simple BizTalk ESB 2.0 Exception Handling

July 1st, 2010  |  Published in BizTalk Tips

This has been blogged several times earlier. I am recording this for my reference.

Steps to setup basic ESB 2.0 Exception Handling in an orchestration

  1. Create Multipart message type “Fault” with “Body” of type Microsoft.Practices.ESB.ExceptionHandling.Schemas.Faults.FaultMessage
  2. Create new message msgFault with above type
  3. Create Exception Handler sysEx of type System.SystemException
  4. Construct message with following expressions:

 

//Create Fault Exception Message

msgFault = Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.CreateFaultMessage();

//Set Fault Properties

msgFault.Body.FailureCategory = “Category of failure“;

msgFault.Body.FaultCode = “ERROR“;

msgFault.Body.FaultDescription = sysEx.Message;

msgFault.Body.FaultSeverity = Microsoft.Practices.ESB.ExceptionHandling.FaultSeverity.Error;

//Add Message to the Fault Message

Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.AddMessage(msgFault, MessageCreatedOutsideScope);

References to be added:

Microsoft.Practices.ESB.ExceptionHandling

Microsoft.Practices.ESB.ExceptionHandling.Schemas.Faults

WCF.InboundBodyPathExpression for ExecuteReaderResponse

March 23rd, 2010  |  Published in BizTalk Tips

 Here is the expression for WCF.InboundBodyPathExpression to be used in the Expression Editor for ExecuteReaderResponse for a Dynamic WCF SQL Adapter:

msgQuery(WCF.InboundBodyLocation)=”UseBodyPath”;

msgQuery(WCF.InboundBodyPathExpression)=”/*[local-name()=’ExecuteReaderResponse’]/*[local-name()=’ExecuteReaderResult’]/*[local-name()=’DataSet’]/*[local-name()=’diffgram’]/NewDataSet”;

msgQuery(WCF.InboundNodeEncoding)=”XML”;

 

Dynamic SQL Port – New in Biztalk 2009

September 3rd, 2009  |  Published in BizTalk Tips

Until the days of Biztalk 2006R2, the SQL Port was Static only and did not support dynamic ports.

BizTalk 2009 fully supports Dynamic SQL Ports, both for the regular out-of-the-box SQL Adapter and the new WCF SQL adapter.

For the regular SQL Adapter (which is being deprecated by microsoft), three new Message Context properties are available:

(SQL.ResponseDocumentRootElementName)

(SQL.DocumentTargetNamespace)

(SQL.ConnectionString)

Configuring these properties, together with

(Microsoft.XLANGs.BaseTypes.Address)=”SQL://” +Servername/ + Databasename/

creates a fully functional Dynamic SQL Adapter.

For the WCF SQL adapter, follow the steps in the link:

http://msdn.microsoft.com/en-us/library/dd788439(BTS.10).aspx

Windows Virtual PC and Hardware Virtualization

July 4th, 2009  |  Published in BizTalk Tips

The newest version of Virtual PC seems to have several interesting features. See the Microsoft Comparison here.

To install this version, the Processor needs to have Hardware Virtualization capabilities. Not all processors have this capability. The list of processors with Hardware Virtualization is available here.

If you are about to buy a new Notebook or PC to run virtual machines, it may be a good idea to consider this before making a decision.

Using Client Authentication Certificate Mapping with SSL, WsHttp in BizTalk

June 20th, 2009  |  Published in BizTalk Tips

I had to go through several Blogs and spend several hours trying to configure my BizTalk project to use Client Certificate Mapping, SSL, and WsHttp Adapter.

These are the steps that were needed to make this combination work:

1. Enable Anonymous Access in IIS for the Web Site

2. Setup Certificate Mapping in IIS

3.Enable “Require SSL”

4. Edit the Web.Config file and make sure that the System.ServiceModel looks like this:

<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name=”CertificateWithTransport”>
<security mode=”Transport”>
<transport clientCredentialType=”Certificate” />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name=”ServiceBehaviorConfiguration”>
<serviceDebug httpHelpPageEnabled=”false” httpsHelpPageEnabled=”true” includeExceptionDetailInFaults=”true” />
<serviceMetadata httpGetEnabled=”false” httpsGetEnabled=”true” />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<!– Note: the service name must match the configuration name for the service implementation. –>
<service name=”Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkServiceInstance” behaviorConfiguration=”ServiceBehaviorConfiguration”>
<!–<endpoint name=”HttpMexEndpoint” address=”mex” binding=”mexHttpBinding” bindingConfiguration=”” contract=”IMetadataExchange” />–>
<!–<endpoint name=”HttpsMexEndpoint” address=”mex” binding=”mexHttpsBinding” bindingConfiguration=”” contract=”IMetadataExchange” />–>
<endpoint name=”HttpsMexEndpoint” address=”mex” binding=”wsHttpBinding” bindingConfiguration=”CertificateWithTransport” contract=”IMetadataExchange” />
</service>
</services>
</system.serviceModel>

5. In the BizTalk Adapter Settings, make sure that you select “Transport” and “Certificate”.

Maximum Characters allowed in an xml element

November 15th, 2008  |  Published in BizTalk Tips

Today I found that in BizTalk, there is a maximum limit for the number of characters that can be sent in an XML element. The limit is 50,000,000 chars.