Ok I might be completely off now, and I have no idea how this would go in reality, nor how it could be, if it could be at all, programmed, but maybe one idea. What if you would allocate filename first, and only then write iptc?
As I said, I don't have any idea if this is even possible, but I have same problem as Goos, just that instead in caption, I extract part of new filename (photos get renamed on ingest) into transmission reference field. For now, I change it with applying tr. reference once again after ingest.