Blog

Moving an existing AgendaX installation to Office 365

Many of our customers are migrating their existing Exchange infrastructure to the cloud. Microsoft Office 365 is the most commonly used option.

But what needs to be done to an existing AgendaX installation that is configured to access the on-premise Exchange servers?

This largely depends on if you make the transition to Office 365 in one step (batch) or in several steps over the course of weeks / months. If the transition is done in one batch, you will only need to reconfigure your existing installation. If you have many mailboxes to migrate and this will take a while, we suggest to setup a second instance of AgendaX on the same server. This will allow for a smooth transition and will at any time show all user calendars (both on-premise and migrated mailboxes) in the AgendaX views.

Migration in one batch

You will need to uninstall MAPI/CDO (Exchange Server MAPI), if installed, and install an Outlook 32bit client (Outlook 2016 or later) on the AgendaX server. Also, the AgendaX mailbox needs to be migrated to Office 365 first, before you start migrating user mailboxes.

Also, make sure that a modern browser is installed on the AgendaX server, as this is needed to create an Outlook profile that connects to an Office 365 mailbox.

Then,

  • Log in on the AgendaX Server with the AgendaX user. This is VERY important because Outlook profiles are user specific.
  • Run Regedit and make sure that there is no value called MapiHttpDisabled under HKEY_CURRENT_USER\Software\Microsoft\Exchange or that its value is set to 0.
  • Add the following keys to the registry under HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Common\Identity
    EnableADAL (DWORD) 1
    DisableAADWAM (DWORD) 1
    DisableADALatopWAMOverride (DWORD) 1

    and under HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Cached Mode add a
    value called AllowAutoDiscoverForNonOutlook and set its value to DWORD 1.

  • Outlook 2016:
    • Make sure that KB3115279 for Office 2016 32bit (https://www.microsoft.com/en-us/download/details.aspx?id=53200)
      is installed.
    • Add the following parameter to AgentX.ini:
      [Config]
      ForceIExchangeManageStoreEx=1
  • Outlook 2019 / Office 365:
    • Add the following parameter to AgentX.ini:
      [Config]
      ForceIExchangeManageStoreEx=1
  • Then, create the Outlook profile and make sure that Exchange Cache mode is disabled in the Outlook profile. Enter the Outlook profile name (either in AgendaX Setup if you are setting up a new instance of AgendaX or in AgendaXCfg.exe if AgendaX is already installed under MSX Version / Outlook MAPI Client / Outlook Profile Name). The Standard- Name for the first Outlook- Profile that is configured is ‘Outlook’.
  • Start Outlook with that profile and make sure that the profile works. When you are prompted for a password, make sure to check the ‘Remember password’ checkbox.
  • Finally, close Outlook and restart the AgendaX Update Service

The permissions on Office 365 have to be set a bit differently than in an On Site Exchange environment. On Office 365, you will have to set permissions on folder level:

Please give the AgendaX user Reviewer rights on the top of the mailbox, and Editor rights on the Calendar folders.

The following Powershell script will do this for you. Replace “agendax” on the 4th and 5th line in the following script with the name of your O365 AgendaX account:

Connect-ExchangeOnline
foreach ($Mailbox in (Get-EXOMailbox -OrganizationalUnit abc -ResultSize Unlimited))
{
Add-MailboxFolderPermission -identity "$($Mailbox.Name)" -AccessRights Reviewer -User agendax
Add-MailboxFolderPermission -identity "$($Mailbox.Name):\Calendar" -AccessRights Editor -User agendax
}
Disconnect-ExchangeOnline

"-OrganizationalUnit abc" limits the users to a specific OU (here "abc"). This can be omitted if you would like
to grant the permissions on every account in your organization.

If, instead, you would like to limit the users to users that have a specific SMTP- address, you can use the
following script:

Connect-ExchangeOnline
foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited | where-Object {($_.PrimarySMTPAddress -like "*@agendax.net")}))
{
Add-MailboxFolderPermission -identity "$($Mailbox.Name)" -AccessRights Reviewer -User agendax
Add-MailboxFolderPermission -identity "$($Mailbox.Name):\Calendar" -AccessRights Editor -User agendax
}
Disconnect-ExchangeOnline

Or, if you would like to limit the users to members of a specific distribution list, you can use the following:

Connect-ExchangeOnline
foreach ($Mailbox in (Get-DistributionGroupMember -Identity "NameOfDistributionList" -ResultSize Unlimited))
{
Add-MailboxFolderPermission -identity "$($Mailbox.Name)" -AccessRights Reviewer -User agendax
Add-MailboxFolderPermission -identity "$($Mailbox.Name):\Calendar" -AccessRights Editor -User agendax
}
Disconnect-ExchangeOnline

Please see also the following document: AgendaX Installation Guide V6.1

Migration over the course of several weeks / months

If the move to Office 365 takes some time and you migrate mailboxes with several batches, we suggest to install a second instance of AgendaX during the transition.

The first (existing) instance will read on-premise mailboxes and the second (new) instance will read migrated (O365) mailboxes.

During the transition, you will still see all calendars of both on-premise and migrated mailboxes in the AgendaX web application.

Installing a second AgendaX Setup on the AgendaX server to access the O365 mailboxes

  • Create a new AgendaX user on Office 365 (including mailbox)
  • Copy the AgendaX installation folder to a second location, e.g. AgendaXO365
  • Install the second service with the Multi service configuration tool AgendaX multi service configuration utility. The service account you enter will be the account used to run the AgendaX Update Service. This should ideally be the new AgendaX user on Office 365. If this is not possible, select a local user with Administrative privileges on the AgendaX Server.
  • Install Outlook 2016 (or later) 32bit on the AgendaX Server, if not already present
  • Make sure that a modern browser is installed on the AgendaX server, as this is needed to create an Outlook profile that connects to an Office 365 mailbox.
  • Log on with the new AgendaX user (or the local user you specified while installing the second service) to the AgendaX server
  • Set the appropriate registry keys for the Outlook version used and AgentX.ini settings (page 6 in the Installation Guide: AgendaX Installation Guide) or see above (Migration in one batch)
  • Create an Outlook profile with this user, accessing its mailbox on O365, and disable Exchange Cache Mode in the Outlook profile. If you are prompted for a username / password, check the ‘Remember Password’ option before entering the credentials. Note the name of the Outlook profile you created (default: Outlook)
  • Run the AgendaX Configuration in the AgendaX O365 installation (AgendaXCfg.exe), click MSX Version, select Office 365 and enter the name of the Outlook profile you created, logged-in with the O365 AgendaX user (or the local user).
  • Set the Mailbox folder permissions for the users already migrated to O365 with the following Powershell script. Replace “agendax” on the 4th and 5th line in the following script with the name of your O365 AgendaX account:
    Connect-ExchangeOnline
    foreach ($Mailbox in (Get-EXOMailbox -OrganizationalUnit abc -ResultSize Unlimited))
    {
    Add-MailboxFolderPermission -identity "$($Mailbox.Name)" -AccessRights Reviewer -User agendax
    Add-MailboxFolderPermission -identity "$($Mailbox.Name):\Calendar" -AccessRights Editor -User agendax
    }
    Disconnect-ExchangeOnline
    
    "-OrganizationalUnit abc" limits the users to a specific OU (here "abc"). This can be omitted if you would like
    to grant the permissions on every account in your organization.
    
    If, instead, you would like to limit the users to users that have a specific SMTP- address, you can use the
    following script:
    
    Connect-ExchangeOnline
    foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited | where-Object {($_.PrimarySMTPAddress -like "*@agendax.net")}))
    {
    Add-MailboxFolderPermission -identity "$($Mailbox.Name)" -AccessRights Reviewer -User agendax
    Add-MailboxFolderPermission -identity "$($Mailbox.Name):\Calendar" -AccessRights Editor -User agendax
    }
    Disconnect-ExchangeOnline
    
    Or, if you would like to limit the users to members of a specific distribution list, you can use the following:
    
    Connect-ExchangeOnline
    foreach ($Mailbox in (Get-DistributionGroupMember -Identity "NameOfDistributionList" -ResultSize Unlimited))
    {
    Add-MailboxFolderPermission -identity "$($Mailbox.Name)" -AccessRights Reviewer -User agendax
    Add-MailboxFolderPermission -identity "$($Mailbox.Name):\Calendar" -AccessRights Editor -User agendax
    }
    Disconnect-ExchangeOnline
  • Stop the AgendaX Update service of the old AgendaX installation
  • Run the AgendaX Configuration of both the old and the new installation (AgendaXCfg.exe) and tick the “Multiple services write to this database” option and drop the database tables (only once) under Config / Drop tables.
  • Click “Update” in both AgendaX Configuations and “Yes” to restart the Services
  • Check the Windows Application Eventlog for possible warnings / errors. Each of the services will add warnings to the Application Event log for the mailboxes that are not on their system. This is normal. The on-premise Setup will create warnings for the O365 mailboxes and the O365 Setup will create warnings for the on-premise mailboxes. If you get warnings on the O365 installation about mailboxes that cannot be found in the global address book and these mailboxes have already been migrated to O365, you will have to re-select them from the address book in the AgendaX group definitions (AgendaXCfg.exe / Groups).
  • After both AgendaX Update Services have finished scanning through the mailboxes, you will see both on-premise and O365 mailbox calendars in the AgendaX web application.
  • While you are moving users from the on-premise Exchange servers to O365, you will need to re-run the above Powershell script to set permissions on the newly moved mailboxes.

Removing the old AgendaX Setup after all mailboxes are moved to O365

When all mailboxes are moved to O365, you can uninstall the old AgendaX setup by following the below steps. As the web-application of AgendaX is still running under your old AgendaX setup, you will first need to move this to the location of the new (O365) installation:

  • Run Internet Information Services (IIS) Manager, navigate to Sites / Default Web Site / AgendaX, click “Basic settings” and change the location of the “Physical path” to the folder of your new AgendaX O365 installation.

If you have made any configuration changes on the AgendaX Administration page (in the AgendaX web application) since you installed the O365 installation of AgendaX, or if you have made changes to the collapsible group menu in the multmenu.txt file, copy config.inc and multmenu.txt (both are located in the AGENDA subfolder of your AgendaX installation folder) from the old Setup to the O365 setup.

To uninstall the old AgendaX Setup, follow the steps below:

  • Stop the AgendaX Update Service of the old installation
  • Close any instances of MMC (Microsoft Management Console), e.g. Services, Event Viewer
  • Open a command prompt and change to the AgendaX installation folder of your old AgendaX installation, e.g. CD C:\Inetpub\AgendaX
  • Enter the following command:
    AgendaXSrv.exe -u (this will uninstall the AgendaX Update Service)
  • Delete the old AgendaX installation folder

The final step is to tell the AgendaX Update service that no longer other services are using the same database. Run the AgendaX Configuration (AgendaXCfg.exe) in your new O365 setup folder and untick the “Multiple services write to this database” option and drop the database tables under Config / Drop tables, then click “Update” and “Yes” to restart the service.

Other Posts

Contributions related to the subject

Would you like to write a guest post?
Please contact us.