cancel
Showing results for 
Search instead for 
Did you mean: 

BPM - two FORKS and a Transformation issue

Former Member
0 Kudos

my scenario is File - BPM - Proxy

input file has multiple records and each record has 1 field that we put a validation logic in. There will be one message created for each record, so this is a 1:N Integration Process

I used two Forks:

Fork #2 has two branches: Branch 1 --> Transformation Step 3; Branch 2 ---> Fork #1.

Validation#1 = if the validation field has null value then it will go to Transformation Step3 along Fork#2 (end receiver is Proxy-C)

validation#2 = if the field has value then it will go inside Fork#1 which has 2 branches: Transformation Step 1 (goes to Proxy-A) and Transformation Step 2 (goes to Proxy-B)

I am testing a file with only the null value, so I am doing validation#1 only.

I can see the message in BPE engine (Outbound status = Processed successfully) but the message is stucked in the BPE

I checked on the workflow log and here is what i see:

1) Transformation Step 3 is executed (all mapping steps 1-4 completed so this is successful)

2) Transformation Step 2 is executed (but mapping encounters an exception so this is not successful)

3) Transformation Step 1 is not executed already because of the exception, and therefore Send Alert is triggered.

It seems that all records of the file passes through all the branches, which is not intended.

My intention is that when the validation field has null value that record will only pass thru Transformation Step 3, if it is not null then record will pass thru Transformation Step 2 & 1.

I already created a mapping for this validation, and when I test the Interface Mapping for Transformation Step 3 (consisting of 4 mapping steps) using an actual payload it is successfuly generating the message. - so no problem in this Interface Mapping.

But on Runtime, BPM triggers exception due to validation#2 failing which again is because all records of file seem to pass on both Forks. I want that when Validation#1 is true that specific record only passes in Fork#2 and not in Fork#1 also.

I am using ParForEach.

Can you kindly advise how to correct this issue?

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member200962
Active Contributor
0 Kudos

that was a very detailed explanation!

But on Runtime, BPM triggers exception due to validation#2 failing which again is because all records of file seem to 
pass on both Forks. I want that when Validation#1 is true that specific record only passes in Fork#2 and not in Fork#1 also

problem with your design...Fork seems to be working fine....you need to have a Switch block which will perform the validation and then route the message accordingly.

I already created a mapping for this validation, and when I test the Interface Mapping for Transformation Step 3 
(consisting of 4 mapping steps) using an actual payload it is successfuly generating the message. - so no problem in this 
Interface Mapping.

Mapping success does not mean that the BPM processing will be success.

Former Member
0 Kudos

Thanks abhishek for your response!

Indeed it was a design problem, and a little bit of mapping tweak needed.

I change my bpm to use only one fork (carrying the blocks for the 3 validations needed e.g. 3 receiving proxies at the end) and used "ForEach" mode on each block

I also adjusted the mapping for the 2 validations (to which is based on the input field having a value), the other validation remember is based on the same input field having null value, mapping adjusted to not throw exception when null value is passed.

So basically that's what I did, and it's working now.

Thanks again!