OCS Adressbuch

Lync Addressbook

Analog zum Exchange Offline Adressbuch bietet auch OCS2007 ein Adressbuch für die Clients an. Dabei liest der OCS-Server aus dem Active Directory alle Objekte aus, sofern mindestens eines der folgenden Fehler gefüllt ist:

  • msRTCSIP-PrimaryUserAddress
    Die OCS-Adresse
  • telephoneNumber
    Die normale Telefonnummer im Active Directory
  • homePhone
    Die private Rufnummer des Teilnehmers
  • mobile
    Die Mobilfunknummer, sofern diese gepflegt ist.

Solche Objekte sind für OCS relevant, so dass der Server das Adressbuch als Datei erstellt und in einem Verzeichnis für die Clients zum Download per HTTP bereitstellt. Der OCS Communicator selbst lädt sich die Update immer mal wieder herunter und legt diese lokal als Cache ab. (10.000 Benutzer belegen ca. 600kB unkomprimiert bzw. 300 Kilobyte komprimiert. Der OCS-Client nutzt diese Datenbank, um zu den Telefonaten, die über den OCS-Client geführt oder gemeldet werden (siehe RemoteCallControl), die Rufnummer zu ersetzen. Da die Rufnummer eigentlich immer im E.164 (siehe Rufnummern) Format signalisiert wird, sollte die Rufnummer im Active Directory ebenfalls in dieser Form vorliegen. Ist dies nicht möglich, dann kann man über Normalisierungsregeln die Rufnummer aus dem Active Directory umschreiben.

Veröffentlichung per IIS

Jeder Frontend Server stellt über den IIS das Adressbuch zum Download bereit. Im IISAdmin können Sie das virtuelle Verzeichnis "/Abs" mit den Inhalten auch einsehen:

OCS Adressbuch im IIS

Über das IISLog kann man auch wunderbar sehen, welcher Client wann das letzte Mal Kontakt mit dem Adressbuch hatte.

#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2008-11-20 10:02:16
#Fields: date time cs-method cs-uri-stem cs-uri-query s-port cs-username  sc-status
2008-11-20 10:02:16 GET /Abs/Int/Handler/D-0b3f-0b40.lsabs - 443 - 401
2008-11-20 10:02:16 GET /Abs/Int/Handler/D-0b3f-0b40.lsabs - 443 MSXFAQ\fcarius 200

ABServer

Wenn sie nun in der Systemsteuerung nach einem passenden "Dienst" suchen, dann werden Sie diesen so nicht finden. Auch der OCS Adressbuchdienst ist Bestandteil des OCS Frontend Servers. Sie können aber in der GUI zumindest die groben Einstellungen erkennen:

Und wenn man ab und an in das OCS-Eventlog schaut und nach "OCS Address Book Service"-Einträgen sucht, dann kann man in etwa sehen, was der ABServer tut.

Adresbuchserver Eventlog

Die Events von unten nach oben zeigen den Fortschritt an. Jeweils Ereignistyp: Informationen, Ereignisquelle: OCS Address Book Server und Ereigniskategorie: (1008)

EventID Beschreibung

21001

The Address Book Server is starting.

21002

The Address Book Server has started.
C:\Programme\Microsoft Office Communications Server 2007\Server\Core\ABServer.exe v3.0.6362.0
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll v2.0.50727.3053
C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll v2.0.50727.3053
C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll v2.0.50727.3053
C:\WINDOWS\assembly\GAC_32\LcWmiConsumer.Managed\3.0.0.0__31bf3856ad364e35\LcWmiConsumer.Managed.dll v3.0.6362.0
C:\WINDOWS\assembly\GAC_MSIL\System.Management\2.0.0.0__b03f5f7f11d50a3a\System.Management.dll v2.0.50727.3053
C:\Programme\Microsoft Office Communications Server 2007\Server\Core\MS.ErrorReporting.dll v?.?.?.? GetFileVersionInfoSize 0

21005

Synchronization pass started.

21034

One or more phone numbers failed to normalize.

6 total numbers failed to normalize. They are listed in the text file: 'C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files\Invalid_AD_Phone_Numbers.txt'
Cause: One or more phone number attributes in Active Directory contained text that could not be normalized. Normalization rules are contained in the optional Company_Phone_Number_Normalization_Rules.txt file located in the output location or in the generic rules built into Address Book Server. Refer to the documentation für a description of the built-in generic normalization rules. Use the ABServer -dumpRules command to see all the rules that Address Book Server is currently configured with.
Resolution:
Either create a Company_Phone_Number_Normalization_Rules.txt file in the output location and make sure it covers all cases found in your Active Directory deployment or fix the invalid phone number(s) in the Active Directory record(s).

21012

A delta file would be too large in relation to the full file it is based on. The delta file will not be generated.
C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files\D-0b38-0b4b.lsabs (3 changes to 17 contacts)
Cause: A delta file is generated in memory. If the number of new/updated contacts plus the number of deleted contacts is greater than a configured percentage of the number of contacts in the base file, the delta file is not generated because it would be quicker für the client to just download the full file.
Resolution: None needed.

21007

Synchronization pass completed successfully.
Files written:
C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files\F-0b4b.lsabs with 17 contacts. (4.236 bytes compressed to 1.799 bytes)
C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files\D-0b47-0b4b.lsabs with 0 new/updated contacts, 0 deleted contacts. (1.140 compressed to 550)
C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files\D-0b45-0b4b.lsabs with 0 new/updated contacts, 0 deleted contacts. (1.140 compressed to 550)
C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files\D-0b43-0b4b.lsabs with 0 new/updated contacts, 0 deleted contacts. (1.140 compressed to 550)
C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files\D-0b41-0b4b.lsabs with 0 new/updated contacts, 0 deleted contacts. (1.140 compressed to 550)
C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files\D-0b40-0b4b.lsabs with 0 new/updated contacts, 0 deleted contacts. (1.140 compressed to 550)
C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files\D-0b3f-0b4b.lsabs with 2 new/updated contacts, 0 deleted contacts. (1.630 compressed to 855)

21056

Synchronization Pass Summary.
Number of organization units: 1
Number of Full files written: 1 with 17 total contacts
Number of Delta files written: 6 with a total of 2 new/updated contacts and 0 deleted contacts.
Number of bytes written: 11.566 compressed to 5.404 bytes on disk.

21004

Next synchronization pass will start at:
02.04.2008 01:30:00

Und dies Meldungen sind schon allein ohne zusätzliches Debugging vorhanden.

Sie können den Adressbuchdienst aber auch per Kommandozeile anwerfen, wen Sie nicht bis 01:30 uhr in der Nacht warten können, z.B. wenn Sie Normalisierungsregeln geändert oder eine große Anzahl an Benutzern angelegt haben.

C:\Programme\Microsoft Office Communications Server 2007\Server\Core\ABServer.exe /?
Usage: ABServer [-?] [-regenUR | -syncNow | -dumpFile input-file [output-file] |
-testPhoneNorm [phone-number] |
-dumpRules|
-validateDB
]

Nebenbei offenbart die Kommandozeile auch die Funktion "-testPhoneNorm", über die Sie mal schnell eine Rufnummer "testen" können. Dies ist besonders interessant, wenn Sie über die Datei "Company_Phone_Number_Normalization_Rules.txt" eigene Übersetzungsregeln angelegt haben.

Company_Phone_Number_Normalization_Rules.txt und Generic_Phone_Number_Normalization_Rules.txt

Diese Datei liegt in ""C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files" und erlaubt es dem Administrator über Regular Expressions eigene Übersetzungsregeln für den Communicator Client zu pflegen. Der Communicator benötigt zwingend E.164-Rufnummern. Nun wissen wir alle, dass es in Firmen sehr häufig "Querwahlen" und andere besondere Rufnummern gibt, die über die eingebauten Umsetzungsregeln nicht abgedeckt werden.

Daher können sie über die Datei "Company_Phone_Number_Normalization_Rules.txt" eigene Ausdrücke pflegen, die die eingebauten Regeln überschreiben.

Wenn man die Einstellungen für den Communicator Client ändert, sollte man auch noch mal einen Blick auf die "Generic_Phone_Number_Normalization_Rules.txt" werfen.

Invalid_AD_Phone_Numbers.txt

Wenn man schon die Normalisierungsregeln angeht, dann lohnt sich auch ein Blick in die Datei "Invalid_AD_Phone_Numbers.txt", die z.B. in dem Verzeichnis "C:\Programme\Microsoft Office Communications Server 2007\Web Components\Address Book Files\Files" liegt. Hier protokolliert der ABServer alle Objekte, die er gerne mit in das Adressbuch aufgenommen hätte aber die Normalisierung der Rufnummer nicht möglich war.

Invalid_AD_Phone_Numbers.txt

Sie erkennen sicher schnell, dass die Rufnummer nicht der E.164 Schreibweise entspricht. Wichtig ist hier aber die Prüfung, ob Sie nun die Rufnummer im Active Directory ändern bzw. korrigierten sollten oder ob eine ihrer umschreibregeln nicht korrekt funktioniert.

ABSConfig (OCS ResKit)

In den meisten Fällen sind die Standardwerte des OCS Adressbuchdienstes korrekt und funktionieren. Aber über das Programm ABSConfig können Sie auch die Zuordnung von Feldern im Adressbuch verändern. Ohne nun allzu tief in die Details gehen zu wollen, zeigt das Programm schon nach dem Start die aktuellen Einstellungen.

ABSConfig 

Sie erkennen sicher die vier Felder, welche am Anfang dieser Seite als "erforderlich" genannt wurden. Hier können sie das Verhalten des Adressbuchdiensts in weiten Bereichen verändern. Auf der Kartekarte WMI können Sie auf dem OCS-Server selbst das Verhalten des Adressbuchdiensts einstellen.

Sie können hier den Zeitplan aber auch z.B. den Prozentsatz einstellen, bis wann der Adressbuchdienst noch differenzielle Updates bereit stellt. Die kleine unscheinbare Checkbox am oberen Rand erlaubt ihnen den Betrieb als "Hosted Environment", so dass mehrere Firmen die gleiche OCS-Struktur nutzen können, ohne gegenseitig das Adressbuch zu sehen..

Client Download

Der OCS Communicator bekommt die URL des Adressbuchs bei der Anmeldung am OCS-Server mitgeliefert und versucht das Adressbuch komplett oder die jeweils verfügbaren differenziellen Updates herunter zu laden und in eine lokale "GalContacts.db" ein zu pflegen. Das versucht der Client nach 1,2,4,8,16,32,64,64,64,... Minuten immer wieder.

Der Download wird von Client dann in eine DB-Datei auf dem lokalen PC.


Hinweis: Bei OCS 2007 RTM-Clients ist das OAB ein Verzeichnis höher

Damit kann der Client schnell lokal nach Rufnummern und Kontakten suchen, ohne den Server allzu stark zu belasten.

Der Office Communicator 2007 R2 hat zur Entlastung des Servers die Downloadlogik etwas verändert. Das hat den unschönen Effekt, dass auch ein gelöschtes Adressbuch nicht mehr beim Start "Sofort" herunter geladen wird. Über folgenden Registrierungsschlüssel kann ein sofortiger Download beim Start erreicht werden:

ocgaldownload.reg

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Communicator]
"GalDownloadInitialDelay"=dword:00000000

Achtung: Wer Windows 64bit Version nutzt, muss den Eintrag unter WOW64 suchen.

Die Details dazu stehen im folgenden KB-Artikel

  • 972403 Network performance issues that are caused by Global address list (GAL) file downloads or by GAL delta file downloads in Office Communicator 2007 R2

OAB als CSV

Aus Datenschutzgründen ist der Export in einer CSV-Datei mit dem OCS 2007 R2-Client nicht mehr möglich. Als Administrator können Sie Sie die Verwendung von älteren Clients unterbinden.

Beim OCS 2007 RTM-Client konnte man die binäre GalContacts über einen Registrierungsschlüssel vom Client auch zusätzlich als CSV-Datei abspeichern lassen.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Communicator]
"DumpContactsToCsvFile"=dword:00000001

ocsadressbuchdump.reg

Beim nächsten Neustart des Communicator Clients wird eine Kopie der GAL in dem Ordner abgelegt, in dem auch sonst ihre "Empfangenen Dateien" abgelegt werden. Am einfachsten erhalten Sie den Zugriff über das Tools Menü:

OCS GAL als CSV Export

Die CSV-Datei ist eine Textdatei, in der die Spalten allerdings durch Tabulatoren getrennt sind. Folgende Felder werden exportiert:

Contact ID, First Name, Last Name, Display Name, Title, Alias, Company, Location, IM Address, Work Phone Display, Work Phone Number, Home Phone Display, Home Phone Number, Cell Phone Display, Cell Phone Number, Other Phone Display, Other Phone Number, OutlookMAPI Id, WAB Id, LCS Only Contact, Directory Contact, Email, Sequence Number, Contact Extension ID, SubscribeToPresence, StoreInLCS, IM Address, Work Phone Display, Work Phone Number, Home Phone Display, Home Phone Number, Cell Phone Display, Cell Phone Number, Other Phone Display, Other Phone Number

Diese Funktion ist im Communicator 2007 R2 nicht mehr vorhanden.

Adressen und Verteiler

OCS erlaubt auch die Nutzung von Active Directory Verteilern im OCS-Clients. Allerdings nutzt OCS nicht jeden Verteiler, sondern nur solche, die aus Sicht des Adressbuchdiensts auch für OCS brauchbar sind. Sie können ja weder im OCS-Admin noch in der "MMC für Benutzer und Computer" bei Gruppen irgendwelche OCS-Einstellungen vornehmen. Hier meine Testgruppen:

OCs Testgruppen

Man kann gut erkennen, dass Sie sowohl universelle als auch globale Gruppen nutzen können, wobei ich hier für universeller Gruppen plädiere. Abfragebasierte Verteiler werden aber nicht genutzt, so dass hier wieder mein Tool "Querybased Groups" helfen kann Auch sind sowohl Verteiler als auch Sicherheitsgruppen möglich. Da aber nur Gruppen auftauchen, die eine Mailadresse haben. Sie müssen nicht einmal zwingend "Exchange Enabled" sein, wie folgendes Beispiel zeigt.

OCS Gruppen

Es wird dann einfach die SMTP-Adresse der Gruppen angezeigt. Wenn ein Anwender dann den Verteiler "aufklappt", dann starte der Client eine Anfrage über den OCS-Server, welcher dann die aktuellen Mitglieder auflistet und anzeigt. das Adressbuch enthält also nicht direkt die Adresse

Gruppen sind daher ein effektives Mittel, um Teams effektiv zu addieren und die Mitglieder dynamisch bereit zu stellen.

Adressen und Kontakte

Etwas anders sieht es mit Kontakten aus, welche ebenfalls im Active Directory angelegt werden können. Auf Kontakte gibt es zwar das OCS Konzept Menü aber jeder Versuch einer Aktivierung schlägt fehlt. Um externe Empfänger als Kontakte in OCS sichtbar zu machen, müssen Sie mit anderen Hilfsmitteln (z.B. VBScript über ADSI und LDAP oder per LDIFDE o.a. das Feld "msRTCSIP-PrimaryUserAddress" pflegen. Hier am Beispiel von ADSIEDIT:

Nach der Aktualisierung des Adressbuchs und dem Download durch den Client ist der Eintrag dann auch auffindbar:

Hier sieht man dann, dass der Name und nicht die SIP-Adresse des Kontakts angezeigt wird. Natürlich können Sie am Kontakt weitere Daten pflegen, so dass auch die Visitenkarte sinnvolle Daten enthält aussieht.

Adressbuch und Hosting

OCS kann wie Exchange auch gehostet werden. Allerdings ist es natürlich auch das wichtig, dass eine Firma nur "ihre" Kontakte bei einer Suche sieht. Die Adressliste darf also keinesfalls die Liste aller Personen enthalten sondern nur die Personen der eigenen Firma. OCS segmentiert dabei die Adressen über die OU. Es ist also zwingend erforderlich, dass die Benutzer einer Firma in einer gehosteten Umgebung in einer OU zusammengefasst sind.

Dann müssen Sie noch das OCS Adressbuch Segmentation Feature aktivieren, um pro OU ein eigenes Adressbuch zu erhalten.

Ich gehe aber davon aus, dass die meisten Firmen intern OCS einsetzen und daher diesen Bereich nur "Hoster" benötigen. Diese sollten das HMC 4.5 genauer lesen, da die Schritte für Hosting den Rahmen der Webseite sprengen würden.

Weitere Links