Scenario

While running a project with ILM 2007 (MIIS) connectecting to a SAP system, we needed to make sure that MIIS connects to a SAP system with SAP load balancing.

Initially we used a direct connection to a development server using the default connection string that Microsoft suggests, like ASHOST=D30 SYSNR=30 CLIENT=510.

But if we tried to connect using the suggested load balancing string by Microsoft (in online help of ERP MA), the ERP MA throws an error :

Application error occurred.
An error occurred while connecting to ERP server.

Max. lMax. length for ID/Value exceeded '\è[]...' 

SAP Error screenshot

Error details 

If you save the configuration (with direct connection string), and run an import on MIIS, MIIS throws an error.

“The extensible extension returned an unsupported error in MIIS. 
 The stack trace is: 
 "Microsoft.MetadirectoryServices.ExtensibleExtensionException: Connect to SAP gateway failed 
Connect_PM  GWHOST=D30, GWSERV=sapgw00, ASHOST=D30, SYSNR=00 
LOCATION    CPIC (TCP/IP) on local host 
ERROR       partner not reached (host 10.0.0.1, service 3300) 
TIME        Thu Sep 27 13:35:24 2007 
RELEASE     640 
COMPONENT   NI (network interface) 
VERSION     37 
RC          -10 
MODULE      nixxi_r.cpp 
LINE        8605 
DETAIL      NiPConnect2 
SYSTEM CALL SiPeekPendConn 
ERRNO       10061 
ERRNO TEXT  WSAECONNREFUSED: Connection refused 
COUNTER     1 
   at Microsoft.MetadirectoryServices.ERP.SAPMA.GenerateImportFile(String fileName, String connectTo, String user, String password, ConfigParameterCollection configParameters, Boolean fFullImport, TypeDescriptionCollection types, String& customData) 
Microsoft Identity Integration Server 3.2.0559.0" 
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.” 

Solution



With assist of MS PSS (Thanks, José!), we found the solution to the problem.

FYI, loadbalancing in SAP, allows to fail over a SAP application server to another running instance of the SAP server.

Instead of connecting directly to the application host, you connect to the SAP message server, which forwards the connection to the active server.

If you look into the help of the ERP Management Agent Configuration Tool, look for 'load balancing'.

Strangely enough, "Known Issues" is shown, but never mind.

It says, I quote, "

For load balancing purposes, application servers within SAP system are usually group together to support different kinds of users; these groups are known as logon groups. To specify a logon group for the ERP MA, you must specify the group within the ERP MA connection string. Contact the SAP administrator for the correct connection string for this purpose.

For reference, the below sample shows a connection string which specifies the 'SAPADM' logon group:

/M/mySap.sap-ag.de/S/4253/G/SAPADM

'/M/' (message server host name

'/S/' (message server port)

'/G/' (logon group)"

 

But it does not tell you that there is another option to use a loadbalancing string, very much alike the normal (direct) SAP connection string example that is displayed by the tool (ASHOST=host SYSNR=## CLIENT=###).

But you need to use a syntax that is a bit different, like:

MSHOST=MSGSVR_ALIAS R3NAME=APPSVR_NAME GROUP="logongroup" CLIENT=XXX SYSNR=XX 

In which

MSHOST = Central Instance of SAP system.

R3Name = System Name

Group = Logon Group defined in the SAP system for your application.

To use logon groups, you need to make sure that your connecting to the messaging server, rather than to the application server host.

(Generally the message server has a name ending with "00" as system number...)

Before you can use that loadbalancing string, you need to add the required entries in the services file. (meaning %WINDIR%\System32\Drivers\etc\services file)

32xx = Dialog Server

33xx = Gateway Server

36xx = Message Server

In this case we added (amongst many others for other application servers)

sapdp00         3200/tcp 
sapdp30         3230/tcp 
sapgw00         3300/tcp 
sapgw30         3330/tcp 
sapmsQD0        3600/tcp 
sapmsD30        3630/tcp 

So we used the loadbalancing connection string: MSHOST=eccdev R3NAME=D30 GROUP="Test" CLIENT=510 SYSNR=30

But initially this didn’t work neither.

The ERPMA Configuration tool could not connect to the message server.

And MIIS threw an error, at import: "The extensible extension returned an unsupported error in MIIS."

The stack trace is:

"Microsoft.MetadirectoryServices.ExtensibleExtensionException: Connect to message server failed 
Connect_PM MSHOST=eccdev, R3NAME=D30, GROUP=Test 
ERROR service 'sapmsD30' unknown 
TIME Thu Nov 15 13:11:37 2007 
RELEASE 640 
COMPONENT NI (network interface) 
VERSION 37 
RC -3 
MODULE ninti.c 
LINE 505 
DETAIL NiPGetServByName2: service 'sapmsD30' not found 
SYSTEM CALL getservbyname_r 
COUNTER 1 
at Microsoft.MetadirectoryServices.ERP.SAPMA.GenerateImportFile(String fileName, String connectTo, String user, String password, ConfigParameterCollection configParameters, Boolean fFullImport, TypeDescriptionCollection types, String& customData) 
Microsoft Identity Integration Server 3.2.0559.0" 

 

The system/service sapmsD30 could not be pinged.

For testing purposes we added sapmsD30 to the hostfile with the IP address of the message server eccdev.

Then MIIS threw an error while importing:

The stack trace is:

"Microsoft.MetadirectoryServices.ExtensibleExtensionException: Connect to message server failed 
Connect_PM MSHOST=eccdev, R3NAME=D30, GROUP=Test 
ERROR service '?' unknown 
TIME Thu Nov 15 13:16:23 2007 
RELEASE 640 
COMPONENT NI (network interface) 
VERSION 37 
RC -3 
COUNTER 1 
at Microsoft.MetadirectoryServices.ERP.SAPMA.GenerateImportFile(String fileName, String connectTo, String user, String password, ConfigParameterCollection configParameters, Boolean fFullImport, TypeDescriptionCollection types, String& customData) 
Microsoft Identity Integration Server 3.2.0559.0" 

A known issue is causing error messages similar to this message

The installation of MSN Messenger 7.5 changes the following Registry value from REG_EXPAND_SZ to REG_SZ:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath (this value contains the location of the ‘services’ file)

The solution is to delete the value and recreate it as REG_EXPAND_SZ.

But MSN Messenger was not used on this MIIS Server and the registry key was correct.

When searching the internet for “ERROR service '?' unknown”, I found: https://www.sdn.sap.com/irj/sdn/message?messageID=997314

(SDN = SAP Developer Network)

In that post, one of the users, mentions that the services file (in %windir%\system32\drivers\etc) should not use spaces but tabs.

On the MIIS Server I made a copy of the service file (for backup).







Then I killed all spaces (not in comment sections), replacing the ‘spaced’ column layout by a “tabbed” column layout (actual 1 tab).

For example "sapdpxx <many spaces> 32xx/tcp" changed to "sapdpxx <1 tab> 32xx/tcp"

After saving the changes to the services file, the MIIS import of the ERPMA succeeded, using the SAP load balancing connection...page counter

hit counter


See Also