Posts

Showing posts from 2012

BizTalk Gotchas that got me

Image
Hereby some BizTalk gotchas, that got me, it’s a small compilation as I’m trying to group related subjects together, in future posts I’ll focus on MSMQ, ESB Toolkit and other stuff. Issue: Outputfile name is %sourcefilename% Is it, that…? Y ou have promoted the FILE.ReceivedFileName and configured the macro %SourceFileName%, however, this is CASE SENSITIVE! Issue: No processing takes place after a BRE call Is it, that…? You might be using a .Net helperclass, you’ve added the ‘StaticSupport’ following ( http://msdn.microsoft.com/en-us/library/dd298814(v=bts.10).aspx ). This won’t work…the StaticSupport should be created under the WOW64Node Issue: Pipeline configuration change does not have any effect Is it, that…? You are using a dynamic send port…if so, stop/start the application-port Issue: Inside my orchestration, a variable assignments (from context properties) leads to an exception (missing property exception) Is it, that…? You are not assigning the variable fro

BTDF–(Best) Practices

Image
  Hereby a list of practices I now tend to follow after some experience with it, I have additional features that I will share in the future, but at the beginning of the project, please think about all (and more) settings such as; Choice: Disable starting of ports etc <StartApplicationOnDeploy>False</StartApplicationOnDeploy> <StartReferencedApplicationsOnDeploy>False</StartReferencedApplicationsOnDeploy> <EnableAllReceiveLocationsOnDeploy>False</EnableAllReceiveLocationsOnDeploy> Rationale : Starting applications is useful on dev/test not on accp/prod) Note: These settings are part of the ‘standard’ settings, which to my knowledge cannot be overwritten, therefore you should choose the safest option.   Choice: Always use masterbindings Rationale : Standardisation, in all application you will use, there will be some ports that use masterbindings. If this is used from the start all projects will have the same structure. In most of the

BizTalk BRE / calling a static method inside a helperclass

Image
So when you call a static method from a custom helperclass inside the BRE you must set the correct registry key. HKLM\SOFTWARE\Microsoft\BusinessRules\3.0\StaticSupport (DWORD) MSDN Please be aware that this key can be found in the WOW6432Node and not directly under Microsoft\BusinessRules\3.0!!!   HTH,   Sander

BTDF–Use a different binding for Test as Dev

Image
  The BizTalk Deployment Framework utilizes MSBuild and is therefore highly flexible. In case you wan’t to use FILE ports in DEV and an entirely different protocol in TEST you have 2 options: 1) Use Macros and leverage the XmlPreprocess and Masterbindings functionality 2) Override the Portbindings/PortbindingsMaster MSBuild property. I will show you how to realize option #2 Configure the binding file in the BTDF Settings file Configure the BTDF Project        </PropertyGroup>        <PropertyGroup Condition="'$(Configuration)' == 'Debug'">               <PortBindings> $(Portbindings) </PortBindings>               <OutputPath>bin\debug\</OutputPath>               <DeployPDBsToGac>false</DeployPDBsToGac>        </PropertyGroup>       HTH, Sander

BizTalk still being updated…CU5 released

Image
Ok, so no major updates but still some fixes that seem very critical, now bundled in a cumulative update (CU5) Among other fixes; 2703644 FIX: Orphaned rows are created when you run the "DTA Archive and Purge SQL Server Agent" job in BizTalk Server 2010 BizTalk Server Business Activity Monitoring (BAM) Runtime 2676141 FIX: An instances table is changed to use the primary filegroup in the BAMArchive database when you run the BAM SSIS package in BizTalk Server 2010 During installation Restart of services Note: Make sure that the virus scanner (e.g. TrendMicro) can be stopped or is stopped as this will prevent the WMI service from stopping and prevent you from installing the update (changes can not be rolled back). Even a free summary screen with log is included   If you’re really interested in the all the windows that pop-up, I suggest to open the log file as well.   Best regards,   Sander

ESB Toolkit – Unit testing BRI lookups

Image
One of the major advantages of the ESB Toolkit is that you can leverage the highly flexible Business Rule Engine (BRE) and use the BRE to dynamically configure various ESB related functionality: - Itinerary to be started - Transformation Type (thus, the name of the map) - Endpoint (Set End Point Outbound Transport Location, e.g. Transport Type, Location, Action etc.) This wonderful stuff can be done by doing BRI Lookups in the pipeline (executed in the ESB Pipelines using the ESB Dispatcher pipeline component) or even from within an itinerary (this applies for Transformation Type and Endpoint information off course) Problem One of the difficulties of this is that testing this is fairly cumbersome since tooling wasn’t readily available to do some automated testing….now there is! Tool for testing BRI calls My colleague IT Hero - Tomasso Groenendijk has created a very useful tool to do manual testing on BRI lookups. This enables you to quickly test rules and determine if the ESB

Centralized SSO Application Configuration Data Store

Image
Reading application configuration data from a Single Sign-On database is a well-known concept within the BizTalk community. There are other means of retrieving application configuration data for BizTalk, yet retrieving them from SSO is the most powerful one. Microsoft has built an SSO Application Configuration Snap-In that provides a good user experience maintaining custom configuration data. With the Snap-In you will also get code for a .NET Helper Class to support retrieval of application configuration data in BizTalk. This approach has some major benefits. Your application configuration data is cached, has a built in refresh mechanism (ESSO Service) and is secure. What if you have a requirement that to remotely (from a non-BizTalk machine) retrieve application configuration data, because you like to benefit from SSO Config Store? Consider the following diagram In this scenario a mapping is implemented using a Functoid based on a shared helper class that reads the co

WCF-Oracle–Install the 32- and 64-bit client (the following assemblies are installed SDK assemblies…)

Image
  There are probably already lot of posts on the installation of the Oracle client, so this is a small note; Error: If you start visual studio on a machine that hasn’t got the Oracle 32-bit client installed, prepare to face the following error; ‘The following assemblies are installed SDK assemblies but could not be shown in the customize toolkit dialog because they…..’ Solution This is because VS.Net is 32 bit and you only installed the 64-bit Oracle client. Install for your DEVELOPMENT environment both the 32-bit and 64-bit client.   HTH, Sander

BizTalk Pub/sub vs Topics based routing–discussion

My colleagues and I had a brief discussion about the subject ‘Topics’ and what it brings… Do you all agree/disagree with the following statement: topic-based pub-sub messaging doesn’t really exist in BizTalk “In my opinion; I disagree, as BizTalk offers the following 'out-of-the-box' • Message Routing (f.e build in context properties like message type, trading partner, operation etc) • Content Routing (f.e. promoted properties, message inspection in orchestrations/pipelines icw orchestration logic)” My colleague Rene Brauwers Here my 2 cents…. I agree that it exists...however the current offerings in BizTalk are tightly coupled, making the usage far from perfect. When doing content based routing on custom fields (promoted properties), you will be making the solution message-coupled; Your custom message property schema is deployed, and the message filter on these fields have a direct relationship with this property schema. Making any change to this schema will g

MSI–Uninstall started from a network share–big nono!

Image
I had this script for a while that I used to install/uninstall a bunch of MSI files prior to do a BizTalk deployment. I though it was working fantastic; for /d %%d in (.) do forfiles /P . /S /M *.msi /C "cmd /c msiexec /x @file /quiet" Unitill….. I did this from a network share…this is not supported, a genius decided to use Windows as the Default path in this case…thus looking in the Windows folder and starts to uninstall all MSI’s that are lying around!!! Never…..never run this from a network share!! HTH, Sander

Pending blog items–Choose!

Image
  As I mentioned…I have a blog backlog…so much to do, so little time…so you can help me out. I have several pending blog items. Hereby the current list and I invite you to help me out in determining the priority, otherwise…it will be me who chooses what’s next . Sorry for the delay in posting….   Kind regards, Sander

ESB Toolkit – BAM Error (TDDS failed to batch execution of streams)

Image
  You have this error? You are using the the ESB Toolkit? You are pulling your hairs out? This post might be your solution Context The ESB Toolkit allows for BAM Logging in a standard ESB Toolkit model. This can be enabled per Itinerary service in the Itinerary Designer: In this scenario you need to deploy the ESB Toolkit BAM definitions that are located in the ESB Toolkit program files directory. Our Cause In our case we had implemented our own BAM Model and didn’t want to use the ESB Toolkit BAM model. So we had carefully disabled tracking everywhere…. After some pain we found at that by default the ESB Send All Exceptions ports REQUIRES that the BAM model is deployed. Solution Once you know the issue, its easy to solve..disable the Tracker! Go to the SendAllException port Disable the Tracker   And the errors are…..not there anymore.   Cheers, Sander

BizTalk mapper 2010 – determine issues with custom functoids

Image
  In case the mapper fails (and only then, these steps will help you out a bit!) when you do Test map, and it seems to be caused by a Custom Functoid that can not be loaded, perform the following steps; You have to call the ‘Debug’ map, this will generate the XSLT and will start the debugging This will give you an error in case there are errors Look in the output window, for the clear and distinct hint (e.g. : NS0 is the namespace causing the problem); Now perform a ‘Validate’ map to get the Extension XSLT; Open the .extxml.xml Look for the specific namespace (NS0): Open the custom functoid and make sure that the classname / SetExternalFunctoin are EXACTLY identical. If this is the case, you can do the following (but you’re problably in the zone….the problem zone) 1) Perform a build on the Functoid library 2) Redeploy the Functoid library 3) Restart visual studio 4) Open the map, Reset the toolbox 5) Verify that the map works LAST RESORT!! 6) Remove the C

BizTalk mapper 2010–debugging with VS.Net

Image
  I had the weirdest issue, a helperclass that was called by a functoid did not returned to correct result in the debugger (And in the mapping result). After a redeploy, rebuild, clean solution, removing and adding the dlls in the GAC I couldn’t figure out what the issue was.. Somehow variables were shuffled, an Integer became a string and viceversa…. After finding out that the Incense warehouse was closed, I knew I had to do something unexpected…..I renamed the variables…magically it worked?? Well, another couple of hours of my life spent on utter ridiculous weirdness….so if you have this problem….do what you think shouldn’t be required, thinking different might do the trick. Kind regards, Sander

Oracle installer–do you know it’s 2012 already?!

Image
  The installer starts with the most ‘obvious’ check ever, we need at least 256 colors…can’t even remember a videogame in the Dos Era that did that…. Then the PATH variable is too long… I guess there is some room for minor improvements…   Please consider that I’m just posting this to free my mind and allowing it to relax. Cheers….now it’s time to use the time machine to go back in time and finish the installation….with great joy. Sander

BizTalk Quirks–Message Context Properties vs Scope

  Inside orchestations it’s fairly easy to read ContextProperties (albeit Promoted/Distinguished). I had a strange issue where a was reading out a property multiple times in different scopes (in the main branch as well as the error handling to determine a value inside our msg): Start of the orchestration LOG( requestMessage             (Customer.Domain.Common. Schemas.AdminID, ….., ….. ); When I did the exact same thing inside the orchestration in another section… I got a exception about a missing property. So unexpected and not helpful….the incoming message was not altered inside a rule, the properties were of the MessageContextBase (so not bound to the messageType) and I used the same code. In the end I switched to a variable assignment; variable asssignment = msg(Property);   So my new rule is, assign context properties as soon as possible to variables, scoping and context properties seem to conflict sometimes.   Captain Quirk.

BizTalk Quirks –BizTalk mapper

Image
  Several weird issues I’ve encountered have made my think about a special blog theme ‘BizTalk Quircks’. The first one is the BizTalk mapper in 2010. As blogged earlier, there are some behavior differences, but to my opinion as well a few bugs. As I’ve not spent a lot of time reproducing the issues but have met colleagues with the same issues, here some issues you might encounter; A link to a functoid that is removed remains active in the functoid parameters This means that it isn't possible to create a new link, the parameter has to be manually removed in the mapper. Creating several links to a functoid (with e.g. 6 params) lets the mapper loose count I had a functoid with 6 parameters, filled them all, but somehow the link of parameter 6 created a void parameter 7, this meant i got a validation. When i removed the parameter in the functoid it was all fine and dandy. Creating a 'new' message (SalesOrder = SalesOrder) using a map doesn't filll all the values

BizTalk update - CU4

  Ok, lets start with a small post….a BizTalk 2010 update is released ( CU4 ). The approach might be to install it when you have issues, although there seems to some minor changes on EDI handling, please note the following trivial changes; 2672494 (http://support.microsoft.com/kb/2672494/ ) FIX: The BizTalk Server MessageBox database grows very large because records are not cleared in the EqualsPredicate2ndPass table in BizTalk Server 2010 2662532 (http://support.microsoft.com/kb/2662532/ ) FIX: A "Backup BizTalk Server (BizTalkMgmtDb)" job on BizTalk Server 2010 fails when you try to back up a custom database. Summary Although the update might be not suited for you due to company policy of only installing Service Packs,you should at least check out if the MessageBox database is indeed very large and all jobs are running smoothly!   Cheers, Sander

AppFabric For Windows Server - Caching (formerly known as velocity)

Image
In our project we came to the conclusion that caching would be a nice feature and that a distributed implementation would be best suited. We looked at the various offerings (NCache, MemCached, Custom implementation, App Fabric). As AppFabric is the most compelling, I will elaborate on this one in detail; Architecture Requirements / Concerns Windows Enterprise Server Important Windows Server AppFabric cache hosts should be dedicated to the caching service, which means that those servers are not also used as application, web, or database servers. It is possible to use non-dedicated cache servers in a cluster, but this scenario is not supported . Despite this policy, if you decide to use non-dedicated cache hosts, make sure to properly estimate and test the configuration for each cache host to allow enough memory and network resources for both the caching service and all other services on the machines. Also understand that spikes in processor and network utilization by oth