Monday, June 15, 2009

Silversands Associates iPhone ready

The website of SilverSands Associates is adapted to have a real iPhone experience, when surfing to the website with an iPhone.

Have a look.
From the iPhone:


Tuesday, May 5, 2009

Business Rule Engine and Static .net Classes

When using static classes together with the Rule Engine you will get an error when testing the policy

Fact unrecognized.

The solution is explained in the following link, in a few words,Business Rule Engine needs an instance of a class and don’t know how to work with Static classes but by changing a parameter it can be solved.

Thanks to Jean-Francois Philagor for pointing this article.

Monday, March 30, 2009

SQL Adapter – Generating a Schema

When using the Stored Procedures in SQL Server and BizTalk, we need to add the XSD to the project.  When using the Add Adpater MetaData feature of BizTalk (Add –> Add Generated Items…) BizTalk generates the schema, but the result is equal to the Success element and is of atype  AnyType.

This behavior is not the one we want as we want to use the return values.


1. First create the Store Procedure
    ex. SELECT Id, Name FROM Countries FOR XML AUTO, XMLDATA

   Be sure to add FOR XML AUTO, XMLDATA at the end.

2. Run the Add Adapter MetaData wizard, within Visual Studio and your   
    BizTalk Project.

3. At the Statement Information screen, you need to enter valid values
    into the Value column

4. Click the Generate button

5 Finish the Wizard, you will see that now the XSD will contain the

   structured results and not anymore the AnyType element.

6.  After the XSD is generate, remove the XMLDATA clause from the
     Stored Procedure;
    ex. SELECT Id, Name FRO Countries FOR XML AUTO

Wednesday, March 11, 2009

Business Rules Engine – Conditions with Count Node

I needed to create a condition in the Business Rule Egine as follows:
If Field PDF is repeated more than 5 times, take the 5th record

So I needed in the conditions to count how many times the PDF field is repeated within the Xml file

I did the vfollowing:

1. Create a new vocabulary

2. Add New Definition
3. Select Xml Document Element or Attribute
4. Enter a Definition name, ex PDFCount
5. Browse for the Xsd file and select the Field
6. Update the XPath Field Value
    a. Add count(./  in front
    b. Add ) at the end
7. Select System.Double as Type
8. Select Perform “Get” operation
9. Enter a display name
10. Click Finish
11. Use the definition name in the Rule Conditions

Monday, February 9, 2009

Naming Conventions

The raison to write this article is because I still see many multi-nationals struggling with naming conventions within their IT department.

Naming conventions are as old as IT itself, but still many companies do not have proper naming conventions, and even worse, they use internal of external sources to create one.

What is the reason to have Naming Conventions in the first place?
The main reason to introduce naming conventions is to :

  • - to reduce the effort needed to read  and understand source code
  • - to enhance source code appearance

The most important reason is the first one, to reduce the effort needed to read and understand source code

Code must be easy and quick readable and understandable when new employees (internal of external) enters the IT department or when other teams takes over the project..

The answer I gave to my customers is very easy: take the naming conventions found on the Internet.  The goal is not only to have company related Naming conventions, but general naming conventions.

New employees or external consultancy will loose less time understanding the general naming conventions, as they were used too with their previous work, instead of learning the company related ones, which will never be followed 100%.

Some links:


General Naming Conventions:

And many more are available on the net. 


Don’t let your IT department loose time to write company related naming conventions, re-use them!

Friday, September 19, 2008

Tip: Skip Orchestration while Compiling

When you are working on several orchestrations, and need to compile your work, but one of orchestrations is still not working, but you don't care at the moment as you want to compile the other ones. How to do it?

- Right Click on the Orchestration in the Solution Explorer
- Set Build Action to None

- Compile the project and the orchestration will not be taken care of.

Easy feature!

Tip: Error Handling

I had 2 receive locations (1 Receive Port).
Each receive location did validation of a schema in the XmlReceive Pipeline
When an invalid message arrived, i wanted to send an email to the helpdesk and copy the incoming message in the error directory.

I had enabled routing for failed messags in the Receive Port

I created a send port group, adding filter BTS.ReceivePortName = the ReceiveLocation
+ ErrorReport.ErrorType exists.

When an invalid message arrived at the location, I received error entries in the eventlog, but the email nor the copy was processed.

I changed the filter to ErrorPort.ReceivePortName = receivelocation

It worked great.