BugLoSE

So, I have this little raffle within my company, where I run the local BizTalk User Group called BugLoSE. The subject of the raffle/competition is “upcoming subjects for BugLoSE” and I thought I would invite “non Logicans” as well.

So send me suggestions and you might be the lucky one to pick from one of the books behind this link. (Note that the link displays page one of three). You can e-mail me directly at: firstname(dot)lastname(at)logica(dot)com.

The books are from Packt Publishing, a publisher that has risen to a very high spot when it comes to books about integration and Microsoft technologies. Also (if you do not win), they have a “Brighten your May at Packt’s Microsoft Carnival” at the moment.

biztalk-server-2010-cookbook

It is hard to not point out the fact that this is a cookbook, and there already is a book about BizTalk recipes. It is also hard not to point out the fact that I love cooking but hate using cookbooks…

This is a cookbook I really, really like though.

I imagine that you, like me, have a collection of really good BizTalk blog post links in you browser of choice. When you use BizTalk, and when you read up on what others have written, then you bookmark certain posts for safe-keeping. You just know that “this is a good thing to remember for another day”.

This book is like the best collection of links you could possibly have! A really good blog in book-form, or a blog-oriented book. First of all: buy this book. It is a given in any BizTalk developer team. The €25 spent on the book will be paid for over and over again as you save time during development and testing.

BizTalk Server 2010 Cookbook uses a very practical approach to problem solving. This is the only downside to the book. Sometimes it it too focused on how to solve something and not enough is spent on understanding it. Then again the author points you to further reading at the end of each recipe. So if you want to know more about something, you can find it easily. Personally I would like it to have been part of the book but I guess that is not up to me to decide.

The practical approach splits each recipe into different parts. First an introduction to present the challenges or the problem. Then follows a “How to” section, a “how it works” and the aforementioned “There is more”.

Do not be fooled by the subtitle of the book “Quick answers to common problems” as the word “problem” might be associated with “bug” or “issue” and this is not the case. It is rather a case of “How to quickly, understand and perform common tasks” but that is a really bad strapline I agree.

The publisher has a complete listing of the books content and I encourage you read it but I would like to point out some of my personal favorites: BizTalk Server Automation: Patterns, Monitoring using Log4Net and Securing Message Exchange. The last one is in my opinion the best text on the subject I have seen. After reading it I feel that the usage of certificates in BizTalk is no longer hard, and I can understand it. Something I must admit to being part of my ignorance up until now.

So once again: Buy this book. It is smart, practical, well written and really useful.

Today I registered for TechEd Europe 2012. Last time was in cold autumn Berlin. This time it will be warm summer Amsterdam. Time to stock up on motivation, knowledge, contacts and also some “Bitter Cookies” and Heineken.

Last time I blogged my proverbial a$$ off and I can guarantee I will do the same this time.

TEE12__BB_240x360 (1)

The first meeting was a success. Not as good as BUGS I can tell you that, but the feedback had a lot of nice words in it at least.

Next Thursday is Holy Thursday, which by Swedish work ethic means that no one attends a meeting after 12. Therefore the meeting is held next Thursday (the 12th) at the same time.

The topic is: A lot of useful hints and tricks that are in BizTalk but that you might know of or seldom use.

…or BugLoSE for short.

BugLoSEI have started a BizTalk user group within Logica aimed at educating the Swedish-speaking part of the company I work for, on how to use my favorite product.

The first meeting will be held online this Thursday (the 22nd) at 12 CET. It will be about BizTalk and clustering; a semi-advanced topic that seems to be quite high in demand.

Following a regular bi-weekly basis, we will continue to host these event online and cover different topics.

If you are a Logica employee, contact me if you would like to attend or have any questions.

In part 1 I defined what the bitwise operator is and how you can use it in your .net code. Now, let us see how we can use the same functionality in BizTalk to route messages.

How to use  the bitwise operator in BizTalk

One of the great things about my job is that I get to move around a lot. Different customers has different uses for BizTalk and this leads to new ways to use it. This scenario is not unique, but was new to me anyway.

BizTalk receives a message and needs to route it to different receivers. The receivers will be assigned using some form of “lookup” based on the message type. Message type A must be sent to system 1, 2 and 4. Message type B must be sent to system 3 and 4, and so on.

As usual, the preferred solution makes no use of an orchestration, should be reconfigured without redeployment and adding a new receiver should be very easy and should only impact the current deployment in a minor way.

This is a good time to use the bitwise operator!

Setup in BizTalk

This is just a simple proof of concept and, as such not complete. Keep that in mind and please provide feedback if anything is missing.

Schema_thumb1The schema: The bitwise operator will solve the task. To use that, and also avoid using an orchestration, BizTalk has to be able to route messages based on a value in the file. In order to do that, a promoted property is used. In this case a field called “ReceiverField”.

It is important to remember that in this particular case, the promoted property must be an unsignedInt. This makes sense since you cannot use bitwise on a combination of positive and negative numbers. If you use Int, the operator will not show up in the administration console.

Receive port: Now set up the ports. First we need receive to pick up the incoming data. In this a simple file receive location is used, but there is nothing stopping you form using other protocols. The bitwise handling will still work. The important thing to remember is to use the xmlreceive pipeline (as opposed to the passthru).

Sendport for different systems: Now for the magic part. Add a sendport for each of the systems you need to send the information to. Make sure to configure filters to reflect the particular number you have assigned to that system.

FilterSendPort2_thumb

In the picture above, the filter is configured to send files received on the previously configured receive port and then the bitwise operator is used to look for the number two in the receiver field in the previously created schema.

Add another port for another system:

FilterSendPort_system3_thumb

The important thing to notice here is that there really is not any major difference. The only important difference is the number for the receiver field, which is not set to a 4.

Start all the ports create a testfile to be dropped in the receive folder. Set the value of the receiver field to “2”. Drop it in the receive folder. The only the send port marked with a “2” will pick it up.

Try again and change the value to “4”, only the second port will pick it up. Lastly set the value to “6”, now both ports will pick it up!

The upsides

The most important gain is of course the routing but there are some other benefits as well. Firstly, you can put different format mapping for different systems in their respective ports. This is also true for pipelines, so if one of the systems is using custom formatting, that is not a problem.

Next, adding another system is simple as all you have to do is add another send port, and configure it to look for the next number (double the last).

The downsides

This logic cannot be used in orchestrations. You cannot use the bitwise operator as a part of an activation filter in the orchestration, sadly.

Another thing that might be a problem is the code, or handling, by which you assign the number in the “RecievierField”. If BizTalk is responsible for assigning this value, you have to make sure that adding another system is just as simple as adding another send port. Maybe you have a database that matches message types and assign the number. BizTalk can then simply use a database functiod in a map to look it up.

Did you know that there is a “bitwise” operator that you can use when you define subscriptions in BizTalk? I surely did not! I just stumbled upon it an since I could not find any really good article on it I thought I would give it a try:

What is the Bitwise operator?

This is certainly best answered by others; like wikipedia or this guy, or Microsoft of course.

If you want the short, short version; it is a good way to let one number represent a combination of other numbers, so that you know if a particular number is present… well that did not explain a lot. Let me try a longer version.

What problem does bitwise solve?

Bitwise is often used with enums in .net and if you want to use bitwise on an enum you mark it with the [Flags] attibute. The bitwise operator is a single ampersand (&), not to be confused with another logical operator (&&).

Imagine you are designing role based access management in a web application. You decide to have three different kinds of users (or roles); standard user, project managers and administrators.
The standard user has access to information about his/her current projects. The project manager can add/remove users to projects, and lastly the administrator can add projects and users.

When a web page is accessed, the user membership is checked and the information (perhaps in tabs) is displayed to the user depending on the user’s role.

How would you solve the fact that there might be users that are both standard users and project managers (depending on project)? Or, how about a user being administrator, project manager and standard user? How do you assign one number that combines different roles and give the user a particular access number?

Of course there are a lot of ways to do this but that does not prove my point, so I will assume that the way to do it is using [Flags] enum and the bitwise operator.

The enum values

To make this work you have to assign values to your enum in a specific way: The value of the enum is double that of the last value in the series, except for the second one, which is the number one.

enum MyRoles : uint
 {
   Anon = 0,
   StdUsr = 1,
   ProjectMgr = 2,
   Admin = 4
 }

So, a standard user has an access number of 1 and a project manager has the number 2. A user that is both a standard user and a project manager; the user gets an access number of 3 (1+2 = 3). This number is unique in the series and this will hold true for all combinations, even if you would have hundreds of roles.

Based on this logic, there is an easy way to find out if a user is in a particular role by using the &-operator. If you want to know if the user is a project manager, the code is simple:

if ((MyUser.AccessNumber &
      MyRoles.ProjectMgr) == MyRoles.ProjectMgr)

If the the expression returns true, the user is a project manager.

To be clear; there is a much simpler way of defining the same expression in .Net 4.0. Here; the bitwise operator is used under the convers.

if ( MyUser.AccessNumber.HasFlag(
     MyRoles.ProjectMgr))

Continued in part 2.

”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 book Microsoft BizTalk Server 2010 (70-595) Certification Guide, by fellow blogger Johan Hedberg. 
  2. 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).
  3. 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?

Purchase Johan Hedbergs book and read it. Know it by heart.

I also 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.

Lastly you might benefit from reading this 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.

More Posts « Previous page - Next page »