RSS Subscription 167 Posts and 2,643 Comments

DBIMPEXP.exe functionality integrated into Lync 2013 Preview Management Shell

Prior to Lync Server 2013, there was a tool.  And this tool was called DBIMPEXP.exe.  It stands for Database Import Export.  This tool was part of the OCS and Lync 2010 Resource Kits, but will now be deprecated to make way for built-in Lync Management Shell PowerShell commands.  But before we talk about its replacement in detail, let’s talk a little bit about DBIMPEXE.exe’s capabilities. DBIMPEXP.exe was used to back up users contact and conference data.  In fact, part of the official backup instructions were to use the DBIMPEXP.exe to backup user data.

Lync Server 2010 – DBIMPEXP.EXE

Note: I am documenting the commands below for Enterprise Edition of Lync.  For Standard Edition, simply remove /sqlserver.

Backing up and restoring all user data

From the official, “Backing Up Core Data and Settings” Technet article, Microsoft provides the following DBIMPEXP.exe commands to back up user data:

Dbimpexp.exe /hrxmlfile:<path and backup file name> /sqlserver:<SQL Server FQDN>\<instance name>

An example would be:

Dbimpexp.exe /hrxmlfile:D:\BackupUser.xml /sqlserver:sql.contoso.com\rtc

To import data from your backed up .xml file, the following command would import user data:

Dbimpexp.exe /hrxmlfile:<path and file name of backed up Rtc database> /sqlserver:<SQL Server FQDN>\<instance name> /import /restype:all

An example would be:

Dbimpexp.exe /hrxmlfile:D\BackupUsers.xml /sqlserver:sql.contoso.com\rtc /import /restype:all

 Backing up and restoring specific user’s data

There is more control over the usage of Dbimpexp.exe.  With the above commands, you are essentially backing up and restoring the entire rtc database for all user contact and conference information.  If we wanted to backup a specific  user’s contact/conference information, we can run the following command:

dbimpexp.exe /hrxmlfile:contacts.xml /user:<sip URL> /sqlserver:sqlservername

To import that specific user’s data from their backed up .xml file, the following command would import that user’s data.

dbimpexp.exe /import /hrxmlfile:contacts.xml /user:<sip URL> /sqlserver:SQL_SERVER

Backing up specific data resource types

With the aforementioned commands, all have a /restype set to all.  This means both contact list and conference directory information is exported.  There is a way to backup either the user or conference data without exporting both.  To export only the user contact list data, the following restype would be specified:

/restype:user

To export only the conference data, the following restype would be specified

/restype:confdir

When using /restype:confdir, you can also specific a specific conference directory by using the /dirid switch as follows:

/dirid:1001

 

 Lync Server 2013 Preview – *-CSUserData

Lync Server 2013 Preview has deprecated the use of DBIMPEXP.exe.  There are now native Lync Mangement Server cmdlets to provide the equivalent.  These three commands are:

  • Export-CSUserData – Exports User Data to a ZIP File
  • Import-CSUserData – Imports User Data from a ZIP File.  This does require a restart of the Front End Service (RTCSRV) to allow the data from the SQL blob store to the RTC Database.  This is a fast process to import data and is geared more towards bulk import operations.
  • Update-CSUserData – Updates User data from a ZIP File  This does NOT require a reboot of the Front End Service (RTCSRV)  but is an expensive and slow process and therefore, should only be run in one-off user scenarios rather than bulk import operations.
  • Convert-CSUserData – Converts between a 2010 XML file provided from DBIMPEXP.exe and a ZIP file provided from Export-CSUserData

Note: For this article, I will be showing the new Export-CSUserData and Import-CSUserData commands.  In a future article for Lync Server 2013 RTM, I will provide more information on the remaining commands.

Export-CSUserData

This is the direct replacement for dbimpexp.exe /export.

The command I will be running against my test Lync Server 2013 Preview Pool is as follows:

Export-CsUserData -PoolFQDN “lync15pool.15lab.net” -FileName “C:\Logs\ExportedUserData.zip”

After exporting the data, we see that we now have a ZIP file.

And within that ZIP, we get a couple XMLfiles.  The meat of the data is stored in DocItemSet.xml.

Just as with DBIMPEXP.exe, we can filter on specific users and conference directories for export.

To filter for a specific user, we would run the following command:

Export-CsUserData -PoolFQDN “Pool FQDN” -UserFilter “user@domain.com” -FileName “<path and backup file name>”

To filter for a specific Conference Directory, we would run the following command:

Export-CsUserData -PoolFQDN “Pool FQDN” -ConfDirectoryFilter 13 -FileName “<path and backup file name>”

Import-CSUserData

This is the direct replacement for dbimpexp.exe /import.  It imports data from the ZIP file previously exported from Export-CSUserData.  Then the user data will be replicated with Active Directory automatically at regular time via Lync user replicator service

I will be importing the data I ran previously from Export-CSUserData. The command I will be running against my test Lync Server 2013 Preview Pool is as follows:

Import-CsUserData -PoolFQDN “lync15pool.15lab.net” -FileName “C:\Logs\ExportedUserData.zip”

After importing the data, we see need to restart the Front End Service, RTCSRV, on all Front End Servers in the pool so that the restored data will propagate from the SQL blob store.

This can easily be achieved by running the following commands:

Stop-CSWindowsService -Name RTCSRV

After all Lync Server 2013 Preview services have been stopped, the following command will start all the Lync Server 2013 Preview services.

Start-CSWindowsService

Just as with DBIMPEXP.exe, we can filter on specific users and conference directories to import.

To filter for a specific user, we would run the following command:

Import-CsUserData -PoolFQDN “Pool FQDN” -UserFilter “user@domain.com” -FileName “<path and backup file name>”

To filter for a specific Conference Directory, we would run the following command:

Import-CsUserData -PoolFQDN “Pool FQDN” -ConfDirectoryFilter 13 -FileName “<path and backup file name>”
Share

New-CSMultiRegionNetwork.ps1 – Automate Lync Network Site and Subnet Creation

To Automate Lync Network Site and Subnet Creation with only one Lync Network Region, please see my New-CSSingleRegionNetwork.ps1 script here.

With Lync Server 2010 and 2013, there are Lync Regions, Lync Sites, and Lync Subnets.  There are three functions in which these can be utilized:

  • Call Admission Control
  • Controlling Media Bypass Behavior
  • Ability to assign a Location Policy to Network Sites so users 911 will route to a given gateway based on the Network Site they are currently located on
  • Provide Site to Site Media Quality behavior in the Monitoring Server Location Reports

Active Directory (AD) is a good starting point to gather all the information on your Sites as well as your Subnets.

Script Functionality

To help automate this process, I wrote the New-CSMultiRegionNetwork.ps1 script.  The purpose of this script is to:

  • Make a connection to AD and record every AD subnet that exists and its corresponding AD Site
  • Export Data to CSV
  • Allows you to specify Lync Network Regions and their corresponding Lync Central Sites
  • Allows you to assign Location Policies to Sites (Note: The Location Policies need to be created beforehand as the script will not create Location Policies)
  • Allows you to assign Bandwidth Policies to Sites (Note: The Bandwidth Policies need to be created beforehand as the script will not create Bandwidth Policies)
  • Will create the Lync Network Regions and assign them to the corresponding Lync Central Site as defined in the CSV
  • Will create the AD Site in Lync Network Sites
    • Something to note is that AD Sites support non-alphanumeric characters such as a hyphen while Lync Network Sites do not support non-alphanumeric characters.  Because of this, this script will create the Lync Network Site without any non-alphanumeric characters.  It is safe to re-run the script more than once as the script will always take notice that an AD Site with non-alphanumeric characters will match a Lync Network Site with non-alphanumeric characters.  Important: Be sure that you don’t have an AD Site that would match another AD Site if non-alphanumeric characters were to be removed.  An example if you had two AD Sites: One called Site01 and another called Site-01.  When the process to remove non-alphanumeric characters occur, they will both conflict.
    • If any Lync Network Sites are created, the script will pause for 15 seconds to allow the Lync Network Sites to instantiate.  If no Lync Network Sites exist, it will move immediately on to subnets.
    • It will create the Lync Network Subnets and assign them to their corresponding Lync Network Site
    • It will assign the Lync Bandwidth Policies and/or Lync Location Policies as defined in the CSV

Miscellaneous Notes

Something to note is that the script will function with one or more Lync Network Regions.  If you have only one Lync Network Region, please run my New-CSSingleRegionNetwork.ps1 script which will automate the entire AD Site and Subnet creation without any CSV file tweaking needed. Please go here for this script.

Video Demonstration

Download

v1.0 – New-CSMultiRegionNetwork.zip

Changelog

v1.0 – Script Creation

Share

Manually enable Appear Offline in Lync 2013 Preview via Registry

Lync 2013, just as with previous releases, allows the ability to Appear Offline. And just as with previous releases, you can enable this functionality in the Lync Client Policies. For information on how Lync Client Policies work, see my post here.  To enable Appear Offline through Client Policie against the Global Policy, use the following command:

Get-CSClientPolicy | Set-CSClientPolicy -EnableAppearOffline $true

This will require a Lync 2013 client restart.

As an Administrator, you may not want to make this change to a Client Policy as the goal of Lync is to promote collaboration, not inhibit it by having users Appear Offline and hide from other users.  At the same time, you may want to enable it for a user or two at request and won’t want to have to bother providing this small group of users their own Client Policy.  Lync 2010 provided the ability to do that via registry key.  Mike Pfeiffer provides a great article on Lync 2010 for setting the Lync 2010 registry key to manually enable Appear Offline in Lync 2010.  You can see his article here.

The goal of this article is to show how to do the same in Lync 2013.  Because Lync 2013 is now a part of Office 2013, Lync 2013 registry items are now under the Office 2013 registry section (Office 15.0).  There are two ways to set this registry:

  1. Cmd.exe
  2. Regedit.exe

Using Cmd.exe

The type the following command:

Reg Add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Office\15.0\Lync" /V "EnableAppearOffline" /D 1 /T REG_DWORD /F

Using Regedit.exe

  1. Start regedit.exe
  2. In Registry Editor, expand HKEY_LOCAL_MACHINE, expand Software, expand Policies, expand Microsoft, expand Office, expand 15.0, expand Lync
  3. Right-click the Lync registry key, point to New, and then click DWORD (32-bit) Value
  4. After the new value is created, type EnableAppearOffline to rename the value.
  5. Double-click the new EnableAppearOffline registry value.
  6. After the new value is created, type EnableAppearOffline to rename the value.
  7. Double-click the new EnableAppearOffline registry value.
  8. In the Edit DWORD (32-bit) Value dialog box, type 1 in the Value data box, and then click OK.

Bug in Lync 2013 Preview

At the current time of this writing, the latest version of Lync 2013 is Lync 2013 Preview.  In the current Lync 2013 Preview, there is currently a bug that prevents the Appear Offline option from being displayed in the Presence drop down selection.

The workaround until this issue is fixed is that you can set Appear Offline in the taskbar by hovering over the Lync 2013 Preview icon and choosing the Appear Offline option there.

Share

New-CSSingleRegionNetwork.ps1 – Automate Lync Network Site and Subnet Creation

To Automate Lync Network Site and Subnet Creation with more than one Lync Network Region, please see my New-CSMultiRegionNetwork.ps1 script here.

With Lync Server 2010 and 2013, there are Lync Regions, Lync Sites, and Lync Subnets.  There are three functions in which these can be utilized:

  • Call Admission Control
  • Controlling Media Bypass Behavior
  • Ability to assign a Location Policy to Network Sites so users 911 will route to a given gateway based on the Network Site they are currently located on
  • Provide Site to Site Media Quality behavior in the Monitoring Server Location Reports

Active Directory (AD) is a good starting point to gather all the information on your Sites as well as your Subnets.

Script Functionality

To help automate this process, I wrote the New-CSSingleRegionNetwork.ps1 script.  The purpose of this script is to:

  • Make a connection to AD and record every AD subnet that exists and its corresponding AD Site
  • Will create the AD Site in Lync Network Sites
    • Something to note is that AD Sites support non-alphanumeric characters such as a hyphen while Lync Network Sites do not support non-alphanumeric characters.  Because of this, this script will create the Lync Network Site without any non-alphanumeric characters.  It is safe to re-run the script more than once as the script will always take notice that an AD Site with non-alphanumeric characters will match a Lync Network Site with non-alphanumeric characters.  Important: Be sure that you don’t have an AD Site that would match another AD Site if non-alphanumeric characters were to be removed.  An example if you had two AD Sites: One called Site01 and another called Site-01.  When the process to remove non-alphanumeric characters occur, they will both conflict.
    • If any Lync Network Sites are created, the script will pause for 15 seconds to allow the Lync Network Sites to instantiate.  If no Lync Network Sites exist, it will move immediately on to subnets.
    • It will create the Lync Network Subnets and assign them to their corresponding Lync Network Site

Miscellaneous Notes

Something to note is that the script will only function with one Lync Network Region.  There are several reasons why:

  • I wanted this script to be completely automated.  If you have one Region, run the script and the script will automatically create all Lync Network Sites, Lync Network Subnets, and associate everything accordingly without any administrative intervention whatsoever.
  • I thought about checking if multiple Regions exist and if they do, prompt what Network Region needs to be assigned to a Network Site every time a Network Site were to be created.  If you had a ton of Network Sites, this would be incredibly annoying.  Because of this, I will be making another script sometime soon that will run in an Import and Export Mode.  The Export Mode would dump all the AD Sites and AD Subnets to CSV where you can then create a Region Field.  You would then be able to run the script in Import Mode which would then create the Network Sites, Network Subnets, and associate everything accordingly to what is in the CSV.

Video Demonstration

Download

v1.0 – New-CSSingleRegionNetwork.zip

Changelog

v1.0 – Script Creation

Share

Lync Server 2013 Release Preview Persistent Chat with Enterprise Pool – Part 3

This article series is to guide you through the entire Lync Server 2013 Persistent Chat deployment process from scratch.  In Part 1, we took a look at preparing the environment for the Persistent Chat Pool.  In Part 2, we’ll take a look at the installation process in the Lync 2013 Persistent Chat Pool.  We’ll then finish up the article series with Part 3 by taking a look at the client capabilities utilizing the Persistent Chat features.

Part 1

Part 2

Part 3

Persistent Chat Configuration

At this point, we have Persistent Chat installed but no configuration has been done.  Therefore, our client will show no Persistent Chat capabilities.  The first icon highlighted is to display the contact list and the second icon is to display your conversation history.

By going into the Lync Server 2013 Control Panel, we can see that there’s a new section for configuring Persistent Chat.  We’ll start by configuring a Persistent Chat Policy.  We’ll modify the Global Policy.  Available options are to configure Persistent Chat Policies on a Global level (which is provided by default and not able to be deleted), Site Level, Pool Level, or User Level.  Because we’ll be using the Global Level, go ahead and choose the Global option and choose to edit it.

We can see that the only real option is to enable or disable Persistent Chat.  I chose the option to enable Persistent Chat.  Because this is a Global Policy, it will enable Persistent Chat for the entire organization.

After you commit, you will now see a new icon be displayed in your Lync 2013 client after you wait about 30 seconds or so and then sign out and then sign back in.

Let’s have a look at the Persistent Chat Configuration.  Unlike the Persistent Chat Policy which we can modify at the Global, Site, and User level, Persistent Chat Configuration can only be modified at the Global, Site, and Pool Level.  There’s no User Level.

In the configuration, we have the following options:https://www.shudnow.net/wp-admin/post-new.php

  • Default chat history – define the number of chat messages that will be processed for each room upon first request. By default, the number is 30. This is the global default, and administrators can disable chat history per category
  • Maximum file size – select the maximum file size of each chat history. By default, the number is 20 MB (20,000 KB).  This setting is enforced on the server because custom applications or legacy Group Chat clients using Office Communications Server 2007 R2 Group Chat Server or Lync Server 2010, Group Chat can post files to a room. The Lync 2013 Preview client does not have file upload/download capability, so if you have a pure Lync 2013 Preview deployment or Lync 2013 Preview client, it is not possible to post files in a Persistent Chat Server chat room.
  • Participant Update Limit – select the limit for participant updates. By default, the number is 75. This limit indicates the maximum number of participants in a given room beyond which Persistent Chat Server stops sending roster updates to connected clients about who is present in the room.
  • Room Management URL – select the room management URL. This is the URL for a web-based custom room management.
    If you want to customize your room creation experience and include your specific business workflow, you build a custom room management solution, host it somewhere and put the URL here. This URL is sent down to the client so that when a user tries to view/create a room, he is directed to your custom room management solution.

For this article series, we’ll leave the defaults selected.

We’ll now have a look at chat room categories. A chat room category is a logical structure for organizing chat rooms. A category defines a default set of access control lists (ACLs) for controlling the users and user groups who may create or join the chat rooms. You can also use categories in multiple Persistent Chat Server pool deployments and to enforce ethical walls between different subdivisions within their organizations

Chat room categories may contain chat rooms but not other categories. Each category describes its contents with metadata such as Name and Description. In addition, the category has properties which can be set to control the behavior of the chat rooms belonging to it, such as if the chat rooms allow Invitations, or File Uploads or contain Chat History.

After choosing new, we’re asked to choose a specific Persistent Chat Pool.  If you had chosen to deploy a Persistent Chat Server instead of a Pool, you would choose the server. Or if we had multiple Persistent Chat Servers/Pools, we would choose the specific Persistent Chat Server or Pool.

Let’s go ahead and configure our category.  By default, the highlighted options “Enable invitations” and “Enable file upload” were disabled.  I chose to enable these options.  The options below do the following:

  • Enable invitations – if selected, the category supports rooms that may have invitations on or off; if cleared, the rooms of this category are not allowed to have invitations.
  • Enable file upload – if selected, the rooms of this category can enable or disable file uploads; if cleared, the rooms of this category are not allowed to have file uploads.  This setting is enforced on the server because custom applications or legacy Group Chat clients using Office Communications Server 2007 R2 Group Chat Server or Lync Server 2010, Group Chat can post files to a room. The Lync 2013 Preview client does not have file upload/download capability, so if you have a pure Lync 2013 Preview deployment or Lync 2013 Preview client, it is not possible to post files in a Persistent Chat Server chat room.
  • Enable chat history – if selected, room chats become non-persistent. If compliance is enabled, room chats will be saved but users will not be able to access older messages.

I also chose to add the John Doe user to this category which I called Sales. If you scroll down, there are two additional sections where you can deny certain users and add creators. Creators are people who can create chat rooms and assign managers to specific chat rooms they create.

Now it’s time to configure our Chat Rooms. Configuring chat rooms is commonly handled by users or other central teams using Windows PowerShell command-line interface; an administrator typically does not manage chat rooms. However, if you have to create and manage rooms, you can use the Windows PowerShell command-line interface, or add yourself as a member to a room, and use the Lync 2013 Preview client.

The following are things to note about Chat Rooms:

  • Administrators can delete older content (for example, content posted before a certain date) from any chat room to keep the size of the database from growing greatly. Or, they can remove or replace messages considered inappropriate for a given chat room. (or consider, unsuitable)
  • End-users, including message authors, cannot delete content from any chat room.
  • Chat room managers can disable rooms, but cannot delete rooms. Only administrators can delete a chat room after it’s created.

To see all the Lync Management Shell commands for managing Chat Rooms, please see here.

I decided to create a sales chat room called Sales Forecast within our sales category in which John Doe is assigned by running the following command:

Even though you added John Doe to the Category, that does not assign the users to chat rooms.  As stated previously, a category defines a default set of access control lists (ACLs) for controlling the users and user groups who may create or join the chat rooms. You can also use categories in multiple Persistent Chat Server pool deployments and to enforce ethical walls between different subdivisions within their organizations,

Let’s go ahead and add John Doe directly to the Sales Forecast Chat Room. To add John Doe to the Sales Forecast Chat Room, type the following:

Note: You can also add managers which can add members to a Chat Room right from the Lync 2013 client.  And if you recall in the Category for Sales, we could create creators.  Creators can create chat rooms and assign managers to chat rooms within categories they are assigned as a Creator.

Without needing to sign and sign back into the Lync 2013 Client, we see that the new Chat Room automatically shows up for John Doe.

Now if you double-click on Sales Forecast, we enter the chat room in which all data is persistent.

Oh and just to mention, all of this works without having to create a PGPool.15lab.net A record in DNS. The Lync Server 2013 Front Ends handles all the routing internally without any DNS queries.

If you go back to the Followed Section, you see an Ego Filter.  This allows you to be notified on key words.  If you right-click and edit your Ego filter, you will see it allows you to set up Topic Feed Options and Notification Options.  One thing I wanted to point out is that by default, it is configured to notify you if someone types your name in a Persistent Chat Room you are a member in.

Conclusion

In Part 1, we took a look at preparing the environment for the Persistent Chat Pool.  In Part 2, we took a look at the installation process in the Lync 2013 Persistent Chat Pool.  In the Part 3, we  finished up the article series by taking a look at the client capabilities utilizing the Persistent Chat features.

There’s a lot more to learn in Persistent Chat and I feel I showed a small glimpse into the feature set.  But I hope you enjoyed the glimpse into the new Persistent Chat configuration  and capabilities.  I definitely think it’s a huge improvement over Group Chat in previous versions.

Share

Lync Server 2013 Release Preview Persistent Chat with Enterprise Pool – Part 2

This article series is to guide you through the entire Lync Server 2013 Persistent Chat deployment process from scratch.  In Part 1, we took a look at preparing the environment for the Persistent Chat Pool.  In Part 2, we’ll take a look at the installation process in the Lync 2013 Persistent Chat Pool.  We’ll then finish up the article series with Part 3 by taking a look at the client capabilities utilizing the Persistent Chat features.

Part 1

Part 2

Part 3

Persistent Chat Installation

In Part 1, we configured the Topology to support a Persistent Chat Pool.  We then finished up Part 1 by publishing the topology.  Now we’ll go ahead and install Persistent Chat on our Persistent Chat Server.

After running the Lync Server 2013 setup, just like with any previous release, we need to install the Visual C++ Tools.

Choose the location you want to install Lync Server 2013.

After we click install, read the licensing agreements and then Lync Server 2013 will install the Core Components.  We’ll then hit the Deployment Wizard where you’ll want to click “Install or Update Lync Server System.”

Choose Step 1 to install the Location Configuration Store.  This will install SQL Express on our Persistent Chat Server which will contain a copy of the Central Management Store which contains a copy of our Topology.

Because this is a domain joined machine, we’ll choose “Retrieve directly from the Central Management store.”  This will query Active Directory to find the location of the Pool which owns the Central Management Store database.

You’ll see the following after the Local Configuration Store has been installed which checks if all server prerequisites are installed and then installs the Local Configuration store (SQL Express) with a copy of the Central Management Store.

Go ahead and proceed with Step 2: “Setup or Remove Lync Server Components.”  This will install the Persistent Chat role.

As you can see, there’s only one thing below that gets installed which is the MGCServer.msi.

We’ll now go ahead and start on Step 3 to procure a certificate from our internal CA and the assign the certificate.

Click Request to begin the procurement process for our Persistent Chat Certificate.

I’m not going to go through the entire Persistent Chat certificate procurement process as it’s just like any other standard certificate procurement process (Organization Name, Friendly Name, etc…).  You will see though, since we configured our Persistent Chat environment in a Persistent Chat Pool configuration instead of a single server, the certificate will have a Common Name of PGPool.15lab.net.  We will not be adding any SAN names to the certificate which is an option provided on the screen after choosing a Subject Name.

After specifying all of our options, the Lync Setup process will contact our Online CA to procure the certificate.

We then have the option to assign the certificate for Persistent Chat.

After assigning it, we can verify that the certificate was successfully assigned.

Go ahead and run Step 4 to start the Persistent Chat services.

We can verify that the services started successfully.

But to be extra safe, let’s start services.msc and verify the Lync Server 2013 Persistent Chat service is running as well as any other Lync Server 2013 services.

Conclusion

In Part 1, we took a look at preparing the environment for the Persistent Chat Pool.  In Part 2, we took a look at the installation process in the Lync 2013 Persistent Chat Pool.  In the Part 3, we’ll finish up the article series by taking a look at the client capabilities utilizing the Persistent Chat features.

Share

Lync Server 2013 Release Preview Persistent Chat with Enterprise Pool – Part 1

Now that Lync Server 2013 Release Preview is here, I thought it would be nice to create an article on how to deploy a Persistent Chat (formerly Group Chat) Server while connected to a SQL 2012 Backend Server.

This article series is to guide you through the entire Lync Server 2013 Persistent Chat deployment process from scratch.  In Part 1, we’ll take a look at preparing the environment for the Persistent Chat Pool.  In Part 2, we’ll take a look at the installation process in the Lync 2013 Persistent Chat Pool.  We’ll then finish up the article series with Part 3 by taking a look at the client capabilities utilizing the Persistent Chat features.

Part 1

Part 2

Part 3

Lab Setup

Guest Virtual Machines

There will be four virtual machines being introduced into the lab; one Windows 2008 R2 Global Catalog with Certificate Services, one Front End Enterprise Edition Server, one SQL Server 2012 BackEnd, and one Windows 7 x64 Client.

Assumptions

  • You have a domain that contains at least one Server 2003 SP2 Domain Controller (DC)
  • You have configured the IP settings accordingly for all servers to be on the same subnet or be on subnets that are routable to eachother.
  • You have at least SQL 2008 R2 server installed if doing an Enterprise Edition deployment. We will be using SQL 2012 installed on Server 2008 R2 SP1.
  • You have a copy of Lync Server 2013 Client Release Preview.

Computer Names

Global Catalog Cserver – B-DC1

Lync Server 2013 Enterprise Edition Release Preview – B-L15FE1.15lab.net

Persistent Chat – B-L15PG1.15lab.net

SQL Server 2012 – B-S15BE1.15lab.net

Windows 7 Client – B-Client1.15lab.net

General Information on Topology Support

Persistent Chat installation is very different than OCS 2007 R1 or R2 installation.  You can see my guide on deploying Group Chat with OCS 2007 R2 here.  The first thing we will see is that there is now a Persistent Chat section in Lync 2013 Topology Builder. In Lync Server 2010, it was not supported to collocate Group Chat Databases on the same SQL Server (not just instance, but server) as other Lync 2010 databases.  This is now supported in Lync Server 2013.

If using Lync Server 2013 Standard Edition Front End, it is supported to collocate the Persistent Chat role on the Lync Server 2013 Standard Edition Front End and you can also deploy the Persistent Chat role on its own dedicated box.  The Persistent Chat Database (including Compliance Database) is supported for installation on the Lync 2013 SQL Express instance utilized by a Lync 2013 Standard Edition Front End Server.

If using Lync Server 2013 Enterprise Edition, it is not supported to collocate the Persistent Chat role on the Lync Server 2013 Enterprise Edition Front End.  The reason for this is the the way Lync 2010 Pools (which include CMS, Monitoring, and Archiving) DR work is different than the way Persistent Chat Pools work.  With Enterprise Edition Pools, DRs operate by pairing Enterprise Pools with another Enterprise Pool in a DR Site.  A service called the Backup Service is installed when you pair pools that replicate Enterprise Edition Pool databases (along with the CMS, Monitoring, and Archiving Databases) to the DR Enterprise Edition Pool.

With a Persistent Chat Pool, a single Persistent Chat Pool is stretched across two locations.  This Pool supports up to 8 Persistent Chat Pool Servers where four can be active at any given time. Persistent Chat Pools will use SQL Mirroring to replicate their databases from one Site to the other Site.  However, unlike the Pool Pairing which uses the Backup Service, Persistent Chat Servers use a file share (these file shared are not part of the Lync Server 2013 Topology and you can read more about how these file shares are configured here and here) to replicate SQL database data from the SQL Mirror Instance in the primary datacenter to the SQL Mirror Instance in the secondary/DR datacenter.

In the below example, if there is good connectivity between your sites (low latency and high bandwidth), you will have one Group Chat Pool with up to 4 Group Chat Servers active at any given time and either site can be hosting Active servers at the same time.

In the below example, if there is not good connectivity between your sites (high latency and low bandwidth), you will have one Group Chat Pool with up to 4 Group Chat Servers active at any given time and you will only want one site  hosting Active servers at any given time.

Hopefully that gives you some insight as to why collocation for Persistent Chat role is supported on Standard Edition Front End Servers and why it’s not when using Enterprise Edition Front End Servers.

Prerequisites

Because we need a dedicated Persistent Chat Server, we need to install prerequisites which depend on the operating system (Windows Server 2008 R2 does not have these prerequisites whereas Windows Server 2012 do).

  • Software Installation
    • .Net Framework 4.5 RC (available here)
    • PowerShell 3.0 (available here)
    • Windows Identity Foundation (available here)

Installing Persistent Chat

When taking a look at the Lync Server 2013 Topology Builder, we can see there’s a new Persistent Chat Pool section.

Go ahead and right-click on Persistent Chat pools and create a new Persistent Chat Pool.

I decided to choose to create a Highly Available Persistent Chat Pool instead of a single server even though for now, I’m only going to deploy a single Persistent Chat Server.

Go ahead and add the server FQDN of your Persistent Chat Server.

Define the name of the Persistent Chat Pool.  We won’t be enabling compliance in this article but I will be writing a new article in the future when Lync Server 2013 RTMs that shows a Persistent Group Chat Pol with compliance and most likely with DR.  We only have one Central Site currently in my Lync Server 2013 Lab deployment called Chicago.

As you can see, we can utilize the same SQL Instance that our Enterprise Front End Pool uses.  In the previous screenshot, if we were doing Persistent Chat DR, we would have chosen the “Use backup SQL Server stores to enable disaster recovery” option.  If we chose that option, the next screen after “Define the SQL Store” would ask us to define the SQL Stores in the secondary/DR datacenter.  But, we’re not choosing that option at this time.

We now define our File Store.  This can be the same file store used by the Enterprise Front End Pool.

Choose the Front End Pool that Persistent Chat will utilize.  Previously, we chose to use the Central Site, Chicago.  We would now be able to select any pools that are deployed within the Chicago Site.

After finishing up the above, we can now go ahead and publish the Lync Topology.

One of the previous pains with deploying Group Chat in OCS and Lync Server 2010 is that there were manual steps to pre-create databases and manual permission assignment.  It felt a bit alien in comparison to how the rest of the OCS and Lync Server 2010 roles were deployed.  Now, in Lync Server 2013, Persistent Chat no longer requires this manual work and is now has a very familiar and native installation experience.

After publishing the topology, we can see everything went successfully and the databases were created.

Conclusion

Thanks for reading Part 1 where we took a look at preparing the environment for the Persistent Chat Pool.  In Part 2, we’ll take a look at the installation process in the Lync 2013 Persistent Chat Pool.  We’ll then finish up the article series with Part 3 by taking a look at the client capabilities utilizing the Persistent Chat features.

Share

« Previous PageNext Page »