Wednesday, September 10, 2008

New Microsoft Conference Series coming to Canada - Canadian TechDays 08

A new conference series is coming to a city near you in Canada! It is expected that this conference series will be like a 'Mini-TechEd'. These conferences will be paid events, so you can certainly expect a good experience.

The agendas are not finalized but you can expect a wide variety of topics including Windows Development, Web Development, Virtualization, Data Platform/Business Intelligence and Infrastructure. I am still hoping that we will see some Connected Systems Division content(fingers crossed).

Check http://www.techdays.ca/ for updates or come back to my blog as I will be keeping it up to date for this event as well.


Friday, September 5, 2008

BizTalk Server Roadmap - BizTalk Server 2009

Recent news coming out of Redmond - Connected Systems Division includes more details surrounding the next release of BizTalk Server. The next release was previously known as BizTalk Server 2006 R3 and will now be known as BizTalk Server 2009.

To read about this and to get additional details please view the BizTalk Server Roadmap.

Overall, I like what I see from Microsoft regarding this information:
  • Microsoft is clearly showing their commitment to the product and their customers
  • They are "clearing" the air before PDC which should reduce some of the confusion as to how BizTalk fits into Oslo.
  • I like the name change. With releases expected approx every 2 years, we won't be in the year 2011 with a product that is still branded 2006 (albeit R3).
  • They are working on(not for BTS 2009) some of the areas that need refinement within BizTalk; low-latency messaging enhancements and ESB Guidance

Sunday, August 24, 2008

BizTalk Mapper: Transforming Comma Delimited List into Elements

Recently, I had a requirement in one of my projects to break apart a list of items inside of one element. Each item was separated by a comma and would need to be placed into its own element. For instance within an element I may have a list of employees with each one separated by a comma: 9123456,9123455,9123444,9123456

So after looking around the net to see if someone else has had to deal with this challenge, a colleague forwarded on this link to me by Michael J. Williams. The context of this link was pure XSLT with nothing BizTalk related in it.

So I figured that I would create a post that would show you how you can do something similiar, but how you would accomplish this inside of BizTalk.

So to further illustrate what my inbound message looks like, here is an example:



For both VEHICLE_LIST and EMPLOYEE_LIST I am expecting a list of values separated by commas within one element.

However, the destination system is expecting them in their own element as shown below:

So inorder to solve this problem I am going to use a standard BizTalk Map and use the scripting functoid.

Within the Scripting Functoid I am going to call an "Inline XSLT Template".


The XSLT requires two parameters:

  1. The list of Employees( or Vehicles)

  2. A delimiter character - in my example I am using a comma ','



Here is the code listing that I have used and is based upon Michael's post. I have made a few modifications including:
  • Removing his inititial template. In his example he had one template calling another. In my example, it is the scripting functoid that is initating the XSLT call and the parameters come from the Functoid input parameters.
  • Included the tags to reflect my requirements.
  • Provide a check to deal with a comma being included in the list but no value is included.


<xsl:template name="output-Employees">
<xsl:param name="list" />
<xsl:param name="delimiter" />
<xsl:variable name="newlist">
<xsl:choose>
<xsl:when test="contains($list, $delimiter)">
<xsl:value-of select="normalize-space($list)" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(normalize-space($list), $delimiter)" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="first" select="substring-before($newlist, $delimiter)" />
<xsl:variable name="remaining" select="substring-after($newlist, $delimiter)" />
<xsl:if test ="string-length($first) != 0">
<EmployeeID>
<xsl:value-of select="$first" />
</EmployeeID>
</xsl:if>
<xsl:if test="$remaining">
<xsl:call-template name="output-Employees">
<xsl:with-param name="list" select="$remaining" />
<xsl:with-param name="delimiter">
<xsl:value-of select="$delimiter" />
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>

Saturday, July 26, 2008

Considerations for supporting multi-node BizTalk Groups

I recently responded to a question in a forum regarding application availability during planned and unplanned outages.

  • When it comes to Windows Patching, you will need to co-ordinate your reboots with whomever is responsible for this task. You do not want both SQL Nodes down at the same time nor do you want all of your BizTalk app servers down at the same time either. Your infrastructure team may not understand all of the dependencies so it is important to lay out a plan for them.

  • If you use MOM/System Centre for monitoring your BizTalk environment, place your servers into maintanence mode while your reboots are occurring. Otherwise you will receive a lot of 'spam' indicating that Host Instance 'abc' on server 'xyz' has been terminated only to receive another indicating that it has initialized successfully. Even better if you can script placing your servers into Maintanence mode. This will ensure all servers are brought into this mode consistently and quickly. Also recognize that this may leave you vulnerable as you will not have the MOM coverage that you usually do during that period. This is a bit of a double edge sword. You want your ops teams to rely and trust your MOM alerts, so you do not want to overwhelm them with false alerts. On the other hand, if your BizTalk environment is processing messages while in Maintanence mode, you will not have the coverage that you do during standard operating windows.

  • We have experienced some odd Host Instances shutting down behaviour when our Domain Controllers are rebooted. So be aware of this...there is a hot fix available.

  • It is important to understand your patches/software updates. I have experienced this the hard way :-(. All BizTalk servers were suppose to receive a file adapter patch. One server did not receive the update. We then had an intermittant problem that the patch should have fixed. After further investigation we discovered the server was missed. To determine which patches have been applied to a server, you can see this information in your Control Panel. Saravana Kumar has a post with more detailed instructions.

  • Regarding updating one server while you work on another, you may run into situations like updating an adapter where you are also updating the BizTalkMgmtDb. This could cause conflicts with your 'live' servers. So in general I will work on one node while the others pick up the remaining workload, but once again understand the implications of the update you are applying.

  • If you cannot take your application offline long enough to deploy a new version of an application, you will want to look at side by side versioning. While my shop is 24x7, we can usually negotiate a small outage window to perform an update. However, I can see some Financial/Health/Manufacturing environments where this is not feasible

  • When configuring your Hosts/Host Instances, think about the dependencies that you may introduce if applications share host instances. For many applications, it is not acceptable to take it offline so that you can update a totally unrelated application. I am not saying that you should not share Hosts/Host Instances, but just be aware of the dependencies that you may be creating

Sunday, June 29, 2008

SOA: Conference Summary and Random Thoughts

I recently attended a SOA and Application integration conference. The conference itself was technology agnostic, but Microsoft did have a presence, along with several other vendors. I have decided to publish some of the notes that I took over the course of the conference. I figure that they may be worth looking back on as SOA continues to evolve. Hopefully they may help out some other readers as well.

Disclaimer: The thoughts described are not necessarily my original thoughts. Where possible, I will try to give credit to the original 'author' however in some cases I may not necessarily have all of this info. I have also done my best to take these notes in the context that they were presented in.

Themes/Ad hoc notes:

  • Desire to react to change is greater than the need for the application to last several years. No longer are companies expecting their applications to last "for ever". Gone are the days were people will build systems to last 10 - 15 years. Now systems need to be flexible so that when business needs change, IT can react in a timely manner. - Massimo Pezzini

  • If a definition/summary of a Service cannot be understood by both a Business person and someone from IT, then it is not a SOA service. - Massimo Pezzini

  • Business Activity Monitoring (generic, not specific to Microsoft BAM) is the single biggest near-team opportunity for IT to shine. - Massimo Pezzini

  • Now that Web Services are fairly mainstream, do we still need integration? Yes, Web Services only solve the communication problem. They still do not address other characteristics of SOA: Business Activity Monitoring, Extreme Transaction Processing, Complex Event Processing, Centralized Business Rules, Modeling. - Massimo Pezzini

  • An organization needs to establish a SOA Centre of Excellence (COE) in order to be successful in delivering a SOA. Someone, or group, needs to own the process. Without this direct accountability, the project is bound to fail. - Hans C. Arents

  • SOA is more than an architecture, it is an approach to developing software. - Hans C. Arents

  • Introduce SOA in a stepwise manner. - Hans C. Arents

  • When 'pitching' SOA, you need to provide actual numeric(empirical) measurements. You cannot look for project sponsorship without providing empirical data on the benefits of SOA. You cannot say it will improve reliability or improve efficiency. You need to associate real values to your claim(s). The drivers do not necessarily directly relate to dollars, but need to be measurable. - Frank Kenney

  • Integration is inevitable in today's market. However, the decision needs to be made as to whether it will be piecemeal or systematic. Piecemeal refers to point - to - point integration like file based FTP integration. Systematic refers to a level of abstraction and loosely coupled interfaces like an ESB or Broker. - Frank Kenney

  • Using Web Services, in a point to point manner, is not SOA. It is essentially the same as using FILE based point to point integration. The difference is only how you communicate. You still need middleware to ensure you have loosely coupled systems. - Mark Driver

  • Some companies may decide to go the piecemeal route as it may be "easy" or it is "the way it always has been done". A decision maker also needs to think about what are the costs, or lost opportunities, of not doing integration. - Frank Kenney

  • Systems that are "built to change" are more valuable than systems that are built to last. - Frank Kenney

  • The best integration systems are built to change, adapt and control change. - Frank Kenney

  • SOA is not solely for IT. In fact if SOA is an IT initiative, then you are bound to under deliver to your business units - several authors

  • You need "buy in" from both IT and the Business to be successful.

  • Some topics that I need to spend more time researching, but were continually being discussed within an SOA context are: Event Driven Architectures and Extreme Transaction Processing

Random Thoughts

  • During many of the sessions, "selling" SOA to the business was a popular topic. I think nearly every presenter brought up the value of reusable code as a key driver to adopting SOA. On the surface, I think this point is valid. But, I don't think that it is a statement that can be applied universally. Thinking back to some of the organizations that I have worked for/with, I can see opportunities where this is true. One organization, use to store customer information in 7 different places. Having an address being consistent across these systems was practically a miracle. This case is obviously a good candidate for a common service. Then there are other organizations that have used 3rd party COTS(Commercial Off the Shelf) applications. Presumably, selling the reusable code argument is not as convincing in this type of scenario if the COTS product has not duplicated functionality through out the application.

  • There are a lot of politics in rolling out SOA. People tend to work in silos and tend to be protective of their domains. Programmers also tend to not trust the work of others. When writing code, ego can play a role in programmers being objective; "I can write that [functionmoduleservice] better than that guy". Getting buy in from all of the various groups (silo owners) may be difficult.

  • Whether people like it or not, SOA is coming to an organization near you in the next 2-5 years. Vendors like SAP, Oracle and Microsoft are continuing to release products that leverage SOA. With this said, it is better to understand SOA and plan for it than to try and fight or resist.

  • Having visited some of the other vendor booths that compete in the SOA/ESB/BPM space, I was impressed by some of the vendors offerings. Comparing their capabilities to Microsoft's did validate some of the features that BizTalk enthusiasts have been asking for. More specifically, Modelling and Low Latency messaging were areas that some of the other vendors did impress me with. The good news is that both of these areas are being addressed in OSLO.

  • All in all, I do think that SOA is a step in the right direction. However, every organization is unique and you need to produce a business plan that justifies the implementation of SOA. SOA is invasive and can lead to massive failure if it is done for the wrong reasons. SOA is definitely more than just an IT initiative. If you treat like it is just an IT project, then you are bound to fail, or at a minimum, under deliver.

Thursday, May 22, 2008

BizTalk Hotrod Issue 4 is available

As the title indicates, the latest publication is available for download here. The topics in this issue covered are:

  • BizTalk Exception Management
  • Exposing Business Rules Engine Policies as WCF Services
  • Tools of the Trade
  • Parallel Convoys in BizTalk
  • A Glimpse of the BizTalk Server 2006 R2 WCF Adapters
  • Smart Use of XSLT BizTalk
  • In the beginning
  • What's Under that Hood?

I am still working my way through this edition, but the BizTalk Exception Management Application is a great article. It walks you through an enterprise BizTalk Exception Management application based upon the Patterns and Practices ESB Exception Managment Framework. If you have ever thought about using the ESB Exception Management Framework, this article serves as a great primer.

Friday, May 9, 2008

Calgary .Net User Group Presentation from May 8, 2008

I had the opportunity to present at the Calgary .Net User group. The presentation served as an introduction to BizTalk Server 2006 R2 and highlighted some scenarios in which you would use BizTalk Server.