Why won’t Setup use my updated topology?

Imagine you desperately want to get Microsoft Lync Server 2010 up and running. You quickly run Setup.exe, Prepare first Standard Edition server, install Topology Builder, use Topology Builder to create the topology and then perform steps 1 and 2 of the four steps for Installing or Updating Lync Server System:

  1. Install Local Configuration Store
  2. Setup or Remove Lync Server Components
  3. Request, Install or Assign Certificates
  4. Start Services

However after step 2 you realize you need to make a change to the topology. You startup Topology Builder, make the change and Publish Topology. You then re-run step 2, but it is not picking up the changes you made to the topology, even if Publish Topology succeeded. Why?? Let me explain.

Step 1 performs, among other things, installation & creation of the SQL Express instance rtclocal hosting the local replica of CMS (for a discussion about this see here) and loading of the configuration (including the topology) from the CMS master. When you ran this it loaded the initial copy of the topology you published the first time you ran Topology Builder.

When you ran Topology Builder the second time and did the second Publish you updated the CMS master. However you haven’t updated the local replica created in Step 1. After the first run of this step the Run button in the Setup UI is disabled and you can’t re-run it. Step 2 of the installation always reads from the local replica of CMS and it is therefore not picking up the changes you made to the topology. On an operational Lync Server the local replica is updated via CMS replication, but the server you are working on is not operational yet. So what can you do?

The easiest option is to start up Lync Server Management Shell on the server and issue the following two cmdlets:

  • Export-CsConfiguration –FileName <ZIP file to store the exported configuration>
  • Import-CsConfiguration –FileName <ZIP file storing the exported configuration> –LocalStore

Export-CsConfiguration will read the configuration (including the updated topology) from the CMS master and store it in a ZIP file. The Import-CsConfiguration with the –LocalStore switch will import the configuration in the local replica of CMS (in reality doing a manual CMS replication). After performing the two cmdlets you should be able to re-run step 2 above and it will pick up your topology changes.

Comments (11)

  1. jessica says:


    I've being searched for this solution for hours. Thanks for sharing.

  2. George Womick says:

    Worked like a charge to remove server roles I didn't want to include in the initial deployment.

  3. Roman says:

    worked like a charm! Thanks a lot. I was looking for a solution for hours, too…

  4. Ruben says:

    Thank you very for sharing. I've also been searching for ^multiple hours to solve this. But for me, this issue sounds like a "Bug", doesn't it?

    Jens>I won't call it a bug, since it is working as designed. However you could argue that it would be nice to have a button in the setup UI to re-load the toplogy :-)

  5. Jack Dawson says:

    Thank you so much. This worked perfectly and solved a problem I have been working on for days.

  6. Vlad Mott says:

    Thanks Jens, this really helped me out!  :-)

  7. Emil R says:

    Thanks alot!

  8. Berend S. says:

    Great info. Not only the solution, but also the explanation. Thanks!

  9. Andreas Neubauer says:

    Great Solution, working perfect and now I am able to go on with the needed Installation Steps of Lync. Thanks a lot!!  :-)

  10. vijju says:

    Hi still am unable to export topology … can u plz tell me any other process. thanks in adance

    Jens>There is no other way. You need to troubleshoot why you can't connect to the cms database from Lync Management Shell. You can try to use -verbose on the export-csconfiguration command. If you're unable to find the issue please open an incident with Microsoft Support.

  11. Jon says:

    EXACTLY! Thank you very much [internet beer]