How to Sync Two Office 365 or Exchange Calendars?

Why sync two calendars?

Do you have two separate Office 365 or Exchange accounts? Or do you want to share your calendar with someone else from or beyond your organization? Whatever is your case, you can use SyncPenguin to create and start a cloud sync between two Office 365 or Exchange on-premise calendars in less than 5 minutes. This article explains in steps how to do it. Additionally, we explain how to migrate any already existing meetings from one calendar to another.

The sync allows variety of connection combinations and scenarios, including between different Exchange domains or Office 365 tenants. You can sync records between pairs of accounts, from all accounts to a single shared one, or arrange any other custom sync behavior.

Note that apart from Office 365 the service can sync with multiple Exchange EWS-based services, including:

  • Microsoft Office 365
  • Microsoft Teams
  • Exchange On-Premise Server
  • Exchange Online
  • Outlook on the Web
  • Outlook Live and account
  • Microsoft ToDo
  • Amazon WorkMail

1. Sign up

The first step is to sign up and log in to the SyncPenguin Dashboard. That's the place where you create, monitor and manage your synchronizations.

2. Create Office 365 or Exchange sync

The next step is to create the sync. To do this, go to the Synchronizations section of the dashboard and click the 'New sync' button (plus icon). You'll see a wizard page, where you need to follow three steps of sync creation:

  • Select the first app (Office 365 or Exchange Calendar Meetings in our case)
  • Select the second app (also Office 365 or Exchange Calendar Meetings)
  • Specify the name of your sync and hit Create

sync sizard

3. Sign in to both Office 365 or Exchange accounts

Great! You are almost there. The next step is to grant SyncPenguin access to both of your calendars in Access & Settings sections that you'll see on the sync page. To do that, expand the access panel, click the 'Sign In' button and authenticate your Office 365 account through OAuth.

In case you want to sync to Exchange on-premise server, you cannot sign in like that. Instead, you should enter Endpoint URL, Username (which should just be your email in most cases) and Password fields directly manually. You can always contact us if you're not sure how to connect!

Also, if you want SyncPenguin to sync recurring meetings as well, switch on the 'Include recurring meetings' field. We also recommend setting the 'Use specific time zone' field to the same (or equivalent) time zone you're using in your Outlook client.

sign in to your office 365 accounts

4. Test and start the sync

That's it! Well, almost. The last thing, of course, is to test your connection and start the sync itself.

In order to do that just click the 'Trigger sync' button. This schedules a sync job that you'll see in the logs section at the bottom of the page.

run sync for an account

Note that this doesn't sync any data yet. The first sync is just used to test the connection - after a couple of moments you should see a blue 'Initialized' in the status column.

the status of sync run

Now you can test the sync itself. Go ahead and create a test meeting in one of the Office 365 calendars, and click 'Trigger sync' once again. You should see the meeting synced on the other calendar you specified. Great! (If you want to sync already existing data, check out the migration section below.)

The last step is to start the continuous sync, to make sure your meetings are always in sync. You can configure three basic things:

  • How often the sync is triggered (Sync period)
  • The direction of the sync (two-way or one-way)
  • Whether meeting deletes should be synced as well

Once configured, just click the 'Start periodic sync' button and your scheduled sync is now running! Well done!

configure your sync

In case anything went wrong and you're not sure what, feel free to contact us.

Migrate already scheduled meetings

By default, the sync is incremental. It means that it syncs all newly created or updated meetings. But what if you already have some scheduled future meetings and want to sync those as well?

Well, if there are just a few of those, you can always manually update them in your client (in some unmeaningful way). They will be picked up by SyncPenguin and synced to the other calendar.

But this, of course, is not a good solution in a situation when you have a lot of already scheduled meetings. Or if you want to, say, sync all meetings scheduled since two months ago. Thankfully, there is a much better solution to perform the migrating. Here's what you need to do:

  1. Pause the sync (if you've already started it).
  2. Click 'Migrate existing data'.
  3. Among available tabs, choose JSONPath. This allows you to use some simple scripting to perform a migration with filters and conditions.
  4. Choose the direction of the sync
  5. Enter the following value as JSONPath:

$[?(@.value.recurrence != null || @.value.start >= '2020-03-01T00:00:00Z')]

  1. This will sync all recurring meetings, as well as meetings that start after the 1st of March 2020 (feel free to modify the date).
  2. Hit the Migrate button

Your migration is now scheduled! You can watch the status in the logs section at the bottom of the page.

Custom sync

Sometimes you might need to customize the sync. For example, customize field mapping of the meetings, or apply some custom conditions to the sync. This is very much possible with our platform. Feel free to contact us to discuss the details.


So there you have it. That how simple it is. If you have any questions, visit our website or feel free to contact us directly.