Haiku #166

Take me out to the

Ball game? No, thank you: I've got

Civic addresses.

 

In case any of you were wondering whether or not life is fair, here's your answer: life is not fair.

 

How do we know that life isn't fair? Well, many years ago – hey, we said "many," not "many, many" – the author of today's haiku played on a softball team with his three brothers. During the course of their years on the team, there were numerous occasions when the following situation would occur:

 

· Runner on first base: One of the Stemp brothers

· Runner on second base: One of the Stemp brothers

· Runner on third base: One of the Stemp brothers

· Batter standing at the plate: One of the Stemp brothers

 

Based on that, the author of today's haiku long-envisioned a team made up entirely of Stemp brothers: one brother at each of the 10 positions on a slo-pitch softball team, each with a jersey with the name Stemp emblazoned on the back. Unfortunately, the family was six brothers shy of a softball team, and no matter what the author tried he could never convince his mom and dad to produce six more boys in rapid-fire succession simply so he could have his all-brothers softball team.

 

Some people just won't make sacrifices, not even when it involves something as important as slo-pitch softball.

 

At any rate, the author of today's haiku had to adjust his vision to a team composed of brothers and sons/nephews. That was something of a long-term goal, seeing as how – at the time, anyway – there weren't any sons/nephews.

 

But now there are sons/nephews, a whole passel of them. And after several years of wheedling, cajoling, negotiating, and whining, one of the nephews finally gave in to his uncle and arranged for the family to play in a softball tournament this summer. And when exactly will that tournament take place? You got it: on a weekend when the author of today's haiku, the person who has dreamed of this moment for many, many years, will be out of town.

 

Way out of town.

 

Life is definitely not fair.

 

So is this the greatest injustice that has happened to anyone, ever, in the history of the world? Well, to be honest, yes, it is: the author of today's haiku gave this considerable thought, and couldn't come up with anything that could possibly be worse than not getting to play on this softball team. And yet, he remains his usual cheerful and optimistic self. Why? Because while he might not have slo-pitch softball, he has something even better: the CsLisCivicAddress cmdlets. And by that he means both of the CsLisCivicAddress cmdlets: Get-CsLisCivicAddress and Test-CsLisCivicAddress!

 

Good question: what is so great about the CsLisCivicAddress cmdlets? Well, as you probably know, Microsoft Lync Server 2010 introduced the Location Information Service (the Lis in CsLisCivicAddress). This new service (more commonly known as E9-1-1) enables emergency responders (like 911 operators) to determine a caller’s geographic location without having to ask the caller for that information. In Lync Server 2010, the geographic location is determined based on mapping the caller’s port, subnet, switch, or wireless access point to a specific location.

 

Note. Pretty exciting? That's putting it mildly: it's every bit as exciting as walloping a grand slam home run over the centerfield fence.

 

Or at least the author of today's haiku assumes it's every bit as exciting as that. He's always been more of a singles and doubles hitter, although he did hit an inside-the-park home run once when the centerfielder dove for a ball, missed it, and then sprained his ankle and couldn't get up and retrieve the ball.

 

We won't explain how you get all this location information into your E9-1-1 database; that's a big job, and it goes way beyond what we can explain in one daily haiku. (If you'd like to see how we've covered some of that in a bunch of daily haikus, go to our Haiku Archive Page and look for the section labeled Enhanced 911). What we will explain today is how you can review the location information once it has been entered into your E9-1-1 database. For example, if you want to review all the unique locations entered in the database then all you have to do is run the following command:

 

Get-CsLisCivicAddress

 

If you'd like to limit the returned data to addresses in, say, a single city, well, then use a command like this:

 

Get-CsLisCivicAddress | Where-Object {$_.City –eq "Redmond"}

 

Or maybe all the addresses found on Main Street:

 

Get-CsLisCivicAddress | Where-Object {$_.StreetName –eq "Main" –and $_.StreetSuffix –eq "St"}

 

Etc., etc.

 

For each address you'll get back information similar to this:

 

HouseNumber : 1124

HouseNumberSuffix :

PreDirectional : N

StreetName : Main

StreetSuffix : St

PostDirectional :

City : Redmond

State :

PostalCode : WA

Country : US

MSAGValid : False

 

Most of that should be pretty self-explanatory, with one exception: the very last property in the list, MSAGValid. What the heck is an MSAGValid property?

 

Well, we'll tell you: the MSAGValid property indicates whether or not the address has been validated against the Master Street Address Guide (MSAG) maintained by your E9-1-1 service provider. If you've run a validation test and if the address in question really is in the Master Street Address Guide then MSAGValid will be set to True. If you haven't run the test, or if the address doesn't show up in the Master Address Street Guide, then MSAGValid will be set to False.

 

Does it really matter whether or not an address has been validated against the Master Street Address Guide? To be honest, that depends on why you're using the Location Information Service. If you want to use it for E9-1-1 emergency calls then yes: emergency responders generally prefer to go to addresses that actually exist as opposed to addresses that don't actually exist. And even if you're not using the E9-1-1 service it still helps to have validated addresses. If a user logs on from a validated location then his or her location information will automatically be set in Microsoft Lync. If you log on from a location that has not been validated then Lync users will have to click Set My Location and select their location from the suggested list of locations. To get the full benefit of the Location Information Service you need to have validated addresses.

 

Note. How can you find an E9-1-1 service provider capable of validating addresses? Well, a good place to start would be the Microsoft Lync Communication Service Providers page.

 

As long as we're on the subject, here's a command that retrieves a list of all your civic addresses that have not been validated:

 

Get-CsLisCivicAddress | Where-Object {$_.MSAGValid –eq $False}

 

So much for Get-CsLisCivicAddress; what about Test-CsLisCivicAddress? Well, assuming you have contracted with a service provider, you can then use Test-CsLisCivicAddress to validate your addresses. Want to validate all your addresses? Then run this command:

 

Get-CsLisCivicAddress | Test-CsLisCivicAddress -UpdateValidationStatus

 

What this command does is retrieve all your addresses and then pipe those addresses to the Test-CsLisCivicAddress cmdlet; in turn, Test-CsLisCivicAddress checks each address against your service provider's Master Street Address Guide. As for the UpdateValidationStatus parameter, well, that parameter tells Test-CsLisCivicAddress to update the MSAGValid property for each address it tests. If the address can be found in the Address Guide then MSAGValid will be set to True; otherwise, MSAGValid will be set to False.

 

If you'd rather just run the test, without changing the value of the MSAGValid property, then just leave off the UpdateValidationStatus parameter:

 

Get-CsLisCivicAddress | Test-CsLisCivicAddress -UpdateValidationStatus

 

And, of course, you don't have to check all your addresses each time you run Test-CsLisCivicAddress. For example, this command checks only those addresses that have not yet been validated:

 

Get-CsLisCivicAddress | Where-Object {$_.MSAGValid –eq $False} | Test-CsLisCivicAddress -UpdateValidationStatus

 

You can even use Test-CsLisCivicAddress to test any address, even if that address isn't currently in your database. For example:

 

Test-CsLisCivicAddress -HouseNumber 1234 -HouseNumberSuffix "" -PreDirectional "" -StreetName Main -StreetSuffix St -PostDirectional "" -City Redmond -State WA -PostalCode 99999 -Country US

 

The only goofy part here is that you have to include all the parameters, even when a parameter (such as HouseNumberSuffix) doesn't have a value. But it works.

 

Note. Or, we should say, it works as long as you have configured a service provider. If you haven't, you'll get an error like this one:

 

Test-CsLisCivicAddress : Exception of type "Microsoft.Rtc.Management.Lis.ServiceProviderConfigurationNotFoundException' was thrown.

 

Nobody writes error messages like those of us here at Microsoft, do they?

 

And there you have it: the CsLisCivicAddress cmdlets. Let the brothers and the sons and the nephews go play in a silly old softball tournament: the author of today's haiku will have way more fun retrieving and testing civic addresses. Way more fun.

 

Or so he keeps telling himself.

 

See you tomorrow!