When I use call forwarding unconditional on an extension, the original ingress callerid is being passed instead of the extension number on an external call.
I have the same problem, but my transfered calls always end up as private nrs.
Did you register your voip nr at your sip trunk provider? (I did, but still no joy)
when a call is forwarded, it uses the original callers number unless you block that in the trunk.
If blocked in the trunk, the fallback will be the trunk CID, not the extension’s CID.
If you want to set the CID on a “forwarded” call you will need to use either a Follow-Me or Ring Group and use the options towards the bottom that let you modify the outbound CID on external calls.