Monday, February 14, 2011

Dissecting Lync Server 2010 Topology Validator’s “SampleInput.xml” file

I was initially disappointed that the validation tool OCS 2007 R2 administrators were accustomed to have was no longer offered in Lync Server 2010 but as it turns out, the Resource Tool Kit now offers a tool named Topology Validator.  While the validator isn’t quite the same as what OCS 2007 R2 had, it does offer a way to check some of the critical services for your Lync environment.  As the title of this post suggests, this post isn’t meant to show how to use this tool because you can find the instructions on Tom’s blog @ http://www.confusedamused.com/notebook/using-the-lync-topology-validator/.  What this post is for is to take a deeper look at the SampleInput.xml file you use for automating the entry of information such as SIP accounts, federated partner domains, and pool FQDNs.

Now before I start with picking away at the tags in the XML file, let me state that I don’t know what all the tags are for so this post will be more of a “work in progress” that will be refined as I get more answers from Microsoft about parts of the XML file that I’m unsure about.  With that stated, lets get started:

I view XML files as being very similar to HTML files because both of them use tags and between the tags contain variables so if you’re new to XML but understand HTML, try to interpret the former as you would with the latter.  The following is what the Topology Validator provides in the bundled SampleInput.xml file:

<?xml version="1.0" encoding="utf-8" ?>
<TopologyValidatorInput xmlns="urn:TopologyValidatorInput-Schema">
  <Topology>Topo.xml</Topology>
  <GlobalSettings>
    <Settings>
      <FederatedPartner>contoso.com</FederatedPartner>
      <TargetPstnPhoneNumber>1234567890</TargetPstnPhoneNumber>
    </Settings>
  </GlobalSettings>
  <Pools>
    <Pool Fqdn="eecluster.vdomain.com">
      <Settings>
        <Users Auto="true"></Users>
      </Settings>
    </Pool>
    <Pool Fqdn="server1.vdomain.com">
      <Settings>
        <FederatedPartner>pets.com</FederatedPartner>
        <TargetPstnPhoneNumber>4257062243</TargetPstnPhoneNumber>
        <Users>
          <User SipUri="sip:testuser0@vdomain.com" UserName="vdomain\testuser0" Password="07Apples" Phone="4251234560" Pin="106207" />
          <User SipUri="sip:testuser1@vdomain.com" UserName="vdomain\testuser1" Password="07Apples" />
        </Users>
      </Settings>
    </Pool>
  </Pools>
</TopologyValidatorInput>

Before we actually look at the XML line-by-line, let’s first try to understand what I call “chunks” of it.  From the sample above, there are actually multiple sections that can be carved out:

<?xml version="1.0" encoding="utf-8" ?>
<TopologyValidatorInput xmlns="urn:TopologyValidatorInput-Schema">
  <Topology>Topo.xml</Topology>
  <GlobalSettings>
    <Settings>
      <FederatedPartner>contoso.com</FederatedPartner>
      <TargetPstnPhoneNumber>1234567890</TargetPstnPhoneNumber>
    </Settings>
  </GlobalSettings>

  <Pools>
    <Pool Fqdn="eecluster.vdomain.com">
      <Settings>
        <Users Auto="true"></Users>
      </Settings>
    </Pool>
    <Pool Fqdn="server1.vdomain.com">
      <Settings>
        <FederatedPartner>pets.com</FederatedPartner>
        <TargetPstnPhoneNumber>4257062243</TargetPstnPhoneNumber>
        <Users>
          <User SipUri="sip:testuser0@vdomain.com" UserName="vdomain\testuser0" Password="07Apples" Phone="4251234560" Pin="106207" />
          <User SipUri="sip:testuser1@vdomain.com" UserName="vdomain\testuser1" Password="07Apples" />
        </Users>
      </Settings>
    </Pool>

  </Pools>
</TopologyValidatorInput>

Making sense of these chunks / sections:

Section Explanation
<?xml version="1.0" encoding="utf-8" ?> This line is used to define the version and encoding which is pretty standard for XML files.  You won’t need to change this.
<TopologyValidatorInput xmlns="urn:TopologyValidatorInput-Schema">
</TopologyValidatorInput>
Tags that encapsulate the input to passed to the topology validator.  You won’t need to change this.
<Topology>Topo.xml</Topology> The content between these two tags is for you to specify the DocItemSet.xml file that contains your topology information which you obtained using the command: Export-CsConfiguration -FileName C:\filename.zip.
<GlobalSettings>
    <Settings>
      <FederatedPartner>contoso.com</FederatedPartner>    <TargetPstnPhoneNumber>1234567890</TargetPstnPhoneNumber>
    </Settings>
  </GlobalSettings>
I’m still trying to find out exactly why you would specify global settings as well as specific pool settings in the sections below but filling in the information for the tags will check the federated partner and the PSTN number specified.
<Pools>
</Pools>
These tags tell the topology validator parser that the information provided in between are pools to be checked.
<Pool Fqdn="eecluster.vdomain.com">
      <Settings>
        <Users Auto="true"></Users>
      </Settings>
    </Pool>
This is an example of providing a pool for topology validator to check.  I believe the:
        <Users Auto="true"></Users>
Is used to tell the topology validator that the user accounts for testing will be entered manually.  I’m still trying to confirm this with Microsoft.
    <Pool Fqdn="server1.vdomain.com">
      <Settings>
        <FederatedPartner>pets.com</FederatedPartner>
        <TargetPstnPhoneNumber>4257062243</TargetPstnPhoneNumber>
        <Users>
          <User SipUri="sip:testuser0@vdomain.com" UserName="vdomain\testuser0" Password="07Apples" Phone="4251234560" Pin="106207" />
          <User SipUri="sip:testuser1@vdomain.com" UserName="vdomain\testuser1" Password="07Apples" />
        </Users>
      </Settings>
    </Pool>
This is an example of providing another pool for the topology validator to check.  You can keep creating multiple pool entries with the <Pool> </Pool> tag if you have more than 1 pool in your environment.

Making sense of these tags with parameters:

Tag Explanation
<Topology>Topo.xml</Topology> As indicated above, this is where you specify the DocItemSet.xml file that contains your topology information which you obtained using the command: Export-CsConfiguration -FileName C:\filename.zip.
<FederatedPartner>contoso.com</FederatedPartner>  This tag is where you can specify a federated partner domain that you would like to test.
<TargetPstnPhoneNumber>1234567890</TargetPstnPhoneNumber> This tag is where you can specify a PSTN number to call.  What the topology validator will do is initiate a call to the PSTN number and as soon as you pick up the call, it will hang up.
<Pool Fqdn="eecluster.vdomain.com"> This tag is where you can specify the pool’s FQDN so the topology validator will know that all the content in between this tag and the terminating tag is for this pool.
<Users Auto="true"></Users> My guess is that this is used to tell the topology validator that the user accounts for testing will be entered manually.  I’m still trying to confirm this with Microsoft.
<User SipUri="sip:testuser0@vdomain.com" UserName="vdomain\testuser0" Password="07Apples" Phone="4251234560" Pin="106207" /> Most of these are pretty self explanatory aside from the PIN as I believe some people may think it’s their Exchange UM PIN when it’s really your Online Meeting PIN.
<User SipUri="sip:testuser1@vdomain.com" UserName="vdomain\testuser1" Password="07Apples" /> I believe the reason why this second user doesn’t require a phone or pin value is because this user mimics a user who is not enabled for enterprise voice.

As I indicated at the beginning, the information provided in this post are my interpretations of what they mean.  I’m sure more documentation on this will be released in the near future.

Please feel free add / correct to this post via the comments below if I’ve left any information out or have made any mistakes.

No comments: