Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

HTTP (with URL parameters) -> PI -> SOAP scenario - Dynamic Configuration failing

Hi all,

we have SAP PI 7.0 SP25 running.

I have a HTTP --> PI --> SOAP scenario. Our non-SAP CRM system has the ability to send a http request to an SMS provider like so: http:smsprovider.com/send?key=xyz&to=001555&message=HelloWorld. Due to security policies the CRM system may not directly send this to the provider and so we were planning to have PI as middleware.

Scenario in detail:

  1. CRM sendsSMS
  2. PI HTTP Sender adapter receives SMS data and strips out URL parameters "key", "to", and "message" by using "Copy URL-Parameter" from the sender http communication channel
  3. In Message mapping for the request we have one or multiple (each for every used URL parameter) UDFs that take the dynamic configuration UrlParamOne - UrlParamThree and use them for mapping the according nodes of target message.
  4. After that SMS provider sends back a message with multiple status codes
  5. This will be mapped to the CRM systems https response body.

Questions:

At figure 3 unfortunatelly i cannot get dynamic configuration to work. Heres the code (Value type UDF)

// dimension variables
int i = Integer.parseInt(urlParamIndex);
DynamicConfigurationKey paramKey;
String result;

// get trace object
AbstractTrace trace = container.getTrace();

// get dynamic configuration object
DynamicConfiguration conf = (DynamicConfiguration) container
    .getTransformationParameters()
    .get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);

//according to the index, get the desired URL parameter
switch(i)
{
case 1:
paramKey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/HTTP","UrlParamOne");
case 2:
paramKey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/HTTP","UrlParamTwo");
case 3:
paramKey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/HTTP","UrlParamThree");
case 4:
paramKey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/HTTP","UrlParamFour");
case 5:
paramKey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/HTTP","UrlParamFive");
case 6:
paramKey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/HTTP","UrlParamSix");
default:
paramKey = null;
}

try
{
result = conf.get(paramKey);
}
catch(Exception e)
{
trace.addDebugMessage("ULR parameter " + Integer.toString(i) + " not available. Detailed error message: " + e.getMessage());
result = "";
}

return result;

Q1: Even through end-to-end testing I was not able to see section DynamicConfiguration in sxmb_moni. I was thinking that this should be visible regardles is i access it through UDF or not, just by selecting ASMA and copy-URL parameter

in the sender http CC. Any hints on this?

Q2: The sender system CRM does not fill the requests

when sending the request to SAP PI. It can do POST or GET. Am I right assuming I should use GET then in order to have PI not incisting on filled request body? Would CRM still be able to get a return status from the web service of the SMS provider (routed / mapped through PI)?

Thanks and kind regards

Jens

Tags:

Helpful Answer

by
Not what you were looking for? View more on this topic or Ask a question