by community-syndication | Dec 13, 2006 | BizTalk Community Blogs via Syndication
Dimension Data Learning Services (DDLS) and Breeze Training (aka Mick Badran and co) have worked in collaboration to put together some public training courses next year (April 07 / May 07) on BizTalk Server 2006 R2.
Sydney: 16th April – 19th April 2007
Melbourne: 21st May – 24th May 2007
Target Audience: Developers and IT professionals with previous experience working with BizTalk 2002/2004 .Net development. (Level 300/400)
This 4-day workshop provides developers with the tools to upgrade their 2002/4 skills and perform advanced orchestrations and training partner management. You will learn to use BAS and SSO, practice developing, managing and customizing adapters and creating custom pipeline components, all within BizTalk rules. This workshop also explores the new features of BizTalk R2 including developing & consuming WCF Services (Windows Communication Foundation) for BizTalk.
Check out more deatils here: http://www.ddls.com.au/VendCourseDet/MS+/6/BIZTR2BT.htm
by community-syndication | Dec 13, 2006 | BizTalk Community Blogs via Syndication
I spent a rather interesting day at Microsoft , Reading at the Grey Matter Architect Forum. The focus of todays sessions was all about how other companies/partners are using VSTS and extending it. Heres some of my thoughts on the sessions today and on some of the things that sort of emerged along the way (at least, in my mind).
(1) MSF and VSTS: The session was by far too short. Alan Cameron Wills is a very engaging speaker and this talk came across very well. The first half was familiar territory since i have been looking at VSTS since TechEd 2004 and started using it recently. It was good to see that MSF is getting into the Factories space so that the process guidance can be tailored to fit with the factory approach. It would have been good to delve into more detail about what MS’s plans are but we didnt have enough time. There were a couple of things that came up in the Q&A session at the end where Alan indicated that the CMMI template will have enhancements because MS is working with SEI to make things better. I gather that some extra stuff will also turn up in the Agile template. He did make a good point that we arent really expected to use the entire process template as is and that most companies will resort to customizing it in one form or another. As such, the out of the box templates are only a starting point, and they dont claim to be the final word on how you implement your process, so whatever enhancements MS provides would be cool but not something that should stop us from getting on with things now. Although the process templates are customizable, i gather (from other articles and books) that in the currentl scenario, this is not for the faint of heart. MSF is moving to a more ‘composable’ approach where instead of siloed “Agile” or “CMMI” templates, there will be a solid catalog of practices to choose from to make the process you want. There, of course, needs to be validation to check that we dont come up with some weird unworkable combination of practices.
I like the way VSTS chucks a ton of work items at you when you instantiate a team project. It gave me a lot of food for thought when starting a recent project. Its quite common to look down the list and think “Ooops!! forgot to sort that task out” so it helps keep you honest and on track. One thing I personally would like to see is “Project Profiles“. What i mean is this: if you take a large SOA project, when you instantiate it in CMMI and Agile (for instance, SCRUM) , what does the guidance look like? how does it differ amongst the two templates? what do the out of the box iterations look like? what do they say you should focus on first and what you should avoid? Similarly how about a B2B or a B2C project? what are the best practices there? when should we rely on the factories and when should we look elsewhere? This would be very helpful in figuring out which approach you want to take for your particular project. I guess that for very experienced architects the answers would be obvious, but this would be a solid fallback and a guide/checklist for those of us who arent exactly gurus in this.
(2) SCRUM and VSTS: Colin Bird from Conchango presented this. As quite a few people know, Conchango developed a SCRUM plugin for VSTS (collaborating with Ken Schwaber). Actually I didnt know it was free till today. Now i gotta go download it !! It was quite a dep talk on how to scale Agile with VSTS. Since I am not all that familar with Scrum (i mean i know what Sprints are etc but not very much more), i cant really comment on the content but it was quite interesting to hear what they have learned from large projects (some distributed and some co-located). These talks make me feel rather wistful sometimes. I wish I could be in a project where you can just have a quick/solid planning workshop and then go heads down in development while someone sorts out the impediments for you. If things arent fitting in the sprint, re-prioritise with the involvement of the client and move it to the next sprint. Wow!! I’ve heard this from many people including some of my friends who’ve worked with companies that are very heavily into Agile methodologies (names withheld). This has never happened to me. Its always been the case that my clients want the stuff done fixed price and they have commercial deadlines so they have to know when we are going live before we start!! Im sure im not alone in this!!
(3) Select Perspective: Rather all-encompassing toolset. I’ve heard a lot about it so it was good to see a demo. I did however disagree with the label “agile” applied to it by the speaker. I will agree that its adaptable and that we need to be more adaptable and flexible in the way we pick our processes and practices for the type of project at hand and it that sense the toolset with its collected “executable wisdom” helps us to be “agile”, but this much of a modelling heavy environment surely cannot be a proper “agile” candidate can it? Isnt one of the main principles of agile to focus on working code rather than heavy documentation and models? If we spend so much time working out various architecture models then wheres the code? which stakeholder is going to pay for pictures? Now dont get me wrong. I’m all for setting out a blueprint before coding and detest the cowboys who plunge into code without a thought to the overall architecture.(okay, so if the whiteboard or the metaphor is enough and your stakeholders are happy with that, go for it!) My clients need to know how the system is broadly going to function and what the moving pieces look like at a high level and in my opinion any architect worth his or her salt who has worked in a particular domain for a while should be able to provide this info without having to first write a hundred unit tests and all the code for it. And im sure that the MDA camp would say “yeah, but spend time on the PIM and push the magic button and voila, its the PSM/code, so you havent wasted any time making that nice pretty UML model “. Something doesnt feel right to me. However, im not slagging off the toolset per-se. It looks quite solid and very formal risk averse environments would enjoy using things like that. I just dont think it should be labelled “agile”.
(4) Essential Unified Process: Star Wars!! The Empire strikes back!! It looks like this is the return of the unified process albeit in a more “developer friendly” way. Take heart young Jedi, your process guardian is near!! IMO, the most outstanding thing (which unfortunately was only alluded to and not demonstrated) was the “intelligent agents”, your persona/role buddies who can take on some of your workload in producing/reviewing artifacts etc, but otherwise nothing really stood out. Sure, its looks cool that you now have electronic storycards in VSTS and its nice to know that all the process vendors recognise that people are going to mix and match and are opening up their toolsets to allow this. IMO, this is a big plus and boost for Microsoft (but thats a post for another day). But for the folks who like the EssUP approach and who are investing in VSTS, this integration is sure to mean a great deal.
Now, how many feathers have i ruffled today?

by community-syndication | Dec 13, 2006 | BizTalk Community Blogs via Syndication
Here are a couple of tips if you plan on running the BizTalk Framework (BTF) Assembler
Component as part of a send pipeline using my BizTalk PipelineTesting Library:
Tip 1: Ensure all necessary schemas are available
The BTF Assembler will require access to all its own set of envelope and header schemas
from the pipeline context, so be sure they are available. All the schemas are in the
Microsoft.BizTalk.GlobalPropertySchemas.dll assembly, so you can easily add them to
the pipeline like this:
pipeline.AddDocSpec(typeof(BTF2Schemas.btf2_endpoints_header));
pipeline.AddDocSpec(typeof(BTF2Schemas.btf2_envelope));
pipeline.AddDocSpec(typeof(BTF2Schemas.btf2_manifest_header));
pipeline.AddDocSpec(typeof(BTF2Schemas.btf2_process_header));
pipeline.AddDocSpec(typeof(BTF2Schemas.btf2_receipt_header));
pipeline.AddDocSpec(typeof(BTF2Schemas.btf2_services_header));
Tip 2: How to set the content encoding
If you’re also using the MIME/SMIME encoder component on your pipeline, keep this
in mind: For some reason, while playing with this yesterday, I could not get the value
of the ContentTransferEncoding property of the MIME encoder to be used when running
my pipeline (an empty pipeline where I added the component manually). However, I found
that I could work around this by directly setting the value on a property in the body
part of the input message to the pipeline, like this:
inputMsg.BodyPart.PartProperties.Write(“ContentTransferEncoding”,
“http://schemas.microsoft.com/BizTalk/2003/mime-properties”, “7bit”);
Hope this helps!
by Richard | Dec 13, 2006 | BizTalk Community Blogs via Syndication
Today was another day of new BizTalk problems … The task was easy; produce a XML file and send to a receiving system. Fine. Done. … Not.
The receiving system could not read the file because of some strange characters in the beginning of the file! It looked something like the below when opening the file in a fancy text editor (UltraEdit or TextPad for example).
<div><span style="color: #000000; ">i»¿</span><span style="color: #0000FF; "><?</span><span style="color: #FF00FF; ">xml version="1.0" encoding="utf-8"</span><span style="color: #0000FF; ">?></span></div>
After a couple of very interesting (:/) hours of Googling) I found this from Ben McFarlin
>
> It is because internal BizTalk messages are in UTF8 format and include
the byte order mark. When you added the xml declaration for UTF16 it
confused the engine; the declaration read UTF16 but the byte order mark indicated UTF8.
>
>
When I finally found the cause the solution was easy. Just another of those weird properties … This time it’s called Preserve BOM (on the properties of the XML Assembly pipeline component – see figure on the right). BOM of course stands for Byte Order Mark.
by community-syndication | Dec 13, 2006 | BizTalk Community Blogs via Syndication
Today was another of new BizTalk problems … The task was easy; produce a XML file and send to a receiving system. Fine. Done.
However the receiving system could not read the file because of some strange characters in the beginning of the file! It looked something like the below when opening the file in a fancy text editor […]
by community-syndication | Dec 12, 2006 | BizTalk Community Blogs via Syndication
In the last few weeks I’ve received a few questions from readers regarding the .NET Adapter Framework 3.0 and its relationship with BizTalk and WCF. I think the main argument is weather WCF presents a strong channel model on its own to cover the functionalities that the adapter framework provides.
WCF provides a solid and extensible channel model to handle messaging-related operations like (WS-* protocols, multi-transport, etc). Is a fact that extending the WCF channel model we can implement interactions with LOB applications. However that doesn’t mean WCF itself presents a framework oriented to model those types of interactions. This is precisely the role of the .NET 3.0 adapter framework. It extends WCF channel model with a set of operations that are common for interactions with LOB applications like: Connection Management, Metadata Management, Metadata Search, Metadata Browsing, etc.
Bottom line the .NET 3.0 Adapter Framework should be seen as a complement to the WCF channel model with LOB interaction components; not as a 100% replacement of the existing BizTalk Adapter Framework.
On future posts I will cover the relations/differences between the .NET 3.0 Adapter Framework and the BizTalk Adapter Framework.
by community-syndication | Dec 12, 2006 | BizTalk Community Blogs via Syndication
I spent a couple of hours today looking at the problem we encountered yesterday with the xpath() function in BizTalk. We were attempting to use an XPath to extract the value of a nested element and assign it to a string variable. The nested element (<Direction>) was in the global (anonymous) namespace, but was a child of an element in a named namespace. The code failed on XmlSerializer de-serialisation with an error saying "<Direction xmlns=''> not expected".
At first, I strongly suspected that the problem was due to the use of the anonymous namespace, especially as the element was defined in a schema that was then imported into the message schema. Both schemas had the 'Element FormDefault' attribute set to default (unqualified), and we had ended up with a horrible interleaved mess of elements, some of which were in defined namespaces, whilst others were in the global namespace. Always, always set Element FormDefault to 'Qualified' in your schemas, unless you have a really good reason not to. We are now in the process of changing all our schemas to eliminate the use of global namespaces.
After a while, I convinced myself that there was a problem with the .NET XmlSerializer, especially after reading a number of news group threads on the Internet. From what I read, it seemed that the XmlSerializer might have problems with "xmlns=''" declarations. To prove the point, I wrote a little code to reproduce the issue. Unfortunately, however, the XmlSerializer worked perfectly, whatever I did. It seems that it has no issues at all with "xmlns=''".
I then spent some time with Reflector, digging into the BizTalk code to see what it was doing, and eventually I discovered the problem…and it was all our fault!!
We had a line of code in the orchestration that attempted to use the BizTalk xpath() function to return the value held in the <Direction> element and assign it to a string variable. The only problem was that the XPath was addressing the <Direction> node, and not its contents. The XPath processor uses XML DOM internally, and expressions return XML nodes or node sets. In our case, the XPath we used was returning an XmlElement node from our XML message. We were trying to assign this to a string variable (doh)!
This very basic XPath error was made opaque by the fact that we got no compile-time error, but instead suffered an run-time exception thrown by the XmlSerializer class. You might reasonably expect that the exception would indicate some kind of type mismatch or cast failure. Instead, we got a general-purpose XmlSerializer exception statibg that the XML content was unexpected. The reason for this becomes clear when we looked a little deeper into what is happening when we call the xpath function. BizTalk generates C# code for the line that calls the xpath function. The generated code calls a method to which it passes the Type of the variable to which the result of the method will be assigned. This Type is used to initialise an instance of XmlSerializer used internally by BizTalk. In our case, we ended up with an instance of XmlSerializer that attempted to de-serialise an XmlElement (addressed by the XPath) as a string object. This, of course, didn't work, and the XmlSerializer returned an exception saying that the XmlElement 'was not expected'.
The XmlSerializer object is used to deserialise XML content obtained using XPathNavigator and XmlNodeReader. In a reversal of the principle of strong typing, BizTalk's XLang/s langauge effectively 'trusts' the developer to select the right type of variable to hold the results of the xpath() function. If the developer gets this wrong (as we did), the code blindly attempts to perform de-serialisation to the incorrect type, and fails at run time.
The best fix in our case was simply to extend the end of the XPath with '/text()'. This returns the text node contained in the <Direction> node (XML DOM sees the text node as a nested node). This nicely de-serialises to a string. Another option would be to retain the XPath as is, but assign the result to an XmlElement variable, and then extract the inner text. This is less direct, and may require an additional atomic scope because XmlElement is not serialisable.
So, the problem was nothing to do with the use of anonymous namespaces or the .NET XmlSerializer. It was a basic logical error in our own code that took ages to spot due to the exception that was raised. If you use the xpath function and get an "<xxxxx xmlns=''> not expected" exception, check your XPath to see what it is actually returning, and the variable you are assigning the results to.
by community-syndication | Dec 12, 2006 | BizTalk Community Blogs via Syndication
Here are my (updated) top 10 favorite BizTalk-related links I have stumbled across over the past couple years: Developing Integration Solutions with BizTalk Server 2004: http://msdn2.microsoft.com/en-us/library/ms942199.aspx Messaging Patterns in Service-Oriented Architecture, Part 1 http://msdn2.microsoft.com/en-us/library/aa480027.aspx Transactions Across BizTalk Server 2004 http://msdn2.microsoft.com/en-us/library/ms942198.aspx The Bloggers Guide to BizTalk http://www.gotdotnet.com/workspaces/workspace.aspx?id=0dfb4f4e-d241-4bc8-8418-2c385d8e3eaa Debatching Options and Performance Considerations in BizTalk 2004 http://www.geekswithblogs.net/sthomas/archive/2004/12/12/17373.aspx Deploying for High Availability http://book.itzero.com/read/microsoft/0505/Sams.Microsoft.BizTalk.Server.2004.Unleashed.Nov.2004.eBook-LiB_html/0672325985/ch15lev1sec4.html Versioning and Re-Deploying BizTalk Server 2006 Applications http://blogs.msdn.com/richardbpi/archive/2005/12/22/506835.aspx BizTalk 2004 Naming Conventions http://www.traceofthought.net/misc/BizTalk%20Naming%20Conventions.htm Understanding Microsoft Integration Technologies http://www.microsoft.com/technet/prodtechnol/biztalk/2004/whitepapers/integration.mspx 8 Tips And Tricks For Better BizTalk Programming http://msdn.microsoft.com/msdnmag/issues/07/05/BizTalk/default.aspx…
by community-syndication | Dec 12, 2006 | BizTalk Community Blogs via Syndication
For a change I’ll get off my Biztalk and BizUnit Soapbox and write about different things.
(1) First up is the Web Service Software Factory: Just downloaded it a couple of days ago and watched Don Smiths webcast. I must say its brilliant stuff. I’ve been using WSCF for a while but that just builds the ASMX facade (and does a pretty good job of it too). I’ve been looking for something that could go all the way down through the layers and into the database and it looks like i’ve finally found it. It was interesting the way we can either generate the business objects from the tables if we already had a database as well as generate database entities from the classes (he didnt actually show this but theres a menu option i need to explore). Its also good that we can collapse the code into a single project if needed instead of having 6 separate projects (although I prefer the latter). It’s use of Enterprise Library was also good.There was some controversy earlier about the patterns it uses, but IMO it does an excellent job and if you dont like the patterns, change the T4 templates and use whatever pattern rocks your boat!
(2) Next up is EasyObjects and MyGeneration : Very impressed with this too. It took hardly 3 minutes to generate all the CRUD stored procedures and the business tier AND use Enterprise Library. Decent stored procs and decent code. Wasnt too comfortable that the abstract business classes had an underscore to start their name, but im sure that can be changed in the template. The thing is CRUD is usually quite simple and it would be interesting to see how it works with custom stored procedures that act on more than one table. What happens to the class corresponding to this new composite SP in terms of the object model and its relationship to other classes? Does the design still remain valid OO (although some purists might argue that if we are generating from the db then we are hardly doing actual OO, rather we are in a data driven object world). Wonder what you folk think about this?
(3) Third up is SubSonic: I finished the introductory webcast to Subsonic just about 10 minutes ago and was nearly blown away by its simplicity. The BuildProvider with the classes all hiding in the background seemed rather like magic. I was on more comfortable ground with the class generator and batch class generators actually as that can be used to build an entire Domain layer or Business Logic layer. The scaffolding for “admin” screens is also really nifty. Since this is inspired by RAILS, i think i better start looking at Rails myself. It must be really something, just reading about it on blog articles at various sites and finding how people are going crazy over it. I have pinged the owners to see if we can get a strong named version of the ActionPack DLL so i can use it in my Biztalk projects when i need to call out to custom class libraries since BTS needs stuff to be strong named and placed in the GAC.
Im now rubbing my hands in glee. More toys for Christmas!! Now which shall I choose for my long term work? Since my immediate project is in .NET 1.1 and BTS 2004 , EasyObjects is the only one i can use. However, there are some other projects kicking off in .NET 2.0 /BTS 2006 as well, so i can move into the WSSF for the services and then use SubSonic for the general business+data components and possibly in the ASP.NET apps as well, although it will run into strong competition in this area (at least in my projects if not amongst the general populace) when the Web Client Factory is released. IMO, Subsonic is definitely more lightweight but it isnt a complete factory either. WCSF needs us to use workflow foundation for complex page flows so it seems more suited for the complex heavy hitting apps, but lets see how it turns out.
If you havent seen these tools in action, do check them out. The WSSF webcast is only an hour, EasyObjects takes a few mins and the Subsonic webcast is 20 mins.. In 2 hours you can have more options at your disposal than days of researching!! Enjoy!!

by community-syndication | Dec 12, 2006 | BizTalk Community Blogs via Syndication
About three years ago, I got an opportunity to use BizTalk, I was so excited. I knew this was an amazing product that many developers had been longed for. At that moment, I had no knowledge with EDI, very few knowledge with schemas, maps and orchestrations, but I took that position anyway, “bravely”. A few weeks later, I realized there too many things to learn, to try. Worst of worst, there were no document in company, no people around could be resource. If I post a question to a news group, I wouldn’t get answer until I figured it out days later. I worked twelve hours a day, reading MSDN, doing test. A couple months later, I lost 14 lbs. Thanks God I found a good way to lose weight. Finally, one day I found, WEBLOGS, was such a nice place to learn, to share knowledge.
Give millions of thanks to these generous people who shared their precious experience with others.