A lot of setup and administration tasks have gotten a lot easier in Communications Server 14; one of them is building an application server to develop and run your UCMA 3.0 applications on. In this post, Ill walk you through installing the UCMA 3.0 Core SDK and creating a Trusted Application Pool on the server, thus adding it to the Communications Server 14 topology and allowing you to host and run UCMA 3.0 applications on it. Note: These instructions will change slightly as the bits get updated for the eventual Beta release I will update this post as soon as I get a chance to run this setup on a more recent build. Im doing the install on a simple Communications Server 14 topology consisting of the following Windows Server 2008 R2 Hyper-V images: DC Domain Controller ExchangeUM Exchange Server 2010 CS-SE Microsoft Communications Server 2010 Standard Edition TS Development machine Ill walk through setting up UCMA 3.0 on the TS VM, which is a fully patched Windows Server 2008 R2 machine that is joined to the Fabrikam domain. Im also running Visual Studio 2010 on this VM because I intend to use it as a development machine. In a future post, Ill walk through installing just the UCMA 3.0 run time to build a true production UCMA application server. Im making a couple of assumptions here: You have an existing CS 2010 site and cluster configured(well look at this in a future post) Youre starting with a fully patched Windows Server 2008 R2 machine The machine is joined to your domain This walkthrough was done in my Fabrikam VM environment but can easily be modified for your own environment. Installing the UCMA 3.0 SDK Lets start by installing the UCMA 3.0 SDK. Run UcmaSdkWebDownload.msi to kick off the SDK installer package extract process. The installed package is extracted to C: >> Program Files >> Microsoft UCMA 3.0 >> SDK Installer Package. Browse there and run setup.exe. Click Install to install the UCMA 3.0 Core SDK and Workflow SDK. Install Communications Server Core Components UCMA 3.0 introduces a new concept called Auto-provisioning, which is most easily explained from the developer point of view. Remember what your app.config looked it in UCMA 2.0? You had to store the application GRUU, the trusted contact SIP Uri, the port for your application, and the name of the certificate authority. Thats all gone with auto-provisioning all you need in your app.config is your ApplicationId, e.g.: urn:application:MyApplication. How does CS 2010 do this? All of the applications configuration data is associated with the applications id. UCMA also queries a replicated copy of the Central Management Database to retrieve the applications configuration data and also the configuration data for any endpoints. In this step, well run Bootstrapper.exe to install the CS Core components, this checked for the following components and installs them if they are not already present: VcRedist Sqlexpress Sqlnativeclient Sqlbackcompat Ucmaredist OcsCore.msi Open a command window at C: >> Program Files >> Microsoft Communications Server 2010 >> Deployment and run the following command: Bootstrapper.exe /BootstrapReplica /MinCache /SourceDirectory:"%ProgramFiles%\Microsoft UCMA 3.0\SDK Installer Package\Prereq\BootstrapperCache"
Create a New Trusted Application Pool
The next step is to create a new trusted application pool for the new server. Fire up the Communications Server Management Shell from Start >> Microsoft Communications Server 2010 >> Communications Server Management Shell and enter the following PowerShell command:
New-CsTrustedApplicationPool -Identity <FQDN of Server> -Registrar <FQDN of CS Server> -Site <CS Site Name>
Verify that the new server was added to the CS topology by running the following PowerShell command:
(Get-CsTopology -AsXml).ToString() > Topology.xml
This created a file called Topology.xml in the directory that you ran the command from. Open the file and find the Clusters section and look for a node for the new server.
The Cluster Fqdn is the name of your server, and note the name of the Site that this Cluster is a part of.
<Cluster Fqdn="appsrv.fabrikam.com" RequiresReplication="true" RequiresSetup="true">
<ClusterId SiteId="UcMarketing2" Number="5" />
<Machine OrdinalInCluster="1" Fqdn="appsrv.fabrikam.com">
<NetInterface InterfaceSide="Primary" InterfaceNumber="1" IPAddress="0.0.0.0" />
</Machine>
</Cluster>
Configure CS Management Store Replication
At this point, we have the CS Core components installed and the server configured as a trusted application pool. We now need to set up replication so that the Central Management Store replicates down to the new server.
From the Communications Server Management Shell, run the following PowerShell command to enable the Replica service on the new server:
Enable-CSReplica
The Replica service is enabled, but hasn't done anything yet. This can be verified by running the following PowerShell command to check the replication status for the various servers in the topology:
Get-CSManagementStoreReplicationStatus
You can see in the screenshot below that the UpToDate property of the new server is still False
Run the following PowerShell command to force the replication to run:
Invoke-CSManagementStoreReplicationStatus
Run Get-CSManagementStoreReplicationStatus again to verify that the new service is now up to date
Request and Set a New Certificate
The last step in the process is to request a new certificate from the certificate authority on the domain and assign it to the new server.
From the Communications Server Management Shell, run the following PowerShell command to request a new certificate:
Request-CSCertificate -Action new -Type default -CA <Domain Controller FQDN>\<Certificate Authority>
Setting the -Verbose switch on the cmdlet creates an Xml file with its output. Open the Xml file and copy the thumbprint of the generated certificate.
<?xml version="1.0" encoding="utf-8"?>
<Action Name="Request-CsCertificate" Time="20100512T212258">
<Action Name="Request-CsCertificate" Time="20100512T212258">
<Info Title="Connection" Time="20100512T212258">Data Source=(local)\rtclocal;Initial Catalog=xds;Integrated Security=True</Info>
<Action Time="20100512T212258">
<Info Title="Certificate use" Time="20100512T212258">urn:certref:default</Info>
<Info Title="Subject distinguished name" Time="20100512T212258">CN="appsrv2.fabrikam.com"</Info>
<Info Time="20100512T212259">The certificate request is submitted to the Certification Authority dc.fabrikam.com\FabrikamCA.</Info>
<Info Time="20100512T212259">The certificate was issued.</Info>
<Info Time="20100512T212259">The certificate was imported with thumbprint AFC3C46E459C1A39AD06247676F3555826DBF705.</Info>
<Complete Time="20100512T212259" />
</Action>
<Info Title="command status" Time="20100512T212259">Command execution processing completed</Info>
<Action Name="DeploymentXdsCmdlet.SaveCachedItems" Time="20100512T212259">
<Info Time="20100512T212259">0 updates</Info>
<Complete Time="20100512T212259" />
</Action>
<Info Title="command status" Time="20100512T212259">Command has completed</Info>
</Action>
</Action>
Run the following PowerShell command to set the certificate:
Set-CsCertificate -Type Default -Thumbprint <Thumbprint>
Wrapping Up
You now have a new UCMA 3.0 application server in your Communications Server 2010 server topology. You can provision trusted applications and trusted application endpoints on the new server using the Communications Server 2010 Management Shell. Well take a look at how to do that in another post. Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.