# Outlook Online (Office 365) EWS

### Introduction

Connecting to Outlook/0365 for Mailbox migrations is fast to set up and fully supported in Movebot. For this type of connection, Movebot uses the legacy EWS API.

{% hint style="warning" %}
This connection type has the advantage that it does not send calendar notifications during a migration.&#x20;
{% endhint %}

### Requirements

To connect Movebot to Outlook/0365, you will need:

* To have Global Admin access to Entra
* To be familiar with the configuration of applications in Entra.
* Enable RBAC for listing users across the tenant (Optional)

{% hint style="danger" %}
While not explicitly required, we *highly* encourage you to follow [Disabling EWS Throttling](/platform-guides/others/exchange-web-services-ews/how-to-disable-ews-throttling.md) to increase migration speed. This must be done **AFTER** starting the migration.&#x20;
{% endhint %}

### Enable RBAC for listing users across the tenant (Optional)

The EWS API does not allow access to the user database without an additional role.&#x20;

1. Open <https://admin.cloud.microsoft/exchange#/adminRoles>
2. Find **Discovery Management**
3. Add your admin user to the role.&#x20;

{% hint style="warning" %}
Note: This role can take up to 24 hours to be reflected in the API.   If you need to move forward immediately, you can still do so without this role, but you will need to map the users manually using the prefix `mailbox:`
{% endhint %}

### Configuration Steps

Connecting Movebot to Outlook Online through this method requires a few different processes.&#x20;

1. [Start Movebot configuration](#start-configuration-in-movebot)
2. [Create an application in Entra](#create-an-application-in-entra)
3. [Generate a client secret for the application](#generating-a-client-secret-for-the-application)
4. [Add Application details to Movebot ](#add-application-details-to-movebot)

#### Start configuration in Movebot

1. Log in to Movebot and create a new project or task
2. Choose to **Create new Connection**
3. Select **Office 365 Outlook (via EWS)** from the list of available connections and set the connection name
4. Keep the connection window open. You will need to create an application in Entra and add the application details to complete the configuration.

#### Create an application in Entra

1. Log in to Entra as an administrator for your domain at [https://entra.microsoft.com](https://entra.microsoft.com/).
2. Create a new App Registration by expanding **Entra ID** and choosing **App Registrations.**&#x20;
3. Specify a name for the new application. Leave the remaining fields as default, then click **Register.**
4. Copy the **Application (client) ID** and **Directory (tenant) ID** from the "Overview" section. You'll need to paste them into Movebot later. &#x20;
5. Next, give the application permissions. In Entra, select your newly-created app and then click **API Permissions --> Add a Permission**.&#x20;
6. At the top, select "API's my organization uses" and search for "Office 365 Exchange Online"
7. Select "Application Permissions"
8. Enable the following Permissions:&#x20;

```
full_access_as_app
```

#### Generating a client secret for the application

Next, you need to generate the client secret. Under the configuration for the application you created:&#x20;

1. Click **Certificates and Secrets -- > Client Secrets -- > New Client Secret**.&#x20;
2. Provide a description and set an expiry period, then click **Add.** Copy the Secret from the "Value" Field.
3. Return to Movebot and paste the Secret "Value" into the appropriate field

#### Add application details to Movebot

With your application created, you can now finish the configuration in Movebot.&#x20;

1. Return to Movebot. Provide your Tenant ID. (Step 5 from Create an application in Entra)
2. Provide the email address for the Admin user
3. Provide the Application Client ID (Step 5 from Create an application in Entra)
4. Provide the Application Client Secret (Step 3 from Generating the client secret)

### Common Errors

Movebot supports migrations too/from Outlook/Exchange Online for Microsoft 365. Below are common errors, causes, and resolutions, along with answers to frequently asked questions.

<details>

<summary><strong>Error: The impersonation principal name is invalid</strong></summary>

**Cause:** The email address of the admin user is incorrect.

**Resolution:** Double-check the admin user's email address in your configuration settings to ensure it's valid and matches the expected domain.

</details>

<details>

<summary><strong>Error: The caller has not assigned any of the RBAC roles</strong></summary>

**Cause:** The specified admin user has not been granted the Discovery Management role.

**Resolution:** If you're unable to assign the Discovery Management role, use a [CSV import ](/using-movebot/transfer-mapping/import-csv-mappings.md) to map your transfers. This Discovery Management role is only required for listing available mailboxes/automatic transfer mappings. It will not prevent migration.

</details>

<details>

<summary><strong>Error: Unknown failure in response. Code: 403</strong></summary>

**Cause:** Missing or incorrect API scopes.

**Resolution:** Review steps 7–10 of the [configuration steps](#configuration-steps) to confirm that the required API scopes have been correctly configured and admin consent has been granted.

</details>

<details>

<summary><strong>Error: Invalid client secret provided</strong></summary>

**Cause:** The client secret is incorrect.

**Resolution:** Make sure you have entered the Client Secret Value, not the Client Secret ID. This is a common mistake during app registration setup.

</details>

<details>

<summary><strong>Error: Mailbox shows 0KB scanned</strong></summary>

**Cause:** Mail migration settings may be disabled or duplicate job exists.

**Resolution:** First, ensure that mail/contact/calendar migration is enabled in Step 4 of your project settings. Then check for duplicate transfers of the same source mailbox and remove one.

</details>

<details>

<summary><strong>Error: Calendar Event Failure (attendees-mapping-required-error)</strong></summary>

**Cause:** Event attendee mapping is missing for calendar migration.

**Resolution:** You must configure mapping rules for event attendees in Step 4 of your project settings. Without this, calendar events will not be migrated.

</details>

### Frequently Asked Questions

<details>

<summary>How do I handle the cutover?</summary>

Movebot simplifies cutover using **delta migrations**. You can migrate while users are active, then run a final delta to capture any changes after they stop using the source—**minimizing downtime**.

If the domain has changed during cutover, use **"Remap Domains for Cutover"** from the **Run Action** menu. This allows you to specify the old and new domains for source/destination mailboxes, ensuring your mappings remain accurate. After remapping, you can continue running **delta migrations post-cutover**.

</details>

<details>

<summary><strong>Is it possible to migrate between two existing Microsoft 365 tenants using Movebot?</strong></summary>

**Answer:** Yes. Movebot supports bi-directional migrations between Microsoft 365 tenants, including full tenant-to-tenant migrations.

</details>

<details>

<summary><strong>Can I connect to GoDaddy M365 tenants using Movebot?</strong></summary>

Yes. Movebot supports migrations too/from GoDaddy M365 tenants using the same mechanism as regular M365 tenants. &#x20;

</details>

<details>

<summary><strong>My mail migration appears stuck after transferring 50–100GB of data</strong></summary>

This is likely due to mailbox size limits in Microsoft 365.&#x20;

By default:

* Standard Outlook Online licenses support up to 50GB of mailbox storage.
* Users with extended licenses may have up to 100GB, but will still encounter similar limits.

Once the mailbox reaches this threshold, migration will appear to stall until auto-archiving policies move older emails to the Online Archive.

### Workarounds

**Option 1:** \
Pause the migration, allow the auto-archiving to complete, then resume the migration.

{% hint style="danger" %}
If you take this approach, you will not be able to run a Delta Migration afterward. Doing so will cause archived emails to be re-migrated.
{% endhint %}

**Option 2 (Recommended):** \
Delete the destination mailbox entirely and start the migration of affected users from scratch using the steps [outlined here](#how-can-i-migrate-a-mailbox-over-100gb-into-microsoft-using-the-online-archive-feature). This ensures a clean and accurate migration.&#x20;

</details>

<details>

<summary><strong>How do I transfer one specific folder within a mailbox?</strong></summary>

**Answer:** Use the CSV Import feature to map the specific folder.\
Example:\
\
source,destination\
/mailbox:<user@domain.com>/@MAIL/Important Mail,/mailbox:<user@new-domain.com>/@MAIL

</details>

<details>

<summary><strong>How does Movebot handle emails from Google that are tagged with multiple labels?</strong></summary>

**Answer:** Movebot creates a separate folder in for each label. If a message has multiple labels, a separate copy is placed in each corresponding folder.

</details>

<details>

<summary><strong>How can I migrate a mailbox over 100GB into Microsoft using the Online Archive feature?</strong></summary>

**Answer:**

1. Add a content exclusion rule in Step 6 of your project settings to ignore mail received within the last year.
2. Run a full migration.
3. Allow Microsoft’s automatic archiving to move older content into the Online Archive.
4. Adjust your exclusion rule to ignore mail older than one year.
5. Run a delta migration to capture the latest mail.

</details>

<details>

<summary><strong>How can I use Movebot to restore a folder from an Online Archive?</strong></summary>

**Answer:** Use the CSV import feature to map the specific folder from the Online Archive to a destination in the primary mailbox.\
Example:

source,destination\
/mailbox:<user@domain.com>/@MAIL/@INPLACE-ARCHIVE/FolderName,/mailbox:<user@domain.com>/@MAIL/Restored Data

</details>

<details>

<summary><strong>How can I migrate only mail that was received before a specific date?</strong></summary>

**Answer:** Yes, from the launch menu, you can select a desired timeframe to include email up to the specified date.

</details>

<details>

<summary><strong>Once I've migrated historical mail, can I migrate only mail received after a certain date?</strong></summary>

**Answer:** Yes. Select "**Start Delta Migration**" from the launch menu and choose the desired timeframe for the delta to include only newer mail.

</details>

### Supported Features

Movebot has comprehensive support for Outlook Online (Office 365) and is well-maintained.&#x20;

<table><thead><tr><th width="527">Feature</th><th>Supported in Movebot</th></tr></thead><tbody><tr><td>Email Messages and Folders</td><td>Fully Supported</td></tr><tr><td>Public Folders</td><td>Source Only</td></tr><tr><td>In-Place Archive</td><td>Fully Supported</td></tr><tr><td>Private Calendars </td><td>Fully Supported</td></tr><tr><td>Shared Calendars</td><td>Fully Supported</td></tr><tr><td>Contacts</td><td>Fully Supported</td></tr></tbody></table>

\
Tags: office365outlook


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.movebot.io/connections/outlook-online-office-365-ews.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
