One Daml transaction, multiple recipients, one nested exercise tree, and what it takes to turn that back into clean per-recipient transfer rows.
A common ask among teams building on Canton: send N Canton Coin to PartyA and M to PartyB, atomically, in a single on-chain step. Both receivers have pre-approvals in place, so no receiver signatures are needed. The catch is that the sender does not always have two separate Holding contracts large enough to cover each leg independently. One large Holding is on hand; splitting it into two presized Holdings up front, then running two transfers, defeats the point of doing this atomically.