Directory
A Word About Fixing Restriction
Table Violations
A Word About Multiple Unity Networks
Recreating Subscriber Templates
This utility walks the directory and makes the checks
listed below on all call handler,
subscriber, subscriber
template, interview handler, locations and directory handler objects in the
database. If there's a problem the
string "(error)" will appear in red in the output HTML. Warning strings in yellow that
start with "(warning) are also logged for items that you should check on
but are not necessarily problems.
If an item is automatically fixed, a string that starts with
"(fixed) will be logged in green directly under the error to indicate what
was done. See the example file output below for more.
When it's complete a dialog
will pop up letting you know it's finished and telling you how many errors and
warnings were encountered in the process and you'll be given the opportunity to
view the output file. Just search
the output file for the string “(error)” or “(warning)”
and you will be taken right to each problem in the log. Brief explanations of the problems
encountered will usually appear on the following line in the log, be sure to
read them in their entirety to determine what you should do about them, if
anything.
Some problems are logged as
errors and fixed automatically on the fly (i.e. if the standard contact rule or
greeting rule has been disabled, it will be enabled again on the fly). Some problems are fixed optionally if
you indicate it’s OK (i.e. orphaned call handlers are removed if you
check the option to do so at the top of the form). Other problems cannot be fixed
automatically and you will need to intervene manually to clear the issue
up.
The logging detail drop down
can be set to show information about all objects checked during the database
walk or you can choose to limit the output to only those objects that encounter
one or more errors or warnings or just those objects that encountered one or
more errors (default). Each time
you press the "Walk Database" button, a new output file is generated
and stored under the \logs\ directory where you installed dbWalker. To quickly view the logs directory you
can select File | View Log Directory from the menu and it'll open File Explorer
to that directory automatically.
Whenever dbWalker runs it will automatically delete any logs in this
directory older than 10 days.
This version of dbWalker run on Unity 4.0(1) and later systems. For users of 2.x or 3.x, you will need to obtain the appropriate version of dbWalker off www.CiscoUnityTools.com.
dbWalker must run on the
local Unity server, it cannot run off box.
It is strongly recommended that you first run dbWalker with no automatic fix options selected at all and review the output it generates before you select any automatic fix options. Once you've run the tool, reviewed the resulting output and understand what changes will be made with the selected automatic fixes (see below), then run dbWalker again and select the desired automatic fix options.
·
Display Name, makes sure it's not blank.
·
Primary Call Handler exists and is valid and is unique in the dialing
domain
·
All alternate extensions are unique in the dialing domain.
·
Primary Call handler is not "shared" by another mail
user.
·
COS reference exists and is valid.
·
Location exists and is valid.
·
Language selected for user is installed on the box. This can be
automatically fixed if desired.
·
Switch ID is valid and references a switch installed on the box. This can be
automatically fixed if desired for versions of Unity prior to 4.2(1). For versions of 4.2(1) or later, you
need to use the Telephone Integration Manager application in the Tools Depot to
repair invalid switch references.
·
Makes sure voice name referenced in database actually exists as a WAV
file on the hard drive.
·
The rest of the data associated with a subscriber is contained in the
"primary call handler" assigned to this subscriber and those checks
are made during the call handler sweep.
·
Checks that private distribution lists have display names associated
with them. A warning is logged if
it's empty.
·
Checks that private distribution lists have members associated with
them - if not a warning is logged. This can be fixed automatically by removing the list if
desired.
·
Checks that the exit destination for the subscriber is
valid (Unity 4.0 and later only)
·
Ensure the smtpAddress value is not NULL
·
(optional) Transfer strings, notification devices and fax delivery numbers
are checked against the restriction tables assigned to the COS the subscriber
is associated with. This check is
optional because in some situations a company may wish to assign subscribers to
COSes that don't allow any numbers to be entered by the subscribers themselves,
instead requiring they go through a help desk administrator to change
these. By default this check is not
done, you need to select the checkbox at the top of the form to have these additional
tests run. This can be fixed
automatically by disabling the offending device if desired. See "A Note About Fixing
Restriction Table Violations" below before you do this.
·
For all remote subscribers, make sure the remoteAddress
column is not NULL - this is done for 4.0(1) and later only.
·
For all remote subscribers, make sure the remoteAddress
column is unique for each subscriber in the global subscribers table. This is done for 4.0(1) and later only.
·
For all remote subscribers, make sure the legacy mailbox ID
and RemoteNode id values are valid. Both can be NULL or both can have
values. If they do have values make
sure both are all digits and that they are a unique pair in the global
subscribers table. This check is
made for 4.0(1) and later only.
·
Checks to be sure the DirectoryID value is not blank/NULL -
this indicates that the object has not yet synchronized properly with the
directory.
·
The MailstoreObjectID value is checked to be sure it has a
corresponding entry in the MailboxStore table in UnityDB.
·
If the subscriber has their EncryptPrivateMessages flag
turned on, dbWalker makes sure there is a certificate installed for message
encryption. This check is made on
4.0(5) and later.
·
If the subscriber has the option to edit broadcast
messages, dbWalker ensures that they also have the ability to send broadcast
messages. This check is made on
4.0(5) and later.
·
Blind addressing members in private distribution lists are
checked for corresponding entries in the global locations table. This check is made for Unity 4.0(5) and
later.
·
Owner exists and is valid. This can be fixed
automatically for NON primary call handlers. If a call handler is tagged as primary
(i.e. it's supposed to be part of a subscriber) this will not be automatically
fixed.
·
Recipient exists and is valid.
This can be fixed automatically for NON primary
call handlers. If a call handler is tagged
as primary (i.e. it's supposed to be part of a subscriber) this will not be
automatically fixed
·
Location exists and is valid.
·
Text Name, makes sure it's not blank in the case of a nonprimary call
handler.
·
DTMF_ID, make sure it's not blank in the case of a primary call
handler.
·
DTMF_ID does not conflict with another object either locally or in the
dialing domain. If a conflict is
found, a list of all objects that share that ID in the dialing domain will be
listed.
·
If the call handler is primary it checks for all alternate extensions
associated with the subscriber tied to the call handler to be sure the ID is
unique in the dialing domain.
·
If the after greeting action loops back around to itself a warning is
logged for all greetings except the "error" greeting for which this
is not unusual.
·
After message action links to a valid object.
·
All one key rules (caller input keys) link to valid objects. This can be
fixed automatically if desired.
·
After greeting action links to a valid object for each greeting rule.
·
Schedule reference is valid.
This can be fixed automatically if desired.
·
Makes sure all the contact rules reference valid Switch IDs. This can be fixed automatically if
desired.
·
Checks to be sure the standard greeting is active. If it’s
not, it will be set active on the fly. This is not optional.
·
Checks to be sure the standard transfer rule is active. If it’s
not, it will be set active on the fly.
This is not optional
·
Makes sure the language is mapped to one installed and
active. This can be fixed
automatically if desired.
·
Makes sure the WAV files associated with the voice name exists on the
local HD. This can be fixed automatically if desired.
·
Makes sure the WAV files associated with the greetings for this call
handler exist on the HD. This can be fixed automatically if desired.
·
Make sure the AVP_DTMF_ACCESS_ID value is always blank for the primary
call handler of a template.
·
Check to see if the Extension field of the contact rules of a template
are blank. Technically a specific
number value is legal for a transfer rule in a template, but it’s highly
unusual. If the administrator
wishes to have the template configure transfers by default, the “yes,
transfer to subscribers’ extension” radio button should be selected
on the template which leaves the AVP_EXTENSION value blank (it’s filled
in with the subscriber’s extension at creation time). If a specific number value is in this
field a warning is logged to alert the user to a potential problem.
·
Makes sure the call handler associated with the template is marked
primary.
·
Makes sure primary call handler reference is valid. There have been problems in this area with
various releases of 2.4.x and 3.0(x) so special attention is made here. If the primary call handler referenced
by a template is ALSO referenced by another subscriber in the system as it's
primary call handler, an error is logged.
This is a "cross referenced" handler.
·
Checks COS assignment
·
Checks language to be sure it's a valid, installed language. This can be
fixed automatically if desired
·
Checks schedule to be sure it's valid. This can be
fixed automatically if desired
·
Checks location object reference
·
If the primary call handler for a subscriber template has it's owner or
message recipient set to anything but NULL and it's a 4.0(1) or later version
of Unity, an error is logged. This can be automatically fixed if desired.
·
Checks extension for uniqueness across the dialing domain. If a conflict is found all objects in
the dialing domain that conflict will be listed in the output.
·
Checks location assignment.
·
Owner exists and is valid. This can be fixed
automatically if desired.
·
Recipient exists and is valid.
This can be fixed automatically if desired.
·
Makes sure language selected is valid. This can be
fixed automatically if desired.
·
Makes sure the after message action goes to a valid destination.
·
Checks extension for uniqueness across the dialing domain. If a conflict is found all objects in
the dialing domain that conflict will be listed in the output.
·
Checks location assignment.
·
Owner exists and is valid. This can be fixed
automatically if desired.
·
Makes sure language selected is valid. This can be
fixed automatically if desired.
·
Makes sure "Zero action" goes to a valid
destination
·
Makes sure "Exit action" goes to a valid
destination
·
Makes sure the subscriber filter options are valid and, if
applicable, reference existing COS or distribution list objects. This option only applies to Unity 4.0(1)
and later.
·
Checks to be sure the DTMF ID (if present) is unique in the dialing
domain
·
Checks to see if the DirectoryID is blank/NULL - this indicates the
object has not yet synchronized with the directory yet.
·
Checks to be sure the location object has a directory ID - this means
it is represented by an object in the directory.
·
Makes sure there's a representation of the location object in the
global locations table in SQL.
·
Checks that the System ID in both the local and global locations tables
in SQL matches.
·
For Unity 4.0(4) and later the cross box login and transfer tables are
checked for invalid references to missing location objects.
·
If the global locations table is empty or a local location is not
represented there, all local locations will be forced into the global locations
table automatically.
·
(optional) if the optional check for orphaned global subscribers is
enabled, all entries in the globalSubscriber table that do not have a valid
reference in the globalLocations table will be listed out.
·
Checks to be sure any routing rule that contains a link to a call
handler, interview handler, directory handler or subscriber is valid.
·
Checks each entry to be sure the extension value is mapped to a valid
object in the directory and isn't an "orphaned" DTMFID value. This can be
fixed automatically if desired.
·
Checks to see if the DTMFAccessID column is NULL or empty. This can be automatically fixed if
desired.
·
Checks for any duplicate ParentObjectID values in the
table.
·
Orphaned rows in the MessagingRules table are checked for - they are removed
and logged if found.
·
Orphaned rows in the ContactRules table are checked for - they are
removed and logged if found.
·
Orphaned rows in the MenuEntry table are checked for - they are removed
and logged if found.
·
Orphaned WAV files are searched for in the \commserver\stream files\
folder. You
can automatically removed these if desired
·
Checks for NULL values in encryption keys for the server
table on Unity 4.0(5) and later systems.
This is logged as a warning since it could indicate a problem with key
replication between systems.
·
Checks the
“TimeLastModified” column of the Configuration table for invalid
time values.
Starting with version 3.0.83 of dbWalker, the option to fix any violations of restriction tables for transfer rules, notification devices and fax delivery numbers was added. Before you select this option, please be sure to understand what this means.
Unity enforces compliance with the three restriction tables associated with a subscriber's class of service at the time the number is changed - either through the SA, the PCA or the phone conversation. The number is not checked for compliance at the time it is dialed. The reason for this is such that companies can employ a "help desk" model where individual subscribers are not allowed to change their transfer or delivery numbers at all or on a very restrictive basis. However administrators at a help desk can take requests from users and make such changes for them. This is a popular choice among larger companies to ensure they prevent toll fraud or accidental mis dials and the like.
If your company is using a "help desk" model, DO
NOT SELECT TO FIX RESTRICTION TABLE VIOLATIONS!!!
The checks made by dbWalker look to the subscriber's restriction tables to see if their transfer number, notification devices and default fax delivery number comply. If these numbers were legitimately entered by a help desk administrator as noted above, dbWalker has no way of knowing that and will disable the devices regardless. There's no way to "undo" this disabling in bulk, you will have to manually re enabled the devices in the SA one at a time or using BulkEdit where appropriate if you make a mistake here.
You should definitely make sure to take a close look at the
subscribers and devices that fail to comply BEFORE you select to automatically
fix these so you know what changes will be made to your system. PLEASE use this option with GREAT
caution!
If you have more than one Unity server on your network be sure to run dbWalker on each of the Unity servers. All extension uniqueness checks apply only to objects homed on the local server itself, it does not check to be sure extensions and alternate extensions for remote subscribers and location objects are valid.
When you run dbWalker it constructs an HTML file that contains information about all the objects examined in the database. If errors or warnings are encountered, they are noted with "(error)" or "(warning)" strings that are left justified in the output and colored red or yellow respectively. If an item was fixed automatically it's preceeded by the string "(fixed)" and the text is green.
Each section of the output is preceeded with the object type being examined at that point. It starts with subscribers, then call handlers, then subscriber templates, then directory handlers and finally walks the interview handlers collection. The following is a short chunk of the dbWalker output file that shows the start of the subscriber template object walk:
*** Starting subscriber template walk ***
Alias=defaultadmintemplate
Display Name={Default Administrator} Template
Jump to this subscriber template in the SA using this link: Open SA to this subscriber template
Language set to=English (United States)
COS alias=defaultadministrator
…
A number of property checks for each subscriber template in the collection are shown, then the system shows a similar heading for the call handler walk etc… Notice in particular the new "Open SA to this subscriber template" link shown. Clicking on this will open the SA and take you right to the subscriber template in question. This is a handy way to quickly find run down problems reported on various objects in the output. This link is available on all objects dbWalker reports on.
The following chunk
of output shows what it looks like when an error is encountered and then fixed
automatically:
Handler Alias=red shirt handler
Jump to this call handler in the SA using this link: Open SA to this call handler
Text Name=red shirt handler
Extension= -blank- This is OK, call handlers are not required to have an extension defined
Handler language set to 'inherited'
Call handler associated with location object with alias=default
Call handler owner is a public distribution list with an alias=EAdmin
Call handler recipient is a public distribution list with an alias=EAdmin
After message action:
Set to go to call handler with alias=goodbyech
(error) Handler associated with missing schedule named: adfasdf
You can fix this by selecting a new schedule on the profile pages for this handler or subscriber in the SA
(fixed) Schedule set to All Hours - All Days as instructed
Menu key: 1
Set to 'ignore'
Menu key: 2
…
In this case the
schedule name was not found in the system (i.e. someone had removed it after
assigning the call handler to it).
Since all errors are preceeded with the "(error)" string you
can simply do a search in the output for this string and "find next"
through it to find all problems encountered. In this example output the user had
selected to automatically fix all broken schedules by assinging them to the
"All Days" schedule on the fly.
The "(fixed)" string in green indicates this and then the
output moves on as normal. At the
end of the dbWalker run a total of all errors, warnings and fixed errors is
given. Be sure to review the output
carefully since not all errors can be fixed automatically, some will require
manual intervention.
DbWalker has the option to schedule regular walks of the database on a daily, weekly or whatever recurring schedule you’d like. The output can optionally be emailed to one or more SMTP addresses if the IIS configuration on the local Unity server is allowed to connect to your site’s SMTP gateway. To schedule dbWalker to run, select the “Schedule | Schedule dbWalker to Run” menu option and the following dialog will appear:
The Schedule dialog (above) interfaces directly into the built in Windows scheduler. You may see other scheduled tasks in the list that are not related to the dbWalker tool itself. You can edit their properties or delete them from in here but you can only add new tasks specific to the dbWalker via this dialog. Use the Windows Scheduler itself if you want to schedule other types of tasks.
To add a new schedule, hit the ‘Schedule Walk’ button. Provide a display name that will be shown in the schedule list to describe this task. Next, set the properties for the task. Do not adjust the path or the command line options, those are set for you automatically. By default the task is not enabled, be sure to check the “Enabled” option at the bottom of the “Task” tab. You set when and how often this task runs on the “Schedule” tab. When you have it configured as you’d like, click “OK”. You will be asked to provide the login name and PW of the account you’d like this task to run under. Provide the account you’ve done a database walk with before to be sure it has the rights to attach to SQL and run the checks necessary.
The output from these walks is stored in separate files under the \logs directory under the dbWalker installation path. You can view this directory automatically by selecting the “File | View Log Directory” menu option.
If you would like to have the output file from the scheduled run of dbWalker emailed as an HTML attachment to one or more people, select the “Schedule | Email Notification” menu option and the following dialog will appear:
You can simply add as many fully qualified SMTP addresses to the list as you want. If you enter an address and then press the “Send Test Message” button, it will immediately send an email to that address as a test.
By default DbWalker uses IIS to route emails out. If you leave the name or IP address of the SMTP gateway blank it will use this method to send out email reports of dbWalker output. See the Microsoft documentation for IIS for more details on how to configure IIS for this. If, instead, you provide the name or IP address of an SMTP gateway on your network and a port to use (default of 25), dbWalker will instead send the email out using this mechanism.
This tool comes with built in support for several languages including US English, French, German and Japanese. By default it will display the language the Windows operating system is set for. If that language is not supported it will default to US English.
To manually force the tool to show a different language than the default, you can select the Help | About menu option and click the “Change Language” hyperlink on the About box. The languages installed will be presented in a drop down list and the display will update into that language immediately when you select it.
NOTE: If you select Japanese as a display language and you are not running on a version of Windows that has the Japanese code page installed, the display will show all “?” characters. This is expected.
One of the problems that crops up in the field from time to time is the subscriber templates get corrupted due to failed import or create requests for new subscribers in the SA or import tool. While the templates can be fixed by hand using SQL directly or DOHPropTest, it’s not a trivial set of changes and cannot be easily automated. To help deal with this issue more cleanly, a new option has been added in dbWalker under the File menu to recreate the default subscriber templates.
By selecting this option, dbWalker will delete the {Default
Subscriber} and {Default
Each time the template recreation function is run a new log file is generated in the “logs” folder off the dbWalker installation directory. The file name starts with “dbWalker_TemplateRecreation_” and includes a date and time down to the second in the remainder of the file name to ensure it’s unique each time it’s run. It’ll generate a new file each time you run the template recreation script in the same way dbWalker generates a new output file each time you walk the database. Logs for both will stick around in the logs folder for 10 days before being removed automatically the next time you run dbWalker for any reason.
Starting with version 3.0.83, dbWalker will always write out to the application event log regardless of if it’s run manually or triggered via an automatic schedule. The following list of event log entries can be generated:
Event ID |
Text |
Description |
1 |
Unity dbWalker started from user input. User=%1 |
If dbWalker is launched manually and run by a user, this event is added to the application log. The domain and user name of the person running dbWalker is substituted for the “%1”. |
2 |
Unity dbWalker started from scheduled run. User=%1 |
If dbWalker is scheduled to run automatically, when it starts this event is added to the application event log. The domain and login name of the account assigned to the scheduled task issubstituted for the “%1”. |
3 |
Unity dbWalker encountered an error. Error reported=%1 |
This error is currently not written to the application event log. It may be used later to report selected serious errors encountered during the database walk. |
4 |
Unity dbWalker completed. Log path=%1 |
When dbWalker finishes (either from a manual run or a schedule automatic run) this event is added to the log. The “%1” is replaced with the full path to the log file created by dbWalker for that run. |
5 |
Unity dbWalker run with automatic fix options enabled. Automatic fixes selected=%1 |
If the user runs dbWalker and selects to automatically fix one or more items in the database, this event is written out. The “%1” is replaced with a list of all the automatic fixes selected. |
To check for updates to this tool, visit http://www.ciscounitytools.com/
4.0.64 – 10/04/2010
4.0.63 – 08/04/2010
4.0.62 – 01/26/2010
4.0.61 – 12/11/2009
4.0.60 – 11/10/2009
4.0.59 – 10/30/2009
4.0.58 – 9/30/2009
4.0.57 – 5/09/2009
4.0.56 – 8/29/2008
4.0.55 – 5/30/2008
4.0.54 – 5/23/2008
4.0.53 – 3/20/2008
4.0.52 – 2/25/2008
4.0.51 – 1/17/2008
4.0.50 – 12/21/2007
4.0.49 – 8/7/2007
4.0.48 – 5/25/2007
4.0.47 – 3/14/2007
4.0.46 – 9/13/2006
4.0.44 – 6/19/2006
4.0.41 – 4/5/2006
4.0.40 – 3/28/2006
4.0.39 – 2/3/2006
4.0.38 – 12/19/2005
4.0.37 – 12/6/2005
4.0.36 – 11/16/2005
4.0.35 – 8/10/2005
4.0.33 – 5/10/2005
4.0.33 – 5/5/2005
4.0.32 – 4/14/2005
4.0.31 – 3/28/2005
4.0.30 – 3/10/2005
4.0.29 – 3/8/2005
4.0.27 – 2/18/2005
4.0.26 – 1/19/2005
4.0.25 - 1/12/2005
4.0.24 – 12/9/2004
4.0.23 – 11/30/2004
4.0.22 – 11/9/2004
4.0.20 – 9/8/2004
4.0.19 – 8/31/2004
4.0.18 – 8/6/2004
4.0.17 – 7/22/2004
4.0.15 – 7/16/2004
4.0.14 – 6/16/2004
4.0.12 – 6/3/2004
4.0.10 – 5/24/2004
4.0.9 – 5/7/2004
4.0.8 – 4/30/2004
4.0.5 – 3/31/2004
4.0.4 – 3/22/2004
4.0.2 – 2/27/2004
© 2006 Cisco Systems, Inc. -- Company Confidential