VoIP:Teams:Microsoft Management: Difference between revisions

From VTX Public Wiki

(Remove -Username)
(→‎Number Mapping : Assign/Unassign numbers to Microsoft accounts: unassign number manually in Powershell Command Prompt)
 
(7 intermediate revisions by 2 users not shown)
Line 13: Line 13:




{{Notice|1=None of your user will use the <servicenumber>.teams.ipvoip.ch, but as stated in the Requirements above, we need to create a temporarily user in this domain with the Teams + Phone System licenses in order to be able to create the CsOnlineVoiceRoute towards VTX SBC}}
{{Warning|1=None of your user will use the <servicenumber>.teams.ipvoip.ch, but as stated in the Requirements above, we need to create a temporarily user in this domain with the Teams + Phone System licenses in order to be able to create the CsOnlineVoiceRoute towards VTX SBC}}




* '''Problematic''': We wish to create a enableteams@<servicenumber>.teams.ipvoip.ch to enable Teams connection towards VTX VoIP platform
* '''Problematic''': We wish to create a enableteams@'''<servicenumber>.teams.ipvoip.ch''' to enable Teams connection towards VTX VoIP platform
* '''Solution''': Please follow the procedure below
* '''Solution''': Please follow the procedure below
# Connect to https://admin.microsoft.com/Adminportal/Home#/users
# Connect to https://admin.microsoft.com/Adminportal/Home#/users
# Create a new user enableteams@<servicenumber>.teams.ipvoip.ch ( First Name: "Temp User" / Last Name : "VTX Teams" / Login : enableteams@<servicenumber>.teams.ipvoip.ch / No Admin Right / "Teams" and "Phone System" licenses / No need to remember its password, we won't connect with it).
# Create a new user enableteams@'''<servicenumber>.teams.ipvoip.ch''' ( First Name: "Temp User" / Last Name : "VTX Teams" / Login : enableteams@<servicenumber>.teams.ipvoip.ch / No Admin Right / "Teams" and "Phone System" licenses / No need to remember its password, we won't connect with it).
# Wait a few seconds/minutes/hours for Teams to be enabled on this user https://admin.microsoft.com/AdminPortal/Home#/teamsprovisioning
# Wait a few seconds/minutes/hours for Teams to be enabled on this user https://admin.microsoft.com/AdminPortal/Home#/teamsprovisioning
# Now even after user is created you night need to wait minutes/hours before being able to create Voice Routing ( especially the New-CsOnlineVoiceRoute ), so if you can please wait 4hours, if not, try to create the routing, if you get error, try again
# Now even after user is created you night need to wait minutes/hours before being able to create Voice Routing ( especially the New-CsOnlineVoiceRoute ), so if you can please wait 4hours, if not, try to create the routing, if you get error, try again
# Once everything is working ( routing + user mapping + incoming and outgoing calls ), you can delete this user to free up the licenses
# Once everything is working ( routing + user mapping + incoming and outgoing calls ), you can delete this user to free up the licenses



== Voice Routing : Create Voice Routing to allow your users to use VTX Trunk ==
== Voice Routing : Create Voice Routing to allow your users to use VTX Trunk ==
Line 66: Line 65:


# Set Variables
# Set Variables
$MSTeamsDomain = '''"123456.teams.ipvoip.ch"'''
$TeamsDomain = '''"123456.teams.ipvoip.ch"'''
# Connect to Microsoft Teams management and create all Voice Routing
# Connect to Microsoft Teams management and create all Voice Routing
Connect-MicrosoftTeams
$Session = New-CsOnlineSession
Set-CsOnlinePstnUsage -Identity Global -Usage @{Add="CsOnlinePstnUsage-$TeamsDomain"}
Import-PSSession $Session -AllowClobber
New-CsOnlineVoiceRoute -Identity "CsOnlineVoiceRoute-$TeamsDomain" -Priority 0 -NumberPattern '.*' -OnlinePstnGatewayList "$TeamsDomain" -OnlinePstnUsages "CsOnlinePstnUsage-$TeamsDomain"
Set-CsOnlinePstnUsage -Identity Global -Usage @{Add="CsOnlinePstnUsage-$MSTeamsDomain"}
New-CsOnlineVoiceRoute -Identity "CsOnlineVoiceRoute-$MSTeamsDomain" -Priority 0 -NumberPattern '.*' -OnlinePstnGatewayList "$MSTeamsDomain" -OnlinePstnUsages "CsOnlinePstnUsage-$MSTeamsDomain"
New-CsOnlineVoiceRoutingPolicy -Identity "CsOnlineVoiceRoutingPolicy-$TeamsDomain" -OnlinePstnUsages "CsOnlinePstnUsage-$TeamsDomain"
New-CsOnlineVoiceRoutingPolicy -Identity "CsOnlineVoiceRoutingPolicy-$MSTeamsDomain" -OnlinePstnUsages "CsOnlinePstnUsage-$MSTeamsDomain"
Set-CsCallingLineIdentity -Identity Global -EnableUserOverride $True
Set-CsCallingLineIdentity -Identity Global -EnableUserOverride $True
Line 82: Line 80:
# Logout
# Logout
Disconnect-MicrosoftTeams
Get-PSSession | Remove-PSSession


==Number Mapping : Assign numbers to Microsoft accounts==
==Number Mapping : Assign/Unassign numbers to Microsoft accounts==


Now you will need to assign a number and a routing plan to each user with a "Microsoft 365 Phone System" license. You can use one of the following options to do it
Now you will need to assign a number and a routing plan to each user with a "Microsoft 365 Phone System" license. You can use one of the following options to do it
Line 91: Line 89:




=== Assign numbers using a VTX Powershell Script VTX_Teams_Assign_Numbers.ps1 ===
=== Assign/Unassign numbers using a VTX Powershell Script VTX_Teams_Assign_Numbers.ps1 ===


{{Warning|1=By default for security reason, it is not allowed to execute a powershell script downloaded on the internet, that is why you will need to open them with Wordpad to check what it does, save it and execute it afterwards}}
{{Warning|1=By default for security reason, it is not allowed to execute a powershell script downloaded on the internet, that is why you will need to open them with Wordpad to check what it does, save it and execute it afterwards}}
{{Notice|1='''2020-09-02''' : New version 1.5 of the script allows to setup several numbers at once}}


# Download https://wiki.vtx.ch/media/VTX_Teams_Assign_Numbers.ps1 on your computer ( Right Click on the link / Download )
# Download https://wiki.vtx.ch/media/VTX_Teams_Assign_Numbers.ps1 on your computer ( Right Click on the link / Download )
Line 102: Line 99:
## Your MS Admin Credentials for : ex: admin@MSDOMAIN.onmicrosoft.com
## Your MS Admin Credentials for : ex: admin@MSDOMAIN.onmicrosoft.com
## The MS Team user email : ex: first.last@MSDOMAIN.onmicrosoft.com
## The MS Team user email : ex: first.last@MSDOMAIN.onmicrosoft.com
## The Telephone number you wish to set : ex: +41225661234
## The Telephone number you wish to set : ex: +41225661234 / or leave string empty to unassign number from user




Line 118: Line 115:
</td></tr>
</td></tr>
<tr><td>
<tr><td>
[[Image:Teams-Number-Assignment-05.png|thumb|600px|left|Teams Assignment - Enter Teams User Phone Number]]
[[Image:Teams-Number-Assignment-05.png|thumb|600px|left|Teams Assignment - Enter Teams User Phone Number or use empty string to remove the number]]
</td><td>
</td><td>
[[Image:Teams-Number-Assignment-09.png|thumb|600px|left|Teams Assignment - Disable voicemail on the user ?]]
[[Image:Teams-Number-Assignment-09.png|thumb|600px|left|Teams Assignment - Disable voicemail on the user ?]]
Line 142: Line 139:


# Set Variables
# Set Variables
$MSTeamsDomain = '''"123456.teams.ipvoip.ch"'''
$TeamsDomain = '''"123456.teams.ipvoip.ch"'''
$MSTeamsUserEmail = "'''first.last@MSDOMAIN.onmicrosoft.com'''"
$TeamsUserEmail = "'''first.last@MSDOMAIN.onmicrosoft.com'''"
$MSTeamsUserNumber = '''"+41215661234"'''
$TeamsUserNumber = '''"+41215661234"'''
# Connect to Microsoft Teams management and assign number and profile to the user
# Connect to Microsoft Teams management and assign number and profile to the user
Connect-MicrosoftTeams
$Session = New-CsOnlineSession
Import-PSSession $Session -AllowClobber
# Assign a number to your user and the Call Routing
# Assign a number to your user and the Call Routing
Set-CsPhoneNumberAssignment -Identity "$TeamsUserEmail" -PhoneNumber "$TeamsUserNumber" -PhoneNumberType DirectRouting
Get-CsOnlineUser -Identity $MSTeamsUserEmail | Set-CsUser -EnterpriseVoiceEnabled $true -OnPremLineURI "tel:$MSTeamsUserNumber"
# Assign a Voice Routing Policy to your user to allow it to call out towards external numbers
# Assign a Voice Routing Policy to your user to allow it to call out towards external numbers
Get-CsOnlineUser -Identity $MSTeamsUserEmail | Grant-CsOnlineVoiceRoutingPolicy -PolicyName "CsOnlineVoiceRoutingPolicy-$MSTeamsDomain"
Grant-CsOnlineVoiceRoutingPolicy -Identity $TeamsUserEmail -PolicyName "CsOnlineVoiceRoutingPolicy-$TeamsDomain"
# Disable voicemail of the user to prevent that it answers all calls if user is not connected
# Disable voicemail of the user to prevent that it answers all calls if user is not connected
Set-CsOnlineVoicemailUserSettings -Identity $MSTeamsUserEmail -VoicemailEnabled $false
Set-CsOnlineVoicemailUserSettings -Identity $TeamsUserEmail -VoicemailEnabled $false
# Wait 60s for settings to be applied
# Wait 60s for settings to be applied
Sleep -s 60
Sleep -s 60
# Verify Your setup
# Verify Your setup
Get-CsOnlineUser -Identity $MSTeamsUserEmail | Select EnterpriseVoiceEnabled,OnPremLineURI,OnlineVoiceRoutingPolicy,RegistrarPool | Format-List
Get-CsOnlineUser -Identity $TeamsUserEmail | Select EnterpriseVoiceEnabled,OnPremLineURI,OnlineVoiceRoutingPolicy,RegistrarPool | Format-List
# List all users with EnterPrise Voice Enabled
Get-CsOnlineUser ` -Filter {(enterprisevoiceenabled -eq $true)} ` | Select sipaddress,HostedVoicemailPolicy,OnlineVoiceRoutingPolicy,lineuri | Format-List
# Logout
Disconnect-MicrosoftTeams

=== Or Unassign numbers manually in Powershell Command Prompt ===
{{Notice|1=If you prefer a manual setup, perform the following actions}}

# Open a powershell prompt on your PC
# Copy paste command below one by one changing the values in bold with your own

# Set Variables
$TeamsDomain = '''"123456.teams.ipvoip.ch"'''
$TeamsUserEmail = "'''first.last@MSDOMAIN.onmicrosoft.com'''"
$TeamsUserNumber = '''"+41215661234"'''
# Connect to Microsoft Teams management and assign or unassign number and profile to the user
Connect-MicrosoftTeams
# Unassign a number to your user and the Call Routing
Remove-CsPhoneNumberAssignment -Identity "$TeamsUserEmail" -PhoneNumber "$TeamsUserNumber" -PhoneNumberType DirectRouting
# Verify Your setup
Get-CsOnlineUser -Identity $TeamsUserEmail | Select EnterpriseVoiceEnabled,OnPremLineURI,OnlineVoiceRoutingPolicy,RegistrarPool | Format-List
# List all users with EnterPrise Voice Enabled
# List all users with EnterPrise Voice Enabled
Get-CsOnlineUser ` -Filter {(enterprisevoiceenabled -eq $true) -and(HostingProvider -eq "sipfed.online.lync.com")} ` | Select sipaddress,HostedVoicemailPolicy,OnlineVoiceRoutingPolicy,lineuri,OnPremLineURI,RegistrarPool | Format-List
Get-CsOnlineUser ` -Filter {(enterprisevoiceenabled -eq $true)} ` | Select sipaddress,HostedVoicemailPolicy,OnlineVoiceRoutingPolicy,lineuri | Format-List
# Logout
# Logout
Disconnect-MicrosoftTeams
Get-PSSession | Remove-PSSession

Latest revision as of 08:28, 20 March 2023

Connect to Microsoft 365 Admin Portal[edit | edit source]

Create a temporarily user in the <servicenumber>.teams.ipvoip.ch domain[edit | edit source]


  • Problematic: We wish to create a enableteams@<servicenumber>.teams.ipvoip.ch to enable Teams connection towards VTX VoIP platform
  • Solution: Please follow the procedure below
  1. Connect to https://admin.microsoft.com/Adminportal/Home#/users
  2. Create a new user enableteams@<servicenumber>.teams.ipvoip.ch ( First Name: "Temp User" / Last Name : "VTX Teams" / Login : enableteams@<servicenumber>.teams.ipvoip.ch / No Admin Right / "Teams" and "Phone System" licenses / No need to remember its password, we won't connect with it).
  3. Wait a few seconds/minutes/hours for Teams to be enabled on this user https://admin.microsoft.com/AdminPortal/Home#/teamsprovisioning
  4. Now even after user is created you night need to wait minutes/hours before being able to create Voice Routing ( especially the New-CsOnlineVoiceRoute ), so if you can please wait 4hours, if not, try to create the routing, if you get error, try again
  5. Once everything is working ( routing + user mapping + incoming and outgoing calls ), you can delete this user to free up the licenses

Voice Routing : Create Voice Routing to allow your users to use VTX Trunk[edit | edit source]

Now you will need to setup a routing plan. You can use one of the following options to do it

  • Using a Powershell Script that will ask you questions
  • Manually in Powershell


Microsoft Admin Center - Up to 24h Latency for each setup


Create Voice Routing using a VTX Powershell Script VTX_Teams_Create_Routing_Rules.ps1[edit | edit source]


  1. Download https://wiki.vtx.ch/media/VTX_Teams_Create_Routing_Rules.ps1 on your computer ( Right Click on the link / Download )
  2. Open it with Wordpad and use Ctrl-s to save it again ( to inform the system that it is local script )
  3. Execute it on your PC : It will ask you for these parameters and create the routing
    1. VTX Teams Domain : ex: 123456.teams.ipvoip.ch
    2. Your MS Teams Admin Credentials : ex: admin@COMPANY.onmicrosoft.com

Or Create Voice Routing manually in Powershell Command Prompt[edit | edit source]


  1. Open a powershell prompt on your PC
  2. Copy paste command below one by one changing the values in bold with your own
# Set Variables
$TeamsDomain = "123456.teams.ipvoip.ch"
# Connect to Microsoft Teams management and create all Voice Routing
Connect-MicrosoftTeams
Set-CsOnlinePstnUsage -Identity Global -Usage @{Add="CsOnlinePstnUsage-$TeamsDomain"}
New-CsOnlineVoiceRoute -Identity "CsOnlineVoiceRoute-$TeamsDomain" -Priority 0 -NumberPattern '.*' -OnlinePstnGatewayList "$TeamsDomain" -OnlinePstnUsages "CsOnlinePstnUsage-$TeamsDomain"
New-CsOnlineVoiceRoutingPolicy -Identity "CsOnlineVoiceRoutingPolicy-$TeamsDomain" -OnlinePstnUsages "CsOnlinePstnUsage-$TeamsDomain"
Set-CsCallingLineIdentity -Identity Global -EnableUserOverride $True

# Verify all setup ( You can compare it with the Debug Section in the wiki ) 
Get-CsOnlinePstnUsage
Get-CsOnlineVoiceRoute
Get-CsOnlineVoiceRoutingPolicy
Get-CsCallingLineIdentity

# Logout
Disconnect-MicrosoftTeams

Number Mapping : Assign/Unassign numbers to Microsoft accounts[edit | edit source]

Now you will need to assign a number and a routing plan to each user with a "Microsoft 365 Phone System" license. You can use one of the following options to do it

  • Using a Powershell Script that will ask you questions
  • Manually in Powershell


Assign/Unassign numbers using a VTX Powershell Script VTX_Teams_Assign_Numbers.ps1[edit | edit source]

  1. Download https://wiki.vtx.ch/media/VTX_Teams_Assign_Numbers.ps1 on your computer ( Right Click on the link / Download )
  2. Open it with Wordpad and use Ctrl-s to save it again ( to inform the system that it is local script )
  3. Execute it on your PC : It will ask you for these parameters and create the routing
    1. VTX Teams Domain : ex: 123456.teams.ipvoip.ch
    2. Your MS Admin Credentials for : ex: admin@MSDOMAIN.onmicrosoft.com
    3. The MS Team user email : ex: first.last@MSDOMAIN.onmicrosoft.com
    4. The Telephone number you wish to set : ex: +41225661234 / or leave string empty to unassign number from user


Here is a list of screenshots to see how the script works

Teams Assignment - 1st Warning - Is routing OK ?
Teams Assignment - Enter the Teams Domain Provided by VTX
Teams Assignment - Enter Teams Admin email
Teams Assignment - Enter Teams User Email
Teams Assignment - Enter Teams User Phone Number or use empty string to remove the number
Teams Assignment - Disable voicemail on the user ?
Teams Assignment - Setup another user ?
Teams Assignment - List all user setup ?
Teams Assignment - 1st Warning - Is routing OK ?

Or Assign numbers manually in Powershell Command Prompt[edit | edit source]

  1. Open a powershell prompt on your PC
  2. Copy paste command below one by one changing the values in bold with your own
# Set Variables
$TeamsDomain = "123456.teams.ipvoip.ch"
$TeamsUserEmail = "first.last@MSDOMAIN.onmicrosoft.com"
$TeamsUserNumber = "+41215661234"
# Connect to Microsoft Teams management and assign number and profile to the user
Connect-MicrosoftTeams
# Assign a number to your user and the Call Routing
Set-CsPhoneNumberAssignment -Identity "$TeamsUserEmail" -PhoneNumber "$TeamsUserNumber" -PhoneNumberType DirectRouting
# Assign a Voice Routing Policy to your user to allow it to call out towards external numbers
Grant-CsOnlineVoiceRoutingPolicy -Identity $TeamsUserEmail -PolicyName "CsOnlineVoiceRoutingPolicy-$TeamsDomain"
# Disable voicemail of the user to prevent that it answers all calls if user is not connected
Set-CsOnlineVoicemailUserSettings -Identity $TeamsUserEmail -VoicemailEnabled $false
# Wait 60s for settings to be applied
Sleep -s 60
# Verify Your setup 
Get-CsOnlineUser -Identity $TeamsUserEmail | Select EnterpriseVoiceEnabled,OnPremLineURI,OnlineVoiceRoutingPolicy,RegistrarPool | Format-List
# List all users with EnterPrise Voice Enabled
Get-CsOnlineUser ` -Filter {(enterprisevoiceenabled -eq $true)} ` | Select sipaddress,HostedVoicemailPolicy,OnlineVoiceRoutingPolicy,lineuri | Format-List
# Logout
Disconnect-MicrosoftTeams

Or Unassign numbers manually in Powershell Command Prompt[edit | edit source]

  1. Open a powershell prompt on your PC
  2. Copy paste command below one by one changing the values in bold with your own
# Set Variables
$TeamsDomain = "123456.teams.ipvoip.ch"
$TeamsUserEmail = "first.last@MSDOMAIN.onmicrosoft.com"
$TeamsUserNumber = "+41215661234"
# Connect to Microsoft Teams management and assign or unassign number and profile to the user
Connect-MicrosoftTeams
# Unassign a number to your user and the Call Routing
Remove-CsPhoneNumberAssignment -Identity "$TeamsUserEmail" -PhoneNumber "$TeamsUserNumber" -PhoneNumberType DirectRouting
# Verify Your setup 
Get-CsOnlineUser -Identity $TeamsUserEmail | Select EnterpriseVoiceEnabled,OnPremLineURI,OnlineVoiceRoutingPolicy,RegistrarPool | Format-List
# List all users with EnterPrise Voice Enabled
Get-CsOnlineUser ` -Filter {(enterprisevoiceenabled -eq $true)} ` | Select sipaddress,HostedVoicemailPolicy,OnlineVoiceRoutingPolicy,lineuri | Format-List
# Logout
Disconnect-MicrosoftTeams