7

Some elements have changed namespace between v34.0 and v35.0. E.g. In v34.0 the soapType enumerations location and address were in the urn namespace ("urn:partner.soap.sforce.com"). In v35.0 They are now in the tns namespace(xmlns:tns="urn:partner.soap.sforce.com"). we have done code changes changing the references used in our code from urn to tns. But I have the integration projects developed in older version of the partner wsdl(which is using the urn namespace). If we run the same projects in the latest partner wsdl(with the tns namespace),

This 2 location and address in version 31.0

enumeration value="**urn:**location" enumeration value="**urn:**address"

in version 36.0

enumeration value="tns:location" enumeration value="tns:address"

Problem 1: I am hitting the following error with retrieve and query activities of mine.

java.lang.NullPointerException at com.approuter.module.sfdc.metadata.SObjectFieldHelper.skipField(SObjectFieldHelper.java:223) at com.approuter.module.sfdc.metadata.SObjectFieldHelper.getFields(SObjectFieldHelper.java:297) at com.approuter.module.sfdc.metadata.SObjectFieldHelper.getFields(SObjectFieldHelper.java:286) at com.approuter.module.sfdc.soql.ObjectResult.(ObjectResult.java:60) at com.approuter.module.sfdc.soql.Query.validateFrom(Query.java:323) at com.approuter.module.sfdc.soql.Query.validate(Query.java:224) at com.approuter.module.sfdc.soql.SoqlMetaData.(SoqlMetaData.java:97) at com.approuter.module.sfdc.activity.QueryObjectsActivity.validate(QueryObjectsActivity.java:127) at com.approuter.module.sfdc.activity.SfdcLanguageActivity.activate(SfdcLanguageActivity.java:71)

Null pointer exception is at the place skipfield we does this operation on this " if(field.getSoapType().name().toString().toLowerCase().contains("trn_address")"

Might be with partner wsdl version 31.0 this operation below operation is not valid field.getSoapType() which contains trn_address will return "Null". This breaks all our integration flows.

Problem 2: And on retrieve activity we are facing following error even in the 36.0 version :

Invalid QName value: Can't resolve prefix 'tns' org.apache.xmlbeans.XmlException: error: Invalid QName value: Can't resolve prefix 'tns' at org.apache.xmlbeans.impl.schema.SchemaTypeSystemCompiler.compile(SchemaTypeSystemCompiler.java:225)

Please suggest the solution for this cases.

1

I've encountered this in the past - see Salesforce Winter `16 breaking SOAP Partner API changes. Here is the Partner WSDL diff from that post:

enter image description here

Now that case 12544039 is resolved the soapType returned should correspond to the WSDL version specified in the URL.

Are you trying to query fields with the address type via WSDL 31.0? If so, your code will need to be working with the urn: namespace. If you've switched to the 36.0 WSDL you will need to use the tns: namespace.

The tns namespace should be "urn:partner.soap.sforce.com" in v35.0 of the Partner API

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.