The Siplifi Blog

Welcome to the Siplifi blog, a place where we share information we’ve gathered during our deployments, in order to help you resolve technical issues.

We’ll be posting tips, fixes and hints for all our major technologies including Microsoft Teams, Skype for Business Server & AudioCodes Session Border Controllers.

Siplifi Microsoft Teams Blog

Cloud Voicemail – Unable To Resolve DNS SRV Record

Cloud Voicemail as a part of Office 365 is becoming an increasingly popular way to provide voicemail features for Skype for Business on-premises. As more organisations make the move to Exchange Online, voicemail is also going in the same direction. During a recent deployment for customer, we encountered an issue whereby calls to Cloud Voicemail would fail to connect. The symptom was the standard ringing duration followed by a call drop at the point Cloud Voicemail should have answered.

Problem

In the Lync Server application event log on the Front End Server, we noted event ID 44009 LS Exchange Unified Messaging Routing being produced with a “no server in the dialplan” error. This is a common error when configuring the now retired Unified Messaging in Exchange Online, so why were we seeing this with the new Cloud Voicemail platform?

An image showing Event ID 440009 LS Exchange Unified Message Routing

As this particular error did not provide any clue in relation to the underlying problem, we then turned our attention to the Centralised Logging Tool in order to take a debug trace. After running the Centralised Logging Tool on the Front End server using the “Voicemail” scenario along with selecting the Front End Server and Consolidated Edge as the servers to monitor, we identified the following:

There were two key parts we identified in this debug message that we believed contributed to the issue. The first was “Unable to resolve DNS SRV Record” and the second was the “msexchdomain=domain.local“. The DNS SRV record message was in fact a red herring, as federation between external domains worked perfectly fine. In addition, the required _sipfederationstls DNS record was in place and our Skype for Business to Microsoft Teams hybrid was also operational.

This turned our attention to the msexchdomain entry showing as “domain.local”, the customers internal Active Directory domain name. When the customer had originally deployed a Microsoft Lync Server 2010 solution many years ago, they had configured their primary SIP domain to be domain.local rather than their externally facing domain name. Despite the external facing domain name being configured as a secondary SIP domain in their Skype for Business topology, it was not set as the default domain.

Resolution

The resolution to this problem actually turned out to be quiet simple once the underlying cause had been found. The calls being sent to the Cloud Voicemail platform were being delivered with an msexchdomain of domain.local. This was not and cannot be configured in Office 365 as a domain due to this not being externally resolvable. As such, when the call was routed to Cloud Voicemail it was rejected as the domain.local was not a valid Microsoft Exchange domain in Office 365. To resolve the issue we performed the following actions.

  1. Open the Skype for Business Server Management Shell.
  2. Run “Get-CsSipDomain” and confirm the internal Active Directory domain name is in fact the default SIP Domain.
  3. Run “Set-CsSipDomain -Identity externaldomain.co.uk -IsDefault $True”
  4. Once replication has occurred, restart either the RTCCAA/RTCCAS services or simply reboot each Front End server.
  5. Attempt an inbound call and let this go to voicemail, which should now connect correctly.

If you need help debugging a tricky Skype for Business issue, why not check out our technical support services and see how we can help you out. Alternatively, you can drop us a message with your requirement by using our handy contact form below.

Move-CsUser: HostedMigration Fault: Error=(511)

Problem

When migrating user accounts from Skype for Business on-premises to Microsoft Teams, several factors need to be catered for. One of which is product licensing and when migrating accounts to Teams we often see error “Move-CsUser: HostedMigration Fault: Error=(511)“. This particular error occurs when running the Move-CsUser command from a Skype for Business Management Shell. Upon doing so the following error may occur:

Move-CsUser: HostedMigration Fault: Error=(511), Description=(The user could not be moved because he or she is enabled for dial-in conferencing on-premises, but has not been assigned an Audio Conferencing license in Office 365. Users must be licensed before they can be moved to Teams or Skype for Business Online.)

Move-CsUser: HostedMigration Fault: Error=(511)

This error implies that the user account in Office 365 needs to have an Audio Conferencing license assigned. As the majority of Office 365 subscriptions do not contain the Audio Conferencing license as standard, we need to be able to move the account without incurring a cost. In order to perform this we can use a specific PowerShell switch as a part of the Move-CsUser called BypassAudioConferencingCheck. Microsoft provide a good explanation of this switch and some notable requirements around the versions of Skype for Business that are supported for it’s use.

By default, if the on-premise user is configured for dial in conferencing, moving the user to Office 365 will provision the user for Audio Conferencing, for an additional license is required. If you want to move such a user to Office 365 but do not want to configure them for Audio Conferencing, specify this switch to by-pass the license check. This parameter is only available with Skype for Business Server 2019 and CU8 for Skype for Business Server 2015.

Solution

With the BypassAudioConferencingCheck option available, we can simply add this switch to the end of the Move-CsUser command that was causing the issue. For example the following command would be executed:

Move-CsUser -Identity sip:[email protected] -Target sipfed.online.lync.com -MoveToTeams -Credential $cred -BypassAudioConferencingCheck

Once the above command is executed the account will move correctly to Teams. If you’re stuck with this issue or looking for assistance with your migration, we can quickly and efficiently get you where you need to be. Our consultancy services provide a range of options to assist or accelerate your migration to Microsoft Teams. We hope this article has helped resolve your Move-CsUser: HostedMigration Fault: Error=(511) issue.

Restrict Custom Backgrounds In Microsoft Teams

Microsoft Teams provides the ability for users to upload custom backgrounds for video conferencing purposes. In addition to the default background images, the custom upload option is a great for users to engage in video adoption more. However, whilst this provides a great deal of flexibility to a user, it is also open to abuse. So how do you restrict custom backgrounds in Microsoft Teams?

Since the custom background feature was rolled out, Microsoft have also deployed new PowerShell commands to aid in restricting background functionality. This feature isn’t available in the Teams Admin Centre so you’d be forgiven if you haven’t been able to find it. The custom background restrictions can be controlled using the new VideoFiltersMode, which is a part of the Set-CsTeamsMeetingPolicy command. The VideoFiltersMode itself contains four sub options that can be configured, these relate to the type of background you either want to allow or permit.

  • NoFilters – No filters are available (This essentially turns backgrounds and blur off)
  • BlurOnly – Background blur is the only option available
  • BlurAndDefaultBackgrounds – Background blur and a list of pre-selected (Default) images are available.
  • AllFilters – All filters are available, including custom images.

Controlling Custom Backgrounds

The application of these settings can be controlled through a Teams Meeting Policy. You can either change the default global meeting policy or create a new meeting policy if you need to restrict custom backgrounds for certain users. An example of how to do this is detailed below, you’ll need to establish a PowerShell session to your Office 365 tenant before you can execute the command. In this example, we are running the change against the global meeting policy and are allowing the blurred background option only.

Set-CsTeamsMeetingPolicy -Identity Global -VideoFiltersMode BlurOnly

Once the command has been executed it will take some time to be reflected in the Microsoft Teams client due to Office 365 replication. We normally recommend waiting at least 30 minutes before signing out of your client and then back in again. You can however confirm the change by executing “Get-CSTeamsMeetingPolicy -Identity Global” and checking that the VideoFiltersMode has updated.

Set-CsTeamsMeeting BlurOnly

Once the change has replicated in Office 365, when starting a new video conference and attempting to change the background, you will now see only the Blur or no background options exist. This essentially takes the Teams client back to how it operated prior to custom backgrounds being released. Now that the meeting policy has been updated, when a user attempts to set a custom background the following will be displayed.

Restricting custom backgrounds to blur only.

Whether a “custom images only” option is added to the Meeting Policy, remains to be seen. We’d certainly see the benefit however, as the demand from organisations to apply a default corporate background image grows. If you’re looking for help with refining your meeting policies check our consultancy services or get in touch using the contact form below. We hope this article has been helpful in detailing how to restrict custom backgrounds in Microsoft Teams.

How To Make An External Call On Microsoft Teams

Microsoft Teams has experienced an explosion of user growth over recent months. With an increase of 70% being recorded, bringing the platforms daily active user count to 75 million people (April 2020) it has made Teams one of the most widely used collaboration platforms across the globe.

Whilst Microsoft Teams contains several powerful communication tools, such as chat, channels, video conferencing and deep integration with other Microsoft platforms, there is an increasing amount of interest in it’s external calling capabilities. Have you ever wondered how to make an external call on Microsoft Teams, if this is possible and if so, how? The good news, is that this is indeed possible and that the functionality now available, compared to when Teams was originally released, has come on leaps and bounds.

If you’ve taken time to look at the “Calls” tab in your Microsoft Teams client, you’ll likely have noticed that whilst you can call people inside your organisation, there isn’t any option to call an external number. So what do you need in order to be able to call a landline, mobile or international number directly from your Teams client? We’ve provided a break down below to help you understand the components required. The good news, is that adding external calling to Teams doesn’t require you to climb a mountain. It’s Phone System functionality can be quickly provisioned, providing either you or your organisation with the ability to make external calls in a matter of hours.

Office 365 Subscription Licensing

Yes, we can hear you shudder at the word “licensing” however it isn’t all that bad. Whilst Microsoft are long known for their often confusing licensing requirements, adding calling fortunately isn’t one of those. If you have you Microsoft Teams already, then you have an Office 365 subscription. In order to unlock the external calling functionality of Teams, otherwise know as Phone System, you need to add an extra per-person license to your subscription to achieve this. The following Office 365 subscriptions permit you to add the required Phone System licensing.

  • Office 365 Business Basic
  • Office 365 Business Standard
  • Microsoft 365 Business Premium
  • Office 365 E1 / E3
  • Office 365 E5 (Phone System Included)
  • Office 365 F1
  • Microsoft 365 A1 / A3
  • Microsoft 365 E3

Phone System Licensing

Business Voice

The Phone System add-on license is available in two different flavours. The flavour you choose does depends on a few different factors such as your organisations size and the subscription type you have from the list above. The first option you have is Business Voice, which was launched last year. This license provides the following features for a fixed monthly cost per user, for up to a maximum of 300 users only.

  • Cloud-based phone system with advanced features including call transfer, multi-level auto attendants & call queues.
  • Domestic calling plan including 1,200 outbound minutes per user within UK (Premium rate numbers not included)
  • Dial-in audio conferencing for up to 300 people per meeting.
  • Call from anywhere, on any device through the Microsoft Teams app on desktop, mobile, web, and desk phones.

The Business Voice license currently costs £12.00 per user and provides the most “bang for your buck” given it also includes dial-in audio conferencing, which is normally a separate purchasable license on it’s own. When the Business Voice license is assigned to a user account along with a provisioned telephone number, your Microsoft Teams client will then display the external calling dial pad.

External Calling Dial Pad - Microsoft Teams Client

If you’re not familiar with the included audio conferencing feature, it essentially adds a separate external telephone number that meeting participants can call if they are unable to join the meeting via a device, such as a PC or laptop. This number will be the same for everyone using Teams in your country. For example the number detailed below is the same for everyone in the UK, it is the conference ID that denotes the unique meeting itself.

Phone System

If you’re over 300 users in size, Business Voice isn’t an option you can take. In this case, you will need to add what we refer to as the traditional Phone System add-on license priced at £6.00 per user per month. This license can only be added to Enterprise Plans such as an E1 or E3. If you have an E5, you’re already good to go as this includes the Phone System license.

In this scenario however the Phone System add-on license it does not include a calling plan, which provides your calling minutes and this needs to be an additional purchase. There are several calling plans available for purchase, which are detailed below.

  • Microsoft 365 Domestic 120 Calling Plan (120 minutes) – £4.20
  • Microsoft 365 Domestic Calling Plan (1,200 minutes) – £9.00
  • Microsoft 365 Domestic and International Calling Plan (1,200 UK – 600 International) – £18.10

The minutes detailed above are pooled between all licensed users, meaning if one user runs out of minutes they can still continue calling by drawing minutes from the central pool. For example, if two Domestic 120 Calling Plans were purchased, there would be a total of 240 minutes available to both users. However, it is important to note that minutes are reset each month and are not cumulative over time. If you purchase a UK only calling plan, you can still call international numbers by topping up Communication Credits. These are essentially a pot of money available to draw international calling costs from.

This Could Get A Little Expensive?

At Siplifi, we like to be honest, no matter how much we love Microsoft. Calling Plans can be an expensive approach depending on the size of your organisation and the combination of calling plan types you may need. If you’re an organisation that performs a high amount of national and international calls and you’re over a hundred users in size, the financial feasibility can be a push. This compounded especially if you already have an investment in an existing telephone system (PBX).

Direct Routing

Microsoft do provide an alternative, called Direct Routing, which allows you to choose who provides your calling minutes. No matter which Office 365 subscription or Phone System add-on you have, this gives you several advantages.

  • If you already have an agreement with a telecoms provider for SIP channels & minutes these can likely be reused
  • Not confined by a set amount of minutes per month or limitations making international or premium rate calls
  • You won’t be subject to potential Microsoft Calling Plan price rises
  • Retain analogue devices such as fax, franking machines, along with chip & pin readers.

In order to use Direct Routing you need a certified Session Border Controller (SBC), this is a piece of software that sits between the telecoms provider and Microsoft Teams, think of it as a translator. If you already have a Session Border Controller this may be suitable for Microsoft Teams assuming it is from a certified vendor. If you don’t have an SBC, we provide a hosted Direct Routing service using AudioCodes Session Border Controllers. This service can connect to your telecoms provider and Office 365 tenant, meaning you can get up and running with external calling in Teams, just as quickly as you can with Microsoft’s Calling Plans.

In terms of licensing for Direct Routing, “Business Voice without a calling plan” can be purchased for £6.00 per user, per month. This still includes all the features detailed above, with the exception of the 1,200 minute allowance. This is still however only available to those organisations under 300 users, those over this number will still need the regular Phone System license.

Summary

In world of external calling with Teams, there isn’t a right or wrong answer. Whether you choose Calling Plans or Direct Routing, it really does depend on both your organisations requirements and budget. The choice between Calling Plans and Direct Routing can be a tricky one. To help you decide we’ve created a free whitepaper detailing the differences. We hope you’ve found our How To Make An External Call On Microsoft Teams article helpful, if you need any further in information or assistance, get in touch using the contact form below.

AudioCodes C448HD Microsoft Teams Phone Review

At Siplifi we’re big advocates of AudioCodes Session Border Controllers, but how does their latest Microsoft Teams native C448HD IP phone stack up? As Teams native phones are now being released thick and fast, we’ve taken a look at AudioCodes latest offering. It’s important to note that the AudioCodes C448HD is an entry level IP phone, targeted to mainly desk based users, hot desks or common area phones as. This is clearly how AudioCodes have marketed the device as you can see through their official material.

Despite this entry level tag, the phone has a good hardware specification to power the Android based Microsoft Teams native firmware. The specification of the phones is detailed below:

  • Native support for Microsoft Teams
  • Out of the box Microsoft Teams Admin Center support
  • Graphical 5” colour TFT touch screen (1280 x 720) with multi-lingual support
  • 8 programmable keys
  • Dual GbE pass through support
  • USB headset support
  • AUX & RJ-9 accessory ports

This is packed into a 9.21 x 7.48 x 6.69 dimension chassis weighing in at 1.284Kg (2.83 lb). This isn’t the smallest phone on the market by any stretch, however unlike other vendors units such as the Poly CCX 400, AudioCodes has retained the traditional dial pad and functionality keys. This is something that we personally like, for all the progress Microsoft have made with the native Teams firmware, many end users will still prefer the familiarity of physical button over a touch screen. Whilst minimal might be the new modern, it doesn’t always equate to ease of usability.

AudioCodes C448 review showing a picture of the phone during startup.

The button layout in general is good, wide, well spaced plastic buttons offering all the major functions you would expect. We do like a rubber button here at Siplifi, however as we said at the start of this review, we need to keep in mind this is an entry level device. The dedicated redial, transfer and hold keys are a welcome addition and are nicely spaced away from each other button in order to avoid those all too common fat finger moments.

A close up of the C448HD dial pad.

While the touch screen can be used to navigate around the firmware interface, AudioCodes have also retained the directional and OK button in the centre of the phone. The below provides a run down of the physical buttons available:

  • Volume Up / Volume Down
  • Mute Microphone (Backlit)
  • Answer On Headset (Backlit)
  • Loud Speaker (Backlit)
  • Traditional Dial Pad
  • Voicemail (Backlit)
  • Contacts
  • Redial / Transfer / Hold

The 5 inch colour screen itself is bright and responsive to touch and the screen quality due to it’s 720p display (1280 x 720) is more than adequate for a phone of this size. As with most TFT screens, the sleek finish can cause some glaring when in direct light but not enough to cause any usability issues from our own testing. The screen is closely aligned to the Message Waiting Indicator (MWI) light in the top right hand corner of the device, which is well sized and not overbearing. If anyone remembers the HP 4120 Lync Phone Edition handset, you’ll know what we mean.

A picture showing the entire AudioCodes C448HD IP Phone.

We like what AudioCodes have done with the rear of the phone as with many of their others in the 400 series range. As opposed to lining all core connectivity at the base, these are neatly aligned along the top left hand side of the phone and clearly labelled. The USB port for now is used for USB headset connectivity only, however we’d like to see an option for WiFi dongle support in the future, although AudioCodes do offer native WiFi in their C450HD handset. We feel this would be a good addition, as wall mounted common area phones in locations such as factory’s, can be good candidates for WiFi connectivity.

The standard RJ-9 port is included for traditional headset connectivity and there is a AUX port also provided. It should be noted that the AUX port does not provide any specific end user functionality and is present only to facilitate console connectivity for debugging phone issues. Being technically orientated, we like that.

The C448HD also retains the standard 12 volt power adaptor in case you don’t have Power Over Ethernet (PoE) available, this is however an additional purchase as the adaptor is not included in the box. The rear of the phone also includes the ability to attach the phone stand in both tall and short positions so that the angle of the phone can be adjusted to suit the end user. The handset also supports wall mounting out of the box.

The rear of the C448HD showing the connectivity ports available.

An all important question when testing entry level handsets is the quality of audio they produce. In our testing we couldn’t identify any notable difference between the C448HD and the C450HD, this is mainly due to the underlying hardware appearing to be similar. The quality of the speaker phone was also good, as in most phone vendors cases this is located under the handset itself. Whilst sound in this position was good, as always it is amplified better when the receiver is removed.

We’ll be interested to see future develops around sound processing in AudioCodes upcoming releases following their partnership with Dolby. It would seem a natural transition to also embed Dolby technology into their IP Phone line and we’re keen to see the Dolby logo being displayed on the receiver in place of AudioCodes long standing HD VoIP logo. As with all things technologically related, it more than likely won’t be that simple and no doubt AudioCodes will measure the impact of the Dolby partnership through sales of their RX conferencing line up. However for certain consumers the Dolby branding on IP Phones could make a procurement impact and there’s no doubt the partnership on the whole is a smart move.

Summary

Overall, as an entry level Microsoft Teams native device, we really like the AudioCodes C448HD. The phone aesthetically looks good, provides traditional button functionality, a large colour TFT touch screen and a good selection of peripheral connectivity ports. In our testing, receiver and loud speaker audio quality was on par with the higher priced C450HD. The recommended retail price (RRP) for the AudioCodes C448HD is £272, however depending on where you purchase the phone from we’ve seen this as low as £190. For a Microsoft Teams native device, this price is certainly in the lower end of the bracket and if you want to future proof your IP Phone investment. With Teams supported devices on a limited life line, the C448HD is great low cost option.

We hope you’ve enjoyed our AudioCodes C448HD review and if you have any further questions on the device, please use our contact form below.

Microsoft Teams – Dial By Extension

Dial by extension in Microsoft Teams is question that comes up frequently. If you’ve created an Auto Attendant in the Teams Admin Centre, you’ve probably noticed the dial by extension option under Directory Search. At this point you would be forgiven for thinking enabling Teams dial by extension was simply a case of selecting the radio button and away you go. Unfortunately enabling the feature isn’t quite that straight forward, even if you have a LineURI specified against a user account in Teams, this isn’t where the extension itself is derived from.

In order for dial by extension for users to work, their telephone and extension number needs to be populated against their Active Directory user account. This needs to be in a specific format in order for the telephone number and extension to be identified by Teams. Microsoft state the following formats are supported, this is buried away in their official documentation:

“phonenumber;ext=(extension)” or “x(extension)”

Our recommendation is to use the “phonenumber;ext=(extension)” method, this format would mean the users number would would be for example +44203456789;ext=789. This example does however assume the last three digits of the DDI match the extension, however it is perfectly fine for the two numbers to differ. If you have on-premise Active Directory synchronising via Azure AD Connect, you can simply populate the number and extension in the Telephone Number field as shown below.

The telephone number field in Active Directory showing the dial by extension format.

If you only use Azure AD you can either use Set-AzureADUser or Set-MsolUser via a PowerShell session. We prefer Set-MsolUser as you can specify the user principle name as opposed to an object ID. You can run the following command MsolUser command.

Set-MsolUser -UserPrincipalName [email protected] -Phonenumber +44203456789;ext=789

Once the change has been applied it can take up to twelve hours for this to completely replicate in Office 365. Once replication has occurred, you will now be able to call your Auto Attendant and dial an extension followed by # to be connected to the end user. That’s it, we hope you’ve found our Teams dial by extension article helpful. If you need any further assistance, then please feel free to use the contact form below or check out our support services.

AudioCodes Message Manipulation Examples

AudioCodes Message Manipulation Examples

AudioCodes Session Border Controllers provide a great way to manipulate nearly every aspect of a SIP message. Whilst their Message Manipulate feature is a powerful and flexible tool, for newcomers or those with experience, achieving results can be complicated. Due to this, we’ve provided an overview article containing our most common AudioCodes message manipulation examples. However, we will first explain the main concepts of how an manipulation is applied. A message manipulation is comprised of five main areas:

Message Type – The message type is the kind of SIP message you are looking to change. For example at the start of a call an INVITE is produced, in which you could change the host domain or username. Perhaps you need to change SDP information in a 200 OK? The message type denotes what kind of SIP message you want to change. If you leave this field blank, the message manipulation you create will apply to any SIP message.

Condition – A condition is essentially a match criteria and an important field to populate. What should the SBC look for in order to apply the message manipulation? For example, are you looking to change one specific telephone number, perhaps change the sending domain or even change an SDP property such as the contact field or supported codecs. You need to use the condition field to say “only if you see this, do this”.

Action Subject – This is often a misinterpreted field, however this is area whereby you tell the SBC which part of the SIP message you want to change. By this point, we’ve created our condition to say only make this change if you match this criteria and we’ve told the SBC what type of SIP message we want to alter. However, a SIP message is made up of multiple different sections, some are within the header and some are contained within the SDP or otherwise know as the body. In the action subject we are telling the SBC to edit one specific part of the message, for example header.from.url.host would change the domain name that the in the FROM field.

Action Type – This drop down box is reasonably self explanatory. After you’ve chosen your action subject, i.e. the specific part of the SIP message you want to change, the action type denotes the way in which you want to change it. For example, you may want to completely remove the action subject you have specified, as a SIP carrier doesn’t support that part of the message. It may be you need to modify the action subject to change what it says, for example renaming the host domain.

Action Value – Here we are at the final field where you specify what you want the action subject to be changed to. A really important part of this field is ensuring anything you add is encompassed in opening and closing apostrophes as if it isn’t, it simply doesn’t get applied. For example if I wanted to change my host domain to siplifi.com, I would specify it as ‘siplifi.com’

Message Manipulation Examples

Now that we’ve provided some background on what each of the five key areas of a message manipulation do, here are some our of most used. It should also be noted that when you create a message manipulation you need to assign it to a Manipulation Set ID. You can assign many message manipulations to the same ID, however the ID itself must be applied to an IP Group for it to take affect.

Host Manipulation

For the purposes of keeping things simple, let’s take a look at a straight forward manipulation that changes the host name of a SIP URI in an INVITE message:

header.from.url.host message manipulation example.

In the above example, we are taking any INVITE message without a condition and changing the FROM fields host name to siplifi.com. The means for example, should this manipulation set ID be applied to our SIP Carrier IP Group, any call originating from Skype for Business would be sent to the carrier as [email protected] instead of [email protected].

Add Session Expires

Another simple example of how to add a field to a SIP message, is placing a session expiry in the header of a SIP message. In the below example we are adding a Session-Expires attribute to the header of an INVITE message, with a value of 8000. This same method can be used to add a field to any area of the given message type.

header.session-expires message manipulation example.

P-Asserted-Identity

Another common manipulation, although this can also be achieved also by enabling the feature in an IP Profile is to add the P-Asserted Identity to an INVITE. This is achieved by adding the P-Asserted Identity to the INVITE by taking the value of the Header.From field and using this as P-Asserted identity value itself.

p-asserted-identity message manipulation example

SDP Manipulation

More advanced message manipulations are often required when performing interoperability with other SBC’s or PBX’s. In these cases, message manipulations are beneficial if you need to alter SIP messages so they are accepted by the receiving system in a format they understand. In general, manipulations of this nature require condition matching via regular expressions. We’ll be covering regular expressions in another blog post soon, however here’s some examples we’ve used in our integrations.

SDP message manipulation examples.

In the above two examples, a condition is being set using regular expressions (regex) to apply the action should the condition be met. In the first manipulation, a regular expression has been set to look for the coder with the details “RTP/AVP 8 96“. When this has been identified, we are using an action type of modify and then reconstruct the SIP message to add “13” to the coder detail. To do this, in the action value, we use regex variables and include ‘13‘ to create “RTP/AVP 8 96 13“.

In the second example we are applying a completely new codec to any REINVITE message by adding this to the SDP body. This is performed by using a regular expression to place the SDP into a variable and then add the “a=rtpmap: 13 CN/8000\\” entry by using an action type of add and then reconstructing the message in the action value using variables.

Summary

Message Manipulations are a hugely powerful tool when performing PBX interoperability or integration with another SIP entity that requires the modification of SIP messages. AudioCodes have a very useful Message Manipulation Syntax Guide that provides detailed information on the areas of a SIP message that can be manipulated and the syntax to use in fields such as the condition and action subjects. You can find the latest version of the guide at the following URL:

AudioCodes Message Manipulation Syntax Documentation

We hope this AudioCodes message manipulation example overview has been helpful in providing an understanding of how Message Manipulations work on an SBC along with a collection of examples that are ready to implement. If you need any assistance with implementing message manipulations please feel free to send us a message using the form below or check out our support services.

Skype To Teams – Error 201 – Cannot find user in Active Directory

Problem

We were recently performing a Skype for Business 2015 to Microsoft Teams migration with Direct Routing for one our customers. As you may be aware, a migration of this kind requires a hybrid configuration between the on-premises Skype for Business environment and Microsoft Teams. Whilst the initiation of the hybrid process went correctly, when attempting to move users to Microsoft Teams we experienced an error. On initiation of the required Move-CsUser command from PowerShell, we were experiencing the following error:

Error=(201), Description=(Cannot find user in Active Directory with the following SIP URI: “sip:[email protected]

Error 201 Cannot find user in Active Directory with the following SIP URI PowerShell output.

This is quite a well documented issue in the world of the Skype for Business to Teams hybrid. Traditionally this is a case of the required Active Directory attributes not being synchronised from on-premises Active Directory to Azure AD. In our case, we had all the attributes synchronised we’d confirmed this by connecting to Azure AD via PowerShell and running a Get-ADUser command. Much of the documentation in reference to moving users to Microsoft Teams via PowerShell references the Hosted Migration Service URL, or in fact doesn’t reference this URL at all. In Microsoft’s official documentation for moving users from on-premises to the cloud (Teams), they detail the following commands should be executed.

$cred=Get-Credential
$url=”https://admin1a.online.lync.com/HostedMigration/hostedmigrationService.svc”
Move-CsUser -Identity [email protected] -Target sipfed.online.lync.com -MoveToTeams -Credential $cred -HostedMigrationOverrideUrl $url

The key issue with the above is the Hosted Migration Service URL, it references https://admin1a.online.lync.com. This URL however is Office 365 tenant dependant. In a completely separate piece of Microsoft documentation, we found the following clue:

The value of the hosted migration override URL is a variant of the following URL: https://adminXX.online.lync.com/HostedMigration/hostedmigrationService.svc
In the above URL, replace the XX with either two or three characters.

Solution

The correct admin URL for your tenant can be located by running the following commands from a Windows PowerShell session connected to Office 365 with the Skype for Business commands imported.

  1. Run Get-CsTenant|ft identity and press enter.
  2. This will provide an output similar to the following: OU=(GUID),OU=OCS Tenants,DC=lyncXX001,DC=local
  3. In this output, it is the “DC=lyncXX001” element that is important, the two characters you see after the word “lync” are the characters you need to make a note of.

For example in our case, we had DC=lync1e001. In this case our Hosted Migration Server URL would form the following: https://admin1e.online.lync.com/HostedMigration/hostedmigrationService.svc. Low and behold when running the Move-CsUser command with the adjusted Hosted Migration Service URL, our “Error 201 Cannot find user in Active Directory with the following SIP URI” warning had now cleared.

That’s it, we hope this helps resolve your “Error 201 Cannot find user in Active Directory with the following SIP URI” issue and allows you to move your users from Skype for Business to Microsoft Teams. If you’re still having issues, check out our support services or use the contact form below to get in touch.