Setting the MQSeries CCSID by using an Environment Variable

During a smoke test of a new BizTalk Server 2016 (with HIS 2016 and the IBM MQ 8.0.0.8 client) we stubled upon the following exception:

“The program ended because, either the source CCSID ‘1208’ or the target CCSID ‘437’ is not valid, or is not currently supported.”

In this simple test we were sending and receiving messages to/from a queue with a couple of ports, and dit not yet use a pipeline component to set IBM MQ Series Context Properties.

But wait, we needed a way to set the CCSID to 1208!

Luckily, you can set an Environmet Variable to specify the desired CCSID globally:

MQCCSID: Specifies the coded character set number to be used and overrides the native CCSID of the application. (IBM Knowledge Center)

After applying this, the messages were sent using the correct CCSID:

 

Upgrade from HIS2013 to HIS2016 on BizTalk2013R2

In a previous blogpost I wrote about how you could use HIS2016 together with BizTalk 2013R2 (on Windows Server 2012R2) in order to use the MQSC adapter with IBM WebSphere MQ9.

This post is about upgrading an existing configured BizTalk 2013R2 environment without removing your current (port) configuration. By reading this description you should already know that this involves some “manual” actions…

These are the steps I followed to upgrade an already configured BizTalk 2013R2 with lots of MQSC SendPorts/ReceiveLocations where I didn’t want to remove all the current binding configuration (wich is what you need to do if you want to remove an adapter and follow the normal installation path…).

Before you start

  • Make sure everything is backed-up correctly
  • Stop everything: host-instances, SQL jobs, SSO,..

Uninstall the old

  • Uninstall the currently installed IBM MQ Client
  • Uninstall HIS2013 (but don’t unconfigure anything, just leave the MQSC adapter untouched)
  • Remove the MQSC COM+ Application
1
2
Uninstall MQSC COM+ Application: 
%windir%\Microsoft.NET\Framework64\v4.0.30319\RegSvcs.exe /u "%snaroot%\Microsoft.BizTalk.Adapter.MQSC.dll"

Install the new

  • Install .NET 4.6.2 (.NET 4.6 is a minimal requirement for HIS 2016)
  • Install HIS 2016 (no configuration, more details here)
  • Install IBM MQ Client 8.0.0.7 (64 Bit)
  • Install HIS 2016 CU1

The “manual” part

  • Update the MQSC Adapter info in the BizTalkMgmtDb “Adapter” table
    • Update the AssemblyVersion in InboundTypeName/OutboundTypeName columns to the newer version.
1
2
3
4
5
6
7
SELECT * FROM [BizTalkMgmtDb].[dbo].[adm_Adapter] where name like 'MQSC' 
 
New InboundTypeName: 
Microsoft.BizTalk.Adapter.Mqsc.MqscReceiver, Microsoft.BizTalk.Adapter.MQSC, Version=10.0.1000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null
 
New OutboundTypeName: 
Microsoft.BizTalk.Adapter.Mqsc.MqscTransmitter, Microsoft.BizTalk.Adapter.MQSC, Version=10.0.1000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null
  • Register the MQSC COM+ Application
1
2
Install MQSC COM+ Application: 
%windir%\Microsoft.NET\Framework64\v4.0.30319\RegSvcs.exe "%snaroot%\Microsoft.BizTalk.Adapter.MQSC.dll"

Finished!

  • Reboot your server(s)

 

This worked for a running setup at my current customer. I cannot give you any garantees this will work on your envirenment! Always test this kinds of upgrades before applying this in your production environment!

Does BizTalk 2013R2 support IBM WebSphere MQ 9?

My current customer has an integration landscape with a lot of IBM WebSphere MQ. After an upgrade to IBM WebSphere MQ 9 of a certain queue manager, we were no longer able to receive messages from a queue that was working perfectly before the upgrade. Sending was still working as before.

At that moment in time we were running BizTalk 2013R2 CU7 (on Windows Server 2012R2) with Host Integration Server (HIS) 2013 CU4 and using the IBM MQ Client 7.5.0.8 (32 Bit).

Our eventlog was full of these:

This setup was still working perfectly with IBM WebSphere MQ 7 and 8 queue managers. I also tried to update the MQ client to a higher version (8.0.0.7), but this resulted in even more errors…

The Solution: Host Integration Server (HIS) 2016

When you take a look at the System Requirements of HIS 2016 you see that it supports MQ 8. No mention of  MQ 9, I know… But it also supports BizTalk Server 2013R2! At this point we really needed a solution, so we took it for a spin!

I installed and configured everything in following order (the installation is always very import!):

  1. Install BizTalk 2013 R2
  2. Install BizTalk Adapter Pack
  3. Configure BizTalk
  4. Install BizTalk 2013 R2 CU7
  5. Install .NET 4.6.2 (required for HIS 2016)
  6. Install HIS 2016 (no configuration)
  7. Install IBM MQ Client 8.0.0.7 (64 Bit)
  8. Add MQSC Adapter to BizTalk
  9. Install HIS 2016 CU1
  10. Reboot Servers

For HIS 2016 I used the following minimal installation (as we only require the MQSC Adapter):

After all of this I was able to successfully do the following:

  • Send and Receive message from IBM WebSphere MQ 9 queues with “Transactional Supported” by using a 64 Bit Host Instance

Conclusion

At the end we reached our goal and were able to send and receive messages from an IBM WebSphere MQ 9 queue with BizTalk Server 2013R2.

Some people may ask why I didn’t use the Microsoft MQ Client. Well, I didn’t work straight away and we agreed to not further research this as we already started our migration project to BizTalk Server 2016.