Skip to Content

Cloud Integration CPI - iFlow Properties getting mixed in parallel processing

Hi experts,

We're triggering some massive and parallel tests in CPI and within a JS script we try to get a property information (message.getProperty() ), and it's returning data from another iFlow ( the same iflow which is running in parallel ) and the payload gets mixed information.

Have you ever been through this situation?

Flow execution steps:

1. iFlow with a Timer and an asynchronous SOAP receiver adapter

2. iFlow with a SOAP sender adapter where retrieves the pending payloads batch to be processed and within a loop deliveries a batch to another SOAP asynchronous receiver SOAP endpoint one by one.

3.iFlow that send to information to S/4Hana through oData adapter.

The issue happens at the second step, inside the mentioned JS before sending information to S/4Hana.

Bellow the step rigth before getting the property jsonDocumento to buit the payload, we can see the "chaveExterna": "TESTEBOB-93207" key field.

And here the next step where the data get mixed with other Message from the same process, where the documentoEtapaSend that's built by the previous jsonDocumento property get the wrong material as "Material":"TESTE-BOBV2-92306".

PS: we've checked that the Message ID is unique but the Correlation ID of the parallel messages are the same.

Any ideas please share with us!

Thanks and best regards.

before.png (367.9 kB)
after.png (221.4 kB)
Add a comment
10|10000 characters needed characters exceeded

Related questions

2 Answers

  • Posted on Jul 21, 2020 at 03:13 AM

    Hi Bruno,

    When you say parallel processing, is the iflow getting called multiple times? If yes, there should not be any crossover of data between different calls.

    Can you elaborate a little bit more, Just on the parallel processing part of it. How are you implementing it?

    Best, Ajit

    Add a comment
    10|10000 characters needed characters exceeded

    • Hi Ajit,

      Yes, it's called multiple times and in a asynchronous way, in order to have multiple calls and not wait it to finish and move to the next loop iteration.

      Above, the iFlow where it's started by a timer and we have the loop that's processing the batch payload one by one, and send it to the last iFlow mentioned first where the data get mixed.

      Best regard,

      Bruno

      iflow2.png (38.3 kB)
  • Posted on Jul 21, 2020 at 05:35 AM

    Hi,

    Can you please add few more details. Also one suggestion, if you are communicating between multiple flows (flow 1 -->Flow2) use the Process direct adapter instead of Soap adapter.

    Thanks and Regards,

    Vijay.

    Add a comment
    10|10000 characters needed characters exceeded

    • Hi Vijay,

      Follow below the iFlow that's triggering the Soap adapter to the iflow where data get mixed.

      We need to user Soap adapter in order to have a asynchronous call and not wait the receiver finishes the process, so when it deliveries to the Soap receiver within the loop it can move to the next iteration immediatelly.

      We could be able to see that it's happening always with the loop iterations sequence where are processing in parallel.

      Thanks and best regards,

      Bruno

      iflow2.png (38.3 kB)

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.