© Scott S. Nelson
Ah, Spring is in the air. So are arms, as people new to Salesforce throw them up during Trailhead challenges where they can’t seem to get the hands-on part to pass even though they see the result they expect.
The Trailhead modules and Superbadges are so well organized and written, it may seem like there is an instructor reviewing you submissions, but that would not be practical, profitable, or in the spirit of a cloud platform. The scoring is done by automated tests that are checking that things match exactly as the instructions provided.
The most common cause is that the learner has mis-typed a value provided, usually the API name (i.e., my_variable__c). Runner up to this is the experienced user who is new to Trailhead and uses their own naming conventions rather than following the instructions (been there, done that).
The third common cause is that the module content was updated but the test was not (doesn’t happen that often, but you can tell when there are a bunch of questions on the Trailhead Community about the same problem).
© Scott S. Nelson
This is about my journey to pass the Platform App Builder certification exam. Yours will probably vary, and I hope this article is part of it.
For me, Platform App Builder is my third Salesforce certification. I passed the Administrator exam in 2018 and the Platform Developer I certification in 2019. 2020 I was too focused on expanding the Logic20/20 Salesforce Capabilities to study for an exam.
I have admitted in the past, and will repeat for clarity here, that much of my blogging is driven by having searchable notes on how I accomplished something so that when I need to do it again I can readily remind myself of what worked. My certification posts show a pattern that is working: Work with the tool, takes a course, take a diverse set of practice exams, then do it for real. Patterns are great for planning, though the devil is in the details, and I will get to those in just a moment.
Before getting to the good stuff, it is important to note that there is a key part of the pattern that is missing from those previous post, perhaps the most critical aspect: a genuine interest working with the tool that I want to be certified in. The value of this is clear from my first certification for the WebLogic Portal (RiP). I didn’t study for it at all, I just took the exam and passed (barely). I took the exam because it was required by the company that acquired the product. I had passionately worked with it for several years, and expected passing would be easy. It wasn’t, because certification exams are more about knowing things than doing things. Doing them does help to know them, just not as much as I would have thought. Anyway, it is that interest in doing that motivates me to acquire the knowing necessary for certification.
As a mentor, I frequently hear the same concern from people that are learning something new outside of their day-to-day work: It can be difficult remembering things by only reading or hearing about them. Learning exercises are often not enough as they are structured for success and the simple step-by-step instructions become a validation in following instructions rather than an acquisition of the knowledge necessary to perform the task. One thing I had done to rapidly accelerate my abilities in WebLogic Portal was to spend an hour each morning reading the community posts and answering questions. Not only questions I already knew the answer to, but also the ones I did not, by figuring it out, validating it, and then responding. Years later, I applied this technique again after becoming an Informatica Cloud Master. As many people know, solving real-world problems helps to lock in the learning. What I learned with WebLogic and Informatica is that there a plenty of real-world problems to solve beyond my own daily work.
Beyond the community participation, the App Builder certification was the first one where I did not have frequent “ah ha!” moments while taking the trainings. The first (and last…I repeated it a day before the exam) training I took was the free one Salesforce offers on their Certification Days page. It is certainly worth taking for the pattern tips of how the exam questions are structured, such as (paraphrasing) “If there is a choice that suggests anything other than a declarative approach, it isn’t that one” and “Watch out for choices with multiple parts where most are correct. They must all be correct.”
I’m still a big fan of Udemy. I am also frugal, so I enrolled in Mike Wheeler’s Salesforce Platform App Builder Certification Course during one of the frequent sales. It’s a good course, though a lot of material is dated and it gets a little annoying to hear him complain about features that have long since been improved. The course does not include a practice exam, but I have found that courses that do have few more than the number of questions on the actual exam. The problem with that, is that there are way more questions available, and each exam consists of a random set of questions (within the ratios as described in the official study guide).
The App Builder Certification is one of the more popular ones. I think this is partly attributed to it being in the “Developer” category of certifications while requiring no knowledge of coding, and partly because Salesforce heavily emphasizes that coding isn’t necessary and should be avoided. Having been a consultant for a software vendor, I understand the value of declarative solutions because it is safer for regular vendor updates. I will also say that knowing nothing about the implications of technical choices can be a huge disadvantage even if everything is done declaratively. But I digress…
The practice exam package I went with from Udemy was Salesforce App Builder Practice Test [325 Questions] WINTER’22. There is great diversity in the questions, though there are several that are the same general question with subtle differences. They are spread through 5 timed tests. I didn’t do the actual math, but I think that while the total of all questions are in the correct exam ratio (23% Fundamentals, 17% UI, 22% Data Modeling, 28% Logic & Automation and 10% Deployment), I believe only 2 of the sets are correctly spread across topics. For me, reporting is a weak other (I generally delegate that work), and I found myself failing some of the practices where reporting questions were too heavily waited.
The value of practice exams is not memorizing the answers (don’t, because they change to avoid just that). The value is in learning weak points and shoring them up with some reading or Traihead modules.
As I mentioned, the App Builder is a popular certification, and there are a lot of other offerings on Udemy for practice exams. I made the mistake of buying one several months before using it and could not get a refund. I did get a refund on another that looked really good in the description but was outdated and contained several answers I knew were wrong. There are also several free video dumps on YouTube, and I found that many were also inaccurate, besides being the wrong medium for this type of studying (at least for me).
So, to summarize:
- Get interested in what you are studying for
- Attend one of the free Salesforce prep trainings (you also get a discount on your exam with the training!)
- If you don’t get to build apps often at work, go help people on Trailhead to gain practical experience
- Pick a good training course on Udemy when it is on sale and check it right away for quality and get a refund if it sucks
- Pick practice exam set on Udemy with lots of questions and check it right away for quality and get a refund if it sucks
- Follow me on Trailhead (not really necessary, but you may find some interesting answers)
© Scott S. Nelson
Here is a question I see frequently in the Trailhead Community: How do you re-assign the ownership of objects in bulk? I’m sure there is an app to make this easier, and I suggest you look in the AppExchange if the policy for your org is to use apps first. And I know there are other solutions, this is just one that I find quick and easy because I don’t have to give it too much thought.
First: Always try it in a sandbox first and test the results before doing it in production.
Second first, locate the user id of the person who’s object owners ship you want to change from. From their user page (or just copying the link), grab the object ID from the URL.
Now open Salesforce Workbench in another tab, login and navigate to Queries > SOQL queries. If you are adept at SOQL, create a query to pull all of the object you want to re-assign based on the user id. If you are not comfortable writing your own SOQL or just feeling lazy, use Workbench to help create the query:
The key values you want are the object ID and the owner ID, though adding a Name field to check the values can be helpful. Be sure to select View as Bulk CSV then run the query. Save the resulting file. I recommend naming it something that is meaningful to you rather than accepting the long string produced by default. Open in your favorite CSV editor to see the object and owner ids.
Next, get the user ID of the new owner(s) the same way you did for the current owner. In the CSV file, change the OwnerId value as desired.
For safety reasons, delete all columns from the csv file except Id and OwnerId, then save it with a different name as a CSV file.
Back in Workbench, go to Data > Update. Select the object type and click the Choose File button and select the file you just created with the new OwnerId(s), then click Next.
On the mapping screen the values should already be mapped. Check that only the ID and OwnerId are mapped and click the Map Fields button. If there are many records, check the “Process records asynchronously via Bulk API” option on the resulting page then Confirm Update. Note that if rules were changed since the records were created you may have errors that will require fixing the records before they can be updated.
And in list view:
© Scott S. Nelson
Salesforce Trailhead trainings are a great way to learn Salesforce. Some of the Hands-on Challenges require installing components. If you are using a Developer org to run these, the instructions are easy to follow. However, if you are using Trailhead Playground org, it is kind of a pain to install some components. There is a link thoughtfully provided by Salesforce for how to do this with eleven steps that I find a bit too time-consuming and confusing. I have found a slightly different approach that seems (at least to me) simpler. I will leave it to you decide which you prefer.
The instructions for installing the component (as in the screenshot below)will often be provided well before the challenge and the hint to avoid the frustration of trying to log into a Playground org when prompted by the standard component installation URL.
Step 1: Decide for yourself whether you will read through the full lesson or skip right to the challenge and when you get to the challenge, open your Trailhead Playground org in a new window by right-clicking on the Launch button (as pictured below).
Step 2: Log in to your Trailhead Playground org.
Step 3: Go back to the lesson screen and copy the component installation URL without the domain, i.e., “packaging/installPackage.apexp?p0=04tj0000001mMYP”
In some cases the installation instructions will have a link without the URL on the page. In this case, right-click on the link and copy the target to get the path, pasting it into a text editor to extract the portion following the domain.
Step 4: With the package path in your clipboard, paste it after the domain name of your Playground in the window you have already logged into and press enter.
Step 5: Once the installation screen will come up, and you can continue as instructed in the Trailhead lesson.
I have tested this on both Chrome and Firefox running in Windows 7. Your results may vary with a different combination of browsers and O/S.
Originally published at InfoWorld
01/27/2018 Update: The new Salesforce Trailhead UI may take you to the log in page. No worries. Copy the login URL and strip the characters before and including “startURL=”, past into https://www.urldecoder.org/, and strip all of the characters including and following the first “&”. to get the package URL.
© Scott S. Nelson