Some of the Issues and their Resolutions (Salesforce Adapter on ICS)

I am writing this blog to list down the issues frequently faced by customers and their resolutions at one place for user’s convenience. Please keep visiting this blog as list may keep updating and might remove some of the issues as those gets fixed in future releases.

  • TLS 1.1 or TLS1.2 Support Issue –

You might see below exception while Salesforce adapter test.

‘Unable to test connection “CD_SALESFORCE”. [Cause: CLOUD-0005]:
–  CLOUD-0005: UNSUPPORTED_CLIENT : Check Salesforce documentation for more information!’

Customer might have enabled TLS 1.1 or higher for their SalesForce sandbox environment.

Please do have them deactivate TLS1.1 to higher from UAT for now.

Update Note: This cannot be deactivated anymore now. Good part is, this issue is fixed in adapter.

Customer  can follow as below –
1. Got to setup – SetUp–> Critical Update : click on Critical Update. You will see something like below screen.
TLS1.2
2. Click on deactivate link against ‘Require TLS 1.1 or higher for HTTPS connections’.


 

  • Outbound Messaging (Event based Pattern) shows only 1 occurrence of message in the mapper

If you are leveraging Salesforce adapter to receive events from Salesforce.com and as per the requirement you want to receive more than 1 record from Salesforce.com (Salesforce support up to 100 records per event) and you see in the mapper, element is not repeating then don’t worry. This is a known issue with workaround and you should be able to make use of below work around.


1. Click on the Mapper to open the mapper
2. Click on the Parent element of target mapper (Say Account for Salesforce
Account Object).
3. Add for-each loop to Parent element.
a. Click on “Mapping Components” tab on the bottom left corner.
b. Expand XSL Elements.
c. Now Drag and Drop For-Each function on to the Parent element (Here Account
Element).
4. Drag and Drop “Notification” element to Select inside the for-each.
Note: We should be able to see the For-Each above Account element as shown in
image below.
5. Now Validate and Close the Build Mappings

Mapping After For-each
How to use For-each for this workaround

Sample XSLT should look something like below.

Sample foreach xslt

Issue: Max Occurs Value Come As 1 For Salesforce Inbound Integration WSDL or in a mapper. (to communicate to Oracle for this known issue).


 

  • SOQL query return empty response with group by clause

This is known issue if there is group by clause (syntax) used in SOQL, Salesforce adapter returns empty response even though there are records. This is happening because generated integration WSDL remains same whether user used group by or not while Salesforce response restructure changes in case of group by and returns aggregate response.

Work Around: obvious work around is not to group by clause.  But if there business need to use group by then use below work around.

user needs to modify an existing XSLT and import it using the Mapper’s import XSLT functionality.
I am providing sample XSLT (autogenerated and modified) for below query.

SELECT Account.Name,
Account.Account_Manager__c,
Account.Account_Manager_Id__c,
AccountId,
Account.Price_Book__c
FROM contact
WHERE Account.Account_Manager_Id__c != null
AND (Account.Name LIKE ‘&term’
OR Name LIKE ‘&term’
OR Account.Account_Manager__c LIKE ‘&term’) &varFilter
GROUP BY Account.Name,
AccountId,
Account.Price_Book__c,
Account.Account_Manager__c,
Account.Territory_Name__r.Franchise__c,
Account.Account_Manager_Id__c
LIMIT &limit
OFFSET &offset

********XSL which results in Empty Response Values (Existing 
XSLT)**************

<!–User Editing allowed BELOW this line – DO NOT DELETE THIS LINE–>
<xsl:param name=”SFDC_E” xml:id=”id_17″/>
<xsl:template match=”/” xml:id=”id_11″>
<nstrgmpr:processResponse xml:id=”id_12″>
<xsl:for-each 
select=”$SFDC_E/nssrcmpr:queryResponse/nssrcmpr:QueryResults/nssrcmpr:records”
 xml:id=”id_22″>
<bpelnssrcmpr:Response1 xml:id=”id_18″>
<bpelnssrcmpr:output1 xml:id=”id_35″>
<xsl:value-of select=”nssrcmpr:Id” xml:id=”id_36″/>
</bpelnssrcmpr:output1>
<bpelnssrcmpr:Response2 xml:id=”id_19″>
<bpelnssrcmpr:output11 xml:id=”id_20″>
<xsl:value-of select=”nssrcmpr:Account/nssrcmpr:Phone” xml:id=”id_21″/>
</bpelnssrcmpr:output11>
<bpelnssrcmpr:output21 xml:id=”id_22″>
<xsl:value-of select=”nssrcmpr:Account/nssrcmpr:Site” xml:id=”id_23″/>
</bpelnssrcmpr:output21>
<bpelnssrcmpr:output31 xml:id=”id_24″>
<xsl:value-of select=”nssrcmpr:Account/nssrcmpr:Account_Ext_Id__c” 
xml:id=”id_25″/>
</bpelnssrcmpr:output31>
<bpelnssrcmpr:output41 xml:id=”id_26″>
<xsl:value-of select=”nssrcmpr:Account/nssrcmpr:Name” xml:id=”id_27″/>
</bpelnssrcmpr:output41>
<bpelnssrcmpr:output51 xml:id=”id_28″>
<xsl:value-of select=”nssrcmpr:Account/nssrcmpr:Id” xml:id=”id_29″/>
</bpelnssrcmpr:output51>
<bpelnssrcmpr:output61 xml:id=”id_30″>
<xsl:value-of select=”nssrcmpr:Account/nssrcmpr:Type” xml:id=”id_31″/>
</bpelnssrcmpr:output61>
</bpelnssrcmpr:Response2>
</bpelnssrcmpr:Response1>
</xsl:for-each>
</nstrgmpr:processResponse>
</xsl:template>
</xsl:stylesheet>

********XSL which results in Expected Response (Modified XSLT)**************

<!–User Editing allowed BELOW this line – DO NOT DELETE THIS LINE–>
<xsl:param name=”SourceApplicationObject” xml:id=”id_17″/>
<xsl:template match=”/” xml:id=”id_15″>
<bpelnssrcmpr:processResponse xml:id=”id_16″>
<xsl:for-each 
select=”/nssrcmpr:queryResponse/nssrcmpr:QueryResults/nssrcmpr:records” 
xml:id=”id_37″>
<bpelnssrcmpr:Response1 xml:id=”id_18″>
<!–<bpelnssrcmpr:output1 xml:id=”id_35″>
<xsl:value-of select=”nssrcmpr:Id” xml:id=”id_36″/>
</bpelnssrcmpr:output1>–>**CAN BE COMMENTED**
<bpelnssrcmpr:Response2 xml:id=”id_19″>
<bpelnssrcmpr:output11 xml:id=”id_20″>
<xsl:value-of select=”nssrcmpr:Phone” xml:id=”id_21″/>
</bpelnssrcmpr:output11><!–Removed “nssrcmpr:Account/”–>
<bpelnssrcmpr:output21 xml:id=”id_22″>
<xsl:value-of select=”nssrcmpr:Site” xml:id=”id_23″/>
</bpelnssrcmpr:output21><!–Removed “nssrcmpr:Account/”–>
<bpelnssrcmpr:output31 xml:id=”id_24″>
<xsl:value-of select=”nssrcmpr:Account_Ext_Id__c” xml:id=”id_25″/>
</bpelnssrcmpr:output31><!–Removed “nssrcmpr:Account/”–>
<bpelnssrcmpr:output41 xml:id=”id_26″>
<xsl:value-of select=”nssrcmpr:Name” xml:id=”id_27″/>
</bpelnssrcmpr:output41><!–Removed “nssrcmpr:Account/”–>
<bpelnssrcmpr:output51 xml:id=”id_28″>
<xsl:value-of select=”nssrcmpr:Id” xml:id=”id_29″/>
</bpelnssrcmpr:output51><!–Removed “nssrcmpr:Account/”–>
<bpelnssrcmpr:output61 xml:id=”id_30″>
<xsl:value-of select=”nssrcmpr:Type” xml:id=”id_31″/>
</bpelnssrcmpr:output61><!–Removed “nssrcmpr:Account/”–>
</bpelnssrcmpr:Response2>
</bpelnssrcmpr:Response1>
</xsl:for-each>
</bpelnssrcmpr:processResponse>
</xsl:template>

 

3 thoughts on “Some of the Issues and their Resolutions (Salesforce Adapter on ICS)

  1. Hi Shaildra, Im getting a same error. It seems, Salesforce has changed the configuration options on TLS. We dont have a option to deactivate TLS.

    Please suggest a way to rectify this issue.

    Thanks
    Ram

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s