It is the presence of a condition block as the first step in the BPM. I needed to do a condition block, so I ended up using a code widget and wrote my own. As soon as I did that the first S/N issue disappeared. In our case it was seemingly random. We would receive qty X parts, and only qty X-1 serial numbers were created. It caused some funny SN Transaction numbers as well.
Putting a code block in for the initial check allowed me to set a variable which I could then check in a conditional statement after the code block:
As an example, the code block would look something like this:
ShouldProcess = false;
foreach (var row in ttPartTran.Where( r=>((r.RowMod=="U")) ) ) //only updated records
{
//do some testing here and set the ShouldProcess variable
}
The condition statement would then compare the ShouldProcess and if true continue…