Friday, October 15, 2004

Book Offer: Microsoft BizTalk Server 2004 unleashed

The book (by Scott Woodgate, Stephen Mohr, Brian Loesgen ISBN 0-672-32598-5) seems to be getting into it's final stage. There was a page advertisement in the MSDN magazine of November 2004 (Vol 19 NO 11 Page 108) offering a 30% discount for ordering the book from (plus free shipping).

On Sams website I could not find any link or discount coupon. I opened an issue with Customer Service and they are contacting the Sams Marketing to inquire how we can get the 30% discount.

Update (18 Oct 2004):

I received an email from the Sams Marketing with the following information: In order to get the 30% discount you have to use the coupon code BIZTALK (note it must be all caps!). You enter the coupon code on the 'Payment Method' page in the order process. A review of the discount will be shown on the 'Place Order' page. The offer is valid till the Dec 15.

In a couple of days Sams website will provide a direct link.

Thursday, September 16, 2004

Biztalk Competition Winners

Scott Woodgate published the list of Biztalk Competition Winners. The vocabulary upgrader got mentioned at point F!

The Vocabulary Upgrader is also available at Acumen Business. Also available on this site is the automatic Business Rule Verification;
the Policy Verificator.

Tuesday, August 31, 2004

BizTalk Vocabulary Upgrader goes beta

The BizTalk Vocabulary Upgrader has gone into beta.
The Vocabulary Upgrader enables to replace multiple references to different versions of a vocabulary to a single vocabulary version.

Have a look at the documentation, screenshots, getting started guide.

The tool is submitted to the Microsoft BizTalk Developers competition.

Wednesday, August 04, 2004

Dilbert on Circular Reasoning

With BizTalk 2004 it is possible to end up in 'execution loops', often this is referred to as circular reasoning. I was looking for some examples. Dilbert had the following illustration. Although it doesn't beat the example in the previous post.

Bush on Circular Reasoning

In the New York times [published June 18,2004]:

The New York Times > Washington > Bush and Cheney Talk Strongly of Qaeda Links With Hussein: "Mr. Bush, responding to a reporter's question about the report after a White House cabinet meeting yesterday morning, said: 'The reason I keep insisting that there was a relationship between Iraq and Saddam and Al Qaeda' is 'because there was a relationship between Iraq and Al Qaeda.' "

A great example of circular reasoning!

Tuesday, July 27, 2004

Download details: BizTalk Server 2004 Product Documentation

There is a new updated product documentation for BizTalk Server 2004 (7/23/2004).
Download details: BizTalk Server 2004 Product Documentation. There is a lot of new material about the Rule Engine, Engine Control Functions, Rule Action Side Effects etc.

Wednesday, July 14, 2004

BizTalk Server 2004 FAQ

A great resource for all those BizTalk 2004 server questions you have not found an answer for yet:

BizTalk Server 2004 FAQ -

Windows XP SP2 - BizTalk 2004

The Service Pack 2 release for Microsoft XP has a lot of improvements on security settings. As a side-effect the regular install of the BizTalk 2004 Developers edition will fail at the Single Sign-On service.
It is all well documented by Microsoft, and easy to google if you know that the SP2 is responsible for the install failure, but just in case you did not make the link, read the article

The install failure is:

An unexpected error occurred while configuring the Single Sign-On server.
The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.

Microsoft support article 841893 explains in detail how to resolve the issue by:

  • Using Gpedit.msc to enforce the authentication of client calls

  • or
  • Using Registry Editor to enforce the authentication of client calls

Monday, June 28, 2004

Watch your type

A simple rule:

is less than or equal to
Case:/Root/IncomeStatus = approved

Would a basic salary of only 800 be approved? Or rephrasing: would the rule fire?
I expected it would. But the answer is "It depends". It depeneds on the type of BasicSalary! If the BasicSalary is of type System.String it will not!

Rule Engine Instance Identifier: 29fea928-...
Ruleset Name: Simple
Test Expression: TypedXmlDocument: Case:/Root/Income.BasicSalary <= 75.000
Left Operand Value: 800
Right Operand Value: 75.000
Test Result: False

It seems that the rule engine allows string comparison. And in case of string comparison "800" would be larger than "75.000"! So watch your types! An interesting item to explain to the rule writer!

What about converting the BasicSalary to an Int32?
I tried to add a .NET class in the Business Rules Composer. Selected the mscorlib to add as an assembly and changed the condition to:

is less than or equal to 75.000
Case:/Root/IncomeStatus = approved

Don't know how to handle exceptions here, but let's see what happens:
I reloaded the policy, and mysteriously the 75.000 value was changed to 75! But hey, they also changed the type from System.String to System.Double. Close, but no cigar.

Should I put in 75,000? No: that got interpreted as an error where a string can not be compared with an Int32. And the policy could not be saved.

Let's continue and remove any thousand separator:

is less than or equal to 75000
Case:/Root/IncomeStatus = approved

Reloading the policy and we notice that the 75000 literal has type System.Int32. So we got the right type in place now.

Enterering the next stage: Testing if the rule actual fires. We can not define an instance of System.Int32 because of a missing interface. We need a fact creator. Although the Int32.Parse function is just a static method, we still have to assert the fact in the rule engine. Testing without the fact creation results in no rule-firing.

Hang in there, we are getting close. We only have to create a helper class that implements the Microsoft.RuleEngine.IFactCreator (located in the Microsoft.RuleEngine.dll)

namespace MarcoSoft.Utils
/// Summary description for Converter

public class Converter: Microsoft.RuleEngine.IFactCreator {
public Converter() {

public int stringToInt32(string value){
return Int32.Parse(value);

#region IFactCreator Members
public object[] CreateFacts(RuleSetInfo ruleSetInfo) {
return new object[]{new Converter()};

public Type[] GetFactTypes(RuleSetInfo ruleSetInfo) {
Type converterType = this.GetType();
return new Type[]{converterType};

This code has to be compiled with a strong name, and be placed in the Global Assembly Cache. On the Facts Explorer view of the MS Business Rule Composer we can add the created .NET assembly.
We update the condition with:

is less than or equal to 75000

And in the Test Dialog we add a Fact.Creator of the MarcoSoft.Utils.Converter
Running the code, and voila:

Rule Engine Instance Identifier: 52c89cd5-...
Ruleset Name: Simple
Test Expression: MarcoSoft.Utils.Converter.stringToInt32 <= 75000
Left Operand Value: 800
Right Operand Value: 75000
Test Result: True

The result what I was expecting all along.

Thursday, June 24, 2004

Mike Taulty's WSE 2.0 Tracing Utility.

So you got all the certifications in place, and finally your secure SOAP service is receiving signed encrypted messages. Are you sure?

An essential tool to figure out what is happening (behind the SOAP scenes) when you use WSE 2.0: The WSE 2.0 Tracing Utility.

Friday, June 18, 2004

WSE 2.0 configuration challenge

Security is important, especially when we have a B2B scenario where sensitive information has to be sent. Not too long ago, Microsoft released the Web Service Enhancement 2.0 package(WSE 2.0). Among other features like sending attachments with SOAP messages, it enables us to sent secure SOAP messages.
The amount of code to achieve this is not too much as shown with the shipped examples, but it’s the configuration of the client and server machine what is the challenge. There is good documentation what will get you a long way. But I ran into a little issue on “How to: Make X.509 Certificates Accessible to WSE”

Give the account under which WSE is running read access to the file containing the private key associated with the X.509 certificate.
  1. Open the WSE X.509 Certificate Tool (WseCertificate2.exe)
  2. Set the certificate location and store name where the certificate is located.
  3. Click Select the certificate from the store, choose the certificate you
    want to set the permissions for, and then click OK.
  4. Click Open Private Key File Properties, click the Security tab, add the ASPNET or Network Service account, depending on which version of IIS the Web service is running under, and then select the Read option.

The missing documentation is that if the Security tab is not showing you have to make sure the following:
  1. You need the NTFS file format.
  2. Open the explorer and go to ->Folder Options, click on the View Tab, and deselect “Use simple file sharing [recommended]”

Step d. should now show the Security tab, and the Read access to the security file can
be set for the IE account (ASPNET or Network Service for IE 6.0)

Tuesday, June 15, 2004

XML rule engine - QuickRules

Another Java based XML rule engine - QuickRules, I was not aware of. They also have a DecisionTable editor. The .NET integration goes through COM, so that is just a marketing line. There is also some workflow editing provided. But not on the level as the BizTalk 2004 orchestration. Anyway have a closer look at this product if Java (J2EE) is your target application server.

Wednesday, June 09, 2004

Idiom's: Decisions and Formulas

So who was first Idiom or Microsoft? They both use the concept of defining the datamodel by XSD schema's and use drag-and-drop to place these elements in rule constructs. The advantage of Idiom here is that you seem to be able to show multiple rules at once. This is really missing in the Business Rule Capturing environment of MS Biztalk 2004. They also seem to be able to integrate with BPEL so that must be pretty close to Biztalk rules format. Have a look at their Decisions and Formulas demo.

What still surpise me is that also Idiom expects the Rule writer to define XSD schema's. Why can't we leave the technical binding to XSD, Databse, Java beans or C# components out of the Rule Definitions? Writing good business rules is already complicated enough!

Sunday, June 06, 2004

Thursday, May 27, 2004

NAnt for BizTalk 2004

Continuous build and testing are essentail. Scott Colestock has a good article how NAnt (with extensions) can be used to handle the stop, unenlist, undeploy, redeploy, enlist, start, bounce BizTalk routine. Follow his article for downloading the extension and setting up the environment.

Wednesday, May 26, 2004

Power to the Business Expert

With BizTalk 2004, Microsoft has entered the market of Rule Based solutions. For a first release I am quite impressed. Although the rule expressiveness is not on the level as the current established rule based providers, BizTalk 2004 has much more features than just expressing rules.

The data orchestration, security, single-sign-on etc is where the established rule based providers have been struggling with, and BizTalk 2004 has this all nicely integrated.

What kind of surprised me is that the Business Rule Composer (a tool that ships with BizTalk 2004) is still way to technical for the average Business Expert. And I really wonder why the Business Expert should make the mapping of the business vocabulary to the existing data structure.

The business expert definitely need a vocabulary, and he is the one who should create and maintain these terms and descriptions. But the mapping to a Database, XML document, or C# class implementation, is really for the IT person.

This is not the "what-is-first-chicken-egg-question". Whatever is available in the current datastream (database, xml-documents), should not influence the business logic (or policies how Microsoft refers to it). If the Business Experts want to express that e.g.
Hummer-SUV's are a much higher risk than regular SUV's for approving a car insurance, than it's not relevant if the data is currently already stored in a database, xml-document, or is not available yet. The Business Expert should be able to define the rules, and test the rules.

Also it could be that existing database structures are moved into XML documents, or are only made available through secure webservices. No matter what the IT-strategy is, the Business Rules should stay independent of the IT-strategy.

What I would like to see is that the Business Rules Composer has different user level entries.

  • One for the business expert: Purely defining it's logic, and be able to test this.

  • One for IT people (or Knowledge Engineers) who will map the used Business Terms to the appropriate datamodel, or generate functional requirements from the Business Users expressed needs on Terms what can not be mapped directly to an underlying data structure.

If I'm not mistaken the BizTalk API's are quite open, and this Blog will see how we can use the API's to further enhance BizTalk 2004 rule capturing environement.

make files explained if you did not grew up with them

Here is a nice post on how to define makefiles for a go project and actually teaching you some makefile constructs: