Haiku #87

I know you're out there,

Somewhere. I should have backed up

That first database.

Do you know what's really fun about configuring all your location information for the Enhanced 9-1-1 (E9-1-1) system introduced in Microsoft Lync Server 2010? While you think about that for a moment, we'll briefly explain to any newcomers that the E9-1-1 system provides a way for Enterprise Voice users to make emergency (i.e., 9-1-1) calls and – equally important – allows emergency responders to determine exactly where that call is coming from. Big deal, you say? Haven't I always been able to make 9-1-1 calls from my landline phone and allow emergency responders to know exactly where that call came from?

Yes, you have. But that was easy: after all, landline phones are tied to a physical location. With Enterprise Voice, however, phones (which might not even be phones; they might be instances of Microsoft Lync running on a laptop computer) are definitely not tied to a physical location. Suppose you have a landline phone at home, a phone with the phone number 206-555-1298. If a 9-1-1 operator gets a call from 206-555-1298, that call pretty much has to be coming from your house; that's how landline phones work. But a call from an Enterprise Voice phone? That could, literally, be coming from almost anywhere in the world.

At any rate, the Enterprise Voice E9-1-1 system enables you to create a "wiremap" that associates all your subnets, switches, routers, wireless access points and other networking geegaws with physical locations. If enabled, the E9-1-1 system can then use all that information to determine, with reasonably good accuracy, your exact location, assuming you’re making a call from somewhere within your organization. (You can't map the entire world, but you can map all your buildings and the offices and conferences rooms and other things in those buildings.)

OK, time's up: so what is really fun about configuring all your location information for the E9-1-1 system? If you answered, "I don't know," well, that's actually a pretty good answer: to be brutally honest, there really isn't anything fun about configuring location information for the E9-1-1 system. It's an incredibly useful system, and we highly recommend it you implement it, but there's definitely a lot of work involved in configuring your wiremap.

Which is why the CsLisConfiguration cmdlets (particularly the Export-CsLisConfiguration and the Import-CsLisConfiguration cmdlets) are good to know about. We're the first to admit that it's not really a lot of fun to configure all your E9-1-1 information. And yet, there's actually something that would be even less fun: having to do that all over again because some sort of computer problem wiped out your E9-1-1 database. Does that mean that periodically backing up all that E9-1-1 information would be a good idea? Well, it's not really our job to tell people how to do their jobs.

But, yes.

And fortunately, the Export-CsLisConfiguration and Import-CsLisConfiguration cmdlets are extremely fun to use. (Well, OK. But they are extremely easy to use.) Want to back up your E9-1-1 info? Okey-doke:

Export-CsLisConfiguration –FileName C:\Backups\E911.bak

Believe it or not, that's all you have to do. Take the file E911.bak and store it somewhere safe. Now, let's say something dreadful happens and you've lost all your E9-1-1 data. Do you need to panic? Well, you can if you want to. But a better idea would simply be to use the Import-CsLisConfiguration cmdlet to restore your E9-1-1 data from the backup file:

Import-CsLisConfiguration –FileName C:\Backups\E911.bak

We'd tell you much, much more about using Import-CsLisConfiguration, but there really isn't much, much more to know. That's pretty much all there is to it.

Well, actually there is one thing: Import-CsLisConfiguration works best in a scenario where you're starting with nothing and need to re-import all your data. But suppose this happens instead. Suppose you configure your E9-1-1 system with the following records:

Record 1

Room 5

Record 2

Room 2

Record 3

Room 3

Note. No, that's not what an actual location record looks like. Needless to say, we've simplified things a bit here.

After you make a backup of this configuration, you change the location for record 1. That means that your E9-1-1 setup now looks like this (with the changes highlighted in blue):

Record 1

Room 1

Record 2

Room 2

Record 3

Room 3

Got that? In other words, the backup file and the actual database are different now. The backup file has the location for Record 1 set to Room 5, and the actual database has the location for Record 1 set to Room 1.

Does that really matter? Let's see if it does.

Suppose you now decide that, for whatever reason, you want to reimport the backup file and restore your old location database. Here's what you'll get when you run the Import-CsLisConfiguration cmdlet:

Record 1

Room 1

Record 2

Room 2

Record 3

Room 3

Record 1

Room 5

What in the – why do we have two records for Record 1? Well, to begin with, technically we don't: we have one record with the Identity Record 1 Room 1 and another with the Identity Record 1 Room 5. See the difference? With the E9-1-1 system, the entire address is used to determine the Identity of a location. For example, these two addresses have different Identities:

1291 SW Main St, Redmond, WA 98033

1291 SW Main St, Redmond, WA 98033-1291

It might look like the same location, but notice that the ZIP code is different. As far as E9-1-1 is concerned, these are two different locations, and thus require separate database records.

That's why we end up with two database records for Record 1. When we go to import the backup file, Import-CsLisConfiguration doesn't wipe out all the existing records and then replace them with the backup. Instead, it just imports all the records in the file, without deleting anything. The location Record 1 Room 5 gets imported because, well, it's in the backup file. On a practical level, we aren't really doing anything to Record 1 Room 5. It's already in the database, so it simply stays in the database.

But note that Record 1 Room 1 (the updated version of that record) doesn't get deleted: that's because the two records have different Identities (remember, the entire address is used to create the Identity) and thus are considered two separate records. That means we now have an "extra" location that might not be a real location. What the Import-CsLisConfiguration cmdlet really does is restore any records that might be in the backup file but are not in the database. What it doesn't do is replace the existing database with the old database. (In other words, it's not a traditional backup file.)

The moral of the story? It might be easier if, before you import the E9-1-1 data, you delete all your existing records; that will help you avoid getting potentially-bogus records. Of course, that might not be a good idea if your backup file is really old: in that case, you might end up deleting a bunch of legitimate locations that aren't in the backup file and, as a result, will be lost. So is that an argument for keeping your E9-1-1 backup file as up-to-date as possible? Well, it's not really our job to tell people how to do their jobs.

But, yes.

See you tomorrow.