“MAPI unavailable” error in Skype for Business 2016 client

There are some situations described in this kb, https://support.microsoft.com/en-us/help/3147130/mapi-unavailable-error-in-skype-for-business-2016-client, that will generate a popup in the client saying “Your Outlook profile is not configured correctly” and MAPI status under configuration information will show “”MAPI Unavailable”

In the KB Microsoft describes a workaround, but it involves quite a lot of steps, so I made a small Powershell script that will do the job for you. The script needs to run in the context of the user with the problem, as it uses outlook to get the LegacyDN attribute.

Cisco Meeting Server powershell module v0.4

So the Acano server got released in version 2 almost two months ago, and with that changed name to Cisco Meeting Server as a result of the Cisco aquisition. The PsAcano powershell module of course needed a name change as well, so the module is now called PsCms.

All functions have had their prefix changed from Acano to Cms, so for instance Get-AcanoCall is now called Get-CmsCall and so on. I’ve added all the old function names as aliases for the new names, so existing scripts should not be broken.

I’ve also added all the changes that was made to the API in CMS 2.0 as well.

So without further ado, here’s PsCms version 0.4!

Skype for Business Broadcast Meeting and Xsplit

I got a question about a blogpost I made about Skype for Business Broadcast Meetings and Xsplit and realised that it had been quite som time since I tested this myself. This video is me chatting while testing what could be done.

Every time I get audio through my own speakers the sound degrades quite a bit, sorry about that. It is especially noticeable at the end when I’m playing with the Chrome web app.

I also did not get the audio from the video I played, I’ll try messing around with audio settings to see how it can be done.

If anyone wants to see the broadcast meeting itself, it is available here, although I don’t know for how long.

Import sites and subnets to Skype4B from AD sites and services

Wether it is to use for Call Admission Control or just to get pretty results on the location report on the monitoring server, I usually like to populate network regions, sites and subnets in the Skype for Business topology in every deployment I do.

Untitled picture
Pretty, pretty data 🙂

In many, if not most, environments I deploy in, the admins have taken their time to set up AD sites and services with the correct site names, so there’s no point in doing that job twice. I’ve made this script which takes the contents of the Sites container and imports it into the Skype for Business topology.

I’ve come across a couple of ways to convert AD sites to Skype for Business network topology, either adding all sites to one region, or converting the sites to regions themselves and adding offices manually. I also want to expand the script so that you can choose which region and site a given subnet belongs to for each subnet in sites and services.


Run the .ps1 and then

Import-ADSitesAndSubnets -Regionid Someregion


 Import-ADSitesAndSubnets -UseSiteAsRegion 

And the script:


Error when moving user from Skype4B onprem to online

In a freshly set up Skype for Business hybrid environment we got this error after trying to move the first user from onprem to online:

HostedMigration 510 error : the user could not be moved because the tenant has not been enabled for shared SIP address spaces

After verifying that both the tenant and onprem environment is actually set up for shared address spaces with




the issue is still there.

I did find a blogpost and an ms forum post on this, but in both those cases the problem seemed to be some caching of some sort and solved itself, which it didn’t in my scenario.

It turned out that the user were homed in a child domain and the FE pool in the root domain. The problem was solved by running the Move-CsUser Cmdlet with the -DomainController parameter as well, like this:

Move-CsUser -Identity user@contoso.com -Target sipfed.online.lync.com -Credential $cred -HostedMigrationOverrideUrl "https://adminXX.online.lync.com/HostedMigration/hostedmigrationService.svc" -DomainController dc.contoso.com

Remember that your HostedMigrationOverrideUrl will probably be different, just log in to the SFBO admin portal to get yours.

Invitation_template.txt works in the Acano Client, but not in the WebRTC client

I’ve been delivering an Acano Certified Engineer II class this week, and one of the labs is to create call branding for the Acano lab deployment.

On the Acano server you can customize the meeting invitation by using a template file uploaded to a webserver. What happened in the lab was that all the students were able to see the custom template work in their Acano clients, but when they logged in to the webRTC client on the webbridge, it fell back to the default template.

We found a file from a known working deployment and used that, and suddenly it started working in both clients. So at least we knew that the file itself was the problem. A couple of the students compared the files, and the working one was encoded as UTF-8 while the non-working one was encoded as UTF-8-BOM. The Acano docs states that the file needs to be UTF-8 encoded which they are, and apparently the Acano client handled the BOM addition fine while the webbridge didn’t.

After googling a bit it seems that windows notepad is not capable of saving UTF-8 without BOM, so the solution ended up being to use notepad++ and save it as UTF-8 without BOM there.

Manage Acano server with Powershell: PSAcano version 0.3 released

Acano server 1.9 was released 6.6.2016, and with it came some new features, most notably the ability to record meetings within the Acano server.

This also means that the API has been updated, so PsAcano needed an update as well. PsAcano version 0.3 adds all the new parameters and the entire new recording possibility to the module.

The release can be downloaded from here or you can run

iex (New-Object Net.WebClient).DownloadString("https://gist.githubusercontent.com/tomlarse/5f43bbe0e763cea379ca/raw/83054527ca5e5433e466f55106ea145bec330435/installmodule")

in powershell to install the module.

As always, please report issues, and feel free to contribute if you feel you have anything to add!