Recently, I came across one issue while working with one Customer where they were facing bit of challenges to update existing working Integration with new JSON field input.
So, in this use case, two integration orchestration process flow are involved, Master Integration and Child Integration both working well in production. However, time to time developer gets requirement from business to enrich this working flow by adding more fields into Child Integration which was interacting with Oracle Responsys System. The Master Integration getting data from NetSuite, passing Child Integration same data which was interacting with Responsys and completing business flow.
Here is flow diagram with existing working flow Vs flow with new requirements and highlighted problem area.
Problem Statement:
Once developer add new fields into Child OIC orchestration flow, saved, activated and tries to refresh the Parent OIC orchestration flow, it breaks existing mapping. Behind the scene obviously since Child Integration orchestration flow input payload got changed it has cascading impact on calling Integration flow and calling Integration flow fails to deduct those changes and breaks existing mapping and wiped out existing mapping. see the relevant snaps -
Edit Integration Invoke activity from Parent Integration flow which given warning of major changed deducted and then wipes out previous mapping -
Once clicked on update button, it wiped out previous mapping for that child OIC flow-
And Customer needs to put mapper activity back and create mapping again which takes 4 to 5 hours as they were having almost 100 fields to map.
Solution
The solution what I have found for this problem is using export/import feature of OIC. Fortunately, OIC offers you export option for Integration, which means all the artefacts of that particular integration will be exported into .iar file, user can unzip that file which will create a folder called "icspackage" and its contains all the important configuration file generated while we designing Integration flow using webUI.
Here is explanation of some of important files and folders -
To fix this mapping problem we need to find and update relevant .xsl (mapping file) and most importantly relevant .wsdl or .xsd file. In my case I have noticed the xsd definition was inline declared inside .wsdl file itself.
So, open the relevant .xsl file and add newly extra fields and its associated mapping which you expecting to do using UI based mapper. In my case it was something like this -
Once update the .xsl file, find out relevant .wsdl file and declare particular JSON field there. In my case it was "newAddress"
That's it, your mapping (xsl) file as well as xsd definition file both got updated with newly created JSON field.
Now, create an archive out of this folder e.g. "icspackage.zip" then simply rename this zip file to its actual OIC project name. in my case it was CUSTOMER_CONTROL_01.00.0000.iar and import it back into OIC console using import feature.
You will see newly updated fields inside mapper.
I hope, this blog will help you to understand how easily and simply we can do advance xsl mapping using exported project artefacts and deploy it back to see the changes.
Stay tuned for more useful blog!!!
No comments:
Post a Comment