cancel
Showing results for 
Search instead for 
Did you mean: 

BCM/CRM integration via SAP Webdispatcher

Former Member
0 Kudos

Hello BCM guru's,

Our CRM system has a webdispatcher as en entry point for all http traffic and is listening on port 80.

However, it seems that BCM is trying to connect to port 8000 of CRM instead of port 80. Port 8000 is the ICM of CRM, but our firewall is blocking access to port 8000.

I don't know where to configure that BCM must communicate to the ici of CRM on port 80 instead of port 8000.

Can any of you guys help me on this?

Rob Veenman

SAP Technology Consultant.

Accepted Solutions (1)

Accepted Solutions (1)

former_member158363
Active Contributor
0 Kudos

Hello Rob,

I was not solving exactly this problem but may but maybe this can help you to find the solution. I suppose that request initiated in direction CRM->BCM works but you do not get signaling BCM->CRM, right?

First I have to say that the following is just my guess from looking into CRM code and documentation.Secondly, I do not know which exact version of CRM you are running, so some of features may need some OSS notes to be applied:

1) Create in SM59 HTTP destination pointing to the dispatcher's address and port, including proper protocol (HTTP/S). I would suggest to first use IP address and delete or set initial value to parameter FDQN_FOR_CTI in table CRMPAROLTP (see OSS note 1515178 for more).

2) Maintain the Session connection field in transaction CRMM_BCB_ADM (DB table CRMC_BCB_CC). Put here the RFC destination defined in previous step.

3) I believe the address BCM->CRM is composed in method CL_BCB_CUSTOMIZING->LOAD_CUSTOMIZING, so putting an external breakpoint here and checking result of structure CONNECTION_BACK might be useful.

4) Definitelly use the CRM_ICI_TRACE to check whether in initial worker/session XMLs, the calculated backconnection is used.

I am just contemplating whether it is advisable to use webdispatcher for such type of communications - remember, this is actually real-time communication, any additional element in the communication path decreases reliability of the whole chain.

Also, if you are using more CRM application servers, couldn't there be a problem, that the BCM communication will be directed by the webdispatcher to different application server than the one that actually initiated the session?

Please, get back with any results.

Regards,

Dawood.

Former Member
0 Kudos

Thank you Dawood,

This has put us definitely on the right track.

The good news: Each time a user logs on to CIC via the webdispatcher, the communication port from BCM back to CRM is dynamically determined during login. So this BCM-->CRM connection is not a single point of failure because it depends on which server the user is logged on to.

With respect to the settings you suggested:

We defined the RFC named BCM_LOAD_BALANCED which points to the webdispatcher on port 80. It must be a SSL connection according to the context help in CRMM_BCB_ADM  --> Session Connection. So we enabled this in BCM_LOAD_BALANCED.

We debugged the CL_BCB_CUSTOMIZING->LOAD_CUSTOMIZING code and saw that it picks up the BCM_LOAD_BALANCED RFC, but it always checks which services are defined on the local ICM. Since BCM_LOAD_BALANCED is secure, it expects to find a HTTPS service definition in the ICM. For testing purposes I created such a service and gave it port number 8080.

BCM will now try to connect to port 8080 instead of port 80 or 8000. Port 8080 is not what we wanted, we wanted port 80.

As said, our biggest worry that BCM always points to the same CRM server is proven not to be true.

So we don't have a single point of failure.

Rob Veenman

former_member158363
Active Contributor
0 Kudos

Hi Rob,

thank you for your reply, I am glad my input was helpful. And you are right, the method decomposes the RFC destination and recalculates the port based on ICM settings. I thought that setting up another virtual ICM port would help but it would not - in the code is hardcoded that node ID 0 is always evaluated :-(.

Please, which version of CRM, Ehp and SP stack are you running? The class CL_BCB_CUSTOMIZING was changed several times. Our demo CRM is Ehp2/SP3 and according to the code, the system will adapt to the protocol stated in the RFC destination. As a proof of concept, I would do following:

1) Set the BCM_LOAD_BALANCED destination as HTTP - simply ignore the context help.

2) Enhance the method LOAD_CUSTOMIZING at the implicit ehnancement spot before command ENDMETHOD. and put following snipet:

IF session_destination EQ 'BCM_LOAD_BALANCED'.

  connection_back-port = 80.

ENDIF.

This way you should get HTTP connection on port 80 from BCM to your webdispatcher.

I think it is clear that SAP simply does not support webdispatcher for communication with CMS via ICI. I will check in documentation what is their statement and eventually you could create an OSS message for this. Frankly, if they would just simply add a checkbox field to the table CRMC_BCB_CC and skip port recalculation if checked and use port in destination, this would be probably enough.

Regards,

Dawood.

Answers (1)

Answers (1)

HuseyinBilgen
Active Contributor
0 Kudos

Hi Rob,

Normally, CRM system must be able to access the OII web interface, which runs on Integration VU and has default port 21097. If CRM can access this port (you can check it with BCM RFC Communication created during CRM&BCM configuration. It is a HTTP System.

Check connection for this and let us know if it works.