· Feb 9, 2023

Data Transformation as an Element of Interoperability Production

Hi folks!

I'm playing with IRIS interoperability at the moment and it turned out that Data Transformation cannot be the element of production by itself.

It can be called either from data rule or from business process.

But why? 

What if I just want to change the message with the transformation and transfer the message somewhere else? Why the overhead with Rule or Business process?

Discussion (1)2
Log in or sign up to continue

Good question. I have had the requirement to do this a few times already, but create a BPL instance every time.

This becomes an effort when exposing services for different API versions, and you build your BPL and Logic to be compatible with the latest. All you need to do is transform the old version to the new one. But you want it somewhere "between" the service and the BPL.

The same goes for message versioning on Business Operations. Some systems you work with use the different version of the same API.

I have started adding APIVersion properties to the services and operations, but then still needsto do a lot of code to cater for each version of the message, or an additional BPL for every transformation.
Also, I need a Lookup to map versions to Business Host names.

It would be great if the following was possible:

  • Ens.Request and Ens.Response had a MessageVersion parameter or something similar.
  • The Business host has a MessageVersion property as a SETTING
  • The Transformation could be handled the Business Host class in some way. Get the MessageVersion value of the message and check the MessageVersion of the TargetHost. If it differs it invokes a transformation class to transform the message. This class will have to have some rules in it to convert between different version of the messages.
  • On the Response message the same principle should apply. Some operations work on older versions of an API.
  • There will of course have to be a transformation class configuration of some sort per business host for the request and responses.

There may even be much simpler solutions than this. But I agree with question asked.