Accelerator Searches fail with error 'Retrieving the COM class factory for component with CLSID {...} failed due to the following error: 8007007f'
Problem
Enterprise Vault (EV) Compliance Accelerator (CA) or Discovery Accelerator (DA) Searches fail with error 'Retrieving the COM class factory for component with CLSID {...} failed due to the following error: 8007007f'. The EV Event Logs on the Accelerator server may list one or more of the following events listed in the Error sections below.
The Index Volumes/Archives listed in the Search Details may or may not show an ID of '-1'.
If Event ID 297 is seen in the EV Event Logs on the Accelerator Server, a DTrace run on the Accelerator server of the AcceleratorService Process during the Search may contain the following:
Initial DTrace Log entry:
73 12:00:00.000 [4740] (AcceleratorService) <Searching Vault Thread - worker thread for index server: XX (0):828> EV-H {VAULTTOSEARCH.EN_US} Exception: Retrieving the COM class factory for component with CLSID {62117D7C-56AF-44D0-852B-BD573D559D52} failed due to the following error: 8007007f. Info:{C2.EN_US} Last Error: The <Archive_Name> (ID: ABCDEF12345ABCDEF12345ABCDEF12345AB11110000123evsite01) Index Volume -1 for search ID AA failed. The search will be retried. The error was :|Retrieving the COM class factory for component with CLSID {62117D7C-56AF-44D0-852B-BD573D559D52} failed due to the following error: 8007007f. Diag:HRESULT: 8007007f Type:System.Runtime.InteropServices.COMException ST: at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)| at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(Type objectType)| at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(Type serverType)| at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(Type serverType, Object[] props, Boolean bNewObj)| at KVS.Accelerator.Search.VaultToSearch.SearchIndexVolume()
DTrace Log Entry after 5 failed attempts:
193 12:00:05.000 [4740] (AcceleratorService) <Searching Vault Thread - worker thread for index server: XX (1):828> EV-H {-} Exception: Error Search_Queues_ProcessVaultError Info:{ACCELERATOREVENT.EN_US} {C2.EN_US} Error processing Vault to Search off the queue: Searching Vault Thread - worker thread for index server: XX (1)|Vault ID: 1234567|Number of tries: 5|Cause:Retrieving the COM class factory for component with CLSID {62117D7C-56AF-44D0-852B-BD573D559D52} failed due to the following error: 8007007f. Diag: Type:System.Exception ST:
If Event ID 318 is seen in the EV Event Logs on the Accelerator Server, a DTrace run on the Accelerator server of the AcceleratorService Process during the Search may contain the following:
Exception: Error Search_Search_SavError Info:{ACCELERATOREVENT.EN_US} {C3.EN_US} An Error has occured when saving a search. System.Runtime.InteropServices.COMException (0x8007007F): Retrieving the COM class factory for component with CLSID {3EE36BDC-E025-4257-8E3B-678087BD9AE0} failed due to the following error: 8007007f.| at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)| at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(Type objectType)| at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(Type serverType)| at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(Type serverType, Object[] props, Boolean bNewObj)| at KVS.Accelerator.Search.Search.SetCriteria(RecipientCriteriaType aRecipientCriteriaType, SearchCriteriaDS aSearchCriteriaDS, SearchesDS aSearchDS, StringBuilder& dbgCriteria, DateTime& searchStartDate)| at KVS.Accelerator.Search.Search.NewSearch(SearchesDS aSearchesDS, SearchCriteriaDS aSearchCriteria, Int32 ModifiedByID) Diag: Type:System.Exception ST: Inner:None
Error Message
Some or all of the following Enterprise Vault Event Logs entries may be seen on the Accelerator Server:
Source: Accelerator Service Processor
Event ID: 297
Level: Error
Description:
APP AT - Customer ID: XX - Error processing Vault to Search off the queue: Searching Vault Thread - worker thread for index server: 9 (0)
Vault ID: 1234567
Number of tries: 5
Cause: Retrieving the COM class factory for component with CLSID {62117D7C-56AF-44D0-852B-BD573D559D52} failed due to the following error: 8007007f.
Source: Accelerator Service Processor
Event ID: 318
Level: Error
Description:
APP AS - Customer ID: XX- An Error has occured when saving a search. System.Runtime.InteropServices.COMException (0x8007007F): Retrieving the COM class factory for component with CLSID {3EE36BDC-E025-4257-8E3B-678087BD9AE0} failed due to the following error: 8007007f.
at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(Type objectType)
at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(Type serverType)
at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(Type serverType, Object[] props, Boolean bNewObj)
at KVS.Accelerator.Search.Search.SetCriteria(RecipientCriteriaType aRecipientCriteriaType, SearchCriteriaDS aSearchCriteriaDS, SearchesDS aSearchDS, StringBuilder& dbgCriteria, DateTime& searchStartDate)
at KVS.Accelerator.Search.Search.NewSearch(SearchesDS aSearchesDS, SearchCriteriaDS aSearchCriteria, Int32 ModifiedByID)
Source: Accelerator Service Processor
Event ID: 93
Level: Error
Description:
APP AT - Customer ID: XX - An error occurred while updating Vaults for Vault Store: ID=3 KVS ID: 1430AFE2F325A7A4EA7ABB4061E88C2551210000EVSite01. System.Runtime.InteropServices.COMException (0x8007007F): Retrieving the COM class factory for component with CLSID {4EC6FF78-C97A-11D1-90E0-0000F879BE6A} failed due to the following error: 8007007f.
at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(Type objectType)
at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(Type serverType)
at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(Type serverType, Object[] props, Boolean bNewObj)
at KVS.Accelerator.Application.Vaults.UpdateVaults(Int32 VaultStoreID, String KVSVaultStoreEntryID, Boolean bUpdateIndexServer, Boolean updateOnlyVaultServers)
Cause
The component with Class Identifier or CLSID referenced in the error is a file which is called by CA or DA when starting a Search. This file is typically one of the EV Dynamic Link Library or DLL files and is normally registered during installation of the EV binaries with the server's Operating System (OS) in the Registry under 'HKEY_CLASSES_ROOT\CLSID\{...}\InprocServer32\' and 'HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{...}\InprocServer32\' for 32-bit systems, or 'HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{...}\InprocServer32\' for 64-bit systems.
The error code 0x8007007f is defined as ERROR_PROC_NOT_FOUND, indicating the specified procedure or, in this case, file could not be found. The reasons for this behavior are not fully known but are believed to be caused by one or more of the following scenarios:
Scenario 1.
The DLL file being referenced by the CLSID in the error is missing.
Scenario 2.
An inability of the OS to properly register the DLL files specified by the Class Identifier (CLSID) listed in the error.
Scenario 3.
The EV installation path in the Registry of the Accelerator server is not pointing to the actual EV binary files. This can be caused by installing an EV Outlook Add-In on the Accelerator server. Installing any version of the EV Outlook Add-In is not recommended on a server with the EV binaries installed. The Add-In installation will alter the InstallPath and the Version (if an different version of the Add-In is installed) in the Registry on the Accelerator Server.
Here is an example of the relevant Registry entries from a normal stand-alone Accelerator server Registry under 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\KVS\Enterprise Vault\Install':
KitType (SZ) Server
InstallPath (SZ) C:\Program Files (x86)\Enterprise Vault
Here is an example of the relevant Registry entries from a Standalone 32-bit DA server with the EV Full Client Outlook Add-In installed:
KitType (SZ) Full Client
DeskTopClient (SZ) Installed
InstallPath (SZ) C:\Program Files (x86)\Enterprise Vault\EVClient\
ClientKit (SZ) Full Client
Please note the differences in the following sections:
- The KitType (which the application type) shows as 'Server' in the normal DA Server and 'Full Client' in the Outlook Add-In modified Server.
- The Installation Date (not shown above) shows the most recent date/time the application was installed. This date should correspond with the date/time the Outlook Add-In was installed on the Outlook Add-In modified Accelerator Server.
- The InstallPath shows the current installation folder of the application. The normal Accelerator Server shows this as C:\Program Files (x86)\Enterprise Vault as expected. The Outlook Add-In modified Accelerator Server shows C:\Program Files (x86)\Enterprise Vault\EVClient\. This is the location that CA or DA will reference when initiating any calls to the EV server(s) using the EV binaries installed on the Accelerator server and is the main cause of the error as the file referenced is not present in the Outlook Add-In modified InstallPath location.
Scenario 4.
In some rare circumstances, this issue may also be caused by using a newer version of the Accelerators with an older and incompatible version of the EV binaries (See Technote TECH38537 under Related Articles below).
How to determine the file associated to the CLSID
The CLSID from the error Event ID 297 example above {62117D7C-56AF-44D0-852B-BD573D559D52} corresponds to the IndexClient.dll file. If a different CLSID is listed in the Event Logs, search the Registry for the file associated to that CLSID, as follows:
- Copy the CLSID (not including the brackets) from the Event Log entry.
- Open the Registry: Start | Run | regedit [enter].
- In the Registry go to Edit | Find.
- Paste the CLSID into the 'Find what:' field, verify the 'Keys', 'Values', 'Data' options are selected, verify the 'Match whole string only' option is not selected. Click on 'Find Next'.
- Expand the first Hive found | navigate to InProcServer32. If the InProcServer32 Hive is not seen, go to the next entry by pressing the F3 key.
- View the Data value for the Default Key. This should list the file path and the file referenced by the CLSID listed in the Event Log entries.
The file referenced by the CLSID should be the one used in the Solution section below.
Solution
Note:
Please follow these steps in sequence. The steps are listed per Scenario but are not listed in the same order as the Scenarios are presented above.
Step 1 - Solution to Scenario 4: verify the EV binaries installed on the Accelerator server match the EV binaries installed on the EV server(s).
This is the least likely scenario and is easily resolved by upgrading the EV binaries on the Accelerator server to match the EV binaries installed on the EV server(s) in the environment. For the latest Compatibility Guide, please see TECH 38537 under Related Archives below. For the latest Supported Upgrade Paths Guide, please see 000080843 under Related Articles below.
If this is able to resolve the issue, any additional steps do not have to be followed.
Step 2 - Solution to Scenario 3: uninstall the EV Outlook Add-In if found to be installed.
This is also a rare occurrence but is also easily resolved. If the EV Outlook Add-In is found to be installed on the Accelerator server, uninstall the EV Outlook Add-In, uninstall/reinstall the EV Binaries with the EV Accelerator Manager Service (EVAMS) stopped:
- Stop the EVAMS from the Services MMC.
- Uninstall the EV Outlook Add-In via the 'Add/Remove Programs' Control Panel (for 2003 Server) or 'Programs and Features' Control Panel (for Server 2008).
- Uninstall EV via the 'Add/Remove Programs' Control Panel (for 2003 Server) or 'Programs and Features' Control Panel (for Server 2008).
- Reinstall EV but do not configure EV. At the "Installation complete. The InstallShield Wizard has successfully installed Enterprise Vault. Click Finish to exit the wizard." screen, uncheck the 'Show configuration information' or 'Show information on configuring installed components' box and click on Finish.
- Start the EVAMS.
If the EVAMS does not start or logs an error, it may be necessary to reinstall the Accelerator. Using article TECH55065 under Related Articles below, follow the Resolution steps in this order:
- Verify the CA/DA license file is readily available.
- Backup the CA or DA Configuration and Customer databases.
- Follow step 7 to make a copy of the .config files listed. These files should not require any editing.
- Follow step 4.
- Post Accelerator install, complete step 7 by copying the .config files from the above steps to the Accelerator installation folder.
- Start the EVAMS.
- Complete step 10.
If this is able to resolve the issue, any additional steps do not have to be followed.
Step 3 - Solution to Scenario 1: verify the file referenced by the CLSID exists in the Accelerator's installation folder.
Determine the appropriate DLL file as referenced by the CLSID in the error (see 'How to determine the file associated to the CLSID' above) - the CLSID {62117D7C-56AF-44D0-852B-BD573D559D52} will be used here as an example. Verify the file referenced by the CLSID is present, or run a Repair Install if missing:
- Open the Registry under 'HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{62117D7C-56AF-44D0-852B-BD573D559D52}\InprocServer32\' for 32-bit systems, or 'HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{62117D7C-56AF-44D0-852B-BD573D559D52}\InprocServer32\' for 64-bit systems.
- Determine the file name and path; should be similar to "C:\\Program Files\\Enterprise Vault\\IndexClient.dll" for 32-bit systems or "C:\\Program Files (x86)\\Enterprise Vault\\IndexClient.dll" for 64-bit systems.
- Use Windows Explorer to browse to this location and verify the file exists. If the file does not exist, run a Repair install of the EV Binaries via the 'Add/Remove Programs' Control Panel (for 2003 Server) or 'Programs and Features' Control Panel (for Server 2008).
If this is able to resolve the issue, any additional steps do not have to be followed.
Step 4 - Solution to Scenario 2: re-register the file referenced by the CLSID.
Determine the appropriate DLL file as referenced by the CLSID in the error (see 'How to determine the file associated to the CLSID' above) and re-register the DLL file referenced by the CLSID file with Windows:
- Open a Command Prompt by typing the following at a Run Command on a 32-bit system: cmd [enter]. For 64-bit systems, start a 32-bit Command Prompt by typing the following at a Run Command: %windir%\SysWoW64\cmd.exe [enter].
- Browse to the EV Binaries installation folder, typically at \Program Files\Enterprise Vault\ for 32-bit systems, or at \Program Files (x86)\Enterprise Vault\ for 64-bit systems.
- Execute the following command to register the file (the IndexServer.dll file is used in this example):
regsvr32 IndexClient.dll
A RegSvr32 window with the following will appear upon successful registration: "DllRegisterServer in IndexClient.dll succeeded."
- At the same Command Prompt execute the following command (using the same IndexServer.dll file as an example):
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe IndexServer.dll /codebase
In the event none of these steps are able to resolve the issue, this indicates the OS is unable to register the DLL in question. The only solution is to install CA or DA on another server and use that other server from this point in time forwards. For detailed steps on how to move CA/DA to a new server, please see article TECH55065 under Related Articles below.