Thursday, April 9, 2015

Our blog has moved!

With the launch of our new website, we have integrated our blog with our company website. You can continue to follow our blog at New blog entries will be posted on our new blog only. New entries will no longer be posted on Blogger.


Tuesday, February 24, 2015

IBM InterConnect: The Premier Cloud Computing & Mobile Conference

Sunday I arrived at IBM Interconnect 2015. IBM has decided to combine the 3 conferences – Impact, Pulse and Innovate into one Conference. IBM Interconnect- The Premier Cloud Computing & Mobile Conference. It started Sunday with the Business Partner Summit.

Monday the real conference started. There was a big American style opening session. If you want more information about it just look at #ibminterconnect on twitter or countless other blogs. As an integration consultant, I mainly focus on products like IBM Integration Bus, IBM MQ, Datapower, API management and BPM.

I attended some great sessions on Monday about what is new in the products. I will now give a short overview about what’s new. When I have time I will write an article to go deeper into the different products seperatly.  I will now just give the key features I found most interesting.

IBM Integration bus

Last year the Open beta was announced, this year the official release is announced. 
  • Platform support is extended.
  • Most important for me: The developer experience has improved. They did it by simplifying the installation, introducing the concept of a policy, some nodes are now replaced with connectors. There is also a connector framework available to create your own connectors in a simplified way.
  • The data and transformation capabilities has been improved.
  • The way IIB is connected with IBM MQ. IBM MQ is no longer a required prerequisites. You can run IIB without IBM MQ. On the other side IIB can now be connected to multiple Queue Managers and different Integration Node scan connect to the same Queue Manager. When you want to use 2phase commits (and who doesn’t want this ? ) you still need MQ as a transaction manager. The speaker said that they are planning on opening IIB so other transaction managers can be used.


Nothing new was introduced since the 7.1 release in November 2014. To recap the 7.1 release:
  • IBM renamed it to IBM Datapower SOA Appliance
  • There is now only one singular, modular and extensible platform. You no longer have the distinction between the XG, XI and XB systems. There is only one and you can extend it with different modules 
    • B2B Module
    • Tibco EMS Module
    • Integration Module
    • Application Optimization Module
    • ISAM Proxy Module
Some assets for Datapower are available on GitHub.

IBM MQ Family

  • In this family I had my biggest surprise. There was the announcement of an IBM MQ Appliance. The release date will be 13 march 2015. It is ideal to use as a messaging hub or to extend MQ connectivity to remote locations. The appliance can run different MQ V8 queue managers. There are some restrictons. More information can be found on
  • Fix pack 2 is being released somewhere next week. The most interesting change is the authentication. You can now use ldap to authenticate with an LDAP. The queue manager has to run on a Linux or Unix. This authentication will also be available on Windows in the near future. There is also a new concept of a “routed” topic. Basically you have some queue manager who know everything and connect with everyone. This way the traffic for pub/sub can minimized. 
  • IBM is adding in support for MQ Light into the IBM MQ product. A new AMQP 1.0 channel will be available that can be used to connect an MQ light application with a IBM MQ V8 queue manager. A tech preview is available for fix pack 2.
  • MQ Light is also available in BlueMix.
  • IBM MQ Adavanced for developers has been released.
Author: Jef Jansen

Wednesday, January 7, 2015

IBM BPM – Task Notification Email template

A customer of mine had the requirement to send an email every time a task is created for a user. Rather than polluting our process with an email activity we decided to use the built in functionality IBM BPM provides. When a user logs in into Process Portal she/he can set some preferences. One of them is to send an email when a new task arrives for the user (or his group).

Friday, January 2, 2015

Devops (3): Chef (and some fun cooking)

After having looked into Vagrant, it became clear that Puppet and Chef are "the" tools to do the structured and repeatable configuration of machines. I picked the recent book "Learning Chef" to learn and experiment a bit.
  • The book uses the recent Chef Development Kit which should gradually replace the tool called Knife.
  • The tool "Chef" uses the the Recipe DSL to write recipes (Domain Specific Language, based on the Ruby programming language)
  • VirtualBox is used for running the VM's that are going to be cooked and baked
  • Complemented with our good friend Vagrant (see previous DevOps blog)(actually kitchen-vagrant)
  • Finally the tool kitchen is used  
The focus op Chef really lies on getting the software on the machine installed, configured, and up and running. On the target machine, a Chef Client is installed that will retrieve (new and updated) recipes from a Chef Server. So the Chef clients each pull the recipes from the Chef Server.
Note: the tool Ansible does the opposite, pushing configuration data to the machines.

Many cookbooks or recipes can be downloaded from the Chef Supermarket and others.

After spending some time look around in the world of DevOps and its tools, I have a few general Observations:
  • Devops is strongly focused on Linux
  • Diverse programming languages such as Ruby and Erlang are used
  • This is a domain in full flux, new initiatives and companies pop up, things evolve rapidly
  • First time I see the file format YAML actually being used
Author: Guy

Wednesday, December 31, 2014

Devops (2): Vagrant

After looking a bit into Docker, I went on to look into Vagrant, another well-known tool to provision and configure virtual machines.

To learn about Vagrant, I read the book "Vagrant: Up and Running". This O'Reilly book is well-written and the examples all work. While doing the exercises on a Windows Server 2012R2 VM, I hardly encountered any problems. Starting the Ubuntu VM with the vagrant up command and removing it with vagrant destory.

The Vagrant command line tool allows to create a Virtual Machine in a reproducible and neutral manner. Vagrant was initially developed around the the free VM product Oracle VirtualBox. But Vagrant now comes with many other providers, e.g. AWS, Rackspace, IBM SoftLayer and Microsoft Azure. Support for VMWare however is not free ($79).

Vagrant focuses on the creation of Virtual Machines in a neutral manner. Contrary to Docker, it uses an actual Virtualization solution to provision the virtual machines. This allows Vagrant to support multiple Operating Systems in parallel. And offers support for automating the creation of Windows based virtual machines.

When Vagrant is used in combination with Oracle VirtualBox, Vagrant will use the VBoxManage.exe of VirtualBox. To create machines with a cloud provider, the respective Vagrant provider will leverage the API and tools of the specific Infrastructure-As-A-Service solution. Vagrant configure all sorts of attributes of the virtual machine, incl. e.g. networking (and port forwarding).

For the actual provisioning of the machines, Vagrant supports many options, including command line. But most often, Vagrant will be used in combination with Chef or Puppet. E.g. the Chef development kit uses Vagrant as its default "driver".

Vagrant does not start from an ISO image, but from an already prepared "box". The more such box is pre-configured, the fewer configuration needs to be done afterwards. Vagrant uses its own software format to package the virtual machines that are taken as a starting point (compare to Amazon Machine Images). and many others make pre-packaged Vagrant boxes available.

Windows specific
  • VagrantManager makes Vagrant accessible from the Windows (or iOS) Taskbar 
  • The company modern.IE makes Windows boxes with all sorts of IE versions available.
  • Interesting blog on how to create Variant Windows boxes
  • Vagrant can directly access the command line of Linux boxes over SSH (secure shell). For Windows boxes this cal also be arranged wen cygwin (or other SSH server) is installed. But Vagrant can also use WinRM to access the Windows command line
  • Where the installation of software on Linux boxes leverages apt-get or yum to install software packages, Chocolatery wants to bring a similar solution to the Microsoft world; many packages are available for quick and easy installation
  • Boxstarter leverages Chocolatey packages to automate the installation of software and create repeatable, scripted Windows environments.
Vagrant and Integration Tools
In my own domain of Application Integration and SOA, I expect that both vendors and customers will pickup tools such as Vagrant for creating and provisioning (virtual) machines. Combined with Chef or Puppet to actually install and configure the software on these machines.

Author: Guy

Monday, December 29, 2014

Devops and Docker

The holiday period between Christmas and New Year is an ideal period to catch up on some reading and experimenting. Devops and tools such as Docker, Vagrant, Chef, Puppet and Ansible were on my radar for a while. So finally some time to dive into this topics.

Nested VMs
Not to mess up my machine, I use VMWare workstation to spin up some test machines. As these Devops tools are all about creating and provisioning virtual machines, one must enable "Nested VMs" support. This allows one virtual machine to run in another.


Docker appeared on my radar while learning about Micro Services. Docker focuses on the creation of light-weight containers in which applications are configured in an automated manner.

The Linux Containers are very small by leveraging OS level virtualization of Linux. Is it some "chroot on rocks". The chroot system call on Unix/Linux changes the root directory for a program and all of its children. chroot allows programs - e.g. a web server - to run in a more protected mode. The OS level virtualization can limit all the resources used by child processes: CPU, memory, disk space, ... Because containers are so light-weight, many of them can be run on a single machine. This mechanism allows each application to run in its own container, its own virtualized OS.

To have a quick try of Docker, there is a great Online Tutorial consisting of 10 steps. Recommended!

As there aren't any books available on Docker, I watched the brand new training material of LiveLessons. As I couldn't find the text material, had to type over the instructions from the paused video. After wasting some time trying to get access the Fedora Atomic container on the Fedora 21 host, decided to switch to another topic, Vagrant. If I have some more time, I'll come back and retry with RHEL as used in the video training. Or switch to Windows and take a look boot2docker.

Author: Guy

Thursday, December 11, 2014

Datapower XQuery replace

One of the clients that I’m working for discovered a problem with a SOAP web service querying an LDAP. The service could contain a ‘*’ in plain text in possibly different fields in the message. When the service is called it uses the ‘*’ as a wildcard. The system should handle the ‘*’ as plain text so we need to escape the character with ‘\2a’ (escape for a LDAP filter query). So they looked in complete web service chain where the least impact was. They decided that an update in the DataPower configuration was the best option.

This is a small message example, but the ‘*’ can occur in couple different WSDL operations and in different fields.
<soap:Envelope xmlns:soap=""

I immediately thought to use the function str:replace(). But unfortunately it is not supported in Datapower, which brought me to XQuery, as an alternative for XSLT. So this is the solution that I developed.

Because the replacement is only necessary for 3 operations from the WSDL I defined the policy-rule on WSDL operation level.

Below the XQuery code used to replace the ‘*’ into ‘\2’a. The XQuery can be extended to handle other values that need to be escaped for example:  ( ) \ / NUL

xquery version "1.0";
declare namespace local = "";
declare function local:copy-replace($element as element()) {
  element {node-name($element)}
                for $child in $element/node()
                return if ($child instance of element())
                       then local:copy-replace($child)
                       else replace($child,'\*','\\2a')

The total number of requests that have a ‘*’ or other wildcards in the username is limited. To improve the performance I adapted the standard SQL-injection filter to search for ‘*’ and output the number of hits. This way when the hit count is 0 I can skip the XQuery transform action.

Author: Kim