Muralidharan is correct. You do not need to use custom code to accomplish this. DTM & Launch both have the ability to extract values from the query string built in. The screenshot provided is exactly how you'd extract '123' from the example URL you provided.
If this answers your question, you'd you mind marking their answer correct? If it doesn't fully answer your question, can you let us know what else we can clarify?
@paulinab55518612 I've been able to use the Data Element Assistant to create a Concatenate data element which concat's my utm parameters and cmpid together. If you are still looking into this I would tell you to give this a try.
The issue I am still having is populating that data element when some or all of my utm parameters/cmpid is in the url and NOT populating it when none are set.
I'm Looking for any guidance on how to cleanly do this now that I cannot use_satellite.getQueryParam. I've been looking into creating different page rules based on if there is a utm parameter, but that seems to be an ugly solution.