There are a few ways to have a Flexible Outbound CallerID, using an Advanced IVR is one of the ways where it can be done automatically or with predetermined logic like dialed number. With the power of the Advanced IVR you can even build out a database lookup to determine what CallerID should be used based on who is calling and what the dialed number is.
Step 1. Create your auto attendant under Configure > Phone Services > Auto Attendants
Step 2. Create your script, make the input source “Variable or Dialog” and set the Variable to
__CALLED_PARTY__. Match the number of digits for each input like you would match dialed extensions for an Inbound AA, however make sure you include enough placeholders for the 10 or 11 digits that could be dialed to match the dialed outbound phone number.
Step 3. Under actions, do a transfer and set the destination to a variable
__CALLED_PARTY__ here comes the important part under CAD you add the fields
FORCED_CALLER_ID(number) replacing the NAME and NUMBER with the CallerID Name and Number you want to set for the outbound call.
Step 4. Setup your Dial Plan to match all calls from Internal to the External Destination like normal, however instead of sending it to outside trunks like SIP/ITSP or whatever match the digits as is and send it to your Outbound AutoAttendant you’ve created. This will send all outbound calls to the Auto Attendant.
Step 5. This is the part, make sure you create a NEW Dial Plan Entry for calls from the Auto Attendant matching the 10/11 Digit dialing to be sent to the ITSP or other outside trunks so that the call can actually go through.
Thank you David Caudron for the steps outline in Slack over here https://zultyscp.slack.com/archives/C3SRB1L8M/p1582730788000500?thread_ts=1581253683.144700&cid=C3SRB1L8M