We usually use Skykick for our Office 365 migrations as it helps us to automate the process and ensures a seamless transition onto Exchange Online. Occasionally Skykick will be unavailable to us, which is the case for a small migration I have underway.

The customer is migrating away from a Google Apps tenant that we don’t have administrative access to. This means we’re unable to set up the Google Service Account required by SkyKick, and have to migrate mail, contacts and calendars separately onto Office 365.

Since we have the usernames and passwords for the Google Apps/Google for Work accounts, we can run an IMAP migration within the Exchange Admin Centre. There are some instructions here that detail this process.

If the stars align for you, the migration will run without an issue. Though just in case things go wrong, here’s some solutions to some common IMAP migration issues.

Error: We had trouble signing into this account. Please confirm that you’re using the correct username and password.

Office 365 IMAP Migration Failed Due To Incorrect Password

If you’re receiving this error message and you’re 100% sure that all user details are correct, you may need to Allow less secure apps in the users’ Google Security Settings.

To do this, log on as the user to: https://myaccount.google.com/security?pli=1#signin
If Allow less secure apps is set to OFF, set it to ON.

Allow Less Secure Apps For Google Apps To Office 365 Migration

Check Allow Less Secure Apps For Google Apps To Office 365 Migration

This will allow Office 365 to connect to your accounts via IMAP to download the mail.

E-mail migration batch “migrationname” has finished – with errors

If you try to run the migration again, you will probably get an error report via email that states E-mail migration batch “migrationname” has finished – with errors.

Office 365 IMAP Email Migration Batch Failed

The error message tells you that the migration users already exist, and will need to be removed before we can migrate their mail. The usual method to do this would be to delete the Migration Batch from the Exchange Admin Center.

When attempting to delete the migration, you may notice that the migration is stuck with a status of Removing.

Removing a Migration Batch via PowerShell

To remove a Migration Batch that is stuck with a status of removing, you may need to remove it via PowerShell.

To do this, you’ll need to connect to Exchange Online via PowerShell

Run Get-MigrationBatch

Run Get-MigrationBatch via Powershell in Office 365

You’ll get a list of the current Migration Batches. In my screenshot the status is Syncing, since I forgot to take a screenshot while it was stuck on Removing.

To remove a Migration that’s stuck on Removing or Corrupted, run Remove-MigrationBatch -Identity migrationname

Remove-Migration Batch Via Exchange Online

Remember to replace name with the name of your migration.

If it still does not remove, run Remove-MigrationBatch -Identity migrationname -Force to force it’s removal.


The user “email@address.com” already exists, but the migration batch that includes it couldn’t be found

Unfortunately, if you try to run the migration again, you may get the following error in your emailed error report:

The user “email@address.com” already exists, but the migration batch that includes it couldn’t be found. Before you try migrating the user within a batch again, please remove the existing user by running the Remove-MigrationUser cmdlet.

At first I tried to remove all the migration users by signing into Exchange Online via PowerShell and running Get-MigrationUser to get a list of all the current migration users.

Get-MigrationUser In Exchange Online

Then I ran Get-MigrationUser | Remove-MigrationUser

Run Get-MigrationUser Then Remove-MigrationUser

This gave me the following error message for each one:

Could not load the batch information for migration user ’email@address.com’. Associated migration subscription cannot be removed

To fix this, run Get-MigrationUser | Remove-MigrationUser -Force

Force Removal Of Office 365 Migration Users

You can run Get-MigrationUser again to confirm that there are no more registered Migration Users

Save yourself some time

If you want to save some time and force the removal of both Migration Batches and Migration Users, just run the following PowerShell commands in order:

Remember to replace migrationname with the name of your migration batch.

Remove-MigrationBatch -Identity migrationname -Force
Get-MigrationUser | Remove-MigrationUser -Force

Now, try to run the migration again and it should proceed without an issue.

Successful Office 365 Migration From Google Apps

There are two ways to set up an Out of Office Automatic Reply when using Office 365. You can use Outlook, or the Outlook Web App.

Set up an Out of Office reply via Outlook

  1. Open Outlook
  2. Click FileSetup Out Of Office in Outlook
  3. Click Automatic RepliesSetup Automatic Reply for Office 365
  4. Enter your Automatic Reply messageSave Out of Office Message In Outlook For Office 365
  5. You can configure different automatic replies for senders inside or outside the organisation. You can also choose to send Automatic Replies indefinitely, or during a specific time frame.

Set up an Out of Office reply via Outlook

  1. Log into https://outlook.office365.com
  2. Click the Settings cog on the top right:Open Outlook Web App Settings
  3. Click Automatic RepliesOpen Automatic Replies In Office 365 Outlook Web App
  4. Enter your Automatic Reply messageConfigure Automatic Replies Outlook Web App
  5. You can configure different automatic replies for senders inside or outside the organisation. You can also choose to send Automatic Replies indefinitely, or during a specific time frame.
  1. Tap SettingsOpen Settings To Setup Office 365 Email On iPhone
  2. Tap Mail, Contacts, CalendarsTap Mail Contacts Calendars
  3. Tap Add AccountTap Add Account
  4. Tap ExchangeTap Exchange Account
  5. Enter your Office 365 email address and password and tap Next.Enter Office 365 Username And Password
  6. Wait for it to show verifiedWait For Office 365 Username And Password To Verify
  7. Select the services you want to sync to your iPhone or iPadSelect Office 365 Services To Sync
  8. Open the mail app on your phone to view your new mail account. Your Calendar will appear under the Calendar App, Contacts will appear under the Contacts app.

Microsoft Power BI lets you build dashboards and interactive reports from your existing data. It can connect to pretty much any data source and also comes with a bunch of built in connectors to services like Google Analytics, Facebook, Quickbooks Online etc.

We’ve been working on a range of Power BI connectors for our accommodation provider clients, providing them with updating business intelligence dashboards to monitor their Xero Accounting, NewBook booking data, Office 365 activity, MailChimp, Facebook, and now their phone calls.

Since phone numbers are unique, this data can be matched against existing customer data in Power BI, so our clients can find out which customers are calling, how often, and for how long.

This is a sample dashboard I put together this morning using the phone data we’re importing for a Queensland tourist park. The data comes from FoneDynamics, an online call tracking and analytics service based in Australia. Power BI Dashboard Phone Calls

Clicking on dashboard elements opens the interactive Power BI reports. From here, you can drill down into the data and see how the elements relate to one another. In this example, we’ve selected ‘No’ under the Repeat callers chart. This gives us some pretty detailed information about the first time callers into the tourist park. This could include how long they spent on the phone, how many first time callers went unanswered, how long it took to answer these calls etc.Phone Call Business Intelligence Dashboard

Since we’re using Power BI, we can open and interact with these reports on any device. Here’s the same dashboard running on an iPhone, where you can open the charts and set alerts on important data. For example, get notified when the missed calls for the month exceeds a certain number.FoneBox Power BI Dashboard

The tech stuff

For this solution, we had to pull the data from a collection of CSV files stored on an FTP site. Power BI will connect to CSV files out of the box, though not via FTP and it won’t join multiple CSVs into a single dataset.CSVs For Import Into Power BI

I wrote a console app last night to connect to the FTP site, pick up each CSV, collect the phone records from it and upload them into an Azure Storage Table.Extract Phone Data for Business Intelligence On PowerBI

Here’s the data in an Azure Storage Table.

Power BI Phone Data On Azure Storage

Once the data for the previous day’s phone records is uploaded into Azure Table Storage, I set up an Azure Web Job to run the process once a day.Azure Web Jobs To Power BI

Now that we have a regular, up to date source of phone data, we can connect to it using Power BI Desktop app. We can use this app to create our reports before publishing them to Power BI Online.Connect To Azure Table Storage Via PowerBI

If you’d like to learn more about setting up Business Intelligence dashboards for your data, send an email with what you have in mind and we might be able to make it happen.

When switching from Google Apps/Google for Work to Office 365, you’ll usually want to migrate your Google Drive files as well as your mail.

There are a few online tools that will do this for free, or at a cost, with varying degrees of functionality. I came across this handy article that goes into more detail on these methods.

The method that stuck out to me was the new SharePoint Online Migration API from Microsoft. A free powershell driven process. Microsoft released an IT User Guide on the steps required when it was in preview. This is the document I used, and it can be downloaded here.

I used a Microsoft Azure virtual machine to do the initial download of the Google Drive Directory – about 150 GB of data. It downloaded incredibly fast on the Azure VMs connection and completed in a couple of hours. I just used the Google Drive sync tool for this, though you can also use Google’s Takeout tool if you need to convert your Google Docs/Sheets/Slides to their Microsoft Office equivalents.

Once downloaded, I installed the updated SharePoint Online Management Shell, and followed the instructions in the provided Word documents above.

The next step was to create an Azure storage account, create the folders for the migration packages (a bunch of XML manifests outlining what needs to be migrated) and start the upload of the data.

I got an error during one of the first powershell commands that read ‘New-SPOMigrationPackage : The server could not be contacted‘. Following the instructions of this blog post, I changed the initial command to this and added the -NoAdLookup switch to resolve it.

Next we run the Set-SPOMigrationPackageAzureSource cmdlet to upload the data from the Azure Server to the Azure Storage account.

Once the data and the migration package is uploaded, the migration can be kicked off via PowerShell. Now the data is being moved from Azure to OneDrive for Business/SharePoint online. You can check the status of the Migration using the Microsoft Azure Storage Explorer, or just keep an eye on the library that you’re migrating to.

Storage Explorer Migration Queue


The coolest thing about this method is that it avoids the upload throttling of the ‘Open with Explorer’ method, and the syncing issues of the OneDrive for Business sync client. Best of all, it preserves the date modified metadata of the original files.

File metadata is preserved