Friday, March 31, 2017

Chime for Lync 2.6 - User Interface Localization

Along with the guest landing page and other enhancements that I mentioned in previous posts, we are also adding text localization capabilities to our next release.

In the most recent version of Chime, the UI is only available in English. However, we realize that this is not convenient for all of our customers, especially those who do not have English as their primary language. We would like to provide the option of viewing the Chime application in our customers' native languages.

With Chime 2.6, you will have the option of viewing Chime in the following languages:

  • German
  • Spanish
  • French
  • Finnish
This means that if you would like to view Chime in German, you will simply choose German in the UI, and all of the translations are done for you immediately. These features will be available out of the box, with no extra configuration on the customer's side.

Is there a language that you would like us to add translations for? If so, we would love to hear from you! Please let us know in the comments or e-mail us at

Thank you for reading. Please visit for more information on the Chime service desk application.

P.S - I will be adding screenshots soon!

Friday, March 10, 2017

Improved Chat Routing with Skill Tags - What's Next with Chime

Chime is already a great way to improve customer service, as well as agent efficiency in a service desk environment, but we are always looking for ways to improve Chime and add features that make it easier on both customers and service desk agents.

Chime is built on a robust routing engine that has the ability to use specific chat routing methods when looking for an available agent to help. When someone is looking for help and starts a chat using Chime, there are multiple different ways that Chime can go about finding the right agent.

We offer 3 different chat routing methods that are available out of the box. All of the Chime routing options exclude agents who are not set as 'available' in Lync/Skype for Business, so if an agent is set as 'busy' or 'away', they will not get chosen for incoming chat requests.

The most basic routing method, which is called the hunt, goes from one available agent to the next until one of them picks up the chat. There is no specific order in which agents are chosen with this routing method.

The second routing method is Longest Idle, which chooses the agent who has not accepted any chats for the longest period of time (compared to other agents). For example, if Jane has accepted 3 chats in the past hour, but John has not serviced any chats in the past 1/2 hour, the next chat request that comes in will be assigned to John.

The third chat routing method is built around the concept of 'Skill Tags'. Skill tags can be associated with specific agents, so if Jane is great at handling password resets and account information, she might have the 'Password' skill tag. Since John is an expert at hardware, he might have the 'Hardware' skill tag. When a customer starts a chat in the web client, they will see a list of the available categories (which are the skill tags) to choose from, in order to connect with the right agent.

In the next release of Chime, we have made updates to the skill tag routing functionality, and added some additional features so that skill tags can be fully utilized. Here are some updates we have made:

1. Skill tags will be defined at the queue level, and can be associated with agents from there.
2. Routing using skill tags is now available with Lync/Skype for Business chats, since previously it only worked with Chime web client chats.

In Chime 2.6 it will be a straightforward process to add skill tags, and then associate those skill tags with agents, since all of it can be done within the settings for each queue.

In both Skype for Business chats and Chime web client chats, incoming users will see a list of all problem areas, or skill tags, and then choose which one is most relevant. The skill tags are completely customizable, and each queue can have a different set of skill tags.

Here are some screenshot examples of the user experience in Lync/S4B:

Thank you for reading, and I hope to hear from you at with any questions!

Friday, February 24, 2017

Next Generation of Chime Service Desk - Coming Soon

Hi there,

I want to give you a glimpse into what the next upcoming release of Chime will look like. In Chime 2.6, we want to focus on improving the customer experience, so the UI has been completely reconstructed to make it easy for people who are looking for help.

There are two areas we have added to Chime: a Chime landing page, and a Guest Dashboard. The Chime landing page is what users will first see when they log into Chime. From a user's perspective, in order to eliminate confusion for all users, the Chime landing page allows people to choose the category they need help with by using skill tags such as password reset, hardware issues, and other common issues. Next, the user chooses the mode of communication they wish to use: a Skype for Business chat, or the Chime web chat. Then Chime will open up that chat for them.

The Chime Guest Dashboard is an additional page for users to access where they can view all of their previous interaction with the help desk. Some of the things they will see on the Guest Dashboard are chat history, chat ratings, alert notifications, and options for starting a chat.

The Chime landing page and Guest Dashboard is a helpful way to give users a quick and easy way to contact the help desk, as well as transparency into their previous chat conversations.

Here is what the Chime landing page looks like:

Here is the Guest Dashboard:

These are just some of the improvements that we have worked on in order to enhance the user experience, and eliminate as much confusion as possible.

Thank you for reading!

Tuesday, January 31, 2017

Delete all Exchange mailbox content using PowerShell

This can be a useful script for anyone who has the need to delete the entire contents of an Exchange mailbox. We have some test accounts that can get overridden with emails if they're not cleaned out. This script prints out a summary of how many items are in the mailbox and then deletes them all. It was tested against Exchange server 2013.

$id = ""

#See how many items are in mailbox
Get-MailboxFolderStatistics $id | Select Identity, ItemsInFolder

#Delete items in mailbox
Search-Mailbox -Identity $id -DeleteContent -force

Solving Exchange server 2013 out of disk space

I ran into a problem a little while ago where our on-premise Exchange 2013 environment was acting weird. An EWS (Exchange Web Services) application we have was behaving oddly such as throwing ServiceResponseExceptions with messages like "the folder in which items were to be saved could not be found". After some digging, I discovered that there was virtually no available disk space on the Exchange server. This environment had been a vanilla set-up to perform some tests with EWS and there had been load going on and off for months.

After some digging the following discussion on SpiceWorks helped solve the problem (discussion here). The issue was that by default Exchange does not purge any logs, and since we did not have any routine back-up or clean-up occurring, they were growing un-checked. 
"Exchange Server database transaction logs record all changes to an Exchange Server database. Over time, these log files accumulate and use all the available disk space if they are not periodically removed from the hard disk." (ref)
By using Scanner, I confirmed that the fat cat on the server was the Exchange logging. For our environment, we didn't care about backing up changes to the database. For this case, enabling circular logging was the solution because it enabled the Exchange server to automatically get rid of unnecessary log files and by so freeing up disk space. I used the directions here to enable circular logging, which involved dismounting and remounting the database.

Once that was done, I used this suggestion:
"To speed up new log file creation and the automatic deletion process, you can send yourself an e-mail message with a 5-megabyte (MB) attachment" (ref)
Oddly enough, it worked and shortly thereafter the Exchange server's available disk space increased and the EWS application behaved normally again.


Create Lync-enabled Active Directory users in bulk with PowerShell!

This blog post explores how to create Lync-enabled users in Active Directory in bulk using PowerShell. This is a general outline for creating a bunch of generic accounts in Active Directory and then configuring them to be able to sign on to Skype for Business. This is tested against Skype for Business server 2015. The use case here is how to create a bunch of accounts for load testing.

The accounts will look as follows:

Windows logon (username): TestUser01
First name: Test
Last name: User 01
Display name: Test User 01
Password: default_password01!

This pattern will be used to create 1000 test user accounts.

Step 1: Create users in Active Directory

This script uses the ActiveDirectory PowerShell module. The variables startIndex and endIndex can be modified to create different ranges of users, for example if you need 25 more users at some point, you could change the startIndex to 1001 and the endIndex to 1025.

Import-Module ActiveDirectory
$startIndex = 1;
$endIndex = 1000;
$totalusers = $endIndex - $startIndex + 1

Write-Host "Starting"

for ($i=$startIndex; $i -le $endIndex ; $i++) 
 $userID = "{0:00}" -f ($i)
 $userName = "TestUser$userID"
 $givenName = "Test" 
 $surname = "User $userID" 
 $displayName = "$givenName $surname"

Write-Host "Creating AD user" ($i) "of" $totalusers ":" $userName

New-ADUser `
 -Name $userName  `
 -Path  "OU=MyFooBar,DC=Acme,DC=com" `
 -EmailAddress ("$")`
 -SamAccountName $userName `
  -GivenName $givenName `
  -Surname $surname `
  -DisplayName $displayName `
 -AccountPassword (ConvertTo-SecureString "default_password01!" -AsPlainText -Force) `
 -Enabled $true

Write-Host "Done"

Step 2: Enable users in Skype for Business 2015

This script uses the pattern we know that our test users are created from to identify users by their display name and enable them in Lync.

$lyncServer = ""
$domain = "";
$startIndex = 1;
$endIndex = 1000;
$totalusers = $endIndex - $startIndex + 1

Write-Host "Starting"

for ($i=$startIndex; $i -le $endIndex ; $i++) 
 $userID = "{0:00}" -f ($i)
 $userName = "TestUser$userID"
 $givenName = "Test" 
 $surname = "User $userID" 
 $displayName = "$givenName $surname"

Write-Host "Enabling AD user for Lync " ($i) "of" $totalusers ":" $userName

Enable-CsUser -Identity $displayName -RegistrarPool $lyncServer -SipAddressType SamAccountName -SipDomain $domain

Write-Host "Done"