on 07-26-2016 2:20 PM
Hi all
I am trying to connect an ECC system to Success Factors through SAP PI and we are facing issues. I am on dual stack SAP PI and I aam doing Employee Data INtegration.
There are three interfaces, Login Query , Usetupsert and Logout query.
The Login query is taking the company ID, user ID and password to the Success Factors. The session ID from Success Factors is sent in payload and it is not being passed to the ECC system. The mapping is using two UDFs. I changed that and did a field to field mapping and now the session ID is reaching SAP ECC.
However I am getting error in userupsert. Invalid SFAPI session. SFWebserviceFaultException.
I also see three Login Query sessions being triggered from ECC.
Does anyone knows why this is happening?
Harish
I assume you are using the standard SFIHCM01 content and you have modified the login response mapping to copy the SessionID from the payload response. I have had this issue as well.
If that is the case, then make sure you concat the content JSESSIONID= to this, ie your login response mapping output for sessionID should be JESSIONID=<actualSESSIONID from the LoginResponse payload> .
Use a Concat statement with a Constant JSESSIONID= and /loginResponse/result/sessionId and map this to /loginResponse/result/sessionId
This will make sure that ECC when trigger the Upsert will also send JSESSIONID=<sessionID> to PI and then this will get added to the HTTP Header "Cookie"
Regards
Bhavesh
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI Bhavesh
The SAP standard content is not working and very confusing as well!
I have used many modules, Axis Receiver and at times I get error related to axis handlers too. I always felt SOAP Axis Receiver to be a real head ache!
In loginResponse, SAP is using two UDFs to map to the SessionID. I removed the UDFs and mapped directly to loginResponse and now the SessionID is reaching Success Factors. But it is opening multiple logins.
In userUpsertConfiguration mapping, it's more complex. There is one XSL mapping following the message mapping. I tried all permutations and combinations. I mapped the higher node over sessionid directly and it's throwing error. Then I tried without XSL mapping, again I am getting errors.
Do you have any links to the adapter module configs. I have gotten different links and I wonder whether the issue is with that.
I am sending company, username and password in the payload
Harish
Hello Harish,
I just retried my SF Employee Synchronization with standard content.
Only change required was in the SFSFloginResponse_to_HCMloginResponse as below
Concat JSESSIONID= to the sessionID from SF
Channel Module Parameters are the default parameters that you can get by using Option Apply Template.
Do Note: The reason for this change required is a SF issue where SF returns 2 HTTP headers called SetCookie in its response leading to PI using the wrong HTTP Header. I am not sure if this is a issue only with out Test SF Tenant but as this is not under SAP support, we have not been able to figure this out.
Regards
Bhavesh
Hi Bhavesh
I wonder whether my modules in both channels, login response and userupsert are correct. I have attached screenshots of the module configurations in both channels.
Can you please check and confirm whether they are right? Or if you could provide some screenshots of your existing module configs, it will also help.
Regards
Harish
Harish,
Your channel used in the UPSERT Request is missing the Prop Module. This is not mandatory but add the same.
In addition, can you check what does the Login Response Message Dynamic configuration contain and share the same here? That will confirm whether the issue you have is the same as I have.
Adding JSESSIONID= to the LoginResponse mapping alone should solve the problem but do share the above info to confirm the same.
HI Bhavesh
I reimported the Standard content and now I am getting error in the Login Request channel. I am not getting login response with Dynamic Configuration.
The screenshot you pasted, are they of Login channel or userupser channel?
My Login_Response channel configs are not proper, I guess. I am trying to solve it. I am getting this error
MP: exception caught with cause org.apache.axis.ConfigurationException: handler.type is not set
org.apache.axis.ConfigurationException: handler.type is not set
at com.sap.aii.adapter.axis.modules.HandlerCore.process(HandlerCore.java:66)
at com.sap.aii.adapter.axis.modules.HandlerBean.process(HandlerBean.java:86)
at sun.reflect.GeneratedMethodAccessor731.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:172)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:99)
at com.sun.proxy.$Proxy1075.process(Unknown Source)
at com.sap.aii.af.app.mp.ejb.ModuleProcessorBean.process(ModuleProcessorBean.java:264)
at sun.reflect.GeneratedMethodAccessor909.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:172)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:99)
at com.sun.proxy.$Proxy576.process(Unknown Source)
at com.sap.aii.af.app.listener.AFWListenerBean.onMessage(AFWListenerBean.java:430)
at sun.reflect.GeneratedMethodAccessor908.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:172)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:99)
at com.sun.proxy.$Proxy559.onMessage(Unknown Source)
at com.sap.engine.messaging.impl.spi.ServicesImpl.deliver(ServicesImpl.java:361)
at com.sap.aii.adapter.xi.ms.XIEventHandler.onDeliver(XIEventHandler.java:1216)
at com.sap.engine.messaging.impl.core.queue.consumer.RequestConsumer.onMessage(RequestConsumer.java:75)
at com.sap.engine.messaging.impl.core.queue.Queue.run(Queue.java:1099)
at com.sap.engine.messaging.runtime.MSWorkWrapper.run(MSWorkWrapper.java:58)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:185)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:302)
Harish
HI Bhavesh
It's like this now, in the login response, the SessionID is sent from the Success Factors. After the PI mapping, it's coming like this.
<sessionId>$Version=0; </sessionId>
<msUntilPwdExpiration>9223372036854775807</msUntilPwdExpiration>
I have attached the Dynamic Configuration screen shot along with this.
Please check and confirm whether it was the same error you faced.
Regards
Harish
Hi Harish,
To add to my previous response, the good news from your Dynamic Configuration says, that the issue I have with my SF tenant does not occur on yours as the entire Cookie is available including the JESSIONID in a single line.,
What you would need to investigate is - why is Dynamic Configuration having this as SetCookie[0].
This Dynamic Configuration is set in the Login SOAP Axis Channel using the dcres and dcres2 modules / handlers. From your previous screen shot this was perfect and hence please do re-check if this is set correctly in your new set up.
From what I see i see not reason for a mapping change in your case ( In our case this was needed as we use a Non Supported SF tenant and thats a bug on the same Tenant ).
Regards
Bhavesh
Hi Bhavesh
I have raised an OSS message and we still are unable to figure that out. I will update once it is solved. Now that I raised an OSS message I reverted back to the standard content as it was when downloaded from market place
I am not sure about the non supported SF tenant. How do I confirm that?
I was checking an SAP document. The axis module configurations in that is vastly different to the channel template. provided by SAP. When I try that I am getting many errors. I wonder which I should follow?
Regards
Harish Babu
Hello Harish,
Did you check why the DynamicConfiguration comes as SetCookie[0] instead of SetCookie? This is what is causing the issue.
The default configuration from SAP as per SFIHCM01 should work in your case as the issue I have is that my HTTP Header has multiple Cookie's when my SF Tenant responds back to me.
In your case, that is not the case and hence I would say focus on figuring out why SetCookie[0] is being set when the module configuration for DynamicConfiguration says - SetCookie.
Regards
Bhavesh
Hi Bhavesh
After a long troubleshooting the error is resolved and it's working fine!
Fisrtly, there was problem with the standard content.
Note 1869807 -SFSFI: PI Content Correction for HTTP Cookie Handling
This deals with the incorrect handling of cookies.
In this two patches are mentioned. I downloaded them and applied on the ESR.
Secondly, applied note 1838921 in PI system which provides some correction for SOAP Axis adapter too.
Finally, I had to do some changes as per the document attached to the first note. They have provided two screenshots for the LoginChannel and I updated accordingly.
After this the interface started working perfectly.
Thanks a lot for the help
Regards
Harish
Hi Harish,
Can you check if in the Upsert request, the sessionId is included in the payload? We have had the same trouble here and the solution was to create another program that will include the sessionId. Another solution would be to use the SFSF adapter.
Regards,
Mark
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Harish,
Please check note 2150199 - "Invalid SFAPI Session"...
Best regards,
Bence
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
87 | |
10 | |
9 | |
9 | |
9 | |
6 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.