Introduction
This article explains some of the commonly encountered pitfalls and their workarounds during the development of BizTalk Project.
Prerequisites
The reader is expected to have a basic understanding of:
- § Microsoft BizTalk Server concepts
- § Microsoft .NET Framework
- § Microsoft SQL Server
Pitfalls Encountered and their Workarounds
1. Installation Failure of BizTalk 2004 in Win XP with SP2
- Failed to enable the single sign-on(SSO) service
- Failed to generate the master secret code
Resolution
Use the Group policy object editor to enforce the use of authenticated client calls to the RPC End point Mapper and to disable the RestrictRemoteClients
setting that is enforced by the RPC protocol.
- Click Start, click Run, type gpedit.msc, and then click OK.
- In the Group Policy Object Editor, expand Computer Configuration, expand Administrative Templates, expand System, click Remote Procedure Call, and then click RPC Endpoint Mapper Client Authentication.
- Change the value for RPC Endpoint Mapper Client Authentication to Enabled.
- Click Restrictions for Unauthenticated RPC Clients.
- Change the value for Restrictions for Unauthenticated RPC Clients to Disabled.
Use Registry Editor to enforce the use of authenticated client calls to the RPC Endpoint Mapper and to disable the RestrictRemoteClients
setting that is enforced by the RPC protocol.
- Click Start, click Run, type regedit, and then click OK.
- Locate and then click the following registry key : HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT
- Look for a subkey that is named RPC. If this key exists, click the RPC subkey, and then go to step 6. If this key does not exist, go to step 4.
- On the Edit menu, point to New, and then click Key.
- While the new key is selected, type RPC, and then press ENTER.
- On the Edit menu, point to New, and then click
DWORD
Value. - Type
EnableAuthEpResolution
, and then press ENTER. - On the Edit menu, click Modify.
- In the Value data box, type the number 1. Click OK.
- On the Edit menu, point to New, and then click
DWORD
Value. - Type
RestrictRemoteClients
, and then press ENTER. - On the Edit menu, click Modify.
- In the Value data box, type
0
, and then click OK. - Quit Registry Editor.
2. Issues with SQL Adapter Distributed Transactions and their Isolation levels
Issue
- Transaction Manager has disabled its support for remote network transactions
Resolution
- First of all, verify that "Distribute Transaction Coordinator" Service is running on both database server computer and client computers.
- Go to "Administrative Tools > Services"
- Turn on the "Distribute Transaction Coordinator" Service if it is not running.
- If it is running, then the following settings need to be done on the computer running database server.
- Go to "Administrative Tools > Component Services".
- On the left navigation tree, go to "<Component Services><Computers > My Computer" (you may need to double click and wait as some nodes need time to expand).
- Right click on "My Computer", select "Properties".
- Select "MSDTC" tab.
- Click "Security Configuration".
- Make sure you check "Network DTC Access", "Allow Remote Client", "Allow Inbound/Outbound", and "Enable TIP".
- The service will restart.
- But you may need to reboot your server if it still doesn't work.
On your client computer, use the same above procedure to open the"Security Configuration" setting, make sure you check "Network DTCAccess", "Allow Inbound/Outbound" option, restart service and computer if necessary.
3. Issues with Disassembly of Messages using Envelope Schemas
Issue
- We can use custom pipelines with XML Disassembler to cut an envelope message coming from a SQL receive location to obtain its constituent document messages. If proper options are not specified in the pipeline and the Receive Location through which the envelope message will be coming, the disassembly fails and no document messages are returned, resulting to message loss.
Resolution
- It is the responsibility of the Receive Location to add the envelope node to the incoming XML, along with the Namespace URI, which is the means by which the messaging engine identifies the type of the message. So, proper envelope node name (Document Root Name) and Namespace URI must be specified when creating the SQL receive location.
- The Namespace URI specified in the Receive Location must also be specified as the Document Namespace of both the Envelope Schema and the Document Schema.
- While designing the custom pipeline, the Document Schema and the Envelope Schema of the XML Disassembler stage component must be specified. The custom pipeline must be explicitly specified as the Receive handler of the SQL Receive Location.
4. Message Construction Issues Inside Orchestrations
Issue
- Message is not constructed inside construct shape of the Orchestration.
Resolution
- Before using a BizTalk XML Message inside an orchestration, it must first be constructed. In fact this is just populating the message with XML. If there is an attempt to use this message before it is constructed, the above error will come. Some messages come pre-constructed, such as messages that originate from a send port
- There are several ways to construct a message inside an orchestration:
- Create a new message from an existing message using BizTalk map
- Assign one message to other(i.e. creating a copy of an existing message)
- Creating a message with the help of a
System.XML.XMLDocument
variable
We have to first declare an orchestration variable of type XmlDocument
. Then in a message assignment shape, we need to do something like this:
myxmlDoc = new XmlDocument();
myxmlDoc.LoadXML("<somexmlhere></somexmlhere>")
myMsgBeingConstructed = myxmlDoc;
History
- 10th September, 2010: Initial post