Thanks for that. The problem with that code is that it's specific to each catalog item you've got. You might be matching questions across provider and consumer and then into your existing catalog item, but each catalog item will have different questions.
I'd say it's actually easier (because there's less code) to do this in a flow:
1. "Get catalog variables" from the producer variables from the provider task, using the catalog item as a template.
2. "Submit catalog item request" for the internal version of the catalog item, using the variables you got from step 1.
Because (in my scenario) I've published the internal catalog item to Service Bridge, both have the same variables so I can just drag and drop the pills in.
While this is not dynamic (you need a different flow for each SR), in the same way the code the link shows is not dynamic, I'd suggest this way has much less scope for error.
I'm wondering if I can make this dynamic, but whatever I come up with I end up building some sort of controller that works out what flow to run. At which point you might as well just run the flow (since each SR can point to a different flow, why point it to a controller to make life harder?)