Outbound calls fail from tenant1, but working from main tenant

In my VitalPBX setup, trunk settings are configured within the main tenant. From a sub-tenant where I’m trying to make calls, I have neither a dedicated trunk nor outbound rules set up; these are managed centrally from the main tenant. Settings within the sub-tenant specify which trunk and outbound rules to use. However, when attempting to make a call from this sub-tenant, the system does not seem to find the rule, deeming the number as invalid.

I would like to present this issue on the forum for assistance: Calls initiated from the sub-tenant, which are supposed to use the trunk and outbound rules defined in the main tenant, do not seem to be recognized or applied by the system. The dialed number is treated as invalid, and the call fails to go through. What could be the solution to ensure that calls from a sub-tenant correctly use the trunks and outbound rules set in the main tenant?

Connected to Asterisk 18.21.0 currently running on pbx_server (pid = 1466)
    -- Executing [0365478965@T5_cos-all:1] NoOp("PJSIP/tenant1_101-0000000b", "More than on digit pattern") in new stack
    -- Executing [0365478965@T5_cos-all:2] Gosub("PJSIP/tenant1_101-0000000b", "s,1(0365478965)") in new stack
    -- Executing [s@T5_cos-all:1] Set("PJSIP/tenant1_101-0000000b", "EXTENSION=0365478965") in new stack
    -- Executing [s@T5_cos-all:2] NoOp("PJSIP/tenant1_101-0000000b", "Dialing 0365478965 from 101") in new stack
    -- Executing [s@T5_cos-all:3] Gosub("PJSIP/tenant1_101-0000000b", "sub-set-global-vars,s,1(a6de7c47834cd84f,0365478965,parking-5)") in new stack
    -- Executing [s@sub-set-global-vars:1] NoOp("PJSIP/tenant1_101-0000000b", "Setting Global Vars") in new stack
    -- Executing [s@sub-set-global-vars:2] Set("PJSIP/tenant1_101-0000000b", "TENANT_PATH=a6de7c47834cd84f") in new stack
    -- Executing [s@sub-set-global-vars:3] Set("PJSIP/tenant1_101-0000000b", "PREFIX=T5_") in new stack
    -- Executing [s@sub-set-global-vars:4] Set("PJSIP/tenant1_101-0000000b", "__PICKUPMARK=T5_0365478965") in new stack
    -- Executing [s@sub-set-global-vars:5] Set("PJSIP/tenant1_101-0000000b", "__PARKINGLOT=parking-5") in new stack
    -- Executing [s@sub-set-global-vars:6] Set("PJSIP/tenant1_101-0000000b", "__DYNAMIC_FEATURES=custom-features") in new stack
    -- Executing [s@sub-set-global-vars:7] Set("PJSIP/tenant1_101-0000000b", "ICALL=no") in new stack
    -- Executing [s@sub-set-global-vars:8] Return("PJSIP/tenant1_101-0000000b", "") in new stack
    -- Executing [s@T5_cos-all:4] Gosub("PJSIP/tenant1_101-0000000b", "sub-set-call-vars,s,1(a6de7c47834cd84f,0365478965,5,T5_cos-all,T5_ARS-all)") in new stack
    -- Executing [s@sub-set-call-vars:1] NoOp("PJSIP/tenant1_101-0000000b", "Setting Call Vars") in new stack
    -- Executing [s@sub-set-call-vars:2] Set("PJSIP/tenant1_101-0000000b", "_TENANT=a6de7c47834cd84f") in new stack
    -- Executing [s@sub-set-call-vars:3] Set("PJSIP/tenant1_101-0000000b", "_CALL_DESTINATION=0365478965") in new stack
    -- Executing [s@sub-set-call-vars:4] Set("PJSIP/tenant1_101-0000000b", "_COS_ID=5") in new stack
    -- Executing [s@sub-set-call-vars:5] Set("PJSIP/tenant1_101-0000000b", "_COS_NAME=T5_cos-all") in new stack
    -- Executing [s@sub-set-call-vars:6] Set("PJSIP/tenant1_101-0000000b", "__TRANSFER_CONTEXT=T5_cos-all") in new stack
    -- Executing [s@sub-set-call-vars:7] Set("PJSIP/tenant1_101-0000000b", "_ARS=T5_ARS-all") in new stack
    -- Executing [s@sub-set-call-vars:8] Set("PJSIP/tenant1_101-0000000b", "CDR(tenant)=tenant1") in new stack
    -- Executing [s@sub-set-call-vars:9] Set("PJSIP/tenant1_101-0000000b", "CDR(destination)=0365478965") in new stack
    -- Executing [s@sub-set-call-vars:10] Set("PJSIP/tenant1_101-0000000b", "CDR(trunk)=") in new stack
    -- Executing [s@sub-set-call-vars:11] Set("PJSIP/tenant1_101-0000000b", "CDR(did)=") in new stack
    -- Executing [s@sub-set-call-vars:12] Set("PJSIP/tenant1_101-0000000b", "__CALLID=1712732038.11") in new stack
    -- Executing [s@sub-set-call-vars:13] NoOp("PJSIP/tenant1_101-0000000b", "Channel Type: PJSIP") in new stack
    -- Executing [s@sub-set-call-vars:14] ExecIf("PJSIP/tenant1_101-0000000b", "1?Set(__PJSIP_CALLID=.Sj5r82OGfMDrxqTQPWIguvM9fG2od2f)") in new stack
    -- Executing [s@sub-set-call-vars:15] ExecIf("PJSIP/tenant1_101-0000000b", "0?Set(CHANNEL(language)=)") in new stack
    -- Executing [s@sub-set-call-vars:16] ExecIf("PJSIP/tenant1_101-0000000b", "0?Set(CHANNEL(language)=)") in new stack
    -- Executing [s@sub-set-call-vars:17] Return("PJSIP/tenant1_101-0000000b", "") in new stack
    -- Executing [s@T5_cos-all:5] Gosub("PJSIP/tenant1_101-0000000b", "sub-construct-cid,s,1") in new stack
    -- Executing [s@sub-construct-cid:1] NoOp("PJSIP/tenant1_101-0000000b", "Building CID") in new stack
    -- Executing [s@sub-construct-cid:2] Set("PJSIP/tenant1_101-0000000b", "ORIGINAL_CID_NAME=Operator") in new stack
    -- Executing [s@sub-construct-cid:3] Set("PJSIP/tenant1_101-0000000b", "ORIGINAL_CID_NUMBER=101") in new stack
    -- Executing [s@sub-construct-cid:4] Set("PJSIP/tenant1_101-0000000b", "_CALL_SOURCE=101") in new stack
    -- Executing [s@sub-construct-cid:5] Set("PJSIP/tenant1_101-0000000b", "_CS=101") in new stack
    -- Executing [s@sub-construct-cid:6] GotoIf("PJSIP/tenant1_101-0000000b", "0?return") in new stack
    -- Executing [s@sub-construct-cid:7] Gosub("PJSIP/tenant1_101-0000000b", "sub-get-device-tree,s,1") in new stack
    -- Executing [s@sub-get-device-tree:1] NoOp("PJSIP/tenant1_101-0000000b", "Configuring Device Tree") in new stack
    -- Executing [s@sub-get-device-tree:2] Set("PJSIP/tenant1_101-0000000b", "DEV_TECHNOLOGY=PJSIP") in new stack
    -- Executing [s@sub-get-device-tree:3] GosubIf("PJSIP/tenant1_101-0000000b", "0?s-local,1") in new stack
    -- Executing [s@sub-get-device-tree:4] GotoIf("PJSIP/tenant1_101-0000000b", "0?return") in new stack
    -- Executing [s@sub-get-device-tree:5] GotoIf("PJSIP/tenant1_101-0000000b", "1?pjsip") in new stack
    -- Goto (sub-get-device-tree,s,9)
    -- Executing [s@sub-get-device-tree:9] NoOp("PJSIP/tenant1_101-0000000b", "A PJSIP") in new stack
    -- Executing [s@sub-get-device-tree:10] Set("PJSIP/tenant1_101-0000000b", "DEV_USER=tenant1_101") in new stack
    -- Executing [s@sub-get-device-tree:11] Goto("PJSIP/tenant1_101-0000000b", "build_interface") in new stack
    -- Goto (sub-get-device-tree,s,13)
    -- Executing [s@sub-get-device-tree:13] Set("PJSIP/tenant1_101-0000000b", "_INTERFACE=PJSIP/tenant1_101") in new stack
    -- Executing [s@sub-get-device-tree:14] Set("PJSIP/tenant1_101-0000000b", "DEV_TREE=devices/PJSIP/tenant1_101") in new stack
    -- Executing [s@sub-get-device-tree:15] Return("PJSIP/tenant1_101-0000000b", "") in new stack
    -- Executing [s@sub-construct-cid:8] GotoIf("PJSIP/tenant1_101-0000000b", "0?return") in new stack
    -- Executing [s@sub-construct-cid:9] Set("PJSIP/tenant1_101-0000000b", "_CALL_SOURCE=101") in new stack
    -- Executing [s@sub-construct-cid:10] Set("PJSIP/tenant1_101-0000000b", "_CS=101") in new stack
    -- Executing [s@sub-construct-cid:11] Set("PJSIP/tenant1_101-0000000b", "DYNAMIC_EXTERNAL_CID=no") in new stack
    -- Executing [s@sub-construct-cid:12] GotoIf("PJSIP/tenant1_101-0000000b", "0?cid_constructed") in new stack
    -- Executing [s@sub-construct-cid:13] Set("PJSIP/tenant1_101-0000000b", "EXTENSION_INTERNAL_CID="Operator" <101>") in new stack
    -- Executing [s@sub-construct-cid:14] ExecIf("PJSIP/tenant1_101-0000000b", "1?Set(CALLERID(all)="Operator" <101>)") in new stack
    -- Executing [s@sub-construct-cid:15] Set("PJSIP/tenant1_101-0000000b", "_CID_CONSTRUCTED=yes") in new stack
    -- Executing [s@sub-construct-cid:16] NoOp("PJSIP/tenant1_101-0000000b", "") in new stack
    -- Executing [s@sub-construct-cid:17] Set("PJSIP/tenant1_101-0000000b", "CDR(source)=101") in new stack
    -- Executing [s@sub-construct-cid:18] Return("PJSIP/tenant1_101-0000000b", "") in new stack
    -- Executing [s@T5_cos-all:6] Gosub("PJSIP/tenant1_101-0000000b", "T5_set-global-tenant-vars,s,1") in new stack
    -- Executing [s@T5_set-global-tenant-vars:1] NoOp("PJSIP/tenant1_101-0000000b", "Setting Global Vars for tenant1 Tenant") in new stack
    -- Executing [s@T5_set-global-tenant-vars:2] Set("PJSIP/tenant1_101-0000000b", "__TENANT_PATH=a6de7c47834cd84f") in new stack
    -- Executing [s@T5_set-global-tenant-vars:3] Set("PJSIP/tenant1_101-0000000b", "__TENANT_PREFIX=T5_") in new stack
    -- Executing [s@T5_set-global-tenant-vars:4] Set("PJSIP/tenant1_101-0000000b", "__QUEUE_AGENTS_CONTEXT=T5_queue-call-to-agents") in new stack
    -- Executing [s@T5_set-global-tenant-vars:5] Set("PJSIP/tenant1_101-0000000b", "__FOLLOWME_CONTEXT=T5_ext-followme") in new stack
    -- Executing [s@T5_set-global-tenant-vars:6] Set("PJSIP/tenant1_101-0000000b", "__HINTS_CONTEXT=T5_extension-hints") in new stack
    -- Executing [s@T5_set-global-tenant-vars:7] Set("PJSIP/tenant1_101-0000000b", "__DEFAULT_COS=T5_cos-all") in new stack
    -- Executing [s@T5_set-global-tenant-vars:8] Return("PJSIP/tenant1_101-0000000b", "") in new stack
    -- Executing [s@T5_cos-all:7] GotoIf("PJSIP/tenant1_101-0000000b", "0?local-dialing") in new stack
    -- Executing [s@T5_cos-all:8] NoOp("PJSIP/tenant1_101-0000000b", "Check if is an Emergency Call") in new stack
    -- Executing [s@T5_cos-all:9] GotoIf("PJSIP/tenant1_101-0000000b", "0?T5_emergency-calls,0365478965,1") in new stack
    -- Executing [s@T5_cos-all:10] Gosub("PJSIP/tenant1_101-0000000b", "sub-lockphone-check,s,1") in new stack
    -- Executing [s@sub-lockphone-check:1] NoOp("PJSIP/tenant1_101-0000000b", "SUB: LOCK PHONE CHECK") in new stack
    -- Executing [s@sub-lockphone-check:2] GotoIf("PJSIP/tenant1_101-0000000b", "0?unlock") in new stack
    -- Executing [s@sub-lockphone-check:3] GotoIf("PJSIP/tenant1_101-0000000b", "0?unlock") in new stack
    -- Executing [s@sub-lockphone-check:4] GotoIf("PJSIP/tenant1_101-0000000b", "0?unlock") in new stack
    -- Executing [s@sub-lockphone-check:5] GotoIf("PJSIP/tenant1_101-0000000b", "0?unlock") in new stack
    -- Executing [s@sub-lockphone-check:6] GotoIf("PJSIP/tenant1_101-0000000b", "0?:unlock") in new stack
    -- Goto (sub-lockphone-check,s,12)
    -- Executing [s@sub-lockphone-check:12] Return("PJSIP/tenant1_101-0000000b", "") in new stack
    -- Executing [s@T5_cos-all:11] Gosub("PJSIP/tenant1_101-0000000b", "sub-local-dialing,s,1") in new stack
    -- Executing [s@sub-local-dialing:1] NoOp("PJSIP/tenant1_101-0000000b", "Trying to determine if is a local extension") in new stack
    -- Executing [s@sub-local-dialing:2] GotoIf("PJSIP/tenant1_101-0000000b", "0?:return") in new stack
    -- Goto (sub-local-dialing,s,5)
    -- Executing [s@sub-local-dialing:5] Return("PJSIP/tenant1_101-0000000b", "") in new stack
    -- Executing [s@T5_cos-all:12] GotoIf("PJSIP/tenant1_101-0000000b", "0?end-call") in new stack
    -- Executing [s@T5_cos-all:13] Set("PJSIP/tenant1_101-0000000b", "OUTBOUND_PROFILE=") in new stack
    -- Executing [s@T5_cos-all:14] GotoIf("PJSIP/tenant1_101-0000000b", "1?post-dialing") in new stack
    -- Goto (T5_cos-all,s,16)
    -- Executing [s@T5_cos-all:16] Goto("PJSIP/tenant1_101-0000000b", "T5_cos-all-post,0365478965,1") in new stack
    -- Goto (T5_cos-all-post,0365478965,1)
    -- Executing [0365478965@T5_cos-all-post:1] NoOp("PJSIP/tenant1_101-0000000b", "No valid number found") in new stack
    -- Executing [0365478965@T5_cos-all-post:2] ExecIf("PJSIP/tenant1_101-0000000b", "0?Hangup()") in new stack
    -- Executing [0365478965@T5_cos-all-post:3] ForkCDR("PJSIP/tenant1_101-0000000b", "e") in new stack
    -- Executing [0365478965@T5_cos-all-post:4] Goto("PJSIP/tenant1_101-0000000b", "invalid-dest-cos,s,1") in new stack
    -- Goto (invalid-dest-cos,s,1)
    -- Executing [s@invalid-dest-cos:1] NoOp("PJSIP/tenant1_101-0000000b", "Invalid Route Dialed in COS") in new stack
    -- Executing [s@invalid-dest-cos:2] GotoIf("PJSIP/tenant1_101-0000000b", "0?end") in new stack
    -- Executing [s@invalid-dest-cos:3] GotoIf("PJSIP/tenant1_101-0000000b", "0?end") in new stack
    -- Executing [s@invalid-dest-cos:4] Progress("PJSIP/tenant1_101-0000000b", "") in new stack
    -- Executing [s@invalid-dest-cos:5] Playback("PJSIP/tenant1_101-0000000b", "silence/1&cannot-complete-as-dialed&check-number-dial-again,noanswer") in new stack
       > 0x7f17ac2c9380 -- Strict RTP learning after remote address set to: 85.25.25.25:4002
    -- <PJSIP/tenant1_101-0000000b> Playing 'silence/1.ulaw' (language 'en')
       > 0x7f17ac2c9380 -- Strict RTP switching to RTP target address 85.25.25.25:4002 as source
    -- <PJSIP/tenant1_101-0000000b> Playing 'cannot-complete-as-dialed.ulaw' (language 'en')

Share the Calls Routing settings of the Tenant! Hide any sensitive info!

1 Like

If you are making a call from sub tenant and trunk is configured for subtenant to the main tenant then you need to define a outbound rule on both Main / Subtenant then you would be able to make phone calls through main tenant trunk

1 Like