One of the key benefits of Cisco Unity is that it integrates closely with Microsoft Exchange Server to provide Unified Messaging. However, because of this tight relationship, Cisco Unity is very sensitive to issues related to network security, network topology, and Exchange Server installations. A key step in troubleshooting Cisco Unity issues is distinguishing between an anomaly in the Cisco Unity software itself or in the environment it resides in. Once that has been determined, it is much easier to determine the proper subsequent steps to take.
To aid in this determination, the MapiNotify.exe utility was created. This is a simple console application written straight to Microsoft’s Messaging Application Programmer’s Interface (MAPI). After you enter some information, MapiNotify.exe tries to logon to a mail user’s mailbox, and register for Exchange notifications of changes to that mail user’s inbox. There’s actually a few different ways that an application can request notifications from Exchange. MapiNotify.exe requests notifications in the exact same manner that the Unity component the Exchange Monitor does.
1. Copy MapiNotify.exe to a place on the Cisco Unity server’s hard drive.
2. If the Unity system version 3.1.5 or higher, the Exchange Monitor resides in the AvMsgStoreMonitorSvr service. If the Unity system version is less than 3.1.5, the Exchange Monitor resides in the AvCsMgr service. To accurately test for the reception of notifications, MapiNotify.exe should be run under the same security context as the Exchange Monitor. Note which service contains the Exchange Monitor.
3. On the Windows 2000 Start Menu, click Settings> Control Panel > Administrative Tools> Services. Look for the service that contains the Exchange Monitor (specified by step 2) and note what the “Log On As” value is set to for this service. Specifically, note if it is the “LocalSystem” or a domain account.
4. Verifiy service level of Service Applicaiton a. If service that contains the Exchange Monitor (specified by step 2) is running as LocalSystem, skip down to step 8 and continue. b. If service that contains the Exchange Monitor (specified by step 2) is running as a domain account, continue with step 5.
5. If the Exchange Monitor is running as a domain account, proceed with one of the following options: a. Log off the current windows session and log back on as the same account that the service that contains the Exchange Monitor is running. b. Use the Windows “runas” command to run MapiNotify.exe under the same security context as the service that contains the Exchange Monitor is running. c. If connected to Unity via a Windows Terminal Session AND, step 1 cannot be done, use WTSLaunch.exe (available from the CPR website) to start MapiNotify.exe.
6. Skip to step 11.
8. If the Exchange Monitor is running as the local system account, on the Windows 2000 Start Menu, click Run, and run the following command (assuming the system32 drive is on C:\; adjust the statement if not): C:\> at HH:MM /interactive "C:\WINNT\SYSTEM32\CMD.EXE"
Where HH:MM is in 24-hour format. Enter a time that is one minute later than the time shown in the status tray in the lower right hand corner. The goal is to get the scheduler to run the command one minute from now. For example, if the current time is 1:00 pm, use 13:01.
9. When the new console window appears (up to a minute after you ran the command in step 8), in the console window type the path to MapiNotify.exe and run it.
10. Continue with step 11.
11. Enter the Exchange Organization that the mail user under test resides in and press Enter. This is information is available in Exchange 5.5 Administrator program, or the Exchange 2000 System Manager. 12. Enter the Exchange Site that the mail user under test resided in and press Enter. 13. Enter the Exchange Server that the mail user’s mailbox resides on and press Enter. 14. Enter the Alias of the mail user under test to open their mailbox and press Enter. 15. At this point, the application will attempt to logon to the mailbox and denote success if applicable. 16. MapiNotify.exe will attempt to register the mail user for MAPI notifications. When a notification is received, it will be displayed on the console. Note: If you are logged in remotely via WTS and the "Log On As" value for the services is not set to a domain account, you will be unable to run MapiNotify.Exe remotely. This is because steps 8 and 9 will not work via WTS because a command prompt cannot be opened in the WTS window by using the AT command.
1. By default, MapiNotify.exe will use the “Unity System Profile” for MAPI initialization and logon. To use a different profile, start MapiNotify.exe with the “-p” command line switch. MapiNotify.exe will prompt for the profile name to be used. This is useful when running MapiNotify.exe on a MAPI enabled client machine other than Unity. 2. Upon running MapiNotify.exe, a diagnostic file will be generated. The file will be located in the same directory from where MapiNotify.exe was run. The diagnostic file will append diagnostics from successive runs of MapiNotify.exe (if the application is run three separate times, the same log file contains diagnostics for each MapiNotify.exe session).
Unfortunately, MAPI errors are fairly generic, and don’t give good direction to what is wrong. However, the fact that an error occurs at all indicates there is an issue outside of Cisco Unity.
The table below describes some of the errors that are reported by MapiNotify.exe.
Table 1. Error Codes, their description and assocated problems