Archive

Author Archive

Norway, Here I Come!

October 3, 2014 Leave a comment

One of the great things about being involved in The UC Architects is all the people we meet. I’m part of a team of 15 of some really smart UC guys with TONS of experience. Nearly all are MVPs, some are MCMs, and all have a great deal of knowledge. With the collective reach of the individuals, we’ve made some amazing contacts.

So I was really excited (and honored) when I was invited to attend & host an episode at Norwegian Lync day on October 14. The Norwegian Lync Day will take place in Oslo, Norway, a locale I’ve yet to visit. It’s a one day conference with two tracks of sessions around Lync. Everything from Wi-Fi and BYOD, analytics and validation, to topics such as Hybrid, Skype, telephony and mobility. See the full session list in English here. With the exception of the keynote, everything else will be presented in English, which is good, because my Norwegian is pretty sad.

A pile of MVPs will be there, from fellow UC Architects host Steve Goodman and fellow Modality Systems colleague Tom Arbuthnot, to others including Martin Lidholm, Ståle Hansen, Tommy Clarke, Johan Delimon, and Adam Gent. MVPs will be participating in an Ask The Experts style event that will include Q&A, white boarding, etc. There will be tons of vendors there, so you can check out hardware, software, and services that are compatible with Lync.

My MVP and UC Architects colleague Stale Hansen has done a great video describing the event. Check it out below.

If you’re attending Norwegian Lync Day, stop by our live recording at 1600 and say hi! Or find me. I’ll be wearing a UC Architects t-shirt.

See you there!

Review: Logitech ConferenceCam CC3000e – Your Next Lync Conference Room System

July 8, 2014 1 comment

At the 2014 Lync Conference, Logitech showed their inexpensive conference room device called the ConferenceCam CC3000e. It got a lot of attention for several reasons. The first is the relatively low list price of $999. The second was the features that this unit contained. After seeing a quick demo at the conference, and talking to some folks at Logitech, I couldn’t wait to get my hands on one of these to play with. Finally, it showed up and I’ve been using it since.

The system comes with several key components:

cameraCamera. The free standing camera unit has a 1080p HD camera on a motorized pan/tilt unit that’s controlled by either the control unit, the infrared remote control, or a small client plug-in that supports both local and remote (far end) control. The client plug-in is available for Lync 2010, 2013, Skype, and Cisco Jabber. The camera supports up to 30 frames per second, 10x zoom, and a 90 degree field of view, pans 260 degrees, and tilts 130 degrees. This yields excellent video quality and flexibility. The camera supports H.264 & SVC, which allows for the offloading of video processing onto the unit itself instead of the PC it’s connected to. When not in use, the camera reverts to a position aimed down and away from users. When it’s next used, it returns to its previous “home” position. The camera can be table mounted, wall mounted, or even attached to a tripod with its industry standard threaded insert on its bottom.

console and remoteConsole unit. This is the heart of the unit, and contains two full-duplex omnidirectional mics that pick up conversations for everyone within about 20 feet in your conference room. Unlike other systems, the CC3000e doesn’t require separate mic pods. The unit has both touch controls for common features such as adjusting the camera for pan, tilt, and zoom, as well as on/off hook, mute, volume, etc. Also located on the control unit is a digital display that shows call information including called number or caller ID, and a call timer. The console also support both Bluetooth and NFC connectivity to devices.

Remote control. This is a very simple remote that includes all of the buttons that the console unit has, except for the Bluetooth button. The buttons are large and easy to see in a dimly lit room. The remote sits on the console unit when not in use.

hubHub. This is the center of all physical connections. Among the connections to this hockey puck sized unit are a USB connection to a PC, a cable to the camera, a cable to the console unit, and a small power cable. This can be mounted or located out of sight. A small LED on the front indicates it has power.

Testing. I’ve been playing with this unit for several weeks now. This is one slick unit. It’s easy to set up and get going, and the controls are fairly intuitive. Even without installing the client plugin, I was up and running in seconds. An “idiot proof” pictogram on the inside lid of the box made connecting things simple.

I set my Lync client to default to the CC3000e, and started making audio and video calls. The sound was fabulous on both sides. The camera has great quality, and the ability to pan/tilt/zoom was something I was constantly playing with. I found myself using the CC3000e as my defacto device for all calls. Moving around my office, people in the conference could still hear me clearly, and I could adjust the camera if I decided to sit elsewhere in the room. A company initiative to add video to every call meant I had plenty of opportunities to test the video features. And, a nice, bright, obvious LED indicator shows muted/unmuted status that’s visible anywhere. This is a nice feature, as a common complaint I hear is that people often don’t notice they’re muted when using just the Lync client. With the CC3000e, you can’t miss it.

Updating the firmware of the device requires the installation of a small app, and it’s pretty straightforward. Personally, I’d like to see this rolled into the client plug-in instead of being a separate install/app to deal with.

As with any solution, nothing is perfect. I did notice a couple of things. First, entering a conference where you’re already muted sometimes shows the blue indicator (unmuted) instead of the expected red muted indicator. Pressing the mute button on the console quickly resolves this. But it can be a tad confusing when the client shows muted, but the console doesn’t. At any other time, the mute status on the console was correct.

Second, the console unit buttons can be a little hard to see in low light scenarios. So, when presenting something on a screen, with the lights turned low, the keys are just hard enough to make it difficult to distinguish the symbols on them. I did notice that the symbols on the remote control were easier to see. A possible solution would be backlit buttons on the console unit. But this is just a minor issue, as I don’t often have the lights turned down low.

Everything else worked great on all of my calls. I played around with putting the camera in different locations, at different heights. I tried audio from different spots in the room. And I certainly pushed all the buttons during calls. This is an excellent device that I would recommend to any org that expects up to 6-10 people in moderately sized conference rooms. It is well worth the price.

Categories: Lync Server, Reviews Tags: ,

Removing PIC Federation Configuration for AOL and Yahoo!

In November of 2012, Microsoft announced that Public IM Connectivity (“PIC”) federation for AOL and Yahoo! would be ending. Microsoft gave a good advanced warning, eventually saying it would cease on June 30, 2014. They held true to that date, and connectivity via the traditional methods is no longer available. Some have even reported that Yahoo! federation stopped working as early as April 2014.

I’ve run some reporting using Get-CsFederatedConversationDetails.ps1 and verified that other than my occasional conversations with dear old Mom, no one was using these PIC providers. So no big loss, and certainly, no business impact. But, for those orgs that DO require connectivity to AOL, such as some of the hedge fund groups, AOL does have a service that will allow your users to communicate with AOL users. It does. however, require a monthly per user fee. More information can be found at https://aimenterprise.aol.com/microsoft/.

For now, any AOL or Yahoo! contacts that users have in their contacts list will show as Presence Unknown.

It now makes sense to remove the related configuration for your Lync config – if you had it configured previously. PIC federation is configured via Public Providers. We can see the public providers configured via the Get-CsPublicProvider cmdlet, as shown below.

LSMS - before

Removing the configuration for AOL and Yahoo! can be performed with one line of code.

Get-CsPublicProvider | Where-Object {$_.ProxyFQDN -eq "sip.oscar.aol.com" -or $_.ProxyFQDN -eq "lcsap.msg.yahoo.com"} | Remove-CsPublicProvider

This will remove just the AOL and Yahoo! public providers, and leave any others, like Skype, as shown below when running Get-CsPublicProvider again.

LSMS - after

If you’re a little apprehensive about using PowerShell (and you shouldn’t be – embrace the shell!), we can also remove the public providers in the Lync Server Control Panel. Navigate to Federation and External Access>SIP Federated Providers. You’ll see a list of both public and hosted providers as shown below.

LSCP - before

Merely select the appropriate provider you’d like to remove, select Edit>Delete. Once you’ve removed both the AOL and Yahoo! providers, you’re left with any remaining public and hosted providers as shown below.

LSCP - after

Once clients refresh their config, the options for AOL and Yahoo! will no longer be available when adding new contacts.

client

Users wills still need to manually remove AOL and Yahoo! federated contacts from their contacts list, though.

Changelog: New-SignedScript

This is the changelog page for New-SignedScript. You will find a complete list of released versions, their dates, and the features and issues addressed in each. Please refer to the script’s main page for more information including download links, installation details, and more.

v1.1 – 06-10-2012

  1. Better handling when there is more than one code signing cert. Script now finds the first valid code signing cert and uses that.
  2. Better validation that the script is successfully signed

v1.0 – 09-20-2012

  1. Initial version
Categories: PowerShell Tags: , ,

Script: Get-CsFederatedConversationDetails.ps1 – See Stats About Conversations With Specific Federated Domains

May 13, 2014 9 comments

Lync 2013 logo 128x128Description

Richard Schwendiman, PFE at Microsoft, came up with a great SQL query that you could plug into SQL Server Management Studio to see time & date info for conversations with federated or PIC domains. In Richard’s case, he used the aol.com PIC domain. Since PIC federation with AOL and Yahoo is ending next month, I thought this was great timing on Richard’s part. But sometimes, Lync admins can’t login to SQL servers to run queries due to security policy. Plus, the query is something you’d have to keep handy and edit accordingly each time you wanted to get data. So I figured – hey, why not whip up a quick script to allow an admin to query SQL for this data, allowing for any domain and time frame to be specified? Poof – out comes my script.

This script will query a specific SQL server for information about a specific federated SIP domain. The domain does NOT need to be in the allowed domains list if you’re open federating. Any SIP domain name works. You can specify a start date/time in the yyyy-MM-dd format, such as 2014-05-13 using the -TimeSpan parameter. Or, you can use some handy ranges I’ve included, including LastWeek (the last 7 days), Last30Days, Last year (last 365 days), FirstOfYear or ThisYear (since Jan. 1), FirstOfMonth or ThisMonth (since the 1st of the month), FirstOfWeek or ThisWeek (since Sunday). Optionally, you can specify an end date/time in the yyyy-MM-dd format. This script will default to FirstOfYear with no end date, and aol.com for the domain. As we see below, only the SQL server holding the LcsCDR database is queried.

aol3

Now, from this output, we see that there is not a lot of communications with people on AOL since the first of the year. The upcoming change should have very little impact.

If you’re using a named instance in SQL, you can specify it as well.

The script outputs a full object, just like other cmdlets, so you can pipe it to other commands to alter the display, including sorting, or my favorite, Out-GridView, as well as outputting to files such as .csv.

Hopefully, this tool will make life a little easier in digging out data.

Syntax

Get-CsFederatedConversationDetails.ps1 [[-SqlServer] ] [[-SqlInstance] ] [[-SipDomain] ] [[-TimeSpan] <object>] [[-EndDate] <object>] [-WhatIf ] [-Confirm ] [<commonparameters>]</commonparameters></object>

Installation

Execution Policy: Third-party PowerShell scripts may require that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.

Assumptions

None

Download

v1.0 – 05-13-2014 – Get-CsFederatedConversationDetails.v1.0.zip

Changelog

See the changelog for information on what’s changed/included in each version.

 

Changelog: Get-CsFederatedConversationDetails.ps1

This is the changelog page for Get-CsFederatedConversationDetails.ps1. You will find a complete list of released versions, their dates, and the features and issues addressed in each. Please refer to the script’s main page for more information including download links, installation details, and more.

v1.0 – 05-13-2014

  1. Initial version

Script: Get-CsUpdateVersion.ps1 – See the Cumulative Update Level Of All Lync Servers

May 2, 2014 14 comments

Description

My work at Modality Systems often has me doing health checks for customer Lync environments. These can be due to customer requests, or as part of our onboarding for new managed support customers. If you’ve ever had an Active Directory Risk Assessment Program (ADRAP) or Exchange Risk Assessment Program (ExRAP), it’s quite similar. Lots of tasks to run, lots of data to sift through. So it’s always beneficial to standardize and automate the steps to get the data. The same is the case when you’re responsible for your own environment and want to ensure good health.

Just like Get-CsDatabaseUpdateStatus.ps1, Dave Howe from the Lync product group and I teamed up to automate something. In this case, it’s looking at what Cumulative Updates are installed on each server throughout a Lync environment. This script queries each pool, then finds what servers are part of that pool, and queries each server to find the CU that’s installed. It then provides an easy to read output of the entire environment (with exceptions) for easy review. As shown below, we see three multi-server pools, the version number and “friendly” Cumulative Update info.

Get-CsUpdateVersion3

The script works fine with Standard Edition servers as well:

Get-CsUpdateVersion4

In the first example, you see that the first two servers show “PSRemoting failure”. This is because the script uses PowerShell Remoting to connect to each remote server to query information (see installation notes below). PSRemoting doesn’t really work the same when dealing with non-domain joined machines, such as the first two, which are edge servers. So the script isn’t able to communicate with them via PSRemoting, and flags them. If the script can’t ping a server, it will show as “offline”. The friendly name of the CU shown is coded in the script. So I’ll update it each time a new CU is released.

By default, the script checks all pools. But you can specify a single pool by using the -PoolFqdn parameter.

Syntax

Get-CsUpdateVersion.ps1 [[-PoolFqdn] ] [-WhatIf] [-Confirm] []

Installation

This script uses PowerShell Remoting to query remote servers. PSRemoting is enabled by default on Windows Server 2012 and later, but disabled by default on 2008 R2. To enable PSRemoting on 2008 R2 servers, see Enable-PSRemoting.

Execution Policy: Third-party PowerShell scripts may require that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.

Assumptions

None

Download

v1.4 – 09-24-2014 – Get-CsUpdateVersion.v1.4.zip

v1.3 – 09-02-2014 – Get-CsUpdateVersion.v1.3.zip

v1.2 – 08-07-2014 – Get-CsUpdateVersion.v1.2,zip

v1.1 – 06-02-2014 – Get-CsUpdateVersion.v1.1.zip

v1.0 – 05-02-2014 – Get-CsUpdateVersion.v1.0.zip

Changelog

See the changelog for information on what’s changed/included in each version.

Changelog: Get-CsUpdateVersion.ps1

This is the changelog page for Get-CsUpdateVersion.ps1. You will find a complete list of released versions, their dates, and the features and issues addressed in each. Please refer to the script’s main page for more information including download links, installation details, and more.

v1.4 – 09-24-2014

  1. Added Lync Server 2013 CU6

v1.3 – 09-02-2014

  1. Added Lync Server 2010 CU12

v1.2 – 08-07-2014

  1. Added script check for updates. This is key because each time a new cumulative update comes out, the script will be updated with version info
  2. Added some preliminary code around getting version info for OWAS servers. Need to find a graceful way of getting the server names in a OWAS farm.
  3. Added Lync Server 2013 CU5

v1.1 – 06-02-2014

  1. Tweaked the PSRemoting code block for retrieving version numbers per Chris Irons. This should resolve unexpected results when querying Lync Server 2010 pools.
  2. Filtered out “Debugging Tools” “Resource Kit Tools” “Best Practices Analyzer” and “Meeting Room Portal” which could have a higher version number and cause incorrect results – thanks to Andy G for pointing that out.
  3. Shortened some of the output text to reduce the likelihood of word wrap.

v1.0 – 05-02-2014

  1. Initial version

Script: Get-CsDatabaseUpdateStatus.ps1 – See If Your Lync Databases Are Up To Date

April 30, 2014 10 comments

Description

Anyone who has updated a Lync environment with a recent Cumulative Update knows that there are often manual steps to perform after the LyncServerUpdateInstaller.exe program is finished. These are often database update functions. And often, multiple functions to update the various different databases, including the CMS, monitoring, archiving, Persistent Chat, etc. I’ve run across quite a few environments where the LyncServerUpdateInstaller.exe is run, and nothing else is done, and the client can’t figure out why things aren’t running as they expect. Fortunately, the Test-CsDatabase cmdlet will show you the current version of the database and the expected version. But then you have to manually compare each one to determine if an update is required. Of course, there are databases on the local Front End server(s), and the SQL backend server(s). Also, it’s important to review the status of SQL mirroring, and ensuring that databases are active on the principal node and not the mirror node. And that’s just part of the patching process.

Dave Howe, of the Lync product group, and I collaborated on a script that helps streamline part of this process. Dave did a lot of the initial grunt work, so he deserves a lot of the credit. I cleaned things up and optimized per some best practices.

Among the tasks that this script performs:

Determines whether database updates are required. It performs the following checks:

  1. Detects whether the pool version is Lync Server 2013 or later
  2. Detects whether database mirroring is enabled
  3. Detects whether the primary and mirror SQL servers are online
  4. Detects whether the mirror server is principal for any databases
  5. Detects whether the local machine is a FE of the given pool
  6. Detects whether the CMS is on Lync Server 2013 or later

And returns the following info:

  1. Returns list of local databases, their versions, and whether a database update is required (if the local server is a member of the pool)
  2. Returns list of backend databases, their versions, and whether a database update is required
  3. Returns list of CMS databases, their versions, and whether a database update is required

An example output is shown below. Note that the local XDS database requires an update

Get-CsDatabaseUpdateStatus2

Syntax

Get-CsDatabaseUpdateStatus.ps1 [[-PoolFqdn] ] [-WhatIf] [-Confirm] []

Installation

Execution Policy: Third-party PowerShell scripts may require that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.

Assumptions

None

Download

v1.1 – 04-30-2014 – Get-CsDatabaseUpdateStatus.v1.1.zip

v1.0 – 04-30-2014 – Get-CsDatabaseUpdateStatus.v1.0.zip

Changelog

See the changelog for information on what’s changed/included in each version.

 

Changelog: Get-CsDatabaseUpdateStatus.ps1

April 30, 2014 Leave a comment

This is the changelog page for Get-CsDatabaseUpdateStatus.ps1. You will find a complete list of released versions, their dates, and the features and issues addressed in each. Please refer to the script’s main page for more information including download links, installation details, and more.

v1.1 – 04-30-2014

  1. Fixed an issue with mangled parameter blocks. Thanks to Dave for reporting it.

v1.0 – 04-30-2014

  1. Initial version