# Considerations when migrating from On-Premise SfB to a CCE

### Introduction

I thought I would note down some considerations when looking to migrate from an on-premise deployment of Skype for Business (SfB) to a Cloud Connector Edition (CCE). At one point there was mention that CCE and hybrid could co-exist (which would make this path much easier), but with MS Teams looking to become the primary tool in Office 365, this hasn’t come to fruition. Even if you aren’t in a hybrid configuration but you sync your on-premise AD to Azure AD, you will still have the same considerations to make.

### Cut-over Migration Only

As a CCE cannot co-exist with on-premise or hybrid you will have to do a cut-over migration. This means there is no way to any real testing in advance and the window for migration might be tighter than if both deployments could run side-by-side.

If timescales are tight, look to install the CCE in advance,** but only** **if you are NOT currently using SfB in a hybrid configuration (100% on-premise). **Deploying when hybrid is in use is a bad idea!

Deploying a CCE can go one of two ways - 1. Sails through without issue or 2. You are greeted with red text in PowerShell after running Install-CCAppliance (in my experience, usually nothing is wrong and a simple retry or 6 will resolve this many hours later). With this is mind, I like to deploy the CCE in advance and know when I do cut-over, it’s ready to go.

However, if you do look to install the CCE in advance, you will come across one snag. When running Register-CCAppliance your CCE host will be unable to connect to Skype Online and register itself. This is because the lyncdiscover.domain.com will be pointing at your on-premise deployment. An easy way to see this is initiating a New-CSOnlineSession as seen below:

To get around this you can use the -OverrideAdminDomain and enter your O365 .onmicrosoft.com domain.

It is worth mentioning that the CCE and Skype Online will report all is OK once the CCE is deployed, but until your external DNS is changed to Skype Online, it will likely not work. This is because the CCE and Skype Online will be trying to talk to your on-premise deployment instead of each other!

### On-Premise users will not appear in Skype for Business Admin Center

But I’m 100% on premise, not hybrid, why should Skype Online care? Well, this issue is caused by your on-premise AD syncing with Azure AD. Most user attributes are shared with Azure AD including the on-premise SfB msRTC* attributes. Skype Online notices these and assumes (quite rightly) these are an on-premise users. Unfortunately there is no way around this. You can’t have the same AD user reside on-premise and in Skype Online at the same time.

If this was a standard hybrid deployment, for the user to appear in Skype Online, we would simply migrate them across. Alas, this is CCE and as such, it is a little more complex. Before we start, let’s look at an on-premise user in Skype Online PowerShell using:

Get-CSOnlineUser -Identity "[email protected]" | select identity, interpretedusertype

You can see Skype Online correctly interprets it is a on-premise user. It will always show as hybrid, even if you’ve never federated with Skype Online. The process for moving these users to Skype Online is as follows:

1. Remove each user from the on-premise deployment. This should remove most msRTC* attributes.
2. In my experience there can sometimes be msRTC* attributes left over after removing from on-premise, so check the attributes for each user. In this example user there is one left over, so I cleared it.

3. (Optional) Using miisclient.exe from Azure AD Connect confirm the changes have been Exported to Azure AD:

4. Wait a couple of hours (can sometimes be quicker) for the changes to reflect in Azure AD and Skype Online.

5. If you are lucky, the user will now appear in Skype for Business Admin Center.

6. If you are unlucky, you may need to un-assign and re-assign the Skype Online license to trigger the user being added.

If we run the Skype Online PowerShell command again for the same user, we can see the user is now showing as an pure online user.

To find any users who you may have missed or to see who is remaining, you can run the following command:

Get-CSOnlineUser | Select-Object DisplayName, InterpretedUserType | Where-Object {\$_.InterpretedUserType - like "Hybrid*"}

### User settings do not carry over

This one should go without saying, but it’s worth mentioning anyway. If you are migrating from an on-premise deployment to a CCE Skype Online deployment, there will be no carry over of user settings - call history, contacts etc. This is because the on-premise user and the Skype Online user are completely unrelated to each other. If this is a standard hybrid (non-CCE) this isn’t the case.

Edit: Michael LaMontagne got in touch and advised he has a script to export user’s contact lists. This can be run on each user’s machine to export their contacts of the signed in user before migration. It can then be run to import the users contacts back post migration. You can find the script here.