Thanks to Packt Publishing, I am pleased to offer you the opportunity to win a copy of Richard Seroter’s book SOA Patterns with BizTalk Server 2009 – a $60 value. I will even cover the shipping costs, via book mail, to any place in the world the US Postal Service will deliver to.
Here is what you need to do in order to win:
Simply let us know of a great BizTalk Tip or Trick using BizTalk 2006, BizTalk 2006 R2, or BizTalk 2009. Tell us a little about it and why it is useful. This could be as simple as a UI tip or complex as you want to make it. This does not need to be anything new, you might have already blogged about it or posted it to a forum. If so, that's ok!
How to Enter:
1. Either post a comment to this blog post with your idea or post a link to your blog / post outlining your tip or trick. To post a comment or link I suggest being a registered member of BizTalkGurus.com. This will make it easier to find you if you win and easier to get past the SPAM filter. In any case, your comment might not show up on the site right away. 2. Having problems posting a comment? Then just email your idea or link directly to me using the Contact link on the side of my blog. 3. All entries must be received by Thursday November 5th, 2009 at 11:59 PM Central Time. 4. The winner will be selected by Sunday November 8th and notified via email. In addition, a blog post will be made to announce the winner the following day. 5. All decisions of the judges are final. :)
1. Either post a comment to this blog post with your idea or post a link to your blog / post outlining your tip or trick. To post a comment or link I suggest being a registered member of BizTalkGurus.com. This will make it easier to find you if you win and easier to get past the SPAM filter. In any case, your comment might not show up on the site right away.
2. Having problems posting a comment? Then just email your idea or link directly to me using the Contact link on the side of my blog.
3. All entries must be received by Thursday November 5th, 2009 at 11:59 PM Central Time.
4. The winner will be selected by Sunday November 8th and notified via email. In addition, a blog post will be made to announce the winner the following day.
5. All decisions of the judges are final. :)
I will be working with a few other BizTalk MVP’s to pick the best idea so be creative and have fun!
I have been working with BizTalk since year 2006, prior to that I was working with .NET since year 2001.
The greatest tip / trick which I have learnt in all these years is that:
If the integration layer (BizTalk layer) of your enterprise application is heavily interacting with databases, then it is not advisable to use any type of SQL Adapter, rather a .NET Data Access Layer should be built in which each entity object should inherit from System.EnterpriseServices.ServicedComponent such that they can take part in COM+ transactions. Now this dll could be registered with COM+ using regsvcs utility. We can check it in COM+ MMC snap in. Now even if we go for multibox BizTalk installation, this data access layer would work fine.
Well, another trick. If you got to deal with large flat files of size more than 10 MB then it is wiser to use SSIS (Sql Server Integration Services) instead of BizTalk. We should spare BizTalk from doing this donkey work. Normally as EAI Architect, I recommend both BizTalk and SSIS together for meeting integration requirements.
EAI Architect - Microsoft Technologies
Here is a really simple tip that is great to use when building demos and proof of concepts using the file adapter.
1. Create one folder (docs) and place all your test files there.
2. Configure the receive location to use the docs folder and “Copy*.xml” as the filter (for Server 2008, Vista and 7 use “*Copy*.xml”
3. Configure all your send ports to send to the docs folder with filenames like “Order_%MessageID%.xml”.
When you test, select the file and use CTRL+C, CTRL+V to create a copy.
You can then test your application from one folder.
I have an e-Book copy of Richard’s book and it rocks, but having a physical copy would be great! Nothing like holding part of a tree in your hand.
I think that most people that use BizTalk are at least aware of the Business Rules Engine and if they are they know that using vocabularies is definitely a “best practice.” Creating vocabularies can be rather painful.
Tip 1 – Create a vocabulary not based on the process but rather on the fact source. If you have three schemas and a few .NET classes involved in the rule create separate vocabularies for each schema and for each .NET class, not a single vocabulary for the entire process. Ensure that you define all the terms that you even think you might need now or in the future. If for example you are creating a vocabulary for a Purchase Order and there is a chance you might apply a discount and change the Total node provide both a read and a write (Get and Set) vocabulary term for Total. Modifying vocabularies in the future is no fun so getting them right from the start is helpful!
Tip 2 – (This is the Real tip!) When creating vocabularies, to speed creating terms, select the item (say an Element in a schema) in Fact Explorer and while holding the mouse button drag the item to the Vocabulary tab, (the focus will shift) and then drag it to the vocabulary you wish to add the term to before letting go of the mouse button. The vocabulary wizard will launch and all you have to do is to fill in the name, and choose whether it will be a get or set term!
You can generate C# files representing the orchestration, schemas, and maps using Visual studio if you set the following registry key.
1. Create a key called BizTalkProject at the following location: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1
2. create a DWORD key GenerateCSFiles, and set its value to 1
3. Restart visual studio, load a BizTalk project and rebuild.
Two little tricks ive posted before from my biztalk black magic book are:
1. When you hand edit your binding files and suddenly you cant enlist ports anymore and cant work out why
2. You ge the CLSID_BizTalkPropertyBagFactory error message but you didnt really do anything and start to wonder if BizTalk just hates you
A few people have bought me drinks for saving their skin with these two babies.
Ive already got the book so im just in this for fun
Check this out if you want to win a copy of the SOA Patterns Book www.biztalkgurus.com/.../biztalk
Many people developing BizTalk applications find themselves creating maps with a lot of functoids doing a lot of logic or database lookups. These maps inevitably become large and unwieldy, and are a maintenance nightmare.
A great way to keep maps simple is to use the Business Rules Engine (BRE) for database lookups and logic operations. Before (or after, as appropriate in your case) sending a message to your map, send it to the BRE and let it do the work.
Another reason you may wish to leverage the BRE is to leverage fact retrievers. Fact retrievers are long-term rule stores that let you cache lookup values for long periods of time, and even refresh them at timed intervals. This is a great place to store frequently-accessed items like lookup tables. It's also a lot easier to maintain than having the logic buried within your maps.
Another tip from my side:
If you are interacting with 20-30 database tables in your integration layer, you are definitely going to end up with deadlocks, because SQL Adapters are very poor in maintaining transactions and locks. So use the data access layer with objects derived from ServicedComponent as I mentioned in my earlier post as well as revisit all your stored procedures and tune them appropriately, never ever use cursors in stored procedures use DECLARE @table instead, prefer joins to super nested queries and don't use *, use explicit column names instead for the sprocs and you can alleviate the deadlock problems in your integration layer.
Well, one more tip:
Try to make your BizTalk application as loosely coupled as possible. Use proper design patterns like recipient list pattern or process manager pattern and scatter-gather patterns for they are all loosely coupled.
not very specific to biztalk.but here is one tiny one..
#during development time, when you have multiple send and receive locations to monitor use a html page with multiple iframes to accommodate all file/ftp/sql tables locations to see all at once :),
instead of Alt-Tab
Hi Steve, Some tips I had came across while developing with Biztalk 2009 the last days:
1) Visual Studio 2008 fails to Create new BizTalk projects
I was stuck getting the error message: Creating project ‘project name’… project creation failed
Solution is going to the registry to make the following change:
"PossibleProjectExtensions"="csproj" - Original VS install reg value. "PossibleProjectExtensions"="csproj;btproj" - Post Biztalk installation reg value
The following is the entry for the 64 bit version of VS:
The full post is here: blogs.msdn.com/.../visual-studio-2008-fails-to-create-open-biztalk-projects.aspx
And it really saved me a lot of time and headaches.
2) Constructing an If-Then-Else logic in a mapper
I needed to make this simple logical function and did not want to use a Script. Finally I came across with this post and currently I have something pretty similar working out perfectly:
3) HTTP GET and HTTP POST
I needed to send messages via Http POST with parameters in plain text.
This post helped me a lot as it shows how to use the RawString class to construct the body of the message and also suggests the use of Fiddler to monitor and try your request. After having working my request with Fiddler I was able to make it work within Biztalk, realizing that is necessary to set [Content Type= application/x-www-form-urlencoded] in the send port (I commented this out in the post).
Full post: kentweare.blogspot.com/.../adventures-with-http-adapter-and-yahoo.html
The sample is with the Yahoo API but it applies to any HTTP POST request.
4) BizTalk and COM+ Transaction
This is another problem that I faced making a POC. I had to call COM+ for making a distributed transaction and had exceptions.
After making some search I came across this post: biztalkers.blogspot.com/.../biztalk-and-com-transaction.html
The problem was in fact the attribute “RequiresNew”. I changed it to “Requires” and everything worked out.
5) ESB Toolkit – How to invoke an orchestration within an Itinerary
This is actually something I had the pleasure to talk with Richard. I was figuring out how exactly say within an itinerary “I want to call this orchestration, afterwards this other one and so on..”. In fact, despite having many orchestrations deployed they did not appear on the Orchestration Service combo box to be selected in order to be invoked.
I was about to be done because I couldn’t find the way to set this up and couldn’t find useful help either. I only had available the 2 orchestrations that come with the ESB, not my orchestrations.
Finally this video was the only source I found about how to do that: cid-04bc12b1f7b2979a.skydrive.live.com/.../ESBT%7C_How%7C_Two%7C_5%7C_CustomOrchestrations.wmv
The main problem is that you have to explicity register the orchestration (type and assembly) on the esb.config file. Obviously, not productive at all but that is the answer. After doing this I was able to select my orchestrations within itineraries.
6) I made some modifications on the BTSNTSvc.exe.config and after starting my host I got the error:
Error: The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception.
This has nothing to do with Sql indeed. The issue is in the .config where I mis-spelled something.
I think it is important to bear in mind this and the error description has nothing to do with the error itself.
Hope it helps.
If you are looking for ways to display business rules outside the Business Rule Composer, you want to look at the RuleDisplayStringExtractor object in the Microsoft.BizTalk.RuleEngineExtensions namespace. This object allows you to turn a Rule object into a human-readable business rule similar to the one displayed in the composer. This namespace also contains the RuleSetDeploymentDriver object, which you can use to programmatically import, export, deploy, undeploy, retrieve deployment characteristics, and set tracking configuration for rule sets and vocabularies.
Use the BizTalk Software Factory (www.codeplex.com/bsf) to build BizTalk solutions the easy way. This software factory supports BizTalk developers in creating a solution structure and creating artifacts, implementing best BizTalk practices.
If you are building custom pipeline components, then I guess this tip will save you lot of time