Salesforce Streamin API integration

One Star

Salesforce Streamin API integration

Hello,
Does Talend support Salesforce Streaming API?
I tried to find such component in Talend Studio DI but unfortunatelly could not.
Thanks.
Employee

Re: Salesforce Streamin API integration

Hello,
that is currently a roadmap item. Could you detail the concrete use case. Maybe we can help otherwise?
Thomas
Thomas Steinborn
VP Product Management
One Star

Re: Salesforce Streamin API integration

Thank you for your answer.
The use case is to get last changes from Salesforce.
The native Salesforce solution is to be notified by streamin API in case of any operations with specific data: create, update, delete...
Employee

Re: Salesforce Streamin API integration

Hi,
How is the user expected to interact with the job ? Is the job expected to be a server which the notifications will flow to ?
The following kind of implies it is a server:
http://www.salesforce.com/developer/docs/api_streaming/Content/code_sample_auth_oauth.htm#code_sampl...
Note, the test level authentication, http://www.salesforce.com/developer/docs/api_streaming/Content/code_sample_auth_dev_test.htm, is directly supported with tRESTClient OAuth2 Bearer type
Cheers, Sergey
One Star

Re: Salesforce Streamin API integration

Hi Sergey,
In ideal case yes: the job should be started as a listener of notifications from Salesforce.
At this moment we will not use OAuth2 (just simple login by user name and password with security token).
Employee

Re: Salesforce Streamin API integration

Hi, it appears a combination of tRESTRequest and tRESTClient components can work. The former would provide a running server (or if you need SOAP then you'd use tESB request component). tRESTClient would be used by a  tRESTRequest job to register this server for receiving the notifications....
Cheers, Sergey
One Star

Re: Salesforce Streamin API integration

Thank you!
I will try the solution
One Star

Re: Salesforce Streamin API integration

Hello,
I tried solution with tSOAP component. But it looks like the problem that I need correct configuration of security ceritificate.
I downloaded Self-Signed certificate (key size = 2048) from Salesforce and imported to my local key store:
keytool -import -noprompt -trustcacerts -alias sfcert -file D:\Talend\configuration\talend_cert1.crt -storetype jks -keystore sfkeystore.jks -storepass sfkeystore
keytool -list -keystore sfkeystore.jks
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
sfcert, Dec 23, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): 13:C0:C6:8B:A0Smiley Very Happy5:4C:B2:45:2E:5F:F2:3C:1E:0BSmiley Very Happy2:39:CE:08:B0
So, it looks like certificate is configured correctly.
But as a result I always get SSLHandshakeException:
Dec 24, 2014 4:19:25 PM com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
SEVERE: SAAJ0009: Message send failed
Exception in component tSOAP_1
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
      at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(Unknown Source)
      at org.talend.soap.SOAPUtil.extractContentAsDocument(SOAPUtil.java:220)
      at etac_mapping_rules.testsalesforceintegration_0_1.TestSalesforceIntegration.tFixedFlowInput_1Process(TestSalesforceIntegration.java:1195)
      at etac_mapping_rules.testsalesforceintegration_0_1.TestSalesforceIntegration.tSetKeystore_1Process(TestSalesforceIntegration.java:403)
      at etac_mapping_rules.testsalesforceintegration_0_1.TestSalesforceIntegration.runJobInTOS(TestSalesforceIntegration.java:1598)
      at etac_mapping_rules.testsalesforceintegration_0_1.TestSalesforceIntegration.main(TestSalesforceIntegration.java:1457)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
      at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
      ... 6 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      at sun.security.ssl.Alerts.getSSLException(Unknown Source)
      at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
      at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
      at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
      at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
      at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
      at sun.security.ssl.Handshaker.processLoop(Unknown Source)
      at sun.security.ssl.Handshaker.process_record(Unknown Source)
      at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
      at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
      at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
      at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
      at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
      at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
      at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
      at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getOutputStream(Unknown Source)
      ... 7 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
      at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
      at sun.security.validator.Validator.validate(Unknown Source)
      at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
      at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
      at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
      ... 19 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
      at java.security.cert.CertPathBuilder.build(Unknown Source)
      ... 25 more
Please see my job's screenshots in the attachment (I tried with tSetKeystore and without, also I tried tESB component but with the same result)
(For sure, I investigated similar posts but unfortunatelly didn't find the answer. It works in SOAP UI without any certificates but in Talend doesn't)



                                                

                                                  
                                                  
One Star

Re: Salesforce Streamin API integration

My apologies, I found the real reason of the problems with connectivity because of our network configuration.
BTW, tSOAP component doesn't work together with tSetProxy: I found that it is necessary to configure tSOAP proxy settings directly in the component. Maybe this is a defect ?
Moderator

Re: Salesforce Streamin API integration

Hi vkoz,
BTW, tSOAP component doesn't work together with tSetProxy: I found that it is necessary to configure tSOAP proxy settings directly in the component. Maybe this is a defect ?


On which official version did you get that? Could you please show us your job setting screenshot to repro this?
Best regards
Sabrina
--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.

Re: Salesforce Streamin API integration

Dear All,
Did someone has tried to use the camel component called "salesforce" from an external jar (integrated into Talend) for
doing streaming? This could be also an alternative solution, any idea?
Thanks