In this blog post, I will show how to achieve SOAP to ISO8583 transformation using ESB 5.0.0.

In order to achieve that I will be using WSO2 ESB tooling eclipse plugin to create necessary synapse artifacts.
Open eclipse mars with ESB tooling plugin installed.
Go to ‘Developer Studio’ -> ‘Open Dashboard’.
Select ‘ESB Config Project’ as below image.

Then select ‘New ESB Config Project’

Then click ‘Next’ and give a project name you like. I gave ‘SoapToIso’. Then untick the ‘Use Default Location’ and browse and provide a folder you want your projects to be saved in the computer.


Then click ‘Finish’.
Now a project called ‘SoapToIso’ will be created.

Now right click that project and select ‘Add or Remove Connector’

Now keep this aside for a while, and go to https://store.wso2.com/store/assets/esbconnector/details/e4cf3fd5-445f-4317-beb6-09998906fb0d url.

Click the ‘Download Connector’ button. A zip file called ‘iso8583-connector-1.0.1.zip’ will be downloaded.
Now let’s get back to our ESB config project.
Now click next in ‘Add or Remove Connectors’ wizard.Then select ‘connector location’ and browse the zip file you just downloaded above.

click ‘Finish’.
Now right click the ‘proxy-services’ in ‘SoapToISo’ ESB config project and select ‘New’ -> ‘Proxy Service’

Then select ‘Create a new proxy service’.

Then give a name you like for the proxy service. I gave ‘ISO85883-Test’. And select ‘Custom Proxy’ from the drop down list for ‘Proxy Service Type’

Now click ‘Finish’.
Now a file called ‘ISO85883-Test.xml’ will be created with a source and design view as below.

There you can see ‘Iso8583 Connector’ in the Palette. This connector came here due to we uploading the ‘iso8583-connector-1.0.1.zip’ to the ESB config project.
Now just drag the ‘init’ icon in the left side Palette to the proxy service ‘Design’ view.Then it will look as follow.

Now double click the ‘init’ icon on the ‘Design’ view. Then a tab called ‘Properties’ will be open below. There will be ‘Connector Operatoin’ section, where you can enter the server host and port of the listening server. My java server is listening on port 5010 and running on ‘localhost’. So I gave those values.

Now drag ‘sendMessage’ icon in front of ‘init’ as below.

Now make sure to save the ISO8583-Test.xml file.
Now you have completed creating the ESB config project.
Next step is to create a ‘Composite Application Project’ out of this ESB config project.
For that just right click in the ‘Project Explorer’ space and select ‘New’->’Project’.
Then click ‘Composite Application Project’

Then give a name you like for the composite project. I gave ‘SoapToIsoCompositeApp’.
Then select the ESB config project (SoapToIso) you created as shown in the below image and click ‘Next’.


Click ‘Finish’.
A new composite app will be created as below.

Now right click the composite app project and select ‘Export Composite Application Project’.
Then browse a location you want the composite app to be exported as below.

Then click ‘Next’ and ‘Finish’. Now you can go to the location you gave and check if a file in .car extenstion is created. I have a ‘SoapToIsoCompositeApp_1.0.0.car’ created in my compute. The .car is the file format we use to upload artifacts to WSO2 ESB product.
Now, let’s keep it aside for a while.
Let’s start the ESB 5.0.0 server now.Before that, inorder to support ISO8583 connector, you need to add 4 jar files to ‘wso2esb-5.0.0/repository/components/lib’ folder.
1.commons-cli-1.3.1.jar
2.jdom-1.1.3.jar
3.jpos-1.9.4.jar
4.log4j-1.2.17.jar
You can download those jars from
http://mvnrepository.com/artifact/commons-cli/commons-cli/1.3
http://mvnrepository.com/artifact/org.jdom/jdom/1.1.3
http://mvnrepository.com/artifact/org.jpos/jpos/1.9.4
http://mvnrepository.com/artifact/log4j/log4j/1.2.17
Then unzip the ‘iso8583-connector-1.0.1.zip’ file you downloaded in the beginning. Inside that folder you can find a file called jposdef.xml. Copy that file and paste it inside ‘wso2esb-5.0.0’ folder.
Now start the ESB server.
Login to the management console.Go to ‘Main’->’Manage’->’Connectors’->’Add’
Browse and upload the ‘iso8583-connector-1.0.1.zip’ file as below

Refresh and go to Connectors ‘List’ view. There you will see the added connector. Enable the connector by clicking on the ‘Disabled’ icon

Now we need to add the previously created ‘SoapToIsoCompositeApp_1.0.0.car’ file.
Go to ‘Main’->’Manage’->’Carbon Applications’ ->’Add’ and upload the created .car file

Now, if you go to ‘Main’->’Manage’->’Services’->’List’ you can see the ISO8583-Test proxy service is deployed.

If you click the WSDL1.1 or WSDL2.0 icon, you can get the wsdl url of your proxy service.
Mine is ‘http://localhost:8280/services/ISO8583-Test?wsdl

you can copy that url and create a soap project in SoapUI.

Soap Request:
<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/”>
<soapenv:Header/>
<soapenv:Body>
<ISOMessage>
<data>
<field id=”0″>0200</field>
<field id=”3″>201345</field>
<field id=”4″>000000500000</field>
<field id=”7″>0111522180</field>
<field id=”11″>123489</field>
<field id=”32″>100009</field>
<field id=”44″>XYRTUI5269TYUI</field>
<field id=”111″>ABCDEFGHIJ 1234567890</field>
</data>
</ISOMessage>
</soapenv:Body>
</soapenv:Envelope>
Now you are ready to send the request to the proxy service at ESB.
Once the SOAP meesgae comes to ESB the ISO8583 connector will send the message to the Test java server listening on port 5010.
You can get a sample test server at https://github.com/Kanapriya/ISO8583TestServer.git
You can do any change to the code if you need also.
Start the test server by running the main class.
It will print ‘Server is waiting for client on port 5010’
Now send the request from SoapUI.
Then the test server will print
There is a client connected
Data From Client : 0200B220000100100000000000000002000020134500000050000001115221801234890610000914XYRTUI5269TYUI021ABCDEFGHIJ 1234567890
Acknowledgement
0210B22000010210000000000000000200002013450000005000000111522180123489061000090014XYRTUI5269TYUI021ABCDEFGHIJ 1234567890
As you can see the server read and print the standard ISO8583 message returned by ESB.