Error results when connecting to SAP HCM using SAP HCM wizard in Management Studio

Joe Varkey 13 years ago in UNIFYBroker/SAP ERP Human Capital Management updated by anonymous 9 years ago 8

When attempting to connect to SAP using the SAP HCM Wizard the following errors result:

Exception exported from Save exception
System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at SAP.Connector.Connection.Open()
at Unify.Communicators.SapHRCommunicator.SapHrCommunicator.Open()
at Unify.UI.PlugIn.SAP.ConnectionWizard.TestSapCredentialsTask.PerformTask()
at Unify.UI.TimeoutTaskDecorator`1.PerformTask()
at Unify.UI.ExceptionTaskDecorator.PerformTask()



I make the following assumptions, that you have not supplied. Please reopen issue if this is not correct.

  • Windows Server 2008 R2 x64 Enterprise is being used
  • You were using the UNIFY Management Studio from the start menu.

Please use the UNIFY Management Studio (x86) item from the start menu. The SAP DLLs will not work in x64 processes, which the normal start menu item is.


Using (x86) version of Management Studio

I got the same error after installing version 3.0.7 of the service on a vanilla machine because I was not aware of the SAP DLL limitation. What I found in the DEV environment was that Richard Courtenay appears to have renamed the default service.exe to service64.exe, and the service32.exe to service.exe. Is this the recommended deployment model, or have I installed with the wrong MSI?

Hi Bob. From recollection the x86 version of Identity Broker is compiled using the Any CPU option, meaning that on an x64 system it will actually run as a 64 bit process. The SAP Connector needs a 32 bit version of Identity Broker and thus at the client where I installed this I couldn't use that installer. For the 64 bit system I installed the 64 bit version of Identity Broker and renamed the Identity Broker services executables so that starting the Identity Broker service would cause the 32 bit version of the EXE to execute (in the x64 package, the 32 bit version is compiled explicitly to run as a 32 bit process).

I believe I spoke to either Adam van Vliet, Patrick Johannessen or Matthew Clark at some point which lead to me making that change. I'm not 100% sure who it was I spoke to. There may be other ways to get the service running as a x86 process, but the rename appeared to work for me.

Thanks Richard - it's working OK after the rename, but since I am writing installation documentation for Datacom to perform, I wanted to know if this was the way we are supposed to be deploying this moving forward ...

The installer package name (x64/x86) is the designator for the system being installed to. The service executable without a number in the name is compiled as Any CPU, whereas the executable with 32 in the name is compiled as x86.

For version 3.x of Identity Broker, there is only one service installed under Windows local services, which is why the executable would have been renamed. For v4.0 onwards there are two Windows services installed for the x64 package, allowing for the correct one to be chosen there instead of having to rename the executables.

Thanks for the clarification - will keep the instructions to Datacom as I have them.