Dear Readers and friends of the debugging fun,
Last week a very interesting problem needed my assistance.
As you know, in the Process Designer (PD) you have an option to duplicate artifacts like Business Process Definitions (BPDs), Business Objects (BOs) etc.
In the case I was looking at, this worked pretty well until at some point, it stopped working. When my client tried to duplicate a BPD, they got the following exception:
Now this was fairly confusing, as it worked before and nothing was changed - neither on that particular BPD nor on the Process Application itself.
Since the exception stated a BPD_ID was missing, I browsed the TWX file for that ID by using a grep - and indeed I could not find any artifact with that ID. Next, I searched the TWX for the BPD_NAME 'Process' to see which ID was used - and as you can see, the BPD used had a different ID than the one we saw in the exception:
Last but not least I checked the content of the LSW_BPD table, to see if a record for that ominous BPD_ID existed, so that maybe it would tell us something about the BPD and what was missing when trying to clone it.
But there was no record for that ID!
Now that was interesting. The model said there was a BPD with this ID, but it did not exist in the database. So the question that came to my mind was: What actually happened that brought the model into this bogus state? Cloning? Copying?
After some more tests I was able to find the root cause.
As you know, there are different versions of BPM: Express, Standard, Advanced.
The advanced version has an option to create SCA model content in IBM Integration Designer (IID) and run it on a Process Server.
As soon as you connect IID with Process Center and import your Process Application to the IID workspace, the Process Application or Toolkit is marked with advanced content (you can see that by the 'XXX_Implementation' and 'XXX_Library' - where 'XXX' is the name of the Process Application or Toolkit - being added):
This advanced content is needed for the AIS implementation as it will trigger the WSDL/XSD generation.
However, in our case here, the Process Application did not contain any AIS implementation. The sole existence of advanced content without AIS implementation resulted in the error! Now that was interesting.
To solve the issue I simply removed the advanced content by clicking on 'XXX_Implementation' and 'XXX_Library' and disassociating both from Process Center.
After creating a new snapshot for the changed Process Application the duplicate BPD worked again.
So please keep that in mind when you use BPM advanced.
And if this does not help, take two of these and call me in the morning.
Your Dr. Debug