Derived Trunk for Teams direct routing hosting model

New Contributor

I am working on a case about Teams direct routing hosting model. After going through the article about 'Configure a Session Border Controller for multiple tenants'

I found the part describing the derived trunk from customer tenant to carrier's tenant confusing. 

Quoting from the article

' – the derived trunk in a customer tenant that does not need to be created in PowerShell. You can simply add the name of the derived trunk in the customer tenant in the online voice routing policy without creating it.'


Does anyone have experiences on similar cases and can kindly provide me with some suggestions on how to configure the derived trunk?

Thank you so much.

26 Replies
Any information about this?

Tried to understand how to configure an derived trunk but cannot find any solution to get it working. The doc says you dont need powershell for a derived trunk, so i belive there is a option on either the teams admin center or directly on the carrier partner portal for our costumers.

Also considering the doc it says
'the derived trunk in a customer tenant that does not need to be created in PowerShell. You can simply add the name of the derived trunk in the customer tenant in the online voice routing policy without creating it'

So i have tried to add our carrier trunks FQDN to the Voice Route but either Set-CsOnlineVoiceRoutingPolicy and Set-CsOnlineVoiceRoute fails that they cant find the PSTN Usage or PSTN.

@ElmarNiederkofler Thanks for the reply. I really hope someone has some idea of how to get it work.

I am guessing that this solution is no available for now but somehow there's an article talking about the future. 

1. As you said set-csonlinevoiceroutingpolicy is not an option.

2. I cannot see a way to tell the carrier tenant to route the signaling from the customer tenants to the SBC or push the trunk setting to the derived trunks.


For now I'm using the old school way which is new-csonlinepstngateway at every customer tenants. At least it works.

@fanzhangrob the documentation still needs a bit of work, but the derived trunk model works as expected.

In the carrier tenant, you just need to ensure TLS & SIP Options are active/working in both directions (can be viewed via the Admin center)

2019-10-02 17_18_25.png






Once active, the following needs to be done:

1. Register a customer sub-domain of the carrier trunk FQDN in the customer's 365 tenant (EG: where Sbc1 is the customer subdomain)

2. Create the voice routes & add these to a voice routing policy in the customer's teams tenant

As long as the subdomain is added to the customer's tenant and verified, S4Bonline powershell will allow the FQDN to be added to the voice route.

There's no need to use New-CSOnlinePSTNGateway.

@swernerHello, thanks for the clarification.


Our carrier trunk on our domain is working also test users within this site can make calls.

For our costumer i have now removed the pstn gateway and added the fqdn of the costumers subdomain to the voiceroute. The fqdn has an A record pointing to our sbc.


did i make anything right?



regards elmar



My understanding is the FQDN of the carrier SBC needs to be specified in the Online Voice Route 



New-CsOnlineVoiceRoute -Name “Example” -NumberPattern ‘^\+\d+’ -OnlinePstnGatewayList -Priority 1 -OnlinePstnUsages “Example”


One downside from customer side is they cant see health/stats of the SBC in the Teams Admin Centre if the SBC isn't configured using CSOnlinePSTNGateway in PowerShell

@swerner I am also trying to configure the customer's tenant and confused with the documentation. Your assistance would be really helpful, since you have a working scenario.


I am confused at the point of a voice routing creation. If I execute the command on a customer's tenant:


New-CsOnlineVoiceRoute -Name “Example” -NumberPattern ‘^\+\d+’ -OnlinePstnGatewayList -Priority 1 -OnlinePstnUsages “Example”


I am getting an error, that it cannot find the specified PSTN usage. Could you please be so kind to help me with this?


P.S. The customer's subdomain has been created and added to the configuration.


Thank you in advance.



Thanks for the reply. I'm using the SIP trunk through the DNS A record too. However, I assume it should by just a TXT record according to the article. 

Hi @Vasileios_T,


Before you can add the Voice Routes, you need to add the tenant-specific sub-domain to the customer's Office 365 tenant, as an additional domain.



Cust 1:


Once you've added the sub-domain for the customer & added the TXT record to the carrier's DNS to authorise the sub-domain addition, you then create a dummy user within the new domain, with a S4B Online license at least.

EG: - licensed with E3/E5 etc.


The license only needs to be assigned for 30/60 minutes while the platform activates the domain.


Following this, you should then be able to create the voice routes etc. as you've attempted.


Thanks for your help. I have done exactly all the steps you described. As shown in my previous reply the domain sbc30 has been added and shown in the 'DoaminUrlMap' from the command 'Get-CsTenant' . However I still failed on the 'Set-CsOnlineVoiceRoute' command.Capture.PNG


Thank you for your help and time.

The customer's subdomain already added and activated. Also, I didn't remove the licensed user, but still face the same issue when I am trying to create a new online voice route.

I execute the command in powershell using the customer's global admin details:

New-CsOnlineVoiceRoute -Identity“Example” -NumberPattern ‘^\+\d+’ -OnlinePstnGatewayList -Priority 1 -OnlinePstnUsages “Example”

The first error appears, indicating that it cannot find the specified PSTN usage.

If I define PSTN usage by executing the command below and try to create online voice route again, I receive an error that it cannot find the specified gateway.

Set-CsOnlinePstnUsage -Identity Global -Usage @{Add="Example"}

Could you please suggest what is wrong?

Thank you once again.
I stuck exactly at the same point.(



After 2 days of researching I finally found the issue. Probably you have the same.


If you use in the carrier's tenant the main domain ( example: and assign to customers you have to add, verify and activate in the carrier's tenant also.


After that, you need to set PSTN usage by executing 

Set-CsOnlinePstnUsage -Identity Global -Usage @{Add="Example"}

 and proceed with creating online voice route. 


Hope it helps.


I have been trying this and cannot get  it to work correctly. I have even reverted the changes - back to original, and there is still no calls being direct in either direction, I did have this working with the previous model.

this is what i have done so far

1. added Carrier trunk - (Not sure if I should enable this or set capacity - can anyone answer this?)

2. registered tenant trunk and added tenant csonlinevoiceroute -

3. confirmed all is correct but still no calls either inbound or outbound, it is being rejected each time from SIP to teams, and it is not even getting to the SBC when dialling from teams to SIP.


as there are so few documents on this subject, unless someone can point me in the direction of them... there are a lot of unanswered questions ..... I have put a couple above.


when I revert back and then configure using old method "pstngateway" it all works as it should without issues, not sure where I am going wrong, can anyone help?

is there any setting within a users profile that also need to be reset/removed?

when reverting should I set the EntreprisevoiceEnabled $false for the users prior to starting again?

I didn't as this can take along time to come back to life.



I got the derived trunk working.


the first setup with separated trunks was on the carriers trunk we registered the domain and used a A record for the sbc.

Our Clients had a subdomain registered and a A record for the trunk. this setup worked.


When we wanted to change it to a derived trunk model it didnt work at first because we simply removed the psntgateway on our clients and added a derived trunk A record with New-CsonlineVoiceRoute ( the trunk never worked, we got a forbidden or not found.


To resolve this we first removed all services on all * domains on the MS portal.

deleted the pstngateway from the carrier site and recreated it with only and a A record pointing to our SBC.

After that we reconfigured all clients with the proper subdomain and a A record pointing to the same SBC. (only with the cmdlet New-CsonlineVoiceRoute -OnlinePSTNGatewayList)


This worked for us, thought I cannot say if there has to be some specials settings on the SBC regarding the SIP-Options


I have now removed all entries for the previous configuration.

when I add the carrier SBC; the command is;

New-CSOnlinePSTNGateway -FQDN -SIPSignallingport 5068 -ForwardPAI $true


but there is no enabled $true option do I need to enable the carrier SBC?


This is the error message I get from within teams (on the carrier);

The trunk was paired to Direct Routing but is in a "Disabled" state. When you pair a trunk using the New-CSOnlinePSTNGateway command, the trunk is disabled by default unless you explicitly enabled it using this parameter: Enable $true. Please check the status of the gateway and make sure it’s enabled.



try to enable it with set-csonlinepstngateway -enabled $true


what I am trying to find out is;

1. is it required to be enabled (as it is not documented within the directions from MS)

2. is it enabled on your carrier tenant?


I know how to enable it, although previously this did not make a difference.

@TeamsDRyes the trunk on the carrier site has to be enabled

@ElmarNiederkofler thanks, the documentation does need to be updated, I have now enabled it and will start configuring the rest once I get some more positive results