MAgE: How does it know SQL project connection info?

Recently I’ve encountered QMM MAgE (Migration Agent For Exchange) issue which led me to the interesting discovery of how it obtains SQL project connection information. Struggle always has to pay off with the reward, isn’t it 😉

So you started your new QMM for Exchange mailbox migration project into the shiny “just out of the box” Exchange 2013…. and suddenly MAgE surprise you with the following error when processing mailboxes in the Calendar or Mail Sync:


2015-01-16 23:07:58.0656 Px1700  Tx5 A- C- M- Trace Retrieving connection string (project name – ‘Exchange Migration Project’, project type – ‘QmmEx’, project Guid – ’90e49231-3838-4e5e-b2e4-8813fbf59a11′).
2015-01-16 23:07:58.0656 Px1700  Tx5 A- C- M- Trace LDAPConnector::FindOne. Path – (null), filter – (&(objectClass=serviceConnectionPoint)(keywords=77F6F69F-AD86-437c-B47E-9A2F161E7E61)(keywords=QmmEx)(keywords=90e49231-3838-4e5e-b2e4-8813fbf59a11)(CN=90e49231-3838-4e5e-b2e4-8813fbf59a11)), scope – Subtree.
2015-01-16 23:07:58.0656 Px1700  Tx5 A- C- M- Info Waiting for agent settings: Not found: (&(objectClass=serviceConnectionPoint)(keywords=77F6F69F-AD86-437c-B47E-9A2F161E7E61)(keywords=QmmEx)(keywords=90e49231-3838-4e5e-b2e4-8813fbf59a11)(CN=90e49231-3838-4e5e-b2e4-8813fbf59a11))
2015-01-16 23:07:58.0656 Px1700  Tx5 A- C- M- Info Agent is not ready to start. Agent going to sleep at 1 minute.


A bit frustrating right? Little troubleshooting efforts (my agent services were running under Source and I switched them to the Target service account – never was a problem with legacy agents) and now things are looking better – I can see the names of my mailboxes in the log, move requests are issued, Target mailboxes are filling up with data. But wait – what is this LDAP filter and what is the agent trying to do? And why is the agent not ready to start while waiting for the agent settings? I seem to give it all the info it needs to know – Source / Target environment, mailboxes to migrate etc. Let me try and execute this query in my Target AD under AD configuration naming context. Bingo – I found QMM SCP, the new entity which it never had to deal with in the legacy agent’s world.

b2ap3_thumbnail_2015-01-28_17-48-29_20150128-220711_1

From QMM documentation:

“MAGE agent requires access to the following locations: Permission to create, read and write SCP in domain where agent host resides. The SCP object is located in the CN=Exchange Migration Project,CN=QmmEx,CN=Migration Manager,CN=Quest Software,CN=System,DC=,DC=,DC= Active Directory container.”

Lesson learned:

Legacy QMM Agents never connect to SQL project, they have their configuration stored in the local MDBs. On the other hand, MAgE needs to talk to SQL to know what mailboxes to process, what servers to connect to and more. You can deploy hundreds of MAgE agents in the environment. And where do these all agents find QMM SQL project connection details? Answer: QMM SCP in AD, which is created by QMM during the first MAgE install in the Domain where QMM console joined to. Here is the particular attribute and test lab example string containing the connection info (TDC – my SQL server, QMM811 – my QMM SQL project name):

serviceBindingInformation

Data Source=TDC;Initial Catalog=QMM811;Integrated Security=True