Using PowerShell to verify BizTalk Map Deployment

[Source: http://geekswithblogs.net/EltonStoneman]

You can actually use this to check for correct deployment of any .NET stack where you want to verify that assemblies and dependencies in the GAC are correctly deployed. Mostly I use it for troubleshooting when BizTalk can’t load maps or schemas.

With PowerShell you can instantiate any .NET object, and if there are any issues in loading the assembly or its dependencies, you’ll see the whole error message, which might otherwise be truncated or buried in a stack trace somewhere.

Firstly load the assembly so PowerShell can locate the type. Use the full name if you’re loading from the GAC, or the basic name if you’ve navigated to a program’s bin directory:

[System.Reflection.Assembly]::Load(‘x.y.z.Integration.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=104fee075643f423’)

Next use Activator to create and unwrap an instance from the assembly and type name. If this fails, it will highlight any issues with missing dependencies:

$map = [System.Activator]::CreateInstance(‘x.y.z.Integration.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=104fee075643f423’, ‘x.y.z.Integration.Maps.x_yService_Getz’).Unwrap()

If you don’t have any error messages, then your object ($map in this example) is ready to use, and you’ve verified the deployment is correct. For BizTalk maps you have the additional benefit that running ToString() (or just entering the object name) will show you the underlying XSLT:

$map

If you get do get errors along the way, they should tell you where the problem is. You can get more detail by querying the PowerShell $error object.

Coming up for Air: Rules Fest 2010

Jason Morris called it ’decompression’. After 10 months of planning and three packed days of presentations here in San Jose, Rules Fest 2010 is now in ’boot camp’ mode.More than half the attendees stayed for today’s sessions, and are currently spread between four boot camps – JBoss Rules, IBM JRules, OpenRules and Jess.My role as MC and catwalk model (don’t ask!) came to an end last night, and I am sitting in my hotel room, shattered, happy, but also with a distinct feeling of the ’bends’ as I emerge blinking into the warm Californian sunshine.
We are really happy with the way this year’s conference has gone.These are constrained times, economically, and we needed to prove the viability of the event and the ability of new management, and a new owner, to organise and host an international conference that provides real benefit to its attendees and sponsors.The post mortem will begin in earnest in a few days, and knowing our committee, will be a frank, open and critical appraisal of the last few days.However, we hit our targets, substantially grew the event from last year, garnered great feedback, had a really excellent line-up of speakers and all enjoyed the occasion immensely.
Rules Fest will strive to deepen its commitment to provide a technical conference ’for developers, by developers’.As I tried to explain to one bemused non-Microsoft person yesterday, we aim to be the ’PDC’ of the rules processing world, and refuse to be just another trade show.Next year, we will evolve the program to provide deeper developer content and more opportunity for rules developers to share their experience and get direct input into the issues they face.We plan to significantly increase the attendance again (we learned so much this year about how to market it, and are confident that we can hit significantly higher targets next year), attract wider sponsorship and broaden the pool of presenters.
My one on-going pain point is the lack of a really good .NET story.Now don’t get me wrong.I love the Java and C/C++ guys/gals to bits, but I really, really want to see the .NET developers who turn up to the event get more for their money.Mark Proctor quizzed me on my interest in the event last night (and immediately provided a litany of answers to his own questions!).I understand why he is a bemused.Where are the .NET rule vendors?Everyone else is there.Where were you, InRule? We tried to get you interested.Where were you, Microsoft (I know Karl would have loved to be there, as he has been in previous years)? And Dan, can’t we get IBM to push ILOG.NET a bit more? I said to Mark that at some point, the .NET rule logjam has to break, and I fully intend to be there when it does. Rules belong to businesses, not to the JRE. .NET developers do rules as well!
Big thanks to the team at the Hayes Mansion.Inga, you are an absolute star!Big thanks to Brenda who helped make the event a success. And big, big thanks to Jason and Brian who never lost faith.

BizTalk: Timeline: Development Tools

Now it is the timeline of the development tools only. It is a little bit “unofficial”. For example, I included the ESB but not RFID. Versions 2000 and 2002 are not covered , there only placeholders. Mainly because since the 2004 version it is completely new product from many points of view, including the developer’s point of view.

It is interesting, the main tools: the Schema Editor, Mapper, Orchestration Editor, Pipeline Editor were not changed since version 2004. BizTalk was heavily expanded over new areas and technologies. The core principle was “do no change things that work, add new features”.
Several tools were discarded, because of lack of user’s interest or because of the technology trends. For example, HWS, BAS, ODBA.

The High-quality PDF file

Please, let me know if you find out errors or weak points. Suggestions would be very-very appreciated.
It is version 1.

How to Go Online after working offline in Visual Studio Projects?

If you have been working with Visual Studio for a while I am sure you came across situations where the TFS Server was unavailable when you were working on the Project source code. Its nice to know that TFS allows you to continue working on your project offline when your TFS server is down. That’s really cool and you do that by opening your Project Solution file (.sln) and if TFS is not available it will ask if you want to work offline and lets you work offline.

read more

Custom Pipeline Component for High Performance Message Transformation

When developing pure messaging solutions (no orchestrations) in BizTalk often there’s a need to apply transformation on the message. BizTalk has out of the box functionality to execute maps on receive (inbound map) and send (outbound map) ports. Sometimes using classic BizTalk map is not the best solution, for example for complex transformations with grouping (for example, using Muenchian Method). In other cases, it’s strongly preferable to keep transformation easily configurable to be able to change it on the fly without overhead of deploying new map. Transformations using XSL stylesheet seems to fit that task very well.
One problem though, using standard .Net XML/XSL API won’t yield the best performance. Performance degradation will be especially noticeable in high throughput scenarious with large message size. BizTalk internally uses more efficient transformation API that is tuned for better performance for large messages. The classes that make this possible are VirtualStream (located in microsoft.biztalk.streaming.dll) and BTSXslTransform (located in Microsoft.xlangs.basetypes.dll). VirtualStream minimizes memory footprint by backing storage to file system.
Utilizing these classes I created generic pipeline component that can execute XSL transformation inside pipeline in a scalable fashion. As an additional feature it can be configured to execute standard BizTalk map.
Following configuration properties are available on the component:

Property
Values
Description
IsScalable
True | False
Indicates if transform should always be scalable
MapName
{XslUrl} | {BizTalk Map Name}
Defines the XSL URL or fully qualified map name to use for transformation
MessageType
{namespace}#{root}
Target message type
SchemaStrongName
{Class}, {Assembly}, Version={}, Culture={}, PublicKeyToken={}
Fully qualified .Net schema type name
TransformUsing
XslStylesheet | BizTalkMap
Indicates what kind of transformation is used
Source code with example project is available at http://www.box.net/shared/93p7n1vsl6

Book Sample Code, Our Commercial, and Repair & Resubmit Solution Video

I have posted online all the sample code from my book, “Applied Architecture Patterns on the Microsoft Platform”.  You can download it at http://www.biztalkgurus.com/media/p/30260.aspx.  This code contains various samples using BizTalk, BizTalk ESB Toolkit, Server AppFabric, SharePoint 2010, .Net 4.0 Workflow, SQL, Stream Insight, Azure, SQL Azure, Platform AppFabric Service Bus, Server AppFabric Caching, and more.  Of course, you will get the most benefit of this code using it alongside with the chapter of the book that walks through it. 

The book is available now on Amazon.com and PacktPub.com. 

Thanks to our friends in Sweden we now have a Commercial for our book!  I have not seen many commercials for Technology books, but this video gives some context of the “why” behind our book.  You get to hear from Richard, Ewan, and myself about why we wrote the book and why we picked to release the book at the European BizTalk Conference in Stockholm, Sweden to a room full of top notch, hard-core BizTalk people.

This video is available at http://www.biztalkgurus.com/media/p/30247.aspx and on YouTube. 

 

If you are looking for more detailed information on the types of solutions covered in the book, I have put together a video walking through Chapter 10 – Repair and Resubmit with Human Workflow.  This solution uses SharePoint 2010 to store customer information.  This information is processed by a .Net 3.5 workflow that sends the data to a Server AppFabric hosted .Net 4.0 workflow service for processing. 

This video is available at http://www.biztalkgurus.com/media/p/30249.aspx and on YouTube.