57
© 2006 Cisco Systems, Inc. All rights reserved. 1 TOI Cisco Unity 8.0(3)

TOI Cisco Unity 8.0(3)

  • Upload
    morgan

  • View
    109

  • Download
    8

Embed Size (px)

DESCRIPTION

TOI Cisco Unity 8.0(3). TOI Cisco Unity 8.0(3). TOI for Unity Reader. Erich Von Normann Cisco Unity Development [email protected]. Intro to Unity Connection Networking. - PowerPoint PPT Presentation

Citation preview

Page 1: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 1

TOICisco Unity 8.0(3)

Page 2: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 2

TOI for Unity Reader

TOICisco Unity 8.0(3)

Erich Von NormannCisco Unity [email protected]

Page 3: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 3

Intro to Unity Connection Networking

Cisco Unity 8.x and Cisco Unity Connection 8.x can be networked for exchange of directory information, voice messaging, call processing, and migration.

This module will include information about the directory exchange and details on the Unity Reader component.

There are many other TOIs for other parts of the feature.

Page 4: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 4

Module Objectives

After completing this module you will be able to: Describe the design of the Unity Reader

Understand the diagnostic traces for the Unity Reader

Troubleshoot some problems related to the Unity Reader

This TOI assumes that you already have some background information on the design of the Connection Networking Feature.

Also, the material in this TOI is closely related to the material in the TOIs on the Unity Feeder, and Connection Reader and Feeder.

Page 5: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 5

Agenda

Intro to Directory Exchange

Purpose of the Unity Reader

Details of the Reader Design

Reader Troubleshooting

Page 6: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 6

Intro to Directory Exchange Unity and Unity Connection use a Reader-Feeder paradigm for

directory exchange.

– A Feeder is a website that presents directory information and voicename recordings taken from the local database

– A Reader is an application that periodically accesses the remote Feeder to pull directory information and voicename recordings, and write them to the local database

– The directory information is presented in an XML format

– Authentication is required in order to access confidential directory information (though authentication can be unlocked for troubleshooting)

– The Initial Synk (just after the 2 systems have been joined) can take awhile depending upon the directory size, but later updates will only synk down changes since the last cycle.

Page 7: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 7

Overview of Feeder Architecture Unity and Connection each implemented a Feeder

The Feeder is a website that publishes several URLs:– <server>/feeder/info

• Provides the XML templates for the published objects

• Lists all locations in the local digital network

• Provides count of each object type

• Lists the replication sets (used with backup / restore scenarios)

– <server>/feeder/objects

• Provides the XML for each exported object, including ObjectID, Alias, Names, Extensions, SMTP Addresses, and others

• By default, it requires authentication to view (TAC can disable authentication requirement for troubleshooting)

• Can take various parameters (start/end USN, object type, rep set, etc.)

– <server>/feeder/object/<objectid>/voicename

• Provides the wave data for an object’s recorded name (if any)

• Admin can specify the codec in which the wave data is presented

Page 8: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 8

Overview of Reader Architecture Unity and Connection each implemented a Reader

The Reader is a Unity service that pulls down Connection’s feeds and writes the objects to SQL and AD

– Periodically (default is every 15 minutes), it will request all new objects, meaning all objects whose USN is above the previous high-water mark.

– Then, it parses the object feed, and writes each new, changed, or deleted object into its local SQL database.

– Next, it writes the object to Active Directory, which will in turn replicate each object to other Unity servers in the digital network (who synk the objects into their local SQL databases).

– If an object’s voicename has changed, it will request the voicename from the Cxn Feeder, and write that it to SQL and AD as well.

– The Reader supports several Admin actions from the Unity SA, such as:

• Resynk now (rather than waiting until the next interval)

• Resynk all (starting at USN 0 rather than the high-water mark)

• Unjoining (to delete all imported objects and tear down the joined network)

Page 9: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 9

Limitations of Unity Connection Networking

Directory Exchange is only supported on the Primary Unity Server in a Unity Failover Pair.

– No Directory Exchange will happen when the Secondary Unity Server is active (ie, the system is “failed over”)

– When the Primary Unity Server becomes active (ie, the system has “failed back”), Directory Exchange will resume.

Server Hardware in the Platform Overlay One category (ie, 7825s running MSDE) do not scale well to large combined Unity and Unity Connection directories.

We highly recommend that larger sites use Platform Overlay Two or Three (ie, 7835s or 7854s running full MS SQL Server) for their Unity Site Gateway and other servers in their Unity digital network.

Page 10: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 10

Info Feed URL requestsThe Info Feed does not require authentication and always take the following

URL format:http[s]://<server>/feeder/info

The Info Feed is used both during the join process from the Unity SA, and at run-time by the Reader each time it does a synk cycle.

A sample Info Feed response will be shown over the next few slides.

Page 11: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 11

Info Feed Response (part 1)<info maxObjectsPerRequest="500" product="Unity Connection/8.0.0.270">

<locations>

<location bridgehead="true" hostaddress="10.93.236.29" id="86e3d148-551a-4f8c-bd33-d5d3275fd05b" name="sea-vm-ks-10" smtpdomain="sea-vm-ks-10.cisco.com" systemversion="8.0.0.270" unitypartitionobjectid="251e317e-5d7d-468c-b0b4-5d8060a96cd4"/>

<location bridgehead="false" hostaddress="10.93.236.30" id=“0cfa514e-a297-4b15-9645-2e5377175c7a" name="sea-vm-ks-11" smtpdomain="sea-vm-ks-11.cisco.com" systemversion="8.0.0.270" unitypartitionobjectid="a81e18ad-1e76-4a78-af0a-e244cbf32f42"/>

</locations>

<replicationSets>

<replicationSet id="e82c3c01-cbec-4c98-87c9-0c25521a0b30"/>

</replicationSets>

<objectCounts>...</objectCounts>

Info Feed Header

Site Gateway (Bridgehead)

Location ObjectID

Unity Partition ObjectID

Cxn Member Server

Unity uses Site Gateway’sSMTP Domain instead

Replication Sets(multiple if backup/restore)

Unity ignores ObjectCounts(Cxn has DB Limits)

Page 12: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 12

Info Feed Response (part 2)<attributes>

<searchspace>...</searchspace>

<partition>...</partition>

<list>...</list>

<contact>...</contact>

<user>

<a name="alias"/>

<a name="xferstring"/>

<a name="extension" type="multi">

<a name="extension"/>

<a name="locationobjectid"/>

<a name="index"/>

<a name="partitionobjectid"/>

<a name="partitionname"/>

</a>

...

</user>

</attributes>

</info>

Object Definitions

Unity doesn’t use these 3

Lists condensed for brevity(similar to users)

User Object Definition

Single-value Attributes

A multi-value Attribute

Others omitted for brevity

Page 13: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 13

Objects Feed URL requestsThe object feed URL can take several optional parameters after the ?

start=<usn> - USN at which to begin (default is 0 if not specified)

end=<usn> - USN at which to stop (default is last USN if not specified)

objectType=<type> - can be user or list (default is all if not specified)

rs=<id> - Replication Set to use (default is current if not specified)

For example, to ask for just users starting at USN 100, use this URL:http[s]://<server>/feeder/objects?start=100&objectType=user

To ask for both users and lists from USN 200 to 1000, use this URL:http[s]://<server>/feeder/objects?start=200&end=1000&objectType=user&objectType=list

Page 14: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 14

Objects Feed Response (part 1)The objects feed will always have a header block like the following:

<objects lastUsn="69" maxObjectsPerRequest="500" numObjects="8" product="Unity Connection/8.0.0.270">

This header will be followed by a number of objects, each described in an XML format. A sample object will be shown over the next few slides.

USN of last object

Limit per request

Objects in this response

Page 15: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 15

Objects Feed Response (part 2)Here’s the beginning of an object from the objects feed:

<object id="b9c007ae-defa-4dd2-9ae4-4e23a8328c7d" type="user" usn="69">

<a name="xferstring" null="true"/>

<a name="dignetobjectidtimestamp" value="0"/>

<a name="alias" value="CxnDude"/>

<a name="listindirectory" value="1"/>

<a name="lastname" value="Dude"/>

<a name="firstname" value="Connection"/>

<a name="locationobjectid" value="86e3d148-551a-4f8c-bd33-d5d3275fd05b"/>

<a name="dignetobjectid" value="b9c007ae-defa-4dd2-9ae4-4e23a8328c7d"/>

<a name="voicename" value="ed943f03-dc4e-4018-8ca7-492ad58b24d2.wav">

<a name="gatewayaddress" value="[email protected]"/>

<a name="displayname" value="Connection Dude"/>

Object Header(ObjectID, Type, and USN)

Location ObjectID

Recorded VoiceName

Unity uses LocalPart ofGatewayAddress and SiteGateway’s SMTP Domain

Page 16: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 16

Objects Feed Response (part 3)<a name="extension">

<v id="aec68edd-1533-4b12-a2de-1f1295f5169c">

<a name="extension" value="12345"/>

<a name="locationobjectid" value="86e3d148-551a-4f8c-bd33-d5d3275fd05b"/>

<a name="index" value="0"/>

<a name="partitionobjectid" value="251e317e-5d7d-468c-b0b4-5d8060a96cd4"/>

<a name="partitionname" value="sea-vm-ks-10 Partition"/>

</v>

<v id="0dd9bdfa-0e1b-4825-b6fc-7e40f758edf6">

<a name="extension" value="8675309"/>

<a name="locationobjectid" value="86e3d148-551a-4f8c-bd33-d5d3275fd05b"/>

<a name="index" value="3"/>

<a name="partitionobjectid" value="e12ee23c-49ae-4cd4-b6d7-9ad60197b545"/>

<a name="partitionname" value=“Non-Unity Partition"/>

</v>

</a>

Extension Value

Primary Extension (Index 0)

Alternate Extension

Different Partitions

Page 17: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 17

Objects Feed Response (part 4)<a name="smtpaddress">

<v id="3a80cf19-26dc-4b0c-a099-cde9dd4369a9">

<a name="smtpaddress" value="[email protected]"/>

<a name="primary" value="true"/>

</v>

</a>

<a name="alternatename">

<v id="c95fe4ba-a09d-4356-afb8-285bfc79d9fc">

<a name="lastname" value="Rocks"/>

<a name="firstname" value="Testing"/>

</v>

</a>

</object>

Can have multiple SMTPAddresses on Cxn

Unity uses LocalPart ofPrimary SMTPAddr for Alias

Alternate names

Page 18: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 18

VoiceName Feed URL requestsThe Info Feed does not require authentication and takes the following URL

format:http[s]://<server>/feeder/object/<objectid>/voicename

If the Reader notices an object’s voicename has changed (either because it’s a new object, it’s gone from NULL to non-NULL, or otherwise changed), Unity will make a request to the VoiceName Feed.

For example, if object b9c007ae-defa-4dd2-9ae4-4e23a8328c7d now has voicename ed943f03-dc4e-4018-8ca7-492ad58b24d2.wav, Unity will use this URL to retrieve it:

http[s]://<server>/feeder/object/b9c007ae-defa-4dd2-9ae4-4e23a8328c7d/voicename

The VoiceName will be returned as wave data in the codec specified on the Connection server’s SA page.

Page 19: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 19

Unity Reader Architecture

Control Module:Starts/Stops Service,

Responds to Config Changes,Resynk Requests, etc.

Client of Cxn Feeder:Periodically requests Feeds,

Parses XML for Objects,Hands Objects to DirWriter

Writes to SQL:Receives Objects from Client,

Writes them to SQL.Success Pass to DirSynkerFailure Re-queue at Client

Writes to Active Directory:Receives Objects from DirWriter,

Writes them to AD.Success DONE!

Failure Re-queue at Client

Libraries to supportAuthentication, Signing,

and Verifying Feeds.

VoiceNames:If DirWriter finds a change,

it makes a request to Client.Client requests VoiceName Feed,then hands to DirWriter/Synker.

Page 20: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 20

Unity Reader ThreadingThere are 5 threads active within the Unity Reader: ReaderAdminThread in CDirReader

– Responds to Config Changes, Resynk Requests, & Writes Perf Counts/Times

ObjectReadThread in CFeederClient– Periodically requests Info & Objects Feeds, and parses the XML

– Pushes parsed Objects onto DirWriter queue

DirWriterThread in CDirWriter– Pops Objects off its queue, and writes them to SQL

– Pushes Objects onto either DirSynker queue (Success) or ClientRetry queue (Failure)

DirSynkerThread in CDirSynker– Pops Objects off its queue, and writes them to AD

– Pushes Objects onto ClientRetry queue (Failure)

– Also pops voicenames off a queue and writes them to AD

WaveReadThread in CFeederClient– Pops voicename requests off a queue, and downloads the file & saves to disk.

– Writes the change to SQL, then pushes the change onto DirSynker queue

Page 21: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 21

Mapping Cxn Location Attributes to UnityWhen the Unity Reader imports a Connection Location, it maps Cxn

Info Feed attributes to Unity SQL data. Some are non-trivial.

Unity SQL value Mapping from Cxn Info Feed attribute

LocationObjectID id

SmtpDomain Site Gateway’s SmtpDomain (even for Member Servers)

Alias, TextName Alias

HomeServer Unity Machine Name (not the Cxn Machine Name)

DmtfAccessId For Site Gateway: “BH_” + 4 random hex-digits. Example: “BH_E08E”For Others: Site Gateway ID + 4 sequential digits. Example: “BH_E08E_0001”, “BH_E08E_0002”, etc.

DestinationType 10 (new type for Unity Connection Networking)

DefaultPartitionObjectID UnityPartitionObjectID

RemoteServer HostAddress of Cxn Server

Page 22: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 22

Mapping Cxn User Attributes to UnityWhen the Unity Reader imports a Connection User, it maps Cxn

Objects Feed attributes to Unity SQL data. Some are non-trivial. Note that other attributes will follow the SubscriberTemplate chosen in Unity SA.

Unity SQL value Mapping from Cxn Objects Feed attribute

SubscriberObjectID id (in the object header, not an attribute)

Alias “UCI_” + Local-Part-of-SMTP-Addr + “_” + Location-DialIDExample: “UCI_cxndude_BH-E08E”

RemoteAddress “UCI:” + Location-DialID + “_” + Local-Part-of-Gateway-AddrExample: “UCI:BH-E08E_b9c007ae-defa-4dd2-9ae4-4e23a8328c7d”

DisplayName DisplayName + DisplayName-Suffix-From-Unity-SAExample: “Connection Dude - Voicemail”

SubscriberType 10 (new type for Unity Connection Networking)

LocationObjectID LocationObjectID

FirstName; LastName FirstName; LastName

ListInDirectory ListInDirectory

HiddenInDirectory False

Page 23: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 23

Mapping Cxn DL Attributes to UnityWhen the Unity Reader imports a Connection DL, it maps Cxn

Objects Feed attributes to Unity SQL data. Some are non-trivial.

Unity SQL value Mapping from Cxn Objects Feed attribute

SystemDListObjectID id (in the object header, not an attribute)

Alias, Uid “UCI_” + Local-Part-of-SMTP-Addr + “_” + Location-DialIDExample: “UCI_cxnlist_BH-E08E”

AdministratorObjectID From Unity SA: System.Configuration.SubstituteObjects.OwnerDefault is EAdmin.

DisplayName DisplayName + DisplayName-Suffix-From-Unity-SAExample: “Connection List - Voicemail”

LocationObjectID LocationObjectID

HiddenInDirectory False

AddrType EX

Page 24: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 24

A Note on Imported Distribution ListsWhen the Unity Reader imports a Connection Distribution List, it

actually creates 2 objects. A DistributionList object (stored in the SQL DistributionList table)

An internal/hidden DL Contact object (stored in the SQL Subscriber table)

Since we don’t import Distribution List membership from Connection, the Unity DL object representing the Cxn DL contains only this internal DL Contact object.

A Unity user may address to the DL object like any other Unity DL (same scoping rules, etc.). But messages sent to it are routed through the internal DL Contact object. The Connection SMTP network is responsible for routing the message to the recipients.

A DL Contact alias is prefixed with “UCIDL_” rather than “UCI_”.

Page 25: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 25

Importing Connection Extensions For each User or DL that Unity imports from Cxn, it must classify

all extensions as Primary, Alternate, Duplicate, or Out-of-Partition– First, any Extension whose UnityPartitionObjectID does not match the one

defined for the Location is marked as Out-of-Partition, and thus not imported.

– Next, of the remaining Extensions, any Extension that conflicts with an existing Extension is marked as Duplicate, and thus not imported.

– Finally, the remaining Extensions are sorted in order by Index. The one with the lowest Index is the Primary Extension, and all others are Alternates.

Note the following consequences of this classification algorithm:– It is quite possible that all Extensions for an imported User or DL will be either

Out-of-Partition or Duplicate, and thus not addressable by DTMF.

– If multiple Cxn Objects have the same Extension defined, the one at the lowest USN will get it (can appear random to the Admin).

– If a Cxn Object’s Primary Extension is a Duplicate or Out-of-Partition, then his Primary Extension on Unity will be one of his Alternate Extensions from Cxn.

Reason for this complexity: Cxn has Calling Search Spaces and Partitions, but Unity does not.

– Cxn Admin can define a Unity Partition and create unique Alternate Extensions

Page 26: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 26

Authentication and Verification The Feeders require Authentication before they will serve the

Objects Feed. The Feeder returns HTTP 4xx if Auth fails.

The Feeders Sign the Objects Feed and VoiceNames when serving them, and the Readers must Verify those Signatures.

Both Unity and Connection create Authentication Certificates, and they share their public keys during the Join process.

Authentication of the Objects Feed is to ensure that an unauthorized entity can’t access confidential directory information.

Signing the Objects Feed and VoiceNames is to ensure that an unauthorized entity can’t modify them (man-in-the-middle).

Standard RSA public-key encryption with 2048-bit keys is used for both Authentication and Signing/Verification.

This is independent of whether HTTPS or HTTP is used between Unity and Connection, and note that HTTPS also uses different certificates than are used here.

Page 27: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 27

SQL ChangesThere are several new SQL tables to support the Reader InteropFeeder: One row per Connection Feeder (limited to 1 row in Unity 8)

– Triggers on SQL table notify Reader of config changes, resynk requests, etc.

– Data includes: Machine Name, IP Addr, SSL Settings, Feed-Read Interval, Cxn Authentication Cert, LastUSN, Object & Change Counts, and if DLs and VoiceNames should be requested.

InteropCertificate: Contains the Unity Authentication Cert (singleton).

InteropLocation: For Cxn Site Gateway, this links its row in the Location table to the InteropFeeder that correponds to it. Also stores the Unity Partition ObjectID.

InteropSubscriber: Adjunct to Subscriber table; stores the VoiceName filename, and whether it’s a DL Contact.

InteropExtension: Stores all extensions for Cxn users and lists; used to determine which are primary, alternate, duplicate, and out-of-partition.

FailedUSN: When the Reader is stopped or paused, this stores the USNs which should be requested when it starts back up (retry queue).

PendingVoiceName: When the Reader is stopped or paused, this stores the VoiceNames which should be requested when it starts back up.

Page 28: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 28

Troubleshooting The Unity Reader is a reasonably complicated component and

can encounter problems in several areas:

– Responding to Config Changes and Resynk Requests

– HTTP[S] Reads of the Cxn Info and Objects Feeds

– HTTP[S] Reads of Cxn VoiceNames

– Authentication & Verification of Objects Feed & VoiceNames

– Reading from and Writing to SQL

– Writing to Active Directory

Page 29: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 29

Troubleshooting TechniquesThere are a number of methods that can be used and interfaces

that can be examined to diagnose problems:

Application EventLog messages

Unity diagnostic traces

Using a web browser to access the feeds

Looking directly at SQL tables

Looking directly at Active Directory objects

Examining installed certificates

Tweaking throttling parameters

Doing a Resynk

Unjoining and rejoining the network

Troubleshooting the Connection Feeder (a different TOI)

Page 30: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 30

Diagnostic TracesThe Unity Reader has several micro trace levels in the

CuDirReader category in Unity Diagnostic Tool (UDT): 0 = High Level Methods Entry/Exit of the major/interface functions

1 = Mid Level Methods Entry/Exit of secondary functions

2 = Low Level Methods Entry/Exit of low-level functions (can be spammy)

3 = Errors All serious failures (HTTP, Auth, SQL, AD, etc.)

4 = Warnings Non-fatal but notable events

5 = Information General Explanatory traces

6 = XML Documents The entire raw Info & Objects Feeds

7 = Dump Objects The parsed representation of the Info & Object Feeds

8 = SQL Queries Every SQL ad-hoc query & sproc

9 = DbSync to AD Every attempt to write to AD

10 = Security and Authentication Details of Authentication & Verification

These all appear in the diag_CuDirReader_* log file. Enabling all trace levels except level 2 will provide good all-around tracing.

Note that the log file might be large on the initial synk!

Page 31: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 31

Unlocking Objects Feed By default, the Objects Feed requires Authentication, but you can

unlock it so that it can be viewed in a web browser.– Authentication of Connection’s Objects Feed is controlled by the

bypassAuthentication flag in the Feeder’s web.xml. A quick method to unlock it: login into the shell as root, and type

sed -i s/false/true/ $CATALINA_HOME/webapps/feeder/WEB-INF/web.xml

Reverse the false and true in the sed command to lock it back up.

– Authentication of Unity’s Objects Feed is controlled by the SQL value InteropFeeder.UseAuth. Via SQL Management Studio, change it to false to unlock it, and change it back to true to lock it back up.

Once the Objects Feed is unlocked, you can specify the URL command arguments previously discussed (start, end, objectsType, etc.) when typing the URL into the web browser.

– Example: https://sea-vm-ks-10/feeder/objects?start=100&objectType=user

Note that normal directory synk operation will fail if Authentication is only disabled in one direction, so make sure to unlock both, and lock it back up after troubleshooting is completed.

Page 32: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 32

EventLog MessagesThe Reader has many EventLog Messages such as: Service starts and stops, indicating success or failure

Joins to and unjoins from a Cxn Feeder

Pausing and resuming the read from a Cxn Feeder

Failure to read from the Info or Objects Feed

Failure to write a location or object to SQL or AD

Warning about duplicate extensions

Failure to download a VoiceName

Failure to Sign an Objects Feed Request or Verify the Feed or a VoiceName

Warning if the previous service stop was not graceful (service crash or system failure), since the directory information might be inaccurate in that case

An error message if the Cxn Site Gateway has changed. It cannot be changed without doing a network unjoin and then a rejoin to the new Site Gateway.

Page 33: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 33

SQL InteropFeeder TableView the InteropFeeder Table with SQL Management Studio.

Column Name Source DescriptionObjectID Cxn Join file Unique ID for the Network

DisplayName Cxn Join file Network Name, for display purposes

RemoteAddress Cxn Join file DNS name or IP Address, used for HTTP[S] Connect

RemotePublicCert Cxn Join file Used for Authentication and Verification

UseHttps Unity SA Whether HTTPS is used

AllowSelfSignedCerts Unity SA If HTTPS, whether self-signed certs are OK

IgnoreCertErrors Unity SA If HTTPS, whether some types of cert errors are ignored

SynkEnabled Unity SA Whether Reader should be paused or not

SynkLists Unity SA Whether DLs should be requested from Cxn

SynkVoiceNames Unity SA Whether VoiceNames should be requested from Cxn

SubscriberTemplateObjectID Unity SA Subscriber Template for imported Cxn users

ResynkType Unity SA 0 = none, 1 = now, 2 = full, 3 = clear voicenames

ObjectFeedInterval Unity SA How often Reader should request feed (in milliseconds)

LastUSN Reader Current High-water Mark from Cxn Objects Feed

Page 34: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 34

Finding Cxn Locations in ADCxn Location DisplayName

Cxn Location DialID

Type 10 = Cxn Networking

Unity Site Gateway isCxn Location Home Server

Cxn Server IP Address

1) Run LDP.exe2) Do File\Bind, then View\Tree.3) Expand Root > Unity OU >

Locations OU.4) Unity & Cxn Locations

should be visible.

Page 35: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 35

Finding Cxn User in AD

Similar to prev slide, butExpand Users node

Cxn User Alias

Cxn User DisplayName

Cxn User Target Address

Cxn User Extensions

Page 36: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 36

Viewing Public Keys in SQL

Local Unity Cert

Remot e Cxn Cert

The Public Keys for Unity and Cxn are stored in SQL (base64 encoded).

The complete Unity certificate (including Private Key) are stored in the OS cert store (next slide).

Page 37: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 37

Viewing Local Cert in OS Store

1) Run mmc.exe2) Do File\Add/Remove Snap-in3) Add Certificates for the

Local Computer Account4) Expand the Certificates node5) Right-click Open on the cert

If no Private Key, you’veprobably got a permissionsproblem with the account.

This is expected –we use self-signed certs.

Page 38: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 38

Reader Throttling ParametersThe Unity Reader has several throttling parameters in SQL in the

Configuration Table – 4 groups of 2 parameters.

Defaults: Pause 50 ms after each operation (object parse, SQL write, AD write, or voicename synk)

These parameters are not exposed via a GUI since they should rarely if ever need to be adjusted.

Parameter Name Default Description

ObjectParseLimit 1 After X objects are parsed from the Objects Feed, …

ObjectParseInterval 50 … Pause Y milliseconds before parsing the next one.

ObjectWriteLimit 1 After X objects are written to SQL, …

ObjectWriteInterval 50 … Pause Y milliseconds before writing the next one.

ObjectSynkLimit 1 After X objects are written to AD, …

ObjectSynkInterval 50 … Pause Y milliseconds before writing the next one.

StreamWriteLimit 1 After X voicenames are read from Cxn, …

StreamWriteInterval 50 … Pause Y milliseconds before reading the next one.

Page 39: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 39

Unity Resynks By default, Unity will do pull directory changes every 15 minutes.

In Unity SA, you can request immediate resynks of several types:– “Synk Now”: Synk from high-water mark USN immediately (rather than wait til

the next 15 minutes interval)

– “Total Synk”: Synk starting from USN 0 immediately, which means all Connection objects will be pulled, not just the recently change ones.

– “Clear Voice Names”: This will delete all imported voicenames, and clear Unity’s cache of their filenames (SQL InteropSubscriber.ImportedVoiceName).

A normal “Total Synk” will only pull down an object’s voicename if it has changed. The Objects Feed lists the filename, and Unity will only pull down the voicename if the filename has changed. So, if you want to also pull down all voicenames when you do a “Total Synk”, you must first do a “Clear Voice Names” before doing the “Total Synk”.

Page 40: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 40

Unjoining & Deleting a Network Once a Unity Connection Network has been joined, it can later be

unjoined. This will do the following:– The Reader will begin deleting all imported users and DLs from SQL and AD.

– The Reader will write informational messages to the eventlog when it starts deleting the objects and when it’s done doing so.

– Once all of the objects are deleted, the un-join is complete.

Once the Network is unjoined, you can do the following:– Make configuration changes such as disabling synking of DLs

– Delete the Network.

– Re-join the Network.

The reason for the distinction between unjoining and deleting a network is so that cross-box settings can be retained in can you later want to re-join. Cross-box settings to the Cxn locations are deleted if you delete the network.

Page 41: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 41

Diagnostic Log File Examples The next few slides will show annotated diagnostics from the

Unity Reader service.

An earlier slide described what the various traces levels are for. In these examples, all trace levels except level 2 are enabled.

For brevity and readability, the trace output has been edited to remove the less pertinent information.

Recall that there are several threads involved in reading objects from Connection and writing them to SQL & AD, so following an object thru the diagnostic log file can be tricky.

– Hints: Search for the USN, ObjectID, and/or Alias.

– To simplify things, the examples will break up the threads rather than have them interwoven.

Excerpts from the SqlSync_*.txt logfiles are included as well, to show more details on the synks to AD.

Page 42: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 42

Log for Info Feed Read14:24:29:296 [1112] CFeederClient::ReadFromFeeder entered

14:24:29:297 [1112] CFeederClient::ReadInfo entered

14:24:29:297 [1112] CFeederClient::GetXmlDoc: Attempting to read XML Document from Feeder 'sea-vm-ks-10' (sea-vm-ks-10.cisco.com:0) at Url '/feeder/info'

14:24:44:406 [1112] CFeederClient::SendRequestAndReceiveResponse: ServerHeaders: 'HTTP/1.1 200 OK ... ‘

14:24:44:406 [1112] From Feeder 'sea-vm-ks-10' (sea-vm-ks-10.cisco.com:0) - Retrieved XML Document (size 2736) from URL /feeder/info

14:24:44:407 [1112] <?xml version='1.0' encoding='UTF-8'?>

14:24:44:406 [1112] <info maxObjectsPerRequest='500' product='Unity Connection/8.0.0.270'>

<rest of raw info feed>

14:24:44:406 [1112] </info>

14:24:44:407 [1112] CFeederClient::ReadInfo exited with 0x00000000

14:24:44:406 [1112] CFeederClient::ParseInfo entered

14:24:44:422 [1112] Dumping Info Feed for '2010-01-22 14:24:44' (MaxObjs=500 Product=Unity Connection/8.0.0.270 Version=1.0)

<rest of parsed info feed>

14:24:44:422 [1112] CDirInfo::Parse exited with 0x00000000

14:24:44:421 [1112] CDirWriter::PushLocation entered

14:24:44:422 [1112] CDirWriter::PushLocation exited with 0x00000000

14:24:44:438 [1112] CFeederClient::ParseInfo exited with 0x00000000

Start of a Feed Read

First, Info Feed is Read

Server Name and URL

HTTP 200 OK = SUCCESS

Dump of Raw Info Feed

Raw Info Feed is Parsed

Dump of Parsed Info Feed

Push Location to DirWriter

Done Reading Info Feed

Page 43: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 43

Log for Objects Feed Read14:24:44:437 [1112] CFeederClient::ReadObjects entered

14:24:44:437 [1112] CFeederClient::GetXmlDoc: Attempting to read XML Document from Feeder 'sea-vm-ks-10' (sea-vm-ks-10.cisco.com:0) at Url '/feeder/objects?objectType=user&rs=e82c3c01-cbec-4c98-87c9-0c25521a0b30'

14:24:44:438 [1112] CReadAuthenticator::Sign entered

14:24:44:437 [1112] CReadAuthenticator::Sign: calling IAuth::Sign(LocalCert 'MIICuj...' Hash '23-EF...')

14:24:44:438 [1112] CReadAuthenticator::Sign: Signature from IAuth::Sign is 'ak7v...'

14:24:44:437 [1112] CReadAuthenticator::Sign exited with 0x00000000

14:24:44:437 [1112] CFeederClient::SetRequestOptions: Assigning Auth Headers 'X-Cisco-Authenticator-Identity: EKV-W2K3-1 X-Cisco-Authenticator: ak7v... X-Cisco-Authenticator-Salt: Oa9a...'

14:24:44:593 [1112] CFeederClient::SendRequestAndReceiveResponse: ServerHeaders: 'HTTP/1.1 200 OK ...'

14:24:44:594 [1112] CFeederClient::SendRequestAndReceiveResponse: Signature='rVoX...' Salt='SnkD...'

14:24:44:593 [1112] CReadAuthenticator::Verify entered

14:24:44:594 [1112] CReadAuthenticator::VerifyInternal: calling IAuth::Verify(PublicCert 'MIIC3z...' Hash 'F1-40...' Signature 'rVoX...')

14:24:44:734 [1112] CReadAuthenticator::VerifyInternal: IAuth::Verify(2528 bytes) returned a signature match

14:24:44:735 [1112] CReadAuthenticator::Verify exited with 0x00000000

14:24:44:734 [1112] CFeederClient::DownloadAndVerifyResponse: Authentication succeeded

Start of Object Feed Read

Server Name and URL

Sign Request with UnityCert & Hash of URL

Signature is Generated

Add Auth Headers to Request

HTTP 200 OK = SUCCESS

Extract Signature & Salt

Verify Response with CxnCert, Hash of Data, & Sig

Signature is Verified

Authentication Succeeded!

Page 44: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 44

Log for Objects Feed Read (part 2)14:24:44:734 [1112] From Feeder 'sea-vm-ks-10' (sea-vm-ks-10.cisco.com:0) -

Retrieved XML Document (size 2528) from URL /feeder/objects?objectType=user&rs=e82c3c01-cbec-4c98-87c9-0c25521a0b30

14:24:44:735 [1112] <?xml version='1.0' encoding='UTF-8'?>

14:24:44:734 [1112] <objects lastUsn='41' maxObjectsPerRequest='500' numObjects='2' product='Unity Connection/8.0.0.270'>

14:24:44:735 [1112] <object id='710cfdf0-62a0-415f-ba8f-40b7ef39bd19' type='user' usn='25'>

14:24:44:734 [1112] <a name='alias' value='undeliverablemessagesmailbox'/>

<rest of raw objects feed>

14:24:44:735 [1112] </objects>

14:24:44:734 [1112] CFeederClient::ReadObjects exited with 0x00000000

14:24:44:735 [1112] CFeederClient::ParseObjects entered

14:24:44:796 [1112] CDirWriter::PushDirObject entered

14:24:44:797 [1112] CDirWriter::PushDirObject exited with 0x00000000

14:24:44:796 [1112] CFeederClient::Throttle: Pausing 50 milliseconds every 1 objects

<rest of objects parsed>

14:24:44:843 [1112] CFeederClient::ParseObjects exited with 0x00000000

14:24:44:875 [1112] CFeederClient::ReadFromFeeder: sea-vm-ks-10 (sea-vm-ks-10.cisco.com:0) - ObjectsParsed=2 TotalParsed=2

14:24:44:876 [1112] CFeederClient::ReadFromFeeder exited with 0x00000000

Dumping Raw Objects Feed

Begin Parsing Objects Feed

Push Object to DirWriter

Throttling – 50 ms after each

Feed Read Complete

Page 45: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 45

Log for Writing Location to SQL14:24:44:438 [7952] CDirWriter::WriteData entered

14:24:44:437 [7952] CDirWriter::PopSynkObject entered

14:24:44:438 [7952] CDirWriter::PopSynkObject exited with TRUE

14:24:44:437 [7952] Dumping Location: Name=sea-vm-ks-10 Id=86e3d148-551a-4f8c-bd33-d5d3275fd05b HostAddr=10.93.236.29 SmtpDomain=sea-vm-ks-10.cisco.com Bridgehead=TRUE Version=1.0 DialID=BH-E08E

14:24:44:437 [7952] CObjWriter::WriteLocation entered

14:24:44:453 [7952] CObjWriter::ObjectExists: Calling SProc sp_FindLocationByGuidString(@strGuid=86e3d148-551a-4f8c-bd33-d5d3275fd05b)

14:24:44:454 [7952] CObjWriter::ModifyLocation: Executing Ad-hoc Query 'SELECT DefaultPartitionObjectId FROM InteropLocation WHERE LocationObjectId=?' (Params '86e3d148-551a-4f8c-bd33-d5d3275fd05b')

14:24:44:453 [7952] CObjWriter::ModifyLocation: Calling SProc csp_LocationModify(@LocationObjectId='86e3d148-551a-4f8c-bd33-d5d3275fd05b' @SmtpDomain='sea-vm-ks-10.cisco.com' @Alias='sea-vm-ks-10' @TextName='sea-vm-ks-10' @HomeServer='EKV-W2K3-1' @DefaultPartitionObjectId='251e317e-5d7d-468c-b0b4-5d8060a96cd4' @RemoteServer='10.93.236.29' )

14:24:44:468 [7952] CObjWriter::WriteLocation exited with 0x00000000

14:24:44:468 [7952] CDirSynker::PushLocation entered

14:24:44:469 [7952] CDirSynker::PushLocation exited with 0x00000000

14:24:44:468 [7952] CDirWriter::PopSynkObject entered

14:24:44:469 [7952] CDirWriter::PopSynkObject exited with FALSE

14:24:44:468 [7952] CDirWriter::WriteData exited with 0x00000000

DirWriter Thread wakes up

Pops an Object off its Queue

Dumps Parsed Location

Checks if it’s an Add or Modify

Check if Partition Changed

Call csp_LocationModify

Push Location to DirSynker

No more Objects in Queue

DirWriter is done for now

Page 46: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 46

Log for Writing Location to AD14:24:44:469 [6988] CDirSynker::SynkData entered

14:24:44:468 [6988] CDirSynker::PopSynkObject entered

14:24:44:469 [6988] CDirSynker::PopSynkObject exited with TRUE

14:24:44:469 [6988] CDirSynker::SynkOneLocation: Synking LocationID=86e3d148-551a-4f8c-bd33-d5d3275fd05b (Name=sea-vm-ks-10 HostAddr=10.93.236.29) to AD

14:24:44:797 [6988] CDirSynker::SynkOneLocation exited with 0x00000000

14:24:44:796 [6988] CDirSynker::PopSynkObject entered

14:24:44:797 [6988] CDirSynker::PopSynkObject exited with FALSE

14:24:44:796 [6988] CDirSynker::SynkData exited with 0x00000000

DirSynker Thread wakes up

Pops an Object off its Queue

Synks the Location to AD

No more Objects in Queue

DirSynker is done for now

Page 47: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 47

SqlSync Log for Writing LocationFri Jan 22 14:24:44.468 CDbSync::SyncCommit Called. ulSyncItems: 0x8 \

DbSync.cpp (line 279)

Fri Jan 22 14:24:44.468 Entering SyncLocations \DbSync.cpp (line 396)

Fri Jan 22 14:24:44.484 Synking Location sea-vm-ks-10 \DbSync.cpp (line 461)

Fri Jan 22 14:24:44.640 Found object in GC by DirectoryId. \ConnectorClientBase.cpp (line 342)

Fri Jan 22 14:24:44.640 Found Object in Domain DOM-EKV-W2K3-1.sea-alpha-ucbu.cisco.com \ConnectorClientBase.cpp (line 248)

Fri Jan 22 14:24:44.656 No voice name data for object. \DbSync.cpp (line 1912)

Fri Jan 22 14:24:44.671 Entering ModifyDirObject \ConnectorClientBase.cpp (line 512)

Fri Jan 22 14:24:44.765 Exiting ModifyDirObject \ConnectorClientBase.cpp (line 529)

Fri Jan 22 14:24:44.796 Exiting SyncLocations, returning 0x0 \DbSync.cpp (line 628)

Synk Starts (0x8 = Location)

Location Synk Starts

Location Exists – Modify it

Location Modify Done

Location Synk Succeeds

Page 48: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 48

Log for Writing User to SQL14:24:44:797 [7952] CDirWriter::WriteData entered

14:24:44:796 [7952] CDirWriter::PopSynkObject entered

14:24:44:797 [7952] CDirWriter::PopSynkObject exited with TRUE

14:24:44:796 [7952] CDirWriter::Throttle: Pausing 50 milliseconds every 1 objects

14:24:44:843 [7952] Dumping Object (Type=0=User Action=0=Add ID=710cfdf0-62a0-415f-ba8f-40b7ef39bd19 USN=25 Version=1.0 Feeder=sea-vm-ks-10.cisco.com:0)

14:24:44:843 [7952] Attr alias=undeliverablemessagesmailbox

<rest of parsed object>

14:24:44:844 [7952] CObjWriter::WriteObject entered

14:24:44:875 [7952] CObjWriter::IsUserFromUnity: Executing Ad-hoc Query 'SELECT SubscriberType FROM ObjectChange WHERE ObjectId=?' (Params '710cfdf0-62a0-415f-ba8f-40b7ef39bd19')

14:24:44:876 [7952] CObjWriter::ObjectIdMatchesMapping: Executing Ad-hoc Query 'SELECT FeedObjectId FROM InteropMapping WHERE FeedObjectId=?' (Params '710cfdf0-62a0-415f-ba8f-40b7ef39bd19')

14:24:44:875 [7952] CObjWriter::DiginetOidMatchesMapping: Executing Ad-hoc Query 'SELECT Timestamp FROM InteropMapping WHERE DiginetObjectId=?' (Params '710cfdf0-62a0-415f-ba8f-40b7ef39bd19')

14:24:44:876 [7952] CObjWriter::DiginetOidMatchesObjectChange: Executing Ad-hoc Query 'SELECT IsDeleted IsMoved FROM ObjectChange WHERE ObjectId=?' (Params '710cfdf0-62a0-415f-ba8f-40b7ef39bd19')

14:24:44:875 [7952] CObjWriter::WriteObject: USN=25 (DisplayName=Undeliverable Messages ObjectID=710cfdf0-62a0-415f-ba8f-40b7ef39bd19 DiginetOid=710cfdf0-62a0-415f-ba8f-40b7ef39bd19) was not found in the InteropMapping or ObjectChange Tables - performing create.

DirWriter Thread wakes up

Pops an Object off its Queue

Throttling between SQL Writes

Dumps Parsed User

Several SQL Queries to checkif Add, Delete, Modify, Migrate

Object not found – Create it

Page 49: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 49

Log for Writing User to SQL (part 2)14:24:44:937 [7952] CObjWriter::PreprocessExtensions: ObjectID=710cfdf0-62a0-415f-

ba8f-40b7ef39bd19 (DisplayName 'Undeliverable Messages') - Extension 99999 is already used by another object (Name='Example Administrator - EKV-W2K3-1' ObjId='3D8D9467-F8D7-4E9F-A01E-1FB274AC04D9')

14:24:44:938 [7952] The Cisco Unity service that synchronizes directory information with a Cisco Unity Connection Network (CuDirReader) encountered a duplicate extension for an imported object from the Feeder 'sea-vm-ks-10 (sea-vm-ks-10.cisco.com:0)'...

14:24:44:937 [7952] CObjWriter::PreprocessExtensions: Executing Ad-hoc Query 'INSERT INTO InteropExtension (InteropExtensionObjectId LocationObjectID ParentObjectID Extension PartitionObjectID ExtensionIndex ParentObjectIdType) VALUES (? ? ? ? ? 0 1)' (Params 'a81e18ad-1e76-4a78-af0a-e244cbf32f42' '86e3d148-551a-4f8c-bd33-d5d3275fd05b' '710cfdf0-62a0-415f-ba8f-40b7ef39bd19' '99999' '251e317e-5d7d-468c-b0b4-5d8060a96cd4')

14:24:44:953 [7952] CObjWriter::ObjectExists: Calling SProc sp_FindLocationByGuidString(@strGuid=86e3d148-551a-4f8c-bd33-d5d3275fd05b)

14:24:44:954 [7952] CObjWriter::CreateUser entered

14:24:44:969 [7952] CObjWriter::ConstructRemoteAddress: RemoteAddress='UCI:BH-E08E_710cfdf0-62a0-415f-ba8f-40b7ef39bd19' for GatewayAddress='[email protected]' at Location='86e3d148-551a-4f8c-bd33-d5d3275fd05b' (DialID='BH-E08E')

Duplicate Extension found

Extension added to SQLInteropExtension table

Ensure Location Exists

Construct the RemoteAddressBased on Feed Data

Page 50: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 50

Log for Writing User to SQL (part 3)14:24:44:968 [7952] CObjWriter::CreateSubscriber: Calling SProc

sp_CreateInteropSubscriber(@SubscriberObjectId='710cfdf0-62a0-415f-ba8f-40b7ef39bd19' @SubscriberTempId='60A04B26-8DEC-4249-9B8A-9CEC3FB1133E' @XferString=NULL @LocationObjectId='86e3d148-551a-4f8c-bd33-d5d3275fd05b' @ListInDirectory='0' @HiddenInDirectory='0' @Alias='UCI_undeliverablemessagesmailbox_BH-E08E' @RemoteAddress='UCI:BH-E08E_710cfdf0-62a0-415f-ba8f-40b7ef39bd19' @LastName=NULL @FirstName=NULL @DisplayName='Un deliverable Messages - Voicemail' )

14:24:47:937 [7952] CObjWriter::CheckVoiceName: Executing Ad-hoc Query 'SELECT ImportedVoiceName FROM InteropSubscriber WHERE SubscriberObjectId=?' (Params '710cfdf0-62a0-415f-ba8f-40b7ef39bd19')

14:24:47:938 [7952] CObjWriter::CheckVoiceName: User 'Undeliverable Messages' (ObjectID=710cfdf0-62a0-415f-ba8f-40b7ef39bd19 USN=25) - VoiceName='' has not changed

14:24:47:937 [7952] CObjWriter::CreateUser exited with 0x00000000

14:24:47:937 [7952] CObjWriter::WriteObject exited with 0x00000000

14:24:47:937 [7952] CDirSynker::PushDirObject entered

14:24:47:938 [7952] CDirSynker::PushDirObject exited with 0x00000000

14:24:47:937 [7952] CDirWriter::PopSynkObject entered

14:24:47:938 [7952] CDirWriter::PopSynkObject exited with TRUE

<repeat for next object>

sp_CreateInteropSubscriber

Check if VoiceName changed

Done Writing User to SQL

Push Object to DirSynker

Pop next Object off Queue

Page 51: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 51

Log for Writing User to AD14:24:47:938 [6988] CDirSynker::SynkData entered

14:24:47:937 [6988] CDirSynker::PopSynkObject entered

14:24:47:938 [6988] CDirSynker::PopSynkObject exited with TRUE

14:24:47:937 [6988] CDirSynker::Throttle: Pausing 50 milliseconds every 1 objects

14:24:48:001 [6988] CDirSynker::SynkOneObject: Synking ObjectID=710cfdf0-62a0-415f-ba8f-40b7ef39bd19 (USN=25 - Contact='Undeliverable Messages') to AD

14:24:52:406 [6988] CDirSynker::SynkOneObject exited with 0x00000000

14:24:52:407 [6988] CDirSynker::PopSynkObject entered

14:24:52:406 [6988] CDirSynker::PopSynkObject exited with TRUE

<repeat for next object>

DirSynker Thread wakes up

Pops an Object off its Queue

Throttling between AD Synks

Synks the User to AD

Pop next Object off Queue

Page 52: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 52

SqlSync Log for Writing UserFri Jan 22 14:24:48.0 CDbSync::SyncCommit Called. ulSyncItems: 0x1 \

DbSync.cpp (line 279)

Fri Jan 22 14:24:48.0 Entering SyncSubscribers \DbSync.cpp (line 634)

Fri Jan 22 14:24:48.109 Synking Mailuser UCI_undeliverablemessagesmailbox_BH-E08E \DbSync.cpp (line 721)

Fri Jan 22 14:24:49.281 Find User returned Hr = 0X80044803 \ConnectorClientBase.cpp (line 456)

Fri Jan 22 14:24:49.281 GCFindDirObject() returned 0X80044803 \ConnectorClientBase.cpp (line 220)

Fri Jan 22 14:24:49.281 No voice name data for object. \DbSync.cpp (line 1912)

Fri Jan 22 14:24:49.281 Entering CreateDirObject \ConnectorClientBase.cpp (line 480)

Fri Jan 22 14:24:52.171 Exiting CreateDirObject \ConnectorClientBase.cpp (line 499)

Fri Jan 22 14:24:52.406 Exiting SyncSubscribers, returning 0x0 \DbSync.cpp (line 977)

Synk Starts (0x1 = Subscriber)

Subscriber Synk Starts

80044803 = doesn’t exist,So need to Create it

Object Create Done

Subscriber Synk Succeeds

Page 53: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 53

Log for VoiceName Download09:52:56:843 [8092] CFeederClient::ReadWaveFiles entered

09:52:56:844 [8092] CFeederClient::PopVoiceNameRequest: ObjId='a15b86ae-04a1-4d4c-9ca4-a87e783364fd' (USN=31) - Requested VoiceName='a9e45a2c-feb5-45c1-b0a0-97bc207796fb.wav'

09:52:56:843 [8092] CObjWriter::IsVoiceNameCurrent: Executing Ad-hoc Query 'SELECT ImportedVoiceName FROM InteropSubscriber WHERE SubscriberObjectId=?' (Params 'a15b86ae-04a1-4d4c-9ca4-a87e783364fd')

09:52:56:844 [8092] CFeederClient::DownloadWaveFile entered

09:52:56:968 [8092] CFeederClient::GetVoiceNameAuthHeaders: ServerHeaders: 'HTTP/1.1 200 OK ...'

09:52:56:969 [8092] CFeederClient::GetVoiceNameAuthHeaders: Signature='JMAs...' Salt='gpuu...'

09:52:56:969 [8092] CReadAuthenticator::VerifyInternal: calling IAuth::Verify(PublicCert 'MIIC3z...' Hash 'E1-F7...' Signature 'JMAs...')

09:52:56:968 [8092] CReadAuthenticator::VerifyInternal: IAuth::Verify(15008 bytes) returned a signature match

09:52:56:968 [8092] CFeederClient::AuthenticateVoiceName: Authentication(/feeder/object/a15b86ae-04a1-4d4c-9ca4-a87e783364fd/voicename) succeeded

09:52:56:969 [8092] CFeederClient::DownloadWaveFile: WaveFormat is 1 (PCM)

09:52:56:968 [8092] CFeederClient::DownloadWaveFile: Attempting to write VoiceName 'C:\CommServer\Stream Files\a9e45a2c-feb5-45c1-b0a0-97bc207796fb.wav' for ObjectID 'a15b86ae-04a1-4d4c-9ca4-a87e783364fd'

09:52:56:984 [8092] CFeederClient::DownloadWaveFile exited with 0x00000000

VoiceName Thread wakes up

Pops a VoiceName off Queue

Ensures FileName is Current

HTTP 200 OK = SUCCESS

Extract Signature & Salt

Verify Response with CxnCert, Hash of Data, & Sig

Signature is Verified

Verify Wave Header/Format

File is written to Disk

Page 54: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 54

Log for VoiceName Write to SQL & AD09:52:56:985 [8092] CDirWriter::WriteVoiceName entered

09:52:56:984 [8092] CObjWriter::WriteVoiceName entered

09:52:56:985 [8092] CObjWriter::WriteVoiceName: Executing Ad-hoc Query 'UPDATE Subscriber SET StreamPath=? WHERE SubscriberObjectId=?' (Params 'a9e45a2c-feb5-45c1-b0a0-97bc207796fb.wav' 'a15b86ae-04a1-4d4c-9ca4-a87e783364fd')

09:52:57:422 [8092] CObjWriter::WriteVoiceName exited with 0x00000000

09:52:57:421 [8092] CDirSynker::PushStreamFile entered

09:52:57:422 [8092] CDirSynker::PushStreamFile: ObjectID 'a15b86ae-04a1-4d4c-9ca4-a87e783364fd' (USN 31) is already queued for DirSynk

09:52:57:421 [8092] CDirSynker::PushStreamFile exited with 0x00000000

09:52:57:422 [8092] CDirWriter::WriteVoiceName exited with 0x00000000

09:52:57:422 [8092] CFeederClient::ReadWaveFiles exited with 0x00000000

Begin SQL Write (same thread)

Update Subscriber in SQL

Push VoiceName to DirSynker

Object is already queued forDirSynk, so we’re done

VoiceName Thread is done

Page 55: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 55

Log for Failed Objects Feed Read14:01:10:047 [6156] CFeederClient::ReadObjects entered

14:01:10:047 [6156] CFeederClient::GetXmlDoc: Attempting to read XML Document from Feeder 'sea-vm-ks-10' (sea-vm-ks-10.cisco.com:0) at Url '/feeder/objects?objectType=user&rs=e82c3c01-cbec-4c98-87c9-0c25521a0b30'

14:01:10:047 [6156] CReadAuthenticator::Sign: calling IAuth::Sign(LocalCert 'MIICuj...' Hash 'D6-8E...')

14:01:12:343 [6156] CReadAuthenticator::Sign: Signature from IAuth::Sign is 'lQUd..'

14:01:12:360 [6156] CFeederClient::SetRequestOptions: Assigning Auth Headers 'X-Cisco-Authenticator-Identity: EKV-W2K3-1 X-Cisco-Authenticator: lQUd... X-Cisco-Authenticator-Salt: g+hJ...'

14:01:12:359 [6156] CFeederClient::SendRequestAndReceiveResponse: Request StatusCode: 500

14:01:12:359 [6156] CFeederClient::ReadObjects exited with 0x80004005

14:01:12:360 [6156] CFeederClient::ReadFromFeeder: sea-vm-ks-10 (sea-vm-ks-10.cisco.com:0) - ReadObjects() failed with 0x80004005 (WinHttpQueryHeaders(StatusCode) - 'HTTP 500 - server error')

14:01:12:359 [6156] The Cisco Unity service that synchronizes directory information with a Cisco Unity Connection Network (CuDirReader) experienced a failure to read data from the Feeder 'sea-vm-ks-10 (sea-vm-ks-10.cisco.com:0)' at URL /feeder/objects?objectType=user&rs=e82c3c01-cbec-4c98-87c9-0c25521a0b30.

Technical Details: WinHttpQueryHeaders(StatusCode) -- 'HTTP 500 - server error'.

14:01:12:406 [6156] CFeederClient::ReadFromFeeder: sea-vm-ks-10 (sea-vm-ks-10.cisco.com:0) - ObjectsParsed=0 TotalParsed=0

14:01:12:407 [6156] CFeederClient::ReadFromFeeder exited with 0x80004005

Same as Success Case

HTTP 500 = Server Error

Connection Feeder logswould help diagnose problem.

Eventlog Error Message

Objects Feed Read Failed

Page 56: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 56

Reference Documents

Cisco Unity documentation:http://www.cisco.com/en/US/products/sw/voicesw/ps2237/tsd_products_support_series_home.html

Cisco Unity Connection documentation:http://www.cisco.com/en/US/products/ps6509/tsd_products_support_series_home.html

And lots of other TOIs related to Unity Connection Networking.

Page 57: TOI Cisco Unity 8.0(3)

© 2006 Cisco Systems, Inc. All rights reserved. 57