Wednesday, October 1, 2008

Microsoft - Dublin

No this isn't an announcement for a new Microsoft office in Ireland, but rather the latest technology announcement coming out of Redmond. Microsoft has publicly released some information regarding .Net 4.0 and the new "Application Server Extensions". This announcement is significant as Dublin will allow for:
  • A standard host for WF/WCF applications
  • Tooling and Managment for the application server
  • Support for scale-out durable messaging
  • Scalable monitoring and diagnostics
  • Message based correlation
  • Long Running applications
  • Management functions via IIS Manager

Much like the BizTalk Server 2009 announcement that occurred a few weeks back, I think Microsoft wants to clear the air and provide a glimpse into what the future holds before developers make their way to PDC in LA later this month.

As much as I am a "BizTalk guy", I am very encouraged with where Microsoft is taking the Connected Systems Division. If nothing else, I feel that the WCF/WF technologies provide options for developers when implementing solutions. Microsoft has already announced their committment to BizTalk, so it is not disappearing any time soon. It should be interesting to see some of the solutions that people come up with using Dublin.

For more information regarding this annoucenemt, please visit Steve Martin's blog.

Thursday, September 25, 2008

BizTalk SAP Adapter and Extended SAP IDocs

I recently ran into an interesting scenario when generating the BizTalk schema for an IDoc. I have generated several schemas from SAP in the past but was having trouble "finding" this particular IDoc.


SAP Background:
I do not confess to being an SAP expert, but this is the way that I understand IDocs. Out of the box, SAP provides lots of IDocs that relate to particular modules within SAP. These modules include Finance, HR, Plant Maintenance among many others. You can also buy separate packages that relate specifically to your industry. For instance I am in the energy industry so my organization heavily uses that ISU module. Generally organizations like to limit the amount of customization that they do to their SAP system but it is usually impossible to have no customizations.

When you want to customize one of these "out of the box" IDocs you have a couple options:

  • Creating an IDoc based upon a "copy" of an original IDoc. Kinda like a copy-paste, rename scenario. The naming convention for custom Idocs is to place a 'Z' in front of the IDoc that you just customized. For instance if you were to customize the 'CONF32' (Confirmation IDoc) you would name your IDoc ZConf32.

  • Extending an IDoc. You can think of this more like inheritance. You start by inheriting the "base" Idoc and adding, or extending, any segments that satisfy your needs.

My experience in the past primarily involved generating schemas for custom IDocs. So when I input the IDoc that I am looking for in the BizTalk Adapter Meta Generation wizard I would type in ZConf32* and it would return a result. The problem that I ran into is that when I typed this name as the IDoc that I was looking for, no results were returned.

At one point it was suggested by someone on our SAP team that perhaps BizTalk could not download Extended IDocs. I was not too surprised that the suggestion was made since BizTalk often mis-understood. On the flip side, BizTalk resources generally do not have a lot of SAP knowledge so I couldn't initially confirm whether BizTalk could or couldn't. However, I wasn't quite ready to throw in the towel.

Microsoft has done a pretty good job of abstracting the "little" details away from us by providing wizards that allow us to generate schemas. This is definitely a value-add offering by Microsoft and a key driver in organizations using middleware like BizTalk. It allows integration projects to turn around solutions faster and cheaper.

So I started by querying with a "wider" search criteria via wild cards. What I found was that since this IDoc was extended, I needed to find the "Standard" SAP IDoc and then drill down from there to find the extension.


Error returned while searching for "Custom Name" ZConf32

When I changed my query to include the "Standard" SAP Conf32 IDoc and drilled down a level I was presented with both the SAP Idoc and the version that had been extended. Since I wanted the extended version, I selected the entry called Conf32-ZConf32. The naming convention follows that of Custom IDocs in that "Z" is used to indicate that the extension is custom and not something provided out of the box.


Success! IDoc is found with the "Standard" SAP version.

The two preceding examples used the BizTalk Server 2006 (R1) Adapter. I was curious to see if the behaviour was similar with the WCF based SAP adapter that can be used with BizTalk Server 2006 (R2).

When searching for my Extended IDoc called ZConf32 I was presented with an "IDoc not found" message. Not the same message as the R1 error, but in essence the same meaning.



The next step I did was provide a search that included the "Standard" SAP IDoc Conf32 to see if the extended IDoc was hanging out with the original. While the experience in the Wizard is a little different, the end result is the same. The Extended IDoc is available for download by the Adapter Meta Data Generation wizard


So hopefully this post will help someone out. I know myself and a SAP resource were scratching our heads for a bit but in the end we got the result that we were looking for.

Tuesday, September 16, 2008

Another Canadian Microsoft Event - BizTalk/SOA

For more info, visit Peter Kelcey's blog


The Canadian Connected Systems Conference 2008
Canada’s Connected Systems Road show: Can’t make it to PDC but would like to hear more about BizTalk and how it relates to broader connected systems and SOA initiatives? Please join us at one of these locations for a day. We’ll be putting out a registration link & agenda soon but for now please note these locations/dates:

a. Vancouver – 30 October 2008
b. Toronto – 4th November 2008
c. Montréal – 6th November 2008

Overview: In a service-oriented world, effective business processes unite people and systems. Find out how BizTalk® Server builds on the Business Process Management and SOA capabilities in prior releases to help your organization extend core process management technologies even further.

We will share the latest on Microsoft’s SOA offering - as well as details of the strategies and technologies that Microsoft is delivering today, over the next year, and into the future. At this event, you will learn:
· BizTalk today and through FY’09
· Microsoft’s Roadmap for the future
· Microsoft’s “Real world” SOA vision, positioning and messaging
· Service Virtualization & ESB guidance 2.0
· RFID & mobility of BizTalk

These events will provide further insight for customers and technology partners into best practices for building SOA and BPM solutions, guidance for advancing SOA, and using the latest Microsoft-based technologies for connecting people, processes and information.Agenda

8:00 Breakfast
8:30 Connected Systems Overview
9:00 BizTalk today, over the next year & Roadmap for the future
10:00 Adapter Pack
11:00 Break
11:15 Self Service SOA
12:30 Lunch
1:30 Service Virtualization & ESB 2.0
2:30 RFID stack & Mobility
3:30 Break
3:45 Connected Systems Assessment
5:00 Reception
6:00 End

Target Audience:This event will be of value to Technical Decision Makers, Developers and Architects interested in BizTalk, enterprise integration, and SOA solutions.
To RegisterSpace is limited so register today to ensure your attendance at this event. Click the city name below to register:

Vancouver: October 30, 2008 (Thurs)
Toronto: November4, 2008 (Tues)
Montreal: November 6, 2008 (Thursday)



It is too bad that there is nothing being held in Alberta. Last year the Canadian BPM/SOA conference came to Calgary and it was a good event.

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