Get Certified as an Agentforce Specialist

Most readers of this post will be too late to take the exam for free . . . which is why I am writing it.

I’ve been following the Salesforce Quests for years now. I first became aware of them when I would receive emails that they were ending with a week or less to finish them when they were always monthly and unique each month. When I had free time, I would jump in and finish them. Sometimes I would receive some merch several weeks later. Then I received a certification voucher when I only had one cert, and I tracked down the URL where the Quests are announced and set a monthly reminder to check for new ones. The Agentforce Specialist is my sixth certification, and I only paid for the first (technically, not even that one, as I talked my employer into allowing me to expense the exam). The rest I won vouchers for, with the exception of this one, which was free to everyone until the end of 2025.

Wall of Swag

I discovered the fact it was free while working through the Agentblazer series of badges. The final badge, Legend, requires certification and that is when I discovered it was free. The certification was free for quite some time, but my employer at the time did not get many Salesforce projects and I had missed the news. I discovered that it was free on October 10, and became determined to pass this one, too.

Even though I don’t get to work in the Salesforce ecosystem as much as I would like to, those monthly reminders to check out the latest Quests keep me involved in keeping up with the changes. So when I started on the Agentblazer series of badges, I already had some trails and modules under my belt, and quickly advanced to the Legend level where I learned of the free certification. Even so, I can honestly say that the Agentblazer Legend quest has been the most difficult I have worked through (disclaimer: at the time of this writing I have not completed the quest, but I will within a day or two . . . check my profile to keep me honest!) in almost a decade of questing.

But, truly, my core skill is digressing, and I have from the topic of getting certified, so back to it . . .
First, definitely earn the Agentblazer badges as a foundation. The path to earning them will prepare you for what comes next.

Which is, as I have always recommended for certification preparation, buy a pack of practice exams with as many quality questions as you can find and work your way through them. For this particular certification exam I used a Udemy course, Salesforce Certified Agentforce Specialist – Practice Exam (currently on sale for $9.99). One of my other blogs is “Cheap, Lazy Investor”, and to the cheap part, I did not buy any other practice exams because this one did the trick. It has 365 questions (not all unique) and they covered 95% of the concepts I found on the actual exam, so no complaints and some kudos.

Passing the exam requires a combination of rote knowledge and conceptual knowledge. Of the two, conceptual knowledge will bring the higher score. You can’t get by with just one. Rote knowledge is necessary for questions where there is clearly only one right answer. Conceptual knowledge is necessary to answer those questions where more than one answer is correct, because one answer is more correct than the other. The “more correct” is driven by understanding what is key to Salesforce and Agentforce. Concepts such as security, flexibility, and that the standard option is the best option if it meets all of the requirements. Use the practice exam to get examples.

Interestingly, while the value of LLMs is their ability to manage probabilistic responses, if one answer leans towards probabilistic and the other leans towards deterministic, the deterministic answer is most likely the correct one. Getting the most likely answer when your own knowledge isn’t helping is where conceptual knowledge is key.

The deployment lifecycle section of the exam focuses on what is specific to Agentforce. I had a really hard time getting NotebookLM to stick to that scope. After two failed attempts where it produced very detailed preparation around the full Salesforce Application Lifecycle Management, I finally created a new notebook, ran deep research specifically on deployment lifecycle processes and pitfalls related to Agentforce, then added my own missed questions and had it generate a note, which I then added as a source and ran the audio prompt again: “Focus only on making the contents of ‘Missed Practice Exam – Deployment Lifecycle.md’ thorough and memorable to the listener to ensure the reader can correctly answer all questions regarding the Agentforce deployment lifecycle questions in the Salesforce Agentforce Specialist certification exam. Avoid the use of emphatic expressions and emphatic modifiers. This is important.”

One important thing about practice exams: They are not the exam you will be taking. The value of reviewing the questions you missed is in identifying the concepts that are not solid in your thinking. This is one of the reasons why it isn’t too bothersome that NotebookLM goes outside the boundaries of provided content when generating the podcast audio. And don’t rely on NotebookLM to catch it all, either. If you miss the same question three times on a practice test, go read the material, re-do the Trailhead module, and create some Bionic notes on the topic. Sound like overkill? There is almost always some questions on the exam on topics not covered by the practice exams, so be fully prepared for those you can expect to answer will offset any score impact of topics that you never heard of until the exam.

I did not use Bionic notes this time. I still think it is a valuable technique.

If you’ve read my other certification articles, you will know that I use notes formatted as Bionic Reading® to review my notes on missed questions and key concepts. And that I sometimes use my own version, where I bold keywords rather than parts of words to get the concepts to stick. I stand behind this approach, but didn’t do much with it this time.

This time I used NotebookLM. I used advanced search to find links to content, plus links from the Trailhead content, and my own study notes exported as markdown from UpNote to create source content. Then I incrementally created generated AI audio content that I posted on YouTube and listened to continuously to drill the concepts into my head.

At the end of the day (or almost the end of the year), I passed the exam.

I also highly recommend the Salesforce Ben page for prep (and the site in general).

Good luck!

If you found this interesting, please share.

© Scott S. Nelson

SOLVED: Unable to find “Get Celebration Details” for Service Agent Customization with Prompt Builder module

This one was really frustrating for me, because support kept saying “you have the wrong org”, even after getting a new one with the link they provided four times. Finally, a support rep helped me find a solution (thank you, Kiran Kumar!).

First instead of going to Flows through Setup, they had me go to Flows through the Apps navigation:

Next, change the view from the default to All Flows:

And then search for Get Celebration Details (and you will):

However, when this all started for me, I apparently had a corrupt org, so it still wasn’t there. Support insisted that I sign up for a new org 3 times, and the flow was not seen in all three. Once they pointed me to the App solution, I did find it in one of those orgs. Rather than start the whole module over, I exported the flow from the org where it was and imported it into the org where I had completed the rest of the module.

And, for those who don’t want to go through all of that, you can download the flow metadata directly from

https://github.com/ssnsolutionist/ssnsolutionist/blob/main/Get_Celebration_Details.flow-meta.xml 

If you found this interesting, please share.

© Scott S. Nelson

Simplifying Deploy and Destroy with the SF CLI

Personally, I never had any problems  with the SFDX CLI, which is why I was surprised they were replacing it with the SF CLI. What I now sometimes struggle with is translating all of my cheat sheet references from one to the other, and the sifting through the plethora of search results that still refer to the SFDX way of doing things. OK, I know I can minimize the second part by setting the date range in my Google searches, but when I’m being lazy (or in a hurry, both of which are more common than I prefer) I use Perplexity.ai rather than Google.

Most recently my conversion conundrum cropped up with removing components that I had deployed through the CLI. I found a great SFDX syntax in Perplexity literally one day before it was slated to be retired. Here is the relevant part of the session that got me to the solution:

Question: cli to delete objects from an org

Answer:
To delete objects from a Salesforce org using the CLI, you can use the destructive changes process. Here’s how to do it:

Step 1: Create Destructive Changes XML

Create a file named destructiveChanges.xml with the following structure:
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>ObjectName1__c</members>
        <members>ObjectName2__c</members>
        <name>CustomObject</name>
    </types>
</Package>
Replace ObjectName1__c and ObjectName2__c with the API names of the objects you want to delete.

Step 2: Create Empty Package XML

Create a file named package.xml with the following content:
xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <version>62.0</version>
</Package>

Step 3: Deploy Destructive Changes

Run the following Salesforce CLI command:
bash
sfdx force:mdapi:deploy -d . -w -1 -u YourOrgAlias
This command deploys the destructive changes to your org:
  • -d . specifies the current directory as the deployment source
  • -w -1 waits for the deployment to finish
  • -u YourOrgAlias specifies the target org alias

Additional Considerations

  • Ensure you have the necessary permissions to delete objects in your org.
  • Deleting objects will also delete all associated records and metadata (fields, validation rules, etc.).
  • Some objects may have dependencies that prevent deletion. You might need to remove these dependencies first.
  • Always test this process in a sandbox environment before applying it to production.
  • Consider backing up your metadata and data before performing destructive changes.
If you need to delete other types of metadata (like Apex classes, Visualforce pages, etc.), you can include them in the destructiveChanges.xml file using the appropriate metadata type names.
Remember, this process permanently deletes the specified objects and their data from your org, so use it with caution.

When I ran it, it worked perfectly, and output a warning that it would no longer work the next day (I did not preserve the message content, but I can tell you the date was 11/4/24 because UpNote metadata is useful). As I mentioned, I’m often in a hurry, so I often make mistakes, and what has kept me in technology since the original Wolfenstein was released is always making sure I have a way of undoing whatever I do. So I decided to go find the cool new sf CLI solution. Which was not terribly clear to me. I found the documentation a bit confusing. Going back to the old-fashioned Google search (trust me, it pains me more to write “old-fashioned Google search” than it does for you to read it), I found a Trailblazer Community post by Max Goldfarb that greatly clarified how to make the new sf call.

I have since refined the process clarified by Max once I read the documentation while in less than my usually rushed efforts. First, I keep that step 2 XML that Perplexity gave me stored in my repo as antiPackage.xml, the full path being manifest\destructiveArchive\antiPackage.xml. I could then generate the destructive xml with:

sf project generate manifest --source-dir force-app/main/default/[WHATEVER-I-WANT-TO-DESTROY] --type destroy

and then run my simplified killer command:

sf project deploy start --manifest manifest/destructiveArchive/antiPackage.xml --pre-destructive-changes manifest/destructiveArchive/destructiveChangesALL.xml -o [ALIAS]

and boom! stuff removed. I even keep a set of destructive xmls in a special folder (you may have noticed it in the command above). I continued to use this happily for a few weeks.

Today I was messing with a single component that was giving me problems (or, more accurately, I was giving it problems by building it incorrectly) and started by removing just it. Then I went about making my fixes and, feeling less hectic than usual, decided to have a package.xml just for it so the deployment would go faster (yes, I know I can do that with a right-click, but once I am comfortable with a CLI, I prefer it, and it lets me make sure that my eventual release script will have fewer issues). It was very small, which made the content leap out at me more, and, so I realized…There is no difference between the XML output with or without the “–type destroy” switch!

So now I just keep one XML for each context in manifest\deployArchive and reference it for both deploy and destroy.

If you found this interesting, please share.

© Scott S. Nelson
Unfollow to Finish Quest

Completed Salesforce Quest Incomplete

Every month I check to see what’s new at https://trailhead.salesforce.com/quests (which doesn’t seem to update monthly anymore, but randomly following marketing events).  Once in a while, I will complete all of the steps of a given quest and it still shows less than 100% complete.

In previous cases, it has been because some module that I had completed in the past had added a new step. So, while that module was complete on my profile, the current version of the module was incomplete. My guess is that the individual steps are reading from my profile and the aggregated score is based on current state. Anyway…I have learned that when the completion status doesn’t match to look at modules that are over a few months old and find the one with the new task.

Today, my tried and true method failed me. Everything was complete, but I still had only 88% complete on the summary. Hmmm. I got lucky and found Community thread with my first query that had the answer (fortunately near the top, as the thread continues with several more comments that are less helpful), which is to click Unfollow, then go through and click all of the “Mark as Complete” buttons again.

Noting this here so I remember for the next time.

HTH

If you found this interesting, please share.

© Scott S. Nelson