”There is no Hello World in BizTalk”
- Dan Rosanova (author of the book)

4606EN_Biztalk%20server%202010%20patterns_FrontCoverI really want to like this book. Right off the bat the title is awesome with a capital A. Right up my alley as it were. For a long time there has been a lack of literature about the more practical details around patterns and anti-patterns and how they are implemented in BizTalk. I am not saying that there has not been anything about patterns, there is a ton of them, but nothing really about how to implement them in a BizTalk solution, and how to do that in practice. Enter this book.

Oh, how I would like to like his book. I am however somewhat disappointed, but you should definitely buy it.

Insightful author

There are chapters and headings that underline how very insightful the author is about BizTalk and its implementation. Headers that are very helpful in summarizing all the disparate definitions that you might already have about BizTalk. One particular header is “When to use BizTalk”, which does the best job ever to answer that question. Another is “Visual Studio solution structure” that explains in very practical and well-grounded points how the author feels the solution has to be structured. In my opinion; if you do not already have a solution structure document, use this one.

Author style

The text oozes with practical knowledge and a lot of humor as well. There is no doubt in my mind what so ever that the author, does not only know what he is talking about, but also that there is quite a lot that has been left out of the book in order to shorten the text. He does a very good job of taking a practical approach to development and architecture. He makes use of the same example solution throughout the book. This makes you feel for the solution as you might do for a real life solution. You started it and have seen it grow from a mere file-copy solution to being a core process handler in the enterprise. Another good point in doing this is that he shows the importance of doing the architecture right from the start. To really think ahead and figure out what might be next in order not to “paint yourself into a corner”. I think there is too little of this in the book. I would have liked more of a discussion about what might be the best solution within the current context. As all of you know; the problem usually is not to find a solution, but to find the best one within a certain context. That is the beauty of BizTalk in my opinion.

Also, once I would like to read a BizTalk book that assumes I know BizTalk and can tell the difference between a pipeline and a map, and know how to use custom xslt. This book does not, and spends few too many pages about the basics. I think this is due to the editor or publisher. They think you need that in order to make the book complete. I would say you do not. Anyone that would pick up this book feels confident about the basics. The title says so.

Practical approach

The author takes a very practical approach, and together with the code supplied you can easily follow along and learn hands on as well. Once again I would like to point out that some parts might focus too much on the practical but some people really like that so it is just an opinion.

Then there is another thing about the book as a whole. Due to the fact that the author wants you to see the solution grow as it might in a real life scenario, the disposition of the book is partly totally off the wall. The same chapter covers Unit testing and BAM, and another mixes configuring WCF-receive and BRE.

So tell me, what should I do?

So, bottom line: Should you buy this book? Of course you should! The technical aspect of it together with the experience of the author is an opportunity you should not miss. Another point I would like to reiterate is that it fills a gap in the integration literature and I would especially recommend it to people that have worked with BizTalk for two years and changed projects during that time. It might be time to move ahead and have an option during the next ICC meeting.

Though I would like to discuss certain parts about solution structure with the author, there are a lot of tips and tricks I will use in the future.

More info on the author: blog, twitter.

As you may know, there is an MCTS-exam called 70-595, for us that work with BizTalk. The formal name is: “Developing Business Process and Integration Solutions by Using Microsoft BizTalk Server 2010”. Many seem to think that passing this test is hard and also a challenge, but if you do pass, it gives you a sense of pride and accomplishment. You have also received a sign of approval from Microsoft about your knowledge and abilities. If you are lucky, and work for the right employer, you might even receive a bonus for passing.

How do I book a test date?

clip_image001Firstly you need to find a Prometric-licensed test center. Microsoft works in collaboration with Prometric worldwide and they are responsible for making sure that everyone gets to take the test under the same conditions. They, in turn, certify locations (or test centers) all over the world. You need to find one of those. If I were you I would check the local education center that your company usually uses.

If you live in Sweden I can recommend AddSkills. You can book a date right from their site, and even send the invoice directly to your employer. The cost for taking the test varies, but at AddSkills the current rate is 1 950 SEK for the Gothenburg and Stockholm test centers. Others might be more expensive.

Is the test hard?

clip_image002Yes, it is hard. The point of the test to show that you are better than a beginner and that you also have some working experience with the product. I have heard different rumors about different Microsoft exams. Some seem to be easy-peasy, and others are hard as nails. This might be the case but I can tell you that the BizTalk is in the latter category rather than the former.

What is the process of the exam itself?

There used to be practice tests available, that closely mimicked the actual test’s process. I have not been able to find any tests for BizTalk 2010 but I will assume that, since they were available it is OK for me to write a bit about the process.

clip_image003Most importantly: No cheating! If you are caught cheating, you will be banned from taking further tests and the community will shun you. You will be forced to live out in the forest with only the birds and the voices in your head to keep you company. So please don’t cheat.

You will be placed in front of a computer configured to conform to some sort of minimum standard. You are only allowed to use the tools that the computer supplies and also a scratch-pad, provided by the test center. You are not allowed to bring anything but yourself into the test room. To further reduce the risk of cheating the testing room will be monitored via CCTV.

The test is entirely based on multiple choice. Some of the questions have answers in the form of RadioButtons (one correct answer), and others CheckBoxes (more than one might be correct).

There is a “mark for review” system. This means that you can mark a question for review, if you feel you might want to rethink that later. After you have answered all the questions you have an opportunity to view all the questions again. The ones you have marked for review is very clearly marked.

clip_image004The total time for the test is two and a half hours, which is ample time in my view. If you are worried that you might not be able to finish on time, you can use the review-system to mark questions you are not so sure about or you feel might take a long time to answer. Then run thru the test once and answer all the “easy” ones. This way you know that you will at least get those.

My method has been to take one question at a time and really focus on just that question. Read it, analyze it and try to get to the bare bone of the question. Give it the answer you feel is the best one and if you are unsure; mark it for review. Then drop that question and focus hard on the next one. I run thru the test in this manor until there are no more questions. By then, I am ready for a short break. After the break I review all the questions marked for review. This time, focusing even harder on the text and the different answers, as there might be pitfalls. Personally I don’t believe in reviewing all the questions, it’s just a waste of time.

clip_image005When you are done, you submit the test and after 10 agonizing seconds you will receive your score: pass or fail. If you pass, don’t forget to pick up your test result sheet from the test center. This paper will tell you your score and how well you performed in the different categories (see below).

In case of success, don’t forget to celebrate and treat yourself to something as a reward for all that hard work.

What do I need to study?

That actually has an official answer from Microsoft located here. I heartily recommend reading that article thoroughly and several times. Note that they have used the wording “including but not limited to”, so even if the list of things to know might be long, it might not be complete.

Here it is, together with the relative percentage of that subject compared to the whole exam.

  • Configuring and Architecture: 20 %
  • Developing BizTalk Artifacts: 20 %
  • Debugging and exception handling: 17 %
  • Integrating Web Services and WCF: 14 %
  • Implementing extended capabilities: 13 %
  • Deploying, tracking and supporting: 16 %

Something worth mentioning is that there is a lot of focus on Web Services and Wcf. It is about as important as developing BizTalk artifacts, which is pretty darn “core BizTalk”.

Something else worth noting is the point called “Implementing extended capabilities”. That is worth 13 % but includes RFID, EDI, BRE and BAM. It is safe to say that you might not have to know all the ins and outs of BAM or RFID to pass, but to dismiss them altogether is naïve.

My advice

The best advice I can give you about what to focus on when studying for the exam is this:

  1. Read the article from Microsoft once more and note all the concepts listed under each category (like what core adapters are mentioned or that you must know how to configure basic tracking).
  2. Divide all the concepts into three categories:
    1. I have heard/not heard of this and have only a vague/no idea of how to use it (like RFID perhaps).
    2. I have a fairly good idea of how to use this but feel I might need to know more (like Role Links).
    3. I know this and feel I really don’t need to study for it (like configuring a FILE send port).

How do I study for the exam?

There is really no simple solution for this as there is no self-paced learning kit or anything like that. There might be a book on this subject in the making, according to rumors. I have no idea about release date or anything though.

Until that book is released I recommend this summary, found at Microsoft. It is made by the ever productive Steef-Jan and lists all the free available resources that Microsoft has put out.

I would also recommend the book Microsoft BizTalk Server 2010 Unleached, partly written by a colleague of mine, Jan Eliasen. You should, of course, read the book from cover to cover but if you are more target oriented you can obviously skip the more extensive aspects about BRE, everything about Windows Azure and the short part about the ESB toolkit.

Also read the blog post about the exam written by fellow blogical-blogger and MCT Johan Hedberg.

In closing…

I passed my test. Will you prove yourself? Just kidding! Have fun studying; you will learn a lot of useful things about our favorite product.

Also, please provide feedback if you disagree or feel I have said too much about anything. I am only trying to help, not violate the NDA.

Earlier this year Microsoft retired the old certification for BizTalk 2006 and so I was no longer a Technology Specialist.

Well I finally got around to it, took the test, and scored a healthy 91%.

I have received some questions as to how you should prepare for the exam and based on that I have a couple pointers:

If you are an experienced BizTalk developer you really don’t need to study.

This is not a bad thing. It just shows that the exam is made to show that you have working experience and if you do; you will pass.

Read an excellent book

The unequivocal one is of course BizTalk 2010 Unleashed. Use it to read up on things you feel you don’t know; like perhaps the BRE or Wcf-adapters or BAM or Orchestrations or EDI or…

Based on what you have used the last year, you should skip those parts and read up on the parts you have not used. If you spent the better part of 2011 developing integrations using advanced maps and Wcf; read up on BAM and orchestrations.

See how others have prepared

The ever productive Steef-Jan Wiggers has written a TechNet Wiki called BizTalk Server 2010 Exam 70-595 Preparation. It is about resources that is available for free from Microsoft. It comes highly recommended.

Buy beer

Do you know someone that is a MCTS for BizTalk 2010? If so; you can invite him/her to some kind of “after work event”. Buy the person some good beers and then start asking nicely about the exam.

As an MCTS you get special training, and these special pills, so you can’t remember specifics about the exam. We can however talk generally about it: What skills are measured? How much is there about BRE compared to other topics? Is it hard?

Just saying…

Every time I suggest BizTalk as an alternative in a “bid” or project I feel like the guy to the right.

Smile

I guess you have, at some point, installed a certificate for the the BizTalk service user. The ability for BizTalk to use certificate to encrypt/decrypt messages is very powerful in some scenarios.

The recommended way of doing this is to simply log on to the machine as the service account. This is not always possible due to policies and restrictions at the client; so an intense mail conversation might ensue. It is usually resolved in some way.

One way to resolve it might be to try to us “runas” to execute mmc as the BizTalk service user.

runas /profile /user:BtsUsr "C:\Windows\SysWOW64\mmc.exe"

However, this is not possible as the following error is presented: “740: The requested operation requires elevation.”

The solution to this might be to disable the UAC on the machine, but that is usually not possible either.

The solution I found to be the best is the following:

1. Add the BizTalk Service User the Local Admin group.BtsUsrAsAdmin

2. Then navigate to the appropriate system-folder (System32 or SysWow64).

RunAsDiffUser

3. Find and select MMC.exe, hold down shift and right-click to get the “Run as different user” option.

4. Choose to run as different user and supply the credentials for the BizTalk Service user.

6. Click Ok to elevate the process and boom you are in!

Of course you have to remove the service account from the Local Admin group as soon as possible after installation.

The strange thing is that the “runas”-approach still does not work but who cares.

Firstly I would like to get the score thing out of the way and in true consulting fashion I’ll say: It depends. I give it two or four stars depending on your needs as a developer/architect. Let me explain:

What do you want to do?

The whole basis for the book is not to be a comprehensive guide of every system you will ever integrate with, but rather the more common ones. Systems like SAP, Dynamics AX or SharePoint. Neither is it a documentation update on the BizTalk adapters or even about more general features of BizTalk. Before spending some money on this book you should ask yourself; what do I want to do?

Are you a senior BizTalk developer or perhaps an integration architect and need to integrate with one of the systems covered in the book, then you should not only buy the book and read it, but rather you have to (4 stars). On the other hand, if not, then you can leave it on the shelf, or what the equivalent version in the online book store is; this is the 2 stars.

Systems covered by the book

  • SQL Server
  • Dynamics CRM
  • SAP
  • Azure AppFabric
  • SharePoint 2010
  • Dynamics AX
  • Salesforce.com

Do you need to integrate with any of these? Great! Good luck! This book is a very good place to start.

Some key takeaways

The chapters on SAP (which I guess are written by Kent Weare) are some of the best technical writing I’ve ever come across, but then again I might be biased. I was once in the situation described in the chapter and I like how the writer must have overcome a lot of boundaries (both mental and structural) to be able to write about it in the way he does. The way he focuses on “how to integrate with SAP-people” so to speak, and what terms to use to better make yourself understood is very useful and something I would have loved to have about three years ago.

A book that refers to blog posts is new to me and not something I dislike. However, in some cases, the use of those links seemed more like a fast and easy way to get the chapter done, rather than trying to incorporate the information from the blog post in the text.

Some chapters (particularly the one on Windows Azure) might have benefited from more information about some key aspects of the integration. The section about ACS comes to mind.

There are a lot of how-tos and walkthroughs showing you exactly how to configure adapters, complete with many illustrative screen dumps. You should have absolutely no problem building your first integration for Dynamics CRM. Then again I think that in some cases I would have benefitted more from just information about the adapter and the integrating system.

Related info

  • The book can be found here.
  • My previous post about an event where some of the authors presented concepts from the book can be found here.
  • Kent Weare's blog
  • Richard Seroter's blog
  • Info on Sergei Moukhnitski
  • Thiago Almeida's blog
  • Info on Carl Darski

I guess you, like me, use the BtsWcfServicePublishing.exe to automate the deployment process for your wcf-hosting needs in BizTalk. If you don’t I think you should, as it saves you a lot of time. For one you don’t have to regenerate your endpoint information using the BtsWcfServicePublishingWizard (note: not the same program as the BtsWcfServicePublishing) and all it’s tedious steps every single time you update a service.

The thing is that when you use the BtsWcfServicePublishing.exe on a BizTalk-assembly built using BizTalk 2010 you get an error like this:

Error publishing WCF service.
Could not load file or assembly 'file:///C:\Windows\Microsoft.NET\assembly\GAC_MSIL\…' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

This is due to the fact that the BtsWcfServicePublishing tries to use version 2.0 of the .net framework. To make it work on BizTalk 2010 assemblies add the following info in the configuration file (just under the configuration-tag.

<startup>
   <supportedRuntime version="v4.0" />
</startup>

Just run it again and you’ll be happy as Larry.

Having recently discovered that this Azure thing is just about ready for actual release, I have picked it up. So after spending an evening installing everything needed to run samples and tutorials, Microsoft releases version 1.5 of the SDK and I have to reinstall everything.

Voicing my angst about this on Twitter I got an answer from the newly appointed Evangelist Thiago Almeida: There is a better way, use Web Platform Installer!

Just point your browser to the Windows Azure Team blog here and off you go. Using this tool you can even install separate labs and it detects dependencies and lets you install them

Now if we can just get them to release a VHD-file as well.

A new experience for me today: You have to use English in the config-file for BizTalk. The thing was that we store some custom settings in the <appSettings>-tag. Quite useful in this particular scenario. So I added some information in Swedish (using the letter ö) and later restarted a host-instance.

I got this error message:

image

It reads:

A failure occurred when executing a Windows service request.
Service request: Start
BizTalk host name: BizTalkServerApplication
Windows service name: BTSSvc$BizTalkServerApplication
Additional error information:
Error code: 0xc0c0153a
Error source: BizTalk Server 2009
Error description: A BizTalk subservice has failed while executing a service request.
Subservice: XLANG/s
Service request: Start

Note that it’s XLANG/s that does not start.

It took me a while to figure out but it was due to the ö. The strange thing is that the letter was used in a comment! So even there you have to use English.

The Swedish Azure User group (or SWAG!) will host their forth event on the 29th of September in Stockholm. Detailed info and booking here.

Alan Smith and Barry O’Reilly have invited Björn Eriksen from Microsoft to speak about Azure Storage and the implications it has on programming and architecture.

When coding for the cloud you cannot utilize the traditional file system, what do you use instead and how? Also, how do you make efficient use of other storage capabilities, such as database, blob and queues?

Given the location and the vicinity to bars, my guess is that there probably will be some time for a relaxed chat, after the event.

Due to the large amout of spam I get, I have removed the comment-feature from the blog.

If you have any feedback about a post, I’d love to hear it. Use the contact form.

logo-mix-ibm-microsoft The last couple of days I have been working with IBM connectivity. We use standard IBM components to bridge SQL Server SSIS and DB2. The component has been working 100% in all but one environment.

So, everything is installed and seems to be configured correctly. The package is installed and every possible setting checks out compared to the other (working) instances. Still I get the error message above.

A google search points me to fixpacks, upgrades and horrific security settings (sharing the %systemroot%)! Even the support forums at IBM turns up this little sad, unanswered, post.

The simple answer was found by a colleague: Run SSMS as administrator! The elevated rights make it possible for SSMS to utilize the IBM provider.

Then it hits me: In no other of the working environment are we trying to execute the SSIS package from SSMS. We use jobs for that… Now I will celebrate and possibly kill myself

Or, as it was called: “Top 10 Things to Know When Integrating with Line of Business Systems”.

JohanIntroducingThe quick Saravana Kumar beat me to posting about this, but that does not mean I cannot reiterate it. The presentation was hosted by the Swedish BizTalk User Group (Johan and Mikael of course) and was presented by Richard Seroter, BizTalk MVP and nice guy, and Kent Weare, also a BizTalk MVP and nice guy (I see a pattern here).

Notice that a white shirt was the thing to wear on stage. They looked a bit like a cult…

So, what were the top 10 things to know? Here they are:

#1: Strategically use adapters, proxies and direct APIs.

This means that you should be aware of the fact that there might often be more than one way to integrate with a system. Depending on your needs (QoD or EAI) you should opt for different strategies.

#2: Be creative when client library can’t be used for security.

The most obvious of this is letting credential information tag along though a Azure Service Bus service, but there are other examples. Creative does not have to mean “not secure at all and totally dangerous”, but you have to present it well to the security guys for it to seem creative and not barking mad.

#3: Sometimes you need a data/protocol proxy in front of BizTalk

I guess we have all been there. You are presented with a service, or a schema or file that simply will not work with BizTalk. The most famous of these are web services that use the xs:any to be “dynamic” and “agile”.

In these cases you might need to build something to serve BizTalk in a way that the data is digestible. A personal example is a service that read data from a com-port and sent incoming messages to an MSMQ-queue (thanks to Kjell Almgren).

#4: Reliability may not be pretty

A picture of an old Volvo was the symbolism of choice. But again it ties into #3 and highlights the solution using MSMQ, but hey it worked and still does. You might not create a new database just to act as a buffer as a first step during development but as you encounter problems with lost messages and overflow, you implement it. Much to the annoyance of the people that takes over after you. But: It does not have to be pretty.

sav_and_richardAfter this we had a bit of a break, during which Saravana had the opportunity to demo his new creation BizTalk 360. It’s well worth a look. Personally I wonder what the next version will be called, 360 2.0, or BizTalk 720. I also had the pleasure of discussing the presentation with both Richard and Saravana.

So, after some salad, soft drinks and socializing Kent started round 2.

#5: Consider both Polling and Notification techniques

This, for me, is something to remember. Often I don’t even consider notification as it tends to be a bit hard to do. However Kent reminded us how easy it is to use notification from an SQL server using the WCF-SQL adapter. It might still be hard using other adapters though.

#6: Understand when to use Batch and Real time interfaces

Once again this is a very good thing to remember when you try to architect a solution. “Does this have to run in a batch?” “Can I use real time or will it bog down the AS/400 machine?”.

#7: Use asynchronous communication when possible

Another great tip and something to live by in order to shorten response times and latency in every solution. If the message does not have to be validated and possibly sent back for revision, then use asynchronous communication. Please.

#8: Data access strategies

tip 8This really needs to be illustrated by the great picture from the lecture.

It shows how data access might not be as straight forward as one might think.

Kent works in the utility business and integrates with one of the most up-tight systems around the world (not his words).

Now this system has fairly good ways for integration but … it has it’s issues, as presented by himself in a really useful webcast from 2009.

He talked about an example in which they had to exchange data in triplicate every time something was updated. One file containing the data, one for archiving and another to signal the system that the first file had been posted. A smart solution to a big problem, but not the straightest line of the three on the picture.

#9: Securing LOB interfaces

If I am honest I cannot remember the particulars about this point.

#10: Don’t integrate anything that feels unnatural

Illustrated by fries and mayonnaise (which is great by the way). Kent’s main point here, I would say, is that if it something in your gut is telling you that these systems should not integrate, then you are probably right. They might just be too different or handle completely different data.

Lastly I would like to a nice guy as well and point out that the coming book is a must read for those of us integrating LOB systems. I will surely order it since I, as a swebug attendee, get a discount.

Now I am off to view some movies and also give Richard a tip.

I got a question through my e-mail today. The problem was that he hade to use 3rd party schemas (papiNet). These schemas contained a lot of words that BizTalk does not allow. Well rather it is the c# compiler that does not allow it. However:  the schemas would not compile and so he was stuck.

The question was, in short, how do you use reserved c# or BizTalk words in schemas? Words like “schema” or “Int”?

The answer is quite simple: Just select the node in question and take a look at the property list. There is a property called RootNode TypeName. This is the type name that will be used when the schema is compiled. Change it to something that will compile.

In the case, the node is called “int”. Since this will not compile, the RootNode TypeName is set to “SchemaTypeInt”.

image

In this way you can still be true to the original format and still use the schema in BizTalk. Also note that the TypeName will never be visible in BizTalk maps nor when you work with promoted properties or distinguised fields.

An important note though: You cannot solve the issue with reserved xpath words using this. If you have a schema that contains one of those words and you need to promote, or use the xpath-function in an orchestration, you need to map the external schema into an internal, compatible, one.

Thanks to @cndamin for the feedback.

Not quite, but it will be a great event for those of us that get exited about words like “LOB”, “integration”, “pattern” and “cloud”.

BizTalk User Group Sweden is hosting an event called “Top 10 Things to Know When Integrating with Line of Business Systems”. It will feature the ever book-plugging Richard Seroter and co-writer Kent Weare. Together they have written a book called “Microsoft BizTalk 2010: Line of Business Systems Integration” (has a nice ring to it, doesn’t it).

Other confirmed guests are Saravana Kumar (BizTalk MVP and BizTalk 360 developer) and also that Dutch guy that keeps tweeting about football; Steef-Jan Wiggers.

…and me of course.

Now, here’s the thing: There are still seats left! Go! Grab yourself a seat.

More Posts Next page »