The following steps need to be performed on the Microsoft Exchange Server:

1. Create a user or choose an existing user. Typically, this is a user on the Exchange Server (ES) that doesn’t actually have a mailbox.

2. In the ES console, run the following command:

Get-ExchangeServer | where {$_.IsClientAccessServer -eq $TRUE} | ForEach-Object {Add-ADPermission -Identity $_.distinguishedname -User (Get-User -Identity User1 | select-object).identity -extendedRight ms-Exch-EPI-Impersonation}

3. After the account has impersonation rights, it needs the ability to impersonate other mailbox users so there are two options:

a. Impersonator can impersonate everybody (easier, less secure option that will pick up new employees as they join the organization):
Get-MailboxDatabase | ForEach-Object {Add-ADPermission -Identity $_.DistinguishedName -User User1 -ExtendedRights ms-Exch-EPI-May-Impersonate}

b. Impersonator can only impersonate specific mailboxes (most secure option):
Add-ADPermission -Identity "NAME_OF_USER_TO_BE_IMPERSONATED" -User User1 -extendedRight ms-Exch-EPI-May-Impersonate

Replace 'User1' with the name of the user created in Step 1.

4.  After the impersonation user is setup, proceed to the Manage Exchange Servers section of the Exchange Integration user guide to complete the setup within CRM