Enterprise Integration Patterns – the basics

Integration is a massive topic with hundreds, if not thousands of solutions, questions and answers. How do we pick our way through this minefield and come up with a solution that fits or enterprise?

It is vital that before we start to make decisions that could cost our business millions of pounds it is well worth taking the time to understand the basics of integration so that we fully understand the impact of the decisions we are about to make.

It may surprise you to know that there are only actually a few patterns on which all the enterprise architecture patterns are based. Continue reading Enterprise Integration Patterns – the basics

API Versioning in the Enterprise – Minimising the impact of change

There are a number of versioning approaches that we regularly come across in the the IT world including:

  • Semver (http://semver.org)
    • is based on using the versioning information in a build to inform the consumer of the nature of the changes
  • Calver (http://calver.org)
    • calver is based on informing more about release schedules and supportability
  • And even sentimentalver (http://sentimentalversioning.org)
    • probably the default position of many developers but again is based on using versioning to indicate something about what the new version is compared to the previous ones

These strategies have been borne out of software development projects where we control every aspect of the development. They have been extended to work within eco-systems such as node.js to support automated build and dependency management and have worked with some success. In-fact version control based on source code changes has many advantages and should be actively encouraged as:

  • It can be used by automated scripts to attempt to ensure compatibility of software when releasing software,
  • It helps in support when you need to know when a bug was reported and what code was actually live at the time
  • It can help you with bug fix releases
  • You can create version dependency matrices showing what versions of the software are currently deployed and how they relate to each other.

There are often attempts to utilise these strategies for internal services (e.g. SOAP services) and also external API’s. How ever none of the ‘BIG’ api publishers use any of these versioning strategies and even software runtimes such as Java and .NET actually offer you a completely different strategy. Why do we still use these strategies in our enterprise and is there an alternative? Continue reading API Versioning in the Enterprise – Minimising the impact of change

On Current, Transitional and Target Architectures

Having worked through a number of large scale IT projects, migrations and transformations, I thought it prudent to share some thoughts around these three, commonly used yet commonly misunderstood, Architectural States: ‘Current’, ‘Transitional’ and ‘Target’.

All architectural strategies must consider at least two of these, the Current and Target states and some, well any which are not pure big bang releases, will include one or more transitional architectures.

What are these states for and what do they mean? Continue reading On Current, Transitional and Target Architectures

Enterprise Architecture Types


A lot has been written about the role of enterprise architecture in an organization, what the benefits are, what is the best framework to use, and how this fits with the role of solution architects. However one thing that has become clear to me over the years of working in this space is the lack of understanding of exactly what the common enterprise architectures are and how enterprise architectures change over the life of an organization. This can lead to misunderstandings about what possible end state architectures there are, what they can do for an organization and what drawbacks they bring. It is clear without this knowledge it is usually impossible to make and communicate which architectural state and organization is best suited for and why.

Continue reading Enterprise Architecture Types

WSO2 File Processing

File Processing On WSO2 A Simple File Processing Example

This example sets up a simple file processing orchestration on the ESB which reads a CSV file from a watched folder, transforms it and writes it to another folder in an arbitrary format.

Initial attempts to process .csv files on the WSO2 service bus were based on the example in http://wso2.com/library/blog-post/2013/09/csv-to-xml- transformation-with-wso2-esb-smooks-mediator/ which works in the following way:

The process being:


1. We set up a VFS Reader Proxy to poll for files a defined folder

2. When a file is found we use a smooks transformation to change the file into an XML structure

3. We then use a WSO2 XSLT transform to transform the XML to a .csv format.

Lets get started!
Continue reading WSO2 File Processing

WSO2 Installation

Just a simple series of steps to install the WSO2 ESB software – it’s free, give it a try!


Download the ESB software from :


Note that WSO2 is a fully featured enterprise ESB solution and as such has many components. The ESB is the core component that we are using for this example and therefore what we are planning to install.

Uzip that file into a location on your machine, I am using a mac and I have decided to unpack it to /Users/timteece/Documents/Wso2/wso2esb-4.9.0/

Download Java JDK

The ESB requires the appropriate version of the Java JDK to run, so download this and install it on your machine.

Run the ESB

Start a command line and change directory to <ESB Installation Directory>/bin On windows run the command
on mac or windows run the command


Note on mac sometimes the java home environment variable is not set correctly, if this is the case run the following command and before running the wso2server

JAVA_HOME=”$(/usr/libexec/java_home -v 1.8)”

Open the Administrator Console

When the server has started you can open the admin console of the ESB using the URL that was logged, check the startup logs at the end for the line:

INFO – CarbonUIServiceComponent Mgt Console URL : https://<ipaddress>:9443/carbon/

Log In

The default user name and password is ‘admin’ and ‘admin’. Change these in a production system