Solved: 2 Salesforce ETL Errors
Katie
Posted on November 1, 2019
I'm blogging about 2 Salesforce errors I ran into today so that your Google results will, hopefully, be a little bit more helpful when you, too, see them.
I was trying to design a Jitterbit ETL process loading data into Salesforce.
- I got stuck on a "
bad value for restricted picklist field
" error when trying to load data into a picklist field.- Turns out picklist values, like fields, have both display names and "API names."
- I also ran into "
id value of incorrect type
" loading what I thought was an 18-digit record ID into a lookup field- Turns out "
{{XYZZY}}
" is not the same as "XYZZY
" to a computer. Fancy that.
- Turns out "
Bad Picklist Value
For Visualforce purposes, our admins had set the values of a picklist to read "Yes, I am
" and "No, I am not
" in a field responsible for capturing responses to a question on an application form we present to the general public.
It makes for a slight silly feeling as a staff member doing data entry on Salesforce record detail pages, but it's not a usability show-stopper, and I can definitely see how it helps make things display nicely in our portal without too many workarounds.
The thing is ... I kept trying to do this Jitterbit field-mapping transformation from a data source with "Y
" and "N
" values, because that's what the picklist drop-downs said and I never thought to question them:
<trans>
Case(
SOURCE_FIELD=="Y","Yes, I am"
, SOURCE_FIELD=="N","No, I am not"
, true,SOURCE_FIELD
);
</trans>
In the end, I needed to data-load against the API names of the picklist values, "Yes
" and "No
":
<trans>
Case(
SOURCE_FIELD=="Y","Yes"
, SOURCE_FIELD=="N","No"
, true,SOURCE_FIELD
);
</trans>
Lookup ID Type Error
In other "oops" news, when I tried to do a SFCacheLookup
against the following SOQL and data-load it into a lookup field just like this:
<trans>
SFLookupAll($myOrg, "SELECT Id FROM Validation_Table__c WHERE Friendly_Name__c = 'The Friendly Name'");
</trans>
I received this error:
MY_LOOKUP_FIELD_LABEL_HERE: id value of incorrect type: {{y8E010101010101010}}.
- Q: Can anybody spot why?
-
A: It turns out that making a typo between
SFLookupCache
andSFLookupAll
does matter. 😜-
SFLookupAll()
was, of course, returning some sort of collection (list/dict/etc.) variable, which meant that when Salesforce got it as a piece of text, the text was no longer "y8E010101010101010
" but "{{y8E010101010101010}}
." -
SFLookupCache()
is what I meant to type, and is the operation that returns a single value.
-
Check for stupid mistakes if you get this error when designing a data-load ETL job and swear you "didn't do anything wrong."
(I knew that y8E010101010101010
had to be the correct record ID because if I logged into the Salesforce web interface and edited the field by hand, looking up the record with a search, that was exactly the record Salesforce populated the field with.)
Posted on November 1, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.