POA task to perform Windows service provisioning operation through WPE or MPS provisioning system fails with the error mesage 'The specified module could not be found. (Exception from HRESULT: 0x8007007E)'. The detailed diagnostics may look as follows.
Windows Provisioning Engine:
Task ID 8794697
Queue name ExchangeServiceConfiguration344
Task name Start dump of Autodiscover configuration for service #344
Task description Start dump of Autodiscover configuration for service #344
Queue status Failed
Start not earlier than Aug-06-2012 11:44
Method name dumpStartHandler on OBJREF:Exchange:0:getAutodiscoverService:344
Last execution output Destination host_id #135 : Provisioning request failed. Error in 'SW Managed Exchange.InitializeAutodiscoverRedirect'.
Exception calling "Execute" with "3" argument(s): "The specified module could not be found. (Exception from HRESULT: 0x8007007E)"
At C:\Program Files\Parallels\Windows Provisioning Engine\Providers\Common\ProviderUtils\ProviderUtils.psm1:53 char:26
+ [void]$Context.Execute <<<< ($Provider, $Method, $exec_data)
Microsoft Provisioning System:
Task ID: 171519
Queue name: DomainServiceSMTP00005898_117
Task name: Register SMTP event sink(s) for domain 'customer.com' (ds_id=5898)
Task description: Register SMTP event sink(s) for domain 'customer.com' (ds_id=5898)
Queue status: Failed
Start not earlier than: Feb-06-2008 16:51
Last execution output: Exception during execution of MPF request: 'The specified module could not be found'.
[<response><errorContext description="The specified module could not be found." code="0x8007007e" executeSeqNo="2">
<errorSource namespace="File System Provider Ex" procedure="SED"/>
<errorSource namespace="SW Managed Exchange" procedure="UpdateSMTPDomains"/>
The POA package MPFProviderClients installed on the managed host is broken. It is needed even if POA performs operations through WPE, not MPS.
- Log into the target host using RDP, the host ID may be found in the failed task properties - 'Destination host_id #135'.
- Make sure that you have the 'PEM MPF Provider clients' installer on the host - the default location is 'C:\Program Files\SWsoft\PEM\MPFProviderClients.exe' (or 'C:\Program Files (x86)\SWsoft\PEM\MPFProviderClients.exe'). See notes below how to check if the file has correct version.
- Uninstall the 'PEM MPF Provider clients' Windows program using 'Add/Remove Programs' or 'Programs and Features'
Install the program back:
- x86 host: C:\Program Files\SWsoft\PEM\MPFProviderClients.exe
- x64 host: C:\Program Files (x86)\SWsoft\PEM\MPFProviderClients.exe
- Re-run the failed POA task
Note: you need to make sure that MPFProviderClients.exe binary located on POA-managed Windows slave sever has the correct version. The version of the MPFProviderClients.exe installer must be exactly the same as the version of POA package MPFProviderClients installed on the host in question which may be seen in POA Provider CP at Deployment Director > Server Manager > Hardware Nodes > select server > Packages tab. The .EXE file contains .MSI file inside which will be actually installed. There is no easy way to check if the .EXE file has correct version because the version of .EXE file does not match the version of .MSI file inside.
Do the following to check if the MPFProviderClients.exe file on Windows slave server has correct version:
- Log into POA Provider Control Panel
- Go to Deployment Director > Server Manager > Hardware Nodes.
- Click on the problem server where you are going to reinstall the MPF Provider Clients package.
- Switch to the Packages tab.
- Remember the verion of the MPFProviderClients package.
- Log into POA Management Node by SSH/RDP and find the body file of the POA MPFProviderClients package. E.g. for the MPFProviderClients 5.2.21 it will be the file other-Win32-5.2-i386-MPFProviderClients-5.2.21.tgz.
Depending on the POA platform package body may be found in different places:
- POA for Linux: /usr/local/pem/install/tarballs/
- POA for Windows: C:\Program Files (x86)\SWsoft\PEM\install\tarballs
- Copy the .tgz file to a temporary folder on some Linux server, log into this server and extract the tarball, you will get the file MPFProviderClients.exe.
Find the MD5 sum of the file MPFProviderClients.exe from POA package:
# md5sum MPFProviderClients.exe
- Copy the file MPFProviderClients.exe from the problem Windows slave server to a Linux host and calculate its MD5 sum.
- Make sure MD5 sums of the file located on the problem Windows slave server and in the POA package of the needed version match to each other.