<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>The Lyncdude</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/lyncdude/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/lyncdude/feed.xml</link>
    <description>“All About Teams &amp;amp; Skype for Business”</description>
    <lastBuildDate>Wed, 18 Apr 2018 14:41:52 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Plan Skype for Business to Microsoft Teams Migration</title>
      <link>https://docs.microsoft.com/archive/blogs/lyncdude/plan-skype-for-business-to-microsoft-teams-migration</link>
      <pubDate>Wed, 18 Apr 2018 14:19:46 GMT</pubDate>
      <dc:creator><![CDATA[Tohamey - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/lyncdude/?p=55</guid>
      <description><![CDATA[Howdy,

I talk to many customers every day about the possible migration options or as we call it...]]></description>
      <content:encoded><![CDATA[Howdy,

I talk to many customers every day about the possible migration options or as we call it in Microsoft "Upgrade Journey" from Skype for Business to Microsoft Teams and decided also to write an article explaining and trying to simplify those options. Depending on the customer's business requirements, one of those options could be used.

So let's keep it clear here, our goal in the end is to move all users from Skype for Business to Microsoft Teams and start using Teams-Only. In our journey to reach that end state some interop between both platforms will take place and that won't happen without a hybrid configuration with Skype for Business Online. So if the customer is running Skype for Business On-Premise, they will need to start planning and configuring Skype for Business hybrid before moving to Teams-Only infrastructure.

Please keep in mind those methods are still being worked on, and keep an eye on our official documents for any updates (<a href="https://docs.microsoft.com/en-us/microsoftteams/upgrade-and-coexistence-of-skypeforbusiness-and-teams">found here</a>).
<h2>Migration Modes</h2>
We introduced five upgrade modes, how i explain it to my customers is think of it like 5 scenarios of how they can use and run Skype for Business and Microsoft Teams in their organization. Those scenarios are not the migration options I'm speaking of, we use one or a combination of those scenarios in our migration options, keep reading you will get it by the end of the article :) :
<ol>
 	<li><strong>Island Mode: </strong>default mode / scenario, where both products running separately from each other, meaning chat (previously known as instant messaging) that happens on Skype for Business stays in Skype for Business and the chat that happens on Teams stays in Teams.</li>
 	<li><strong>Skype for Business Only Mode: </strong>Users are using only Skype for Business and are disabled for Microsoft Teams, some users might be enabled for some specific interop options with Teams, users want to join Teams meetings will have to use the web browser.</li>
 	<li><strong>Microsoft Teams Only Mode: </strong>Users are using only Microsoft Teams and are disabled for Skype for Business, users with Teams-Only mode will have to use Skype for Business web client to join scheduled Skype for Business meetings.</li>
 	<li><strong>Microsoft Teams Collaboration Only Mode: </strong>User will use Teams only for collaboration, meaning Teams and channel conversations only, rest of modalities (chat, A/V calling and meetings) will be done on Skype for Business.</li>
 	<li><strong>Microsoft Teams Collaboration &amp; Meetings Mode:</strong> Users will use Teams for collaboration (as described above) as well as meetings, rest of modalities as in chat and A/V callings will be done on Skype for Business.</li>
</ol>
<img width="1024" height="576" class="aligncenter size-large wp-image-75" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/photo11-1024x576.png" />

For Mode 4 and 5 (Microsoft Teams Collaboration Only and Microsoft Teams Collaboration &amp; Meetings), customers must choose one client only to be used for chat and callings, allowing both clients for both type of modalities will confuse the users and cause bad adoption. As noticed above, <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">3 modes have chat, calling and meetings provided by Skype for Business, also note that </span>4 modes have both Teams and Skype for business, and one has Skype for Business only.

One more time I have to say that here again and now that I explained the different modes, for the interop between both products to work as described above, the customer must configure and run a hybrid Skype for Business deployment.
<h2>Migration Options:</h2>
Now that those modes were described, we provide two migration options, or as we call it in Microsoft "Upgrade journey":
<ol>
 	<li>Simple Upgrade Journey</li>
 	<li>Gradual Upgrade Journey</li>
</ol>
<h4>1. Simple Upgrade Journey</h4>
In this options, Microsoft Teams is deployed to all users in the organization and configured to run with Skype for Business using the <strong>Microsoft Teams Collaboration Only Mode</strong> that was explained above. This allows the customer to run and evaluate Teams and make the cutover once they think that Teams is ready to be the solo collaboration and communications platform in the organization.

<img width="1024" height="576" class="aligncenter size-large wp-image-85" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/upgrade_and_coexistence_simple_upgrade_journey-1024x576.png" />
<h4>2. Gradual Upgrade Journey</h4>
In this option, Teams is deployed and used in the organization, it will be used in different upgrade modes, some users will have the Island only mode, some others will have Collaboration only mode and so on. As time passes, those users will be moved <strong>gradually</strong> to Teams Only mode, by the end of the project all users will be running on Teams only and Skype for Business will not be used anymore.

<img width="1024" height="576" class="aligncenter size-large wp-image-95" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/upgrade_and_coexistence_gradual_upgrade_journey-1024x576.png" />In the end, customers should use the migration option suitable for them and their business needs, more information can be <a href="https://docs.microsoft.com/en-us/microsoftteams/upgrade-and-coexistence-of-skypeforbusiness-and-teams">found here</a> and I hope I managed to simplify it for you :)]]></content:encoded>
    </item>
    <item>
      <title>Simple Understanding of Skype for Business Databases</title>
      <link>https://docs.microsoft.com/archive/blogs/lyncdude/45</link>
      <pubDate>Wed, 18 Apr 2018 12:51:09 GMT</pubDate>
      <dc:creator><![CDATA[Tohamey - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/lyncdude/?p=45</guid>
      <description><![CDATA[Howdy,

in the journey of moving my old articles from Lyncdude.com to this blog I decided to...]]></description>
      <content:encoded><![CDATA[Howdy,

in the journey of moving my old articles from Lyncdude.com to this blog I decided to include this one in the migration about let’s say Skype for Business databases anatomy, I’ll be talking about a simple SfB pool installation and databases included with it.

<!--more-->
<h2>Overview of Skype for Business Database Architecture</h2>
First things first, in Skype for Business there are couple of places that databases are usually installed, depend on your Skype for Business pool design
<ul>
 	<li><strong>Enterprise Edition Front end Pool –</strong> Master databases (XDS) installed on SQL backend server and a read-only copy is installed locally on the front end servers, some of the databases are hosted primarily and only on the backend like Monitoring, Archiving, Persistent chat.</li>
 	<li><strong>Standard Edition Front end Pool –</strong> both master &amp; copy databases are installed locally on the Front end server (SQL Express)</li>
 	<li>In My lab I have an Enterprise front end pool with a SQL backend server, so I’ll be talking about two locations where databases are installed on the SQL backend and the front end servers.<span style="color: #ff0000"> <u>In case of a standard edition front end pool those databases are installed in one location – the front end.</u></span></li>
</ul>
<a href="http://nethop.files.wordpress.com/2014/12/image25.png"><img width="224" height="334" title="image" class="aligncenter" style="float: none;padding-top: 0;padding-left: 0;margin-left: auto;padding-right: 0;margin-right: auto;border-width: 0" alt="image" src="http://nethop.files.wordpress.com/2014/12/image_thumb25.png" border="0" /></a>

PowerShell command <strong>Get-CsConfigurationStoreLocation</strong> can help locating the server used as Skype for Business Backend

<a href="http://nethop.files.wordpress.com/2014/12/image31.png"><img width="402" height="64" title="image" class="aligncenter" style="float: none;padding-top: 0;padding-left: 0;margin-left: auto;padding-right: 0;margin-right: auto;border: 0" alt="image" src="http://nethop.files.wordpress.com/2014/12/image_thumb31.png" border="0" /></a>
<h2>RTC instance, RTC and RTCLOCAL...huh?!!</h2>
for some engineers with limited understanding of SQL (like me), they might get confused when talking about too many use of the word <strong>RTC</strong> in a conversation, and if you include <strong>RTCLOCAL</strong> to the conversation they just start fade away <img class="wlEmoticon wlEmoticon-smile" style="border-style: none" alt="Smile" src="http://nethop.files.wordpress.com/2014/12/wlemoticon-smile3.png" />

so let’s clear things up shall we?
<ul>
 	<li><strong>Instance</strong>: think of a SQL <strong><u><span style="color: #ff0000">Instance</span></u></strong> as a container that have <span style="color: #ff0000"><strong><u>Databases</u></strong></span> inside it.</li>
 	<li><strong>Database</strong>: well database is where the data is actually stored</li>
 	<li>taking this definition and apply it to <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> databases we get the following</li>
 	<li><strong>RTC</strong> <strong><u><span style="color: #ff0000">Instance</span></u></strong> is used by <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> to store all the backend databases, including the master CMS, Response Groups configuration, location database…etc.</li>
</ul>
<a href="http://nethop.files.wordpress.com/2014/12/image26.png"><img width="298" height="351" title="image" class="aligncenter" style="float: none;padding-top: 0;padding-left: 0;margin-left: auto;padding-right: 0;margin-right: auto;border-width: 0" alt="image" src="http://nethop.files.wordpress.com/2014/12/image_thumb26.png" border="0" /></a><span style="color: #ff0000"><strong>NOTE: <u><span style="color: #000000">RTC</span></u></strong></span><u><span style="color: #000000"> is the default name of the <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> instance, but it can be changed during deployments.</span></u>
<ul>
 	<li><strong>RTC Database </strong>is used by <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> to store persistent user information like scheduled conferences, contact lists..etc.</li>
 	<li><strong>RTCLOCAL <span style="color: #ff0000"><u>Instance</u> </span></strong>is used by <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> front end server to store a local copy of the master CMS database and other database used for some user information (presence, endpoints..etc.) explained later in this article.</li>
</ul>
<a href="http://nethop.files.wordpress.com/2014/12/image27.png"><img width="289" height="192" title="image" class="aligncenter" style="float: none;padding-top: 0;padding-left: 0;margin-left: auto;padding-right: 0;margin-right: auto;border-width: 0" alt="image" src="http://nethop.files.wordpress.com/2014/12/image_thumb27.png" border="0" /></a>
<ul>
 	<li>you can learn more about RTC &amp; RTCLOCAL from my previous article <a target="_blank" href="https://blogs.technet.microsoft.com/lyncdude/2017/01/05/26/" rel="noopener">Simple understanding of Skype for Business / Lync CMS</a>
<h3 style="text-align: left"><span style="color: #4f81bd"></span></h3>
<p style="text-align: left"><span style="color: #4f81bd"></span></p>
</li>
</ul>
<h3>Skype For Business Databases</h3>
Now let’s talk about the type of each of those databases you see and what are they used for. In <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> there are number of database types I used the way TechNet divided them with small different (full list can be <a target="_blank" href="http://technet.microsoft.com/en-us/library/gg398479.aspx" rel="noopener">found here</a>)
<ul>
 	<li>Application</li>
 	<li>Archiving &amp; Monitoring</li>
 	<li>Central management</li>
 	<li>Skype for Business Core</li>
 	<li>Users</li>
</ul>
<h4>Application Databases</h4>
following databases are considered “Application” databases
<ul>
 	<li><strong><u>CPsdyn:</u></strong> contain dynamic information used by Call Park application like “Orbits”</li>
</ul>
<p align="center"><a href="http://nethop.files.wordpress.com/2014/12/image28.png"><img width="217" height="195" title="image" style="padding-top: 0;padding-left: 0;margin: 0;padding-right: 0;border: 0" alt="image" src="http://nethop.files.wordpress.com/2014/12/image_thumb28.png" border="0" /></a></p>

<ul>
 	<li><strong><u>RGSConfig:</u></strong> contain the configuration of the Response Groups, like Agents, Workflows, Queues, Holidays…etc.</li>
</ul>
<p align="center"><a href="http://nethop.files.wordpress.com/2014/12/image29.png"><img width="263" height="290" title="image" style="padding-top: 0;padding-left: 0;padding-right: 0;border: 0" alt="image" src="http://nethop.files.wordpress.com/2014/12/image_thumb29.png" border="0" /></a></p>

<ul>
 	<li>
<div align="left"><strong><u>RGSDyn:</u></strong> contain dynamic “live” information used by the Response Groups</div></li>
</ul>
<h6><span style="color: #0b0118"> </span></h6>
<h4>Archiving &amp; Monitoring</h4>
I think the name explains it well, just pay attention that usually those databases are installed on a different SQL instance, not the default one.
<ul>
 	<li><strong><u>LCSLog:</u></strong> archive information about Instant messaging sessions, P2P calls and conferencing used by the archiving server.</li>
 	<li><strong><u>LCSCdr:</u></strong> store the call details records used by the monitoring server.</li>
 	<li><strong><u>QoEMetrics:</u></strong> store information about Quality of Experience used by the monitoring server.</li>
</ul>
<h4><span style="color: #0b0118">Central Management</span></h4>
<ul>
 	<li><strong><u><span style="color: #0b0118"></span>XDS</u><span style="font-size: medium">: </span></strong>this is the <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> heart, it holds <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> topology, configuration and polices (more details: <a target="_blank" href="https://blogs.technet.microsoft.com/lyncdude/2017/01/05/26/" rel="noopener">Simple understanding of Skype for Business/ Lync CMS</a>)</li>
 	<li><strong><u>Lis:</u></strong> store location information (network subnets, ports, Switches...etc.) that is used by <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> Location services for E9-1-1 feature.</li>
</ul>
<p align="center"><a href="http://nethop.files.wordpress.com/2014/12/image30.png"><img width="237" height="244" title="image" style="padding-top: 0;padding-left: 0;margin: 0;padding-right: 0;border: 0" alt="image" src="http://nethop.files.wordpress.com/2014/12/image_thumb30.png" border="0" /></a></p>

<h6></h6>
<h4>Skype for Business Core</h4>
Following databases are usually installed on both the RTC and RTCLOCAL instances
<ul>
 	<li><strong><u>RTC:</u></strong> as mentioned before, it store persistent user information (contact list, scheduled conferences…etc.)</li>
 	<li><strong><u>RTCDyn:</u></strong> Store dynamic “live” data about users (current presence, endpoints user logged in from…etc.)</li>
</ul>
<h4>Users</h4>
<ul>
 	<li>
<div align="left"><strong><u>RTCAB:</u></strong> store the <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> address book information used by <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> address book services</div></li>
 	<li>
<div align="left"><strong><u>RTCXDS:</u></strong> store a back up of user data</div></li>
</ul>
that’s all, a small quick and to the point explanation of <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">Skype for Business</span> databases types and functionalities, hope you found it helpful.]]></content:encoded>
    </item>
    <item>
      <title>Simple Understanding of Lync / Skype for Business CMS</title>
      <link>https://docs.microsoft.com/archive/blogs/lyncdude/26</link>
      <pubDate>Thu, 05 Jan 2017 14:41:29 GMT</pubDate>
      <dc:creator><![CDATA[Tohamey - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/lyncdude/?p=26</guid>
      <description><![CDATA[Howdy,

I decided to write a "Simple Lync CMS Explanation" article, the difference with this...]]></description>
      <content:encoded><![CDATA[Howdy,

I decided to write a "Simple Lync CMS Explanation" article, the difference with this article is that I decided to use easy words not big words as much as I can, to make it easier for Engineers with little SQL experience to understand Lync / Skype for Business CMS and how does it work, replicateetc.

So less words and more diagrams to make it understandable, instead of 5 pages of words

&nbsp;
<h1><span style="color: #0881c7"><strong>What is CMS?</strong></span></h1>
Lync/ Skype for Business Central Management store (CMS), is a Microsoft SQL database (will be under the name xds in the SQL server) that is used by Lync/ Skype for Business to store the following data:
<ul>
 	<li><strong>Topology</strong> (contain all data and information created by the topology builder)</li>
 	<li><strong>Configuration</strong> (contain all Lync's different settings e.g. certificates, dial-in conferencing number)</li>
 	<li><strong>Policies</strong> (contain the different Lync policy e.g. dial plans, client policies, meeting policies)</li>
</ul>
Those kind of data are stored as XML documents in the database, and CMS services replicate those data to the required servers.

<a href="http://nethop.files.wordpress.com/2014/09/image001.png"><img width="450" height="266" class="size-full wp-image-1145 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image001.png" /></a>

In previous versions as in OCS and OCS 2007 R2, those kind of data were stored in the Active Directory, Windows Management Instrumentation (WMI) and also SQL database, if you had worked with OCS you will remember that you needed to extend the Active Directory Schema to add a new features or functions and wait for replication across your AD infrastructure to complete, with Lync/ Skype for Business CMS it became way much easier as all data are stored in one location.

<strong>NOTE:</strong> Lync still save some user object information in Active directory to maintain "Backward Compatibility" with OCS.
<h2><span style="color: #0881c7"><strong>Data Scope</strong></span></h2>
Data stored in CMS can be stored with four different scope levels:
<ul>
 	<li>Global</li>
 	<li>Site</li>
 	<li>Service</li>
 	<li>Tag</li>
</ul>
For each of those scope, there will be only <span style="text-decoration: underline"><strong>one</strong> </span>xml document, so if you have in your Lync/ Skype for Business deployment a site dial plan in addition to the Global dial plan, there will be two XML document in your CMS, one for the Global dial plan and one for the site dial plan.

If you have good experience with SQL, you can check the "Document" table in the xds database and you will notice that each xml document end with a "scope" and only one file exist by scope

<a href="http://nethop.files.wordpress.com/2014/09/image002.jpg"><img width="576" height="363" class="size-full wp-image-1146 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image002.jpg" /></a>
<h1><span style="color: #0e69a1"><strong>How to access CMS?</strong></span></h1>
The answer for this question is "You cannot", access to the CMS is limited by only a .dll file (programming library) called "Microsoft.Rtc.Management.Core", the following Lync/ Skype for Business tools are using this file:
<ul>
 	<li>Lync/ Skype for Business Control Panel</li>
 	<li>Lync/ Skype for Business Topology Building</li>
 	<li>Lync/ Skype for Business Management Shell</li>
</ul>
So to modify data in CMS, you must use one of those Lync/ Skype for Business Management tools.

<strong>NOTE:</strong> this .dll file has too many validation rules to check if what you trying to do is supported by Lync/ Skype for Business core design, then when it find that it is valid, it writes the new data to the CMS.
<h2><span style="color: #0881c7"><strong>CMS Directory Structure</strong></span></h2>
Before explaining how does the CMS replication works, I will explain the structure of the CMS directory, but first you need to know that CMS operate in a <strong>Single master / multiple replica (another word: Copies)</strong>system, we will talk more about that later in this article, but this mean that any Lync/ Skype for Business deployment has<strong> ONE </strong>and Only<strong> ONE</strong> master CMS stored in the Lync/ Skype for Business file store defined in the Lync/ Skype for Business Topology.

<a href="http://nethop.files.wordpress.com/2014/09/image003.png"><img width="403" height="230" class="size-full wp-image-1147 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image003.png" /></a>

Inside the file store you can find the "Central Mgmt" folder that is used by the Master CMS to replicate data.

<a href="http://nethop.files.wordpress.com/2014/09/image004.png"><img width="373" height="164" class="size-full wp-image-1148 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image004.png" /></a>

The xds-master folder is where all the magic happens, this folder is located in <a>\\Lync fileshare\CentralMgmt folder\CMS FileStore\</a>

xds-master contain two sub folders:
<ul>
 	<li>replicas</li>
 	<li>working<a href="http://nethop.files.wordpress.com/2014/09/image005.png"><img width="429" height="394" class="size-full wp-image-1149 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image005.png" /></a></li>
</ul>
Inside the replicas folder, you can find a folder for each Lync/ Skype for Business server you have in your deployment, the folder name will be the FQDN of the Lync/ Skype for Business server, to make things easier, let us say you have a simple Lync/ Skype for Business deployment that consist of one Lync/ Skype for Business Frontend <strong>(lyncfe.lyncdude.local)</strong> and oneLync/ Skype for Business Edge server<strong> (lyncedg.lyncdude.local)</strong>, inside the replicas folder you should find two subfolders of those two Lync servers

<a href="http://nethop.files.wordpress.com/2014/09/image006.png"><img width="365" height="210" class="size-full wp-image-1150 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image006.png" /></a>

Inside each of those subfolders, you will find another two subfolders (just try to keep up, I'm putting a big diagram in the end to show you overall view of the structure):
<ul>
 	<li>from-replica</li>
 	<li>to-replica</li>
</ul>
<a href="http://nethop.files.wordpress.com/2014/09/image007.png"><img width="237" height="175" class="size-full wp-image-1151 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image007.png" /></a>

Here, we finished explaining the structure of the xds-master directory in the file share, and below is a diagram that helps you visualize the structure of the <strong>xds-master </strong>directory

<a href="http://nethop.files.wordpress.com/2014/09/image008.png"><img width="605" height="583" class="size-full wp-image-1152 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image008.png" /></a>

As I mentioned, for each server there is a replicas folder with its name in the <a>\xds-master\replicas\</a> directory. Each Lync/ Skype for Business server has a local "<strong>xds-replica</strong>" folder located under <a>\\Lync server FQDN\xds-replica</a> that it uses to replicate to or from the "<strong>xds-master</strong>"

If you log into one of the Lync/ Skype for Business servers, and navigated to C:\ drive, you find a folder called <strong>"RTCReplicaRoot" </strong>where under it you will find the <strong>xds-replica</strong> folder

<a href="http://nethop.files.wordpress.com/2014/09/image009.png"><img width="516" height="194" class="size-full wp-image-1153 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image009.png" /></a>

<span style="color: #ff0000"><strong>NOTE: IF YOU TRY TO ACCESS THIS FOLDER YOU WILL NEED TO CHANGE THE OWNER OF THE FOLDER WHICH YOU SHOULD NOT DO BECAUSE IT WILL BREAK YOUR LYCN SERVER, I DID THAT ON A LAB</strong></span>

Under the <strong>xds-replica</strong> you find three subfolders:
<ul>
 	<li>from-master</li>
 	<li>to-master</li>
 	<li>Working</li>
</ul>
<a href="http://nethop.files.wordpress.com/2014/09/image010.png"><img width="484" height="423" class="size-full wp-image-1154 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image010.png" /></a>
<h1><span style="color: #0881c7"><strong>How does CMS Replica works</strong></span></h1>
Like I mentioned before, the CMS operate in <strong>Single Master</strong> / <strong>Multiple</strong> replicas (copies) system, so <strong>one</strong> master located on the SQL backend server (called RTC), and each Lync/ Skype for Business server in the topology have a copy (replica) of this master (called RTCLOCAL).

In case of an Enterprise edition pool deployment you will have a dedicated SQL server as a backend, so it will be like the following diagram, the master (RTC) stored on the SQL server and each Lync/ Skype for Business frontend will have a copy(RTCLOCAL)

<a href="http://nethop.files.wordpress.com/2014/09/image011.png"><img width="452" height="376" class="size-full wp-image-1155 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image011.png" /></a>

in case of a standard edition pool deployment the master xds and the replica (copy)will be both hosted in the same server using SQL Express server

<a href="http://nethop.files.wordpress.com/2014/09/image012.png"><img width="396" height="305" class="size-full wp-image-1156 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image012.png" /></a>

In case of the Edge server, which is not joined to the domain and located on a DMZ network, it gets the replication using HTTPS over port 4443

The location of the master CMS is stored in an Active directory object called<strong>"msRTCSIP-GlobalTopologySetting" </strong>which under its properties you find an attribute named<strong>"msRTCSIP-BackEndServer"</strong>

<a href="http://nethop.files.wordpress.com/2014/09/image013.jpg"><img width="605" height="304" class="size-full wp-image-1157 aligncenter" alt="" src="http://nethop.files.wordpress.com/2014/09/image013.jpg" /></a>

This location is called "<strong>Service Connection Point</strong>" SCP which is created by the topology builder in the first time you published the topology and can be edited using the move-CsManagementServer cmdlet, or checked by using the Get-CsManagementConnection.

The CMS master has three service installed on it:
<ul>
 	<li>Lync/ Skype for Business Master Replicator Agent</li>
 	<li>Lync/ Skype for Business File Transfer Agent</li>
 	<li>Lync/ Skype for Business Replica Replicator Agent</li>
</ul>
All those services are running on the CMS Master except for the "Replica Replicator agent which is not, the Replica Replicator agent services runs on other Lync/ Skype for Business servers in the topology.
<h2><span style="color: #0881c7"><strong>Step by Step Replication (more words)</strong></span></h2>
<ul>
 	<li>Each 60 seconds a task run to check if there is any changes made to the CMS master that need to be replicated.</li>
 	<li>If changes are found (xml files), they are all packed in a Data.zip file which have size less than 100KB to make the replication fast</li>
 	<li>The data.zip is copied to each <strong>"to-replica" </strong>folder of each server's replica folder in the xds-master directory</li>
 	<li>The FTA service running on the Master monitor all <strong>"to-replica"</strong> folders and once it sees a data.zip file in them it start the replication process</li>
 	<li>On the servers themselves, the Replica replicator is monitoring the "<strong>from-master</strong>" folder, once it sees a data.zip file in it, it unpack it and apply the changes to the server</li>
 	<li>After the changes are applied, a status.zip file is created and placed in the "<strong>to-master</strong>" folder in the server.</li>
 	<li>FTA is monitoring <strong>"to-master"</strong> folders on all Lync/ Skype for Business Servers and once it sees status.zip file it pull it to the <strong>"from-replica"</strong> folder on the CMS-Master</li>
 	<li>The Master replicator then unpack the package and update the status CMS-Master</li>
</ul>
<strong>For Edge:</strong> Lync/ Skype for Business edge server uses the replication web services over HTTPS / 4443 port to copy the Data.zip file, the replication web services uses the internal Certificate issued by the internal CA and trusted by the Lync/ Skype for Business in the replication process.

<strong>NOTE:</strong> it takes 60 seconds to pull changes from Master + some seconds to apply the changes + 60 seconds to pull from replica + some replication delays maybe, that's why it takes up to 3 minutes for changes to reflect and be visible by the Lync users

&nbsp;

that's it, hope I did a good job :)

let me know in comments]]></content:encoded>
    </item>
    <item>
      <title>Simple Understanding of Media Traversal in Lync / Skype for Business</title>
      <link>https://docs.microsoft.com/archive/blogs/lyncdude/simple-understanding-of-media-traversal-in-lync-skype-for-business</link>
      <pubDate>Tue, 03 Jan 2017 14:36:28 GMT</pubDate>
      <dc:creator><![CDATA[Tohamey - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/lyncdude/?p=25</guid>
      <description><![CDATA[Howdy everyone,

Hope you all had a nice holiday and wish you a happy and successful new year :)...]]></description>
      <content:encoded><![CDATA[Howdy everyone,

Hope you all had a nice holiday and wish you a happy and successful new year :) .

This is one of my<strong> <span style="text-decoration: underline">“Simple Understanding”</span></strong> articles to provide an easy way to understand how <strong>ICE</strong> <span style="text-decoration: underline">“Interactive Connectivity Establishment”</span> protocol is used in Lync and Skype for Business to find available media path for an audio, video, desktop sharing sessions to overcome the Firewall / NAT obstacle in an infrastructure.

This article was really hard to write as I found myself too many times getting into too much details which lead into deleting or cutting paragraphs in it, and finally after 2 weeks I got this, so let’s start.

&nbsp;
<h3><span style="color: #4f81bd">Understanding ICE</span></h3>
ICE is a protocol that is used to find &amp; establish media path in a call, simply like with SIP, we have a SIP server <strong>“your Lync / Skype for Business Frontend”</strong> and a SIP client “<strong>Lync / Skype for Business client”</strong>, also with ICE we have an ICE server <strong>“Lync / Skype for Business Edge”</strong> and an ICE Client <strong>“Lync / Skype for Business client”</strong>

ICE uses two other Protocols to find and establish a suitable media path for a call, those Protocols are:
<ul>
 	<li><strong><span style="color: #4f81bd">STUN</span></strong> (Session Traversal Utilities for NAT)</li>
 	<li><strong><span style="color: #4f81bd">TURN</span></strong> (Traversal Using Relays around NAT)</li>
</ul>
because this is a simple understanding article and not a deep dive, I won’t go into details about the mechanism of <a target="_blank" href="https://tools.ietf.org/html/rfc5389">STUN </a>and <a target="_blank" href="https://tools.ietf.org/html/rfc5766">TURN</a>, a simple search online will gives tons of articles about that. but we need to understand the difference between those two is simply:
<ul>
 	<li><strong><span style="color: #4f81bd">STUN</span></strong>: the media travels directly between both endpoints in a call (the NAT device is considered an endpoint)</li>
 	<li><strong><span style="color: #4f81bd">TURN</span></strong>: the media will be proxied using the TURN server between both endpoints in a  call</li>
</ul>
understanding this will help when we talk about the scenarios later in this article

in a Lync / Skype for Business deployment, STUN server or TURN server is always <strong><span style="text-decoration: underline"><span style="color: #4f81bd">the Lync / Skype for Business Edge server</span></span></strong> (A/V Server)

&nbsp;
<h3><span style="color: #4f81bd">Candidates List</span></h3>
what is a Candidates list?

It is simply a list of IP-addresse(S), ports and protocols (wither UDP or TCP) that is shared between the call endpoints to tell each other what is the possible media path that can be used in this call, the candidates list is sent in the INVITE message inside the SDP part of the message.

in a SIP Stack file it look like this
<p align="center"><a href="http://nethop.files.wordpress.com/2014/10/image51.png"><img width="339" height="113" title="image" style="border-width: 0px;padding-top: 0px;padding-right: 0px;padding-left: 0px" alt="image" src="http://nethop.files.wordpress.com/2014/10/image_thumb51.png" border="0" /></a></p>
a little deeper look, the Candidates list is composed of:
<ul>
 	<li><strong><span style="color: #4f81bd">Host Candidates:</span> </strong>the local IP address and ports of all active network cards on the client machine (most preferred by Lync / Skype for Business).</li>
</ul>
<p align="center"><a href="http://nethop.files.wordpress.com/2014/10/image52.png"><img width="397" height="150" title="host candidate in a SIP message" style="border-width: 0px;padding-top: 0px;padding-right: 0px;padding-left: 0px" alt="image" src="http://nethop.files.wordpress.com/2014/10/image_thumb52.png" border="0" /></a></p>

<ul>
 	<li>
<div align="left"><strong><span style="color: #4f81bd">Reflexive Candidates (STUN):</span> </strong>list of IP-address &amp; ports allocated by a NAT device (second preferred candidate in Lync)</div></li>
</ul>
<p align="center"><a href="http://nethop.files.wordpress.com/2014/10/image53.png"><img width="375" height="121" title="STUN Candidates in a SIP message" style="border-width: 0px;padding-top: 0px;padding-right: 0px;padding-left: 0px" alt="image" src="http://nethop.files.wordpress.com/2014/10/image_thumb53.png" border="0" /></a></p>

<ul>
 	<li>
<div align="left"><strong><span style="color: #4f81bd">Relay Candidates (TURN):</span> </strong>list of IP-addresses &amp; ports of the TURN servers (used when STUN cannot be used)</div></li>
</ul>
<p align="center"><a href="http://nethop.files.wordpress.com/2014/10/image54.png"><img width="352" height="133" title="TURN Candidate in a SIP message" style="border-width: 0px;padding-top: 0px;padding-right: 0px;padding-left: 0px" alt="image" src="http://nethop.files.wordpress.com/2014/10/image_thumb54.png" border="0" /></a></p>
the Lync / Skype for Business client test each of those candidates till it find a suitable media path for the session (will talk more about that later in the article)
<h3><span style="color: #4f81bd">Media establishment mechanism</span></h3>
so how does it actually work?, I divided the mechanism of finding a suitable media path into 3 main stages
<ol>
 	<li>Register and locate the media relay server.</li>
 	<li>Create the Candidate list.</li>
 	<li>Connect &amp; Establish a media session.</li>
</ol>
I created a simple traffic animated video describing each one of the steps, after all they say a picture worth thousand words, what about a video then? <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://nethop.files.wordpress.com/2014/10/wlemoticon-smile3.png" />

&nbsp;
<h4><span style="color: #4f81bd">1. Register &amp; Locate the media relay server</span></h4>
The animated video can be <a target="_blank" href="http://www.youtube.com/watch?v=TLwSfME5igk&amp;w=448&amp;h=277&amp;hd=1">found here</a>

<strong><span style="color: #4f81bd;font-size: medium"><span style="text-decoration: underline">Deeper Look</span></span></strong>
<ol>
 	<li>External client does a SRV lookup to find the Edge server to register</li>
 	<li>External client send a REGISTER request to the frontend via the Edge access services</li>
 	<li>Frontend register the client and send back a SIP 200/OK telling the client there is an Edge server for Media relay</li>
 	<li>client sends a SERVICE request with its location (External or Internal) to the Frontend.</li>
 	<li>Frontend authenticate with the Edge server on behalf of the client (MRAS Request)</li>
 	<li>Edge Server creates credentials <strong><span style="text-decoration: underline">(valid for 8 hours)</span></strong> for the client using the private key in the “Public SSL Certificate” installed on the A/V services and send them to Frontend (MRAS Response)</li>
 	<li>Frontend sends a SIP 200/OK to the initial SERVICE request from the client with the name of the Edge server &amp; credentials the client should use for Media relay</li>
</ol>
<strong><span style="color: #555555"><span style="text-decoration: underline">HINT: if you wondering about step 6 and 7, those take place because Edge server is not joined to the domain and cannot authenticate users, it create the credentials using the Private Key a</span></span><span style="text-decoration: underline">ssociated</span><span style="color: #555555"><span style="text-decoration: underline"> with the public SSL certificate installed on the A/V services and that’s why it is required to use the same SSL certificate with private key on all the Lync / Skype for Business Edge servers in the same Edge pool in case one node goes down.</span></span></strong>

&nbsp;
<h4><span style="color: #4f81bd">2. Create the Candidates list</span></h4>
the video can be <a target="_blank" href="http://www.youtube.com/watch?v=seU_V17SLso&amp;w=448&amp;h=277&amp;hd=1">found here</a>

<strong><span style="color: #4f81bd;font-size: medium"><span style="text-decoration: underline">Deeper Look</span></span></strong>

in this stage the client go through some steps to create the candidate list explained previously in this article, so let’s say client_1 (located in home office) is inviting client_2 (located in the HQ) for an audio call.
<ol>
 	<li>Client discover <strong>Local Host</strong> candidate which is the local IP-address of every active network card on the machine, which is using only UDP as it is peer-to-peer connection.</li>
 	<li>Client connect to media relay server (the Edge server) and discover <strong>STUN Candidates </strong>whish are:
<ul>
 	<li>UDP candidates equal to the IP-address that the Edge server sees the client coming from.</li>
 	<li>TCP candidate equal to the IP-address that the Edge server sees the client coming from.</li>
</ul>
</li>
 	<li>Client connect to media relay server (the Edge server) and discover <strong>TURN Candidates </strong>which are:
<ul>
 	<li>UDP candidate equal to the IP-address of TURN server (the Edge server)</li>
 	<li>TCP candidate equal to the IP-address of TURN server (the Edge server)</li>
</ul>
</li>
 	<li>Client_1 send INVITE request with its Candidates list to Client_2</li>
 	<li>Client_2 does the same and discover its own Candidate list</li>
 	<li>Client_2 reply to the INVITE with 183 Session Progress with its own Candidates list</li>
</ol>
&nbsp;
<h4><span style="color: #4f81bd">3. Connect &amp; Establish a media session</span></h4>
the video can be <a target="_blank" href="http://www.youtube.com/watch?v=yuKFK_CGzvs&amp;w=448&amp;h=277&amp;hd=1">found here</a>

<strong><span style="color: #4f81bd;font-size: medium"><span style="text-decoration: underline">Deeper Look</span></span></strong>

in our scenario:
<ol>
 	<li>Client_1 will try to connect using the local candidate first, which will fail because both are in different networks</li>
 	<li>Then it will try the STUN candidates as it is the preferred by Lync</li>
 	<li>If for some reason STUN fail, client will failback to TURN/UDP</li>
 	<li>If TURN/UDP did not work, client will try TURN/TCP</li>
</ol>
so in SIP stack traffic it happens on 5 steps (not always, just to make it simple) as described <a target="_blank" href="http://www.youtube.com/watch?v=MMFSrH22vF0&amp;w=448&amp;h=277&amp;hd=1">in this video</a>
<ul>
 	<li>Client_1 send SIP INVITE with its Candidates lists to Client_2</li>
</ul>
<p align="center"><a href="http://nethop.files.wordpress.com/2014/10/image55.png"><img width="244" height="103" title="image" style="border-width: 0px;margin: 0px;padding-top: 0px;padding-right: 0px;padding-left: 0px" alt="image" src="http://nethop.files.wordpress.com/2014/10/image_thumb55.png" border="0" /></a></p>

<ul>
 	<li>Client_2 reply with SIP 183 Session Progress with its own Candidate list to Client_1</li>
</ul>
<p align="center"><a href="http://nethop.files.wordpress.com/2014/10/image56.png"><img width="244" height="77" title="image" style="border-width: 0px;margin: 0px;padding-top: 0px;padding-right: 0px;padding-left: 0px" alt="image" src="http://nethop.files.wordpress.com/2014/10/image_thumb56.png" border="0" /></a></p>

<ul>
 	<li>Client_2 send SIP 200 OK with best Candidates to Client_1</li>
</ul>
<p align="center"><a href="http://nethop.files.wordpress.com/2014/10/image57.png"><img width="244" height="77" title="image" style="border-width: 0px;margin: 0px;padding-top: 0px;padding-right: 0px;padding-left: 0px" alt="image" src="http://nethop.files.wordpress.com/2014/10/image_thumb57.png" border="0" /></a></p>

<ul>
 	<li>Client_1 choose STUN candidate as the best suitable path for Media and send a re-INVITE to Client_2 telling it that</li>
</ul>
<p align="center"><a href="http://nethop.files.wordpress.com/2014/10/image58.png"><img width="394" height="50" title="image" style="border-width: 0px;padding-top: 0px;padding-right: 0px;padding-left: 0px" alt="image" src="http://nethop.files.wordpress.com/2014/10/image_thumb58.png" border="0" /></a></p>

<ul>
 	<li>Client_2 choose TURN candidate as the best suitable path for Media and send a SIP 200 OK to Client_1 telling it that</li>
</ul>
<a href="http://nethop.files.wordpress.com/2014/10/image59.png"><img width="427" height="46" title="image" class="aligncenter" style="border-width: 0px;padding-top: 0px;padding-right: 0px;padding-left: 0px;margin-right: auto;margin-left: auto;float: none" alt="image" src="http://nethop.files.wordpress.com/2014/10/image_thumb59.png" border="0" /></a>
<ul>
 	<li>call established and now both clients knows how they can send media to each other</li>
</ul>
<h4><span style="color: #4f81bd">Summary</span></h4>
so that's how it works:
<ul>
 	<li>The Client will use the Lync / Skype for Business Edge server to create its Candidates list</li>
 	<li>Client will INVITE another to a call while providing its Candidate list</li>
 	<li>Both clients test the candidates list and choose the best suitable media path</li>
 	<li>inform each other with the chosen candidate</li>
 	<li>establish the call</li>
</ul>
till next time :)]]></content:encoded>
    </item>
  </channel>
</rss>