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.
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!
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.
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.
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
And the script:
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.
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 email@example.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.
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.
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!
When integrating an Acano callbridge with Skype for Business (or any of the Lync versions), one of the tasks needed is to provide the callbridge with one or more SfB-enabled users that it can use to obtain MRAS credentials so that it can send media through the SfB edge server to external SfB users. This user is also used by the callbridge to look up SfB conference ID’s when using multi-homed conferencing.
This is normally configured in the webadmin under the “Lync Edge settings” heading, found under Configuration->General. Funnily enough, none of these settings actually reference the edge servers in any way, the callbridge registers this (these) user(s) to the front end pool and is provided with the MRAS URI (basically the SfB edge TURN credentials) during the registration process.
The “Number of registrations” field dictates how many users the server will register, you need one for every 12 simultaneous calls you need to support through the SfB edge. If this is set to one the server will register the sip address configured in the username field, if it is set to a number greater than 1 it will register a sequence of users like this
and so on. If you have only one FE pool in your SfB environment you are now done and may move on.
If you happen to have more than one FE pool in your environment though, you will have to add all of them to the Acano configuration. It is only possible to add 1 through the web interface though, so in this case they will have to be added one by one through the API. You can use Postman or some other REST client for this, or you can use the PsAcano powershell module like this:
You can use the same service accounts for all FE pools.
NOTE: The callbridge is added to the SfB environment as a trusted application pool using -TreatAsAuthenticated $true, so we do not need to provide a password for the users as the callbridge is authorized to authenticate users for the SfB environment.
To get support for Lync and Skype for Business on Windows Server 2012 R2, you need to add a registry key that changes TLS session caching on 2012 R2 Server. This is described here https://support.microsoft.com/en-us/kb/2901554
To create this key, use the following powershell oneliner:
v0.1 post is here
I’ve finally gotten time to complete coding of the 0.2 release of the PSAcano powershell module.
The module now contains all GET, POST, PUT and DELETE commands from the Acano API documentation, and everything that is possible to do with the API should now be possible to script in powershell.
Error handling is still not in the module, this is planned for the 0.3 release, I’ll be adding that the next couple of weeks.
There are two branches that get updated frequently, master and dev. The master branch will be considered stable, and will have features added between releases. The dev branch is considered unstable and this is where active developement happens.
Here’s an example on how to add a call (call leg) to a coSpace using the module:
Then you can just run
Add-Participant -CoSpace df2d3e44-91ff-48f4-aeca-ffd951641ebe -SipUri firstname.lastname@example.org
to add a participant.
If you need to reboot a Skype for Business server, you might not always want the services to start automatically afterwords for various reasons. For instance if you are doing a shutdown of an entire pool, you’d want to run
Start-CsPool -PoolFqdn skypepool.contoso.com
to do a cold start of the pool, instead of the services starting automatically.
Use these oneliners to set the services to manual startup and back again to automatic afterwords.