Install Exchange 2016 in Exchange 2010 Organization
Tutorial on how to install Exchange 2016 in Exchange 2010 Organization
Exchange 2016 server pre-requisites
Prepare a Windows 2016 Standard Server with
- Perform Windows Update to install the latest patches
- Download and install Visual C++ Redistributable Packages x64
- Download and Install Unified Communications Managed API 4.0 Runtime
- Download and install Microsoft .NET Framework 4.8 offline installer for Windows
- Download and mount the Exchange 2016 CU17 ISO file
Install required Windows Features
#Install PreRequisite
Install-WindowsFeature NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, `
RSAT-Clustering-PowerShell, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, `
Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, `
Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, `
Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, `
Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation, RSAT-ADDS
#Restart Server
Restart-Computer
Forest & Domain Functional Level
Verify the existing Forest & Domain Functional Level is Windows 2008R2 or later
#Domain Functional Level
PS C:\Windows> Get-ADDomain | Select-Object DomainMode, DistinguishedName
DomainMode DistinguishedName
---------- -----------------
Windows2003Domain DC=lab,DC=local
#Forest Functional Level
PS C:\Windows> Get-ADForest | Select-Object ForestMode
ForestMode
----------
Windows2003Forest
Raise both Forest & Domain Functional Level to Windows 2008R2
#Raise AD Domain & Forest Functional Level to 2008R2
$ADDomainPDC = Get-ADDomainController -Discover -Service PrimaryDC
$ADForest = Get-ADForest
Set-ADDomainMode -Identity $ADDomainPDC.Domain -Server $ADDomainPDC.HostName[0] -DomainMode Windows2008R2Domain
Set-ADForestMode -Identity $ADForest -Server $ADForest.SchemaMaster -ForestMode Windows2008R2Forest
Verify the version of existing AD Schema
ObjectVersion = 47 (Windows Server 2008 R2) – https://www.msnoob.com/hhw-to-check-ad-schema-version-using-powershell-command.html
PS C:\Windows> #Check AD Schema Version
Get-ADObject (Get-ADRootDSE).schemaNamingContext -Property objectVersion
DistinguishedName : CN=Schema,CN=Configuration,DC=lab,DC=local
Name : Schema
ObjectClass : dMD
ObjectGUID : fe5052e9-6c3a-4938-b992-51a785f89c6a
objectVersion : 47
Install Exchange 2016 in Exchange 2010 Organization
Mount the Exchange 2016 ISO File as D Drive and start to extend AD Scheme, Prepare AD Domain and Install Exchange 2016
#prepare AD Schema
D:\setup.exe /ps /IAcceptExchangeServerLicenseTerms
#Prepare AD
D:\setup.exe /PrepareAD /IAcceptExchangeServerLicenseTerms
#Prepare Domain
D:\setup.exe /PrepareDomain /IAcceptExchangeServerLicenseTerms
#Install Exchange 2016
D:\Setup.exe /m:Install /Roles:Mailbox /IAcceptExchangeServerLicenseTerms
Restart-Computer
Login to Exchange 2016 ECP with https://LAB-EX16/ecp?ExchClientVer=15 instead of https://mail.aventis.dev/ecp which will redirect you back to Exchange 2010 as the Administrator Mailbox is still located in Exchange 2010
You can migrate the Administrator’s Mailbox from Exchange 2010 to 2016 to overcome this issue
$Mailbox = "[email protected]"
$TargetDB = "LOCAL-EX16"
New-MoveRequest -Identity $Mailbox -TargetDatabase $TargetDB
# Monitor the Progress of the Move Request
Get-MoveRequest | Get-MoveRequestStatistics
DisplayName StatusDetail TotalMailboxSize TotalArchiveSize PercentComplete
----------- ------------ ---------------- ---------------- ---------------
Administrator Completed 4.78 KB (4,895 bytes) 100
Rename Virtual Directory
Open PowerShell ISE in Exchange 2016 Server
#Connect to Exchange 2016 in PowerShell ISE
. 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto
Rename the Local Mailbox Database
#Rename Default Mailbox Database
Get-MailboxDatabase | Set-MailboxDatabase -Name LOCAL
Change all the Virtual Directory to use mail.aventis.dev
#Change OWA, ECP, EWS, OAB, PowerShell, MAPI, ActiveSync and Outlook Anywhere
$URL = "https://mail.aventis.dev/"
$OWA = $URL + "owa"
$ECP = $URL + "ecp"
$EWS = $URL + "EWS/Exchange.asmx"
$OAB = $URL + "OAB"
$PowerShell = $URL + "Powershell"
$ActiveSync = $URL + "Microsoft-Server-ActiveSync"
$Mapi = $URL + "mapi"
$OutlookAnywhere = "mail.aventis.dev"
Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -InternalUrl $OWA -ExternalUrl $OWA -DefaultDomain "Aventislab.local" -LogonFormat Username
Get-ECPVirtualDirectory | Set-ECPVirtualDirectory -InternalUrl $ECP -ExternalUrl $ECP
Get-WebServicesVirtualDirectory | Set-WebServicesVirtualDirectory -InternalUrl $EWS -ExternalUrl $EWS
Get-OabVirtualDirectory | Set-OabVirtualDirectory -InternalUrl $OAB -ExternalUrl $OAB
Get-PowerShellVirtualDirectory | Set-PowerShellVirtualDirectory -InternalUrl $PowerShell -ExternalUrl $PowerShell
Get-ActiveSyncVirtualDirectory | Set-ActiveSyncVirtualDirectory -InternalUrl $ActiveSync -ExternalUrl $ActiveSync
Get-MapiVirtualDirectory | Set-MapiVirtualDirectory -InternalUrl $Mapi -ExternalUrl $Mapi
Get-OutlookAnywhere | Set-OutlookAnywhere -InternalHostname $OutlookAnyWhere -ExternalHostname $OutlookAnyWhere -ExternalClientsRequireSsl $false `
-InternalClientsRequireSsl $false -DefaultAuthenticationMethod negotiate
SSL Certificate
Export the SSL Certificate from existing Exchange 2010 Server and import it to Exchange 2016
#Import PFX
$PFXPassword = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force
Import-PfxCertificate -FilePath C:\temp\AventisLab.pfx -CertStoreLocation Cert:\LocalMachine\My -Password $PFXPassword
#Assign Wildcard Cert to Exchange IIS & SMTP Services
$Cert = Get-ExchangeCertificate | ? Subject -like "*.aventislab*"
Enable-ExchangeCertificate -Thumbprint $Cert.Thumbprint -Services IIS, SMTP -Force
Service Connection Point (SCP)
Change the Internal SCP URL to Exchange 2016
Set-ClientAccessService -Identity LAB-EX16 -AutodiscoverServiceInternalURI “https://autodiscover.aventis.dev/Autodiscover/Autodiscover.xml”
Send Connector
Add the new Exchange 2016 Server as Source Transport in existing Send Connector
Get-SendConnector | Set-SendConnector -SourceTransportServers LAB-EX10, LAB-EX16
Basic Authentication for External – Outlook Anywhere
Set the ExternalClientAuthenticationMethod to Basic to allow Exchange 2016 to proxy the connection to Exchange 2010 transparently
Get-OutlookAnywhere -Server LAB-EX16 | Set-OutlookAnywhere -ExternalClientAuthenticationMethod basic
Disabled Windows Defender (Optional)
Uninstall the Windows Defender to minimize the RAM usage in Exchange 2016 installed in my lab
Uninstall-WindowsFeature -Name Windows-Defender