cancel
Showing results for 
Search instead for 
Did you mean: 

SuccessFactors SFSF-Adapter (SOAP) and Upsert Parameters

Former Member
0 Kudos

We would like to upload Userdata using the SFAPI but not with the Standard-Proxy-to-SOAP Scenario.

We need to read a CSV-File (from different HR-systems) and upload the data using the SFSF or OData Adapter.

For this, we already have a working Operationmapping and a SFSF-Receiver Channel.

But now I figured out, that we need to change some processing parameter for the User Upsert.

Those are the parameters:

Those parameters are also defined in the WSDL:

      <urn:upsert>

         <urn:type>User</urn:type>

         <!--1 or more repetitions:-->

         <urn:sfobject> 

                         ...

         </urn:sfobject>

         <!--Zero or more repetitions:-->

         <urn:processingParam>

            <urn:name>?</urn:name>

            <urn:value>?</urn:value>

         </urn:processingParam>

      </urn:upsert>

But the SFSF-SOAP-Adapter does not take it!

If you just put it into your output structure the SFSF-Receiver creates something terribly wrong:

<upsert xmlns="urn:sfobject.sfapi.successfactors.com">

  <type>User</type>

       <sfobject>

            <type>User</type>

            <status>active</status>

            <externalId>...</externalId>

            <username>...</username>

       </sfobject>

       <sfobject>

            <type>User</type>

            <name>defaultPassword</name>

            <value>RANDOM_PWD</value>

       </sfobject>

  </upsert>

...


--> Has anyone ever tried to do this???


I know, you need to generate the datatypes with eclipse. But the Eclipse Add-On does not offer any options for this.

I also recognized, that when using the ODATA API, you can use "API option profiles" which you can create in SF to set the options.

But the ODATA Adapter does not send the URL-Parameter to the SFAPI if you enter it in the channel - So this isn't usable either.

In the meantime we opened a OSS-call a few weeks ago...

Accepted Solutions (0)

Answers (1)

Answers (1)

VijayKonam
Active Contributor
0 Kudos

Hello Heiko,

Did you find a solution or a work around for this other than falling back to AXIS adapter? I am in the same situation and need to send the parameterts to SF cloud using the SFSF adapter.

Regards,

VJ

Former Member
0 Kudos

Yes, I found a good solution:

There is a "additional parameter" for the SFSF-Receiver "passThrough".

If you set it to "true", it will passthrough the payload as it is and not try to interprete and convert it.

Then, you got to change your messagetype like you would send it when using SOAP directly using SOAPUI.

And then of course you can then send anything that the SFAPI understands, including the "processingParams".

Actually, I like the adapter much more that way, because what you send in really is delivered to SF and not modified in any way.

This is also very useful, when querying requisitions or candidates from multiple templates...

Anyway, I still have an OSS-note open, because actually, I wanted to use the ODATA API where the api-optionprofile URL parameter still does not work with the PI SFSF-ODATA-Adapter.

Regards,

Heiko

VijayKonam
Active Contributor
0 Kudos

Thanks a lot Heiko. That worked like a charm. I hate SAP for not mentioning such details in the help section..!!

Regards,

VJ

Former Member
0 Kudos

Hello Heiko,

   Could you elaborate a bit more about this "additional paramter: passThrough" ?

I tried to add it to the SFSF Receiver Channel in the Processing tab "Use Additional Parameters checkbox".

And then tried to send a insert with the message type like:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sfobject.sfapi.successfactors.com">

   <soapenv:Header/>

   <soapenv:Body>

      <urn:insert>

         <urn:type>?</urn:type>

         <!--1 or more repetitions:-->

         <urn:sfobject>

            <!--You have a CHOICE of the next 2 items at this level-->

            <!--Optional:-->

            <urn:id>?</urn:id>

            <!--Optional:-->

            <urn:businessKeys>

               <!--You may enter ANY elements at this point-->

            </urn:businessKeys>

            <urn:type>?</urn:type>

            <!--You may enter ANY elements at this point-->

         </urn:sfobject>

         <!--Zero or more repetitions:-->

         <urn:processingParam>

            <urn:name>?</urn:name>

            <urn:value>?</urn:value>

         </urn:processingParam>

      </urn:insert>

   </soapenv:Body>

</soapenv:Envelope>

with real data... and got the error: XIAdapterException: [Error]:2:65: cvc-complex-type.2.3: Element 'sfobject' cannot have character [children], because the type's content type is element-only.

Maybe this "passThrough" parameter you talk about won't work for my necessity or I configured it wrong.

Thanks in advance.

Former Member
0 Kudos

Right after I posted this message I tried the paramters passThrough in the Advanced tab "Use Additional Settings" and it worked great !!

Thanks anyway Heiko ! Where did you find this setting? did you decode the adapter ?

Best Regards