We have created a custom adapter for Salesforce Connect. The "All" list view is working fine, but if I add a filter on the createdate = This Month, it throws me below error. enter image description here The filter details generated by the adapter are : filter = Filter:[ columnName = null, columnValue = null, subfilters = ( Filter:[columnName=created, columnValue=2021-02-01 08:00:00, subfilters=null, tableName=, type=GREATER_THAN_OR_EQUAL_TO], Filter:[columnName=created, columnValue=2021-03-01 08:00:00, subfilters=null, tableName=, type=LESS_THAN_OR_EQUAL_TO] ), tableName=, type=AND_ ], order=( Order:[columnName=label, direction=ASCENDING, tableName=], Order:[columnName=ExternalId, direction=ASCENDING, tableName=] ), tableSelected= ]

Does anyone has any idea about the cause or solution for this?


Because you are running into a gack, the best way to solve this is by having a case logged with Salesforce Support as advised in this developer blog

Based on the stack trace and what I see in our internal logs, the issue is occurring in the filter method of DataSource.QueryUtils class

The underlying issue is -

java.lang.NumberFormatException: Character array is missing "e" notation exponential mark.

As per the documentation, The DataSource.QueryUtils class and its helper methods can process query results locally within your Salesforce org. This class is provided for your convenience to simplify the development of your Salesforce Connect custom adapter for initial tests. However, the DataSource.QueryUtils class and its methods aren’t supported for use in production environments that use callouts to retrieve data from external systems. Complete the filtering and sorting on the external system before sending the query results to Salesforce. When possible, use server-driven paging or another technique to have the external system determine the appropriate data subsets according to the limit and offset clauses in the query.

I recommend checking if you are able to locate this class in your org and taking a look at the filter method of the class based on the stack trace. Based on my understanding this has to do with a Big decimal value

     if ((c != 'e') && (c != 'E')) {
throw new NumberFormatException("Character array"+ " is missing \"e\" notation exponential mark.");

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.