I had a situation like that (specifically, auto-closing maintenance jobs when the last op was completed). Neither Update nor UpdateExt was working reliably. I eventually used an updatable BAQ and called it from the BPM.
I did it in code, but I believe it’s possible to accomplish the same via widgets. I admit now, as I did then, that this is a bit of a cludge. But I had a deadline and I knew it would work.
I’ll also note that, structurally, there’s usually nothing different between a NormalTableset and a UpdExtTableset. You can usually copy the rows from the former to the latter and it should work. However, UpdExtTablesets don’t require nearly as many fields. So you can also just create a UpdExtTableset local variable, add a row with only key fields + what you want to change, and pass that into UpdateExt.