The illusion of multiple bugs

Every night I go running. I live in a pretty rural area so there are not a lot of streetlights, which allows me to see the starts and moon when the weather is clear. It is a beautiful scene. The stars shining, the moon reflecting off Utah lake, and the crisp cold air flowing into my lungs and throughout my veins. As I run I listen to audiobooks through my airpods. As my body gets stronger my mind gets sharper, and both get more resilient.

Barking cuts through the words of my audio book and I look around. So many of my neighbors have dogs - it comes with living in an area like this. Sometimes they are fenced, other times they are leashed, and still it is not uncommon that they are running freely at me. In my experience the best thing to do when a dog is barking and running at you is to square up to it and make sure it knows you are not intimidated. The only time I have been bitten by a dog was when I turned my back on it, so I make sure not to do that when I encounter them and I try to avoid being caught off guard by them.

On a run recently I saw a sudden movement that startled me. Assuming it was a dog I took out an airpod and looked around. Nothing was there. I kept running and it happened again. Still no dog. So I started paying closer attention to what was going on. I finally figured out what was happening in my peripheral vision. This section of the street had bright house lights on that were creating fleeting shadows of my own body that were duplicate and triplicate of my regular shadow. I thought I knew where my shadow was, and so these other shadows flashing in my peripheral were alarming.

As I thought about the experience, I though of how often this can happen in companies I have worked with. A bug or problem arises in the system and it causes critical failures in multiple areas. Quickly cases get created, calls and texts start occurring, and it can feel to a single admin like everything is in chaos, and that there are many problems when in fact there is just one. In addition, people might report an issue that has already been resolved but that they failed to report in a timely fashion. These types of situations can create many shadows that feel alarming, when really there is just a single person with many inputs that are creating the illusion.

The best way to quiet these voices and the sense of panic is through structured communication. Ensure users are all logging the issues in a uniform way so that you can gather the various inputs without getting overwhelmed. When users start calling or texting, you can use auto-responses to tell them you are working on a critical issue and their concern should be logged via a case or your standard process. That way you can ignore most of the noise coming in and get to the root cause quicker. You still need to quickly read those messages as they might have important clues as to the root cause of an issue, but an auto-response saves you the hassle of needing to explain what they should do, while also alleviating concern that you aren't addressing the problem. That buys you some airspace to tackle the most critical issue and get all the way to it's root cause. Once that is resolved, you should go through all the cases that have come in and look to see if they were also resolved by your fix. Likely, you can close out many of these and put people back at ease. This method helps you deescalate an issue quickly, and builds trust with your users that you have them covered.

While there are many techniques that can be used, I have seen that auto responses are a great tactic for saving time and quieting noise in a release hot-fix situation. Have your auto-responses ready to go in case an issue comes up, so that you can easily turn them on and quiet the noise that might otherwise slow you down and exacerbate the issue.

Merge Fields in Macros - Make Reps Faster 🏃🏼‍♀️

Problem 🤬

Merge fields are how you dynamically merge record data from salesforce into something like an email template. Macros are a wonderful way to automate tasks that you repeat in your consoles. One weakness you might have run into is that macros do not support merge fields. So if you want to use macros to say... go to your email action on a case, pre-populate the addresses in a particular configuration, or overwrite the subject line to be something consistent (instead of “RE:Re:RE:Re:RE:Re A case subject | ref: as98dfs9-8a7dfasd98”), you are stuck with hardcoding a text string to serve as the value. And as much as we all love generic email subjects with no context, that isn't going to fly here.

Solution 💡

What are you to do about this glaring limitation? Create an email template. It can be a simple template that just provides a Subject line with merge values, such as case number and the subject of the case. Put whatever you want in the body - frankly I like to just merge in the contact name here so that it gives you a head start on your email.

When you set up your macro, you can choose to use an email template and just like that, you have your merged fields. The best part? You can actually remove the body or the subject if you only need the merge fields for one of those locations. Additionally, you can choose to replace the text (as I would for the subject in this example), append it to the beginning of the text (as I would for a Name merge field in the body), or append it to the end of the text (such as the ref ID in the body). Play with this feature and you may find that macros are more useful than you thought for spinning up dynamic emails that will save your reps a bunch of time.

Gotchas 😣

Don't forget to include the ref id in your template as it will not be added for you in this workaround. To do this, use the Case Thread ID merge field in the email template editor, and I do recommend putting it in the subject line as well as the body.

🙈 Oops - Mixed DML Error in a Flow

Have you ever gotten this error? You got excited as you developed your flow skills and decided to start automating your admin busy work (maybe after watching my video or reading my blog post on the subject) but you ran into this pesky error. Let's talk about some tips and tricks for overcoming this error so that you can achieve your goal of automating admin tasks.

Why Does this happen? 🙇‍♂️

Whether in process builders, flows, or apex, Salesforce does not allow you to interact with certain objects in the database in the same transaction. The reason for this is because changes to these setup objects might change permissions, and could impact other parts of the transaction. By keeping these in separate transactions, Salesforce can ensure that any changes to permissions are properly applied to other interactions with the database.

What objects to watch for? 👀

Here is a list of the objects that are considered setup objects, that can't have dml statements in the same transaction as dml statements on objects not on this list:

  • FieldPermissions

  • Group

    • You can only insert and update a group in a transaction with other sObjects. Other DML operations aren’t allowed.

  • GroupMember

    • With legacy Apex code saved using Salesforce API version 14.0 and earlier, you can insert and update a group member with other sObjects in the same transaction.

  • ObjectPermissions

  • PermissionSet

  • PermissionSetAssignment

  • QueueSObject

  • ObjectTerritory2AssignmentRule

  • ObjectTerritory2AssignmentRuleItem

  • RuleTerritory2Association

  • SetupEntityAccess

  • Territory2

  • Territory2Model

  • UserTerritory2Association

  • User

  • UserRole

  • UserTerritory

  • Territory

You can read more on these objects here.

What to do? 🤔

So if you need to interact with one or more of the objects above, say to assign a session-based permission set to a user so that you can activate it inside of a flow, what are you to do? Well the best solution to this problem in my opinion is to use a process builder scheduled action for 0 hours from now that runs your autolaunched flow. In your process builder, you can create a permission set assignment record which allows the permission set to be activated in the flow. Then your autolaunched flow will run in a separate transaction, which means that you can now activate the permission set using the core action that comes out-of-the-box, perform DML statements on normal objects, and deactivate that permission set. This will allow you to overcome the mixed dml error.

Another option if you want even more control is to use some apex to control order of operations in a queueable class. This gets a bit more technical, but gives you additional control to perform multiple interactions across both types of objects.

All About Getting Certified as a Salesforce Professional

So you are thinking about certifications as a Salesforce professional. Here is everything you need to know about the four most common questions I get:

1) How do you make time to get certifications? 🕐
2) How important are certifications really? ✍️
3) How should I prepare to take a certification exam? 🙇‍♀️
4) How much do certifications cost? 💰

How important are certifications really?

I believe they are very important, with some caveats. Why they are important: 1) they give you confidence and authority when making tough decisions, 2) they ensure you are exposed to key concepts and principles, 3) they help other people understand and assess your competence.

  1. It is normal and in my opinion healthy to have a proper dose of self doubt when designing technology solutions. Extreme confidence leads to oversights and will likely blow up in your face over time. There is too much to know and learn, and so the question is not whether your solution perfectly anticipates all future variables. The question is does your solution put the odds in your favor moving forward by following sound design principles, making proper use of standard features and functions, and setting up the business for success against the requirements. You can’t prepare for every eventuality and most solutions will look stupid at some point because people looking at them won’t have full visibility into the constraints that dictated the solution, where the technology was at the time, etc. Additionally, perfect is the enemy of good, and can result in paralysis that slows down the delivery of a solution that could be delivering value in the short term. One component to having confidence that you are properly considering intended uses of standard features, is being certified on the product and functionality in question.

  2. Certifications require you to get exposed to things that you would likely not be exposed to otherwise. For example, I never even heard about some of the features that Salesforce offers exclusively through their support team around large data volumes until I was taking the data management and architecture certification. That same week I was able to start helping coworkers deliver better solutions for their client’s go-live. Experience is a great teacher, but to experience some things you have to first be exposed to them. Certifications provide that exposure as you study. This is especially true fo admins at end-user companies that might not be aware of key features they could recommend that would really improve efficiency for their company, and in many cases would avoid custom building features that already exist.

  3. Certifications signal competence to your employer, clients, and coworkers. Certainly they are not and should not be thought of as the only indication of competence, but they are one indicator. Salesforce in particular has written their certifications in a way that I feel makes that a pretty good indicator of competence. If someone has a certain certification, I can be certain about what they have been exposed to in terms of features and functions of salesforce. Now comes the caveats. There are certainly people who use cheats to get their certifications, making those certifications less valuable. So when assessing someones competence for hiring or other purposes, the best practice is to ask them questions about specific experience they have putting that certification to use, and to understand how many projects and how many years have been spent putting that knowledge into practice. The combination of certification with experience in an area is a much more reliable indicator that certification alone. If you are thinking about getting a bunch of certifications to appear valuable, when you haven’t been an actual practitioner, understand you will be quickly exposed, fired, and you will only hurt your reputation in the tight knit Salesforce ohana.

How do you make time to get certifications?

This is a question about time management and prioritization. What people are really saying is that they have too many higher priorities during work hours to get certified. So my recommendation is to take the following series of steps to make the time for your certification.

  1. Build a business case. For some reason, people often look at jobs as a place where others dictate to them what needs to happen, and they take those orders and act on them. In truth, the most valuable employees are those who push back on leadership by building an intelligent business case and convincing their leaders to get on board. If you ever want to have any influence in an organization, don’t wait for a title. Start practicing your ability to create change through organic influence and managing up and down the chain of command. This will prepare you to be a very effective leader, that relies on persuasion of authority or force. Leadership aside, this is how you get things you want in life - you negotiate for them. The best resource I can recommend if you are intimidated by negotiation is the book “Never Split the Difference” which is what I consider to be my negotiation Bible. The other book I would read is “Thank you for arguing”, which is all about rhetoric. When you can make a compelling business case, your leaders will create time for you and actively defend that time to ensure you get your certification. They will see it as mission critical. If you need help with this, reach out and I am glad to give you ideas and suggestions, or share a sample pitch deck that you can customize and use to present your business case.

  2. There is really no way that step one should fail. With enough time and focus, I believe you can build a compelling business case in any organization. But let’s say it is going to take a lot of time in your organization and you don’t want to wait - then let me suggest option 2. Create the time in your personal life. Even if you work long hours (let’s say 12 hours a day), you still have about 5 hours a day to work with. Now, your brain is going to be fried after 12 hours of work, so I do NOT recommend coming home and studying. Do the opposite and study first. I recommend getting up very early, and getting 4 hours of study in before work. Let me explain. Your brain operates at peak performance at cool temperatures, like a computer, and that occurs in the early hours of the morning. So if you get up and study before work, you are actually going to get better performance in less time than studying after work. Much better in fact. Now what about family, and kids, and other commitments? The answer is you need to ask them to support your goal. Build the case for why this certification will help them and your family earn more money, be happier, etc. and ask them to support the goal. Commit to them that it will be only one week that you need them to pick up the slack (more on exactly what to do for that week in my methodology below). I would be that as long as you choose a week that works for them, they will be glad to support you.

  3. If option 2 is not possible because you are say, a single parent with children too young to mostly self-govern for a week, well then option 3 is the way to go. Take paid time off (PTO). Yes seriously. Take two days of PTO. Now to avoid needing to do this in the future, I recommend explaining to your boss what you are doing. If you have failed to build the business case, because they need you so bad and there are urgent priorities, etc. Then you taking PTO will likely be painful for them. So explain to them that you are essentially putting your money where your mouth is, and that you believe so passionately that it is in your and the business’s best interest, that you are going to take personal time to do it. A few things might happen. 1) they may just give you the work time to do it. 2) they respect you more next time when you present an idea. 3) you can use this experience to prove you are right, and build credibility for your next business case, decreasing the likelihood of needing to do this again. The best part? You will get a positive ROI on this time. Let’s say you make 50 dollars an hour (roughly a 100k salary). Those two days cost you 800 dollars. I guarantee you will be able to ask for more than that in your raise when you point out you used two days personal time to add value to the company. And if they don’t give it to you, you know it’s time to move on because other employers will. This is the nuclear option, but it works. Two days off are all you should need, and it should be a Thursday and Friday (more on this in part three).

Let me know what works for you! And if you still feel that there are obstacles preventing you from getting certified, let me know and I will help you brainstorm ways to overcome those obstacles. There is always a way.

How should I prepare to take a certification exam?

My first certification was the admin 201 certification. I had recently started working at my first job as a consultant in the Salesforce world, and they had many materials including practice questions that were almost identical to the test. So I memorized those, studied and past it. That gave me confidence 💯, so I quickly tried the same approach for Sales Cloud. I studied any practice questions I could find, and tried to practice hands on the features mentioned in the questions in a dev org. (this was before trailhead was the resource it is today). I took the test, and failed miserably 😭. I knew it just minutes into the test. There was no way I was making it out alive on this one. The questions really tried to trick you, and the answers were less right and wrong and more good, better, best. So I waited a couple weeks, kept studying and practicing, and tried again. Fail. I started to really get frustrated. I was not going to let this keep happening. So I stopped trying. I waited for months and just focused on project work, which was getting me a lot of good experience and exposure. When I came back to it again, I studied harder than I had before, for a few weeks. Finally I took the test and passed. But I was not going to take more of the consultant exams any time soon. That had put the fear of god in me, and I didn’t like failing. So instead I added a couple more basic certifications like dev 401 that I was less intimidated by.

It would be a few years later when I felt like I had so much experience that I could and should tackle the hard certs again. But I needed a structure to make sure I didn’t fail. The landscape had shifted significantly, with trailhead becoming a very good resource. Every certification I sat for from that point on I passed on the first try. So here is the methodology that I refined and that I now follow religiously given all the tools available today:

  1. Get experience with the functionality. I try to avoid taking any certification that I have not had at least one meaningful experience with. This means I look for and take projects that are outside of my past experience every chance I get. They allow me to tackle new challenges and grow, which I love.

  2. Set up your schedule. I plan for 4 hours a day for a week (Monday-Friday) for preparation (or two ten hour days if you have to take PTO to prepare on Thursday and Friday). Then I expect to take the certification on Saturday if I am ready. If not, I continue studying Saturday and get good rest before taking the certification Sunday. But that is my deadline. Come hell or high water, I will take the certification Sunday. Some people find it useful to schedule their test in advance to create this pressure. I self impose this pressure, and wait until the moment I want to take the exam to schedule it. I have never had trouble getting a time slot for an online proctored exam within 15 minutes of wanting to take the exam, which allows me to get to peak confidence and then schedule and take the exam right then. I love that flexibility and control.

  3. Review the guide and highlight the areas where you are least confident. The guide explains what the exam will cover, and so I like to use my iPad pro to mark up the pdf and highlight the things I am least knowledgeable or experienced with. I ask myself the question - if I had two hours to prepare to take this exam, what would I have to spend my time studying to give myself the best shot at hopefully passing (this came from a time when I actually did give myself 2 hours to prep for an exam, and successfully passed it. Different story for a different day.) You can get the guide for your certification by going to this page on trailhead. Then click on the role and the certification you want to take. Next click on the trailmix under "Study and Prepare". The guide is the first link in the trailmix. Screenshots above.

  4. Monday-Tuesday: Use trailhead to get more experience and fill in gaps. I go to the trailmix for the certification and look through the various types in the mix. You will find modules, trails, projects, super badges, reading materials, links, etc. I start by doing all of the modules and trails. Every hands on exercise available will be completed, and I make sure to really read and study the explanations they give in those modules, because they hit on key concepts that you will be tested on. If there are too many to complete them all in the 8 hours scheduled for these first two days, I start with the concepts I have the least experience with, and work on those first, then go on to more familiar modules.

  5. Wednesday-Thursday: I look at the projects and super badges and ask myself if there are any that I have even a slight doubt about being able to complete with ease. If there are, I focus on those and complete them to get more experience in the weakest areas. If not, I will spend additional time on modules I didn’t complete yet, or if I am done with them all I will move ahead to the next steps.

  6. Friday: Today is reading and research. There are likely going to be some things on the exam that you haven’t been able to get experience on through the prep work up to now. Maybe they are features that don’t have trailhead content, or they are special features that you can’t access in a dev org, or something along those lines. So now is when you go through the trailmix pdfs, links, and reading materials and take notes/highlight your mind out. Study these like they are a text book. Make sure you understand the key concepts, and try thinking of what test questions you would write if you wanted to see if someone had read the link or not. As with everything else, start with the concepts you are least familiar with, and move towards more familiar topics later (seeing a pattern here? This concept is at the core of success, deliberately practicing the hardest and least familiar concepts and prioritizing your limited time).

  7. Saturday: Now comes quizlet. Many people start here which I very fervently recommend you do not do. One of the reasons I failed sales cloud multiple times was because I had gone through so many questions that I got wrong (or quizlet had the wrong answer) and so as I was deliberating which answer to pick I couldn’t tell if an answer sounded familiar because the concept was right, or because I had got it wrong on a practice test, etc. This noise will cripple you. So DO NOT try to use question banks to prepare until you have followed steps 1-6. Now that your brain is full of good data from salesforce sources, you will test that knowledge by making only two passes through the best question bank you can find on Quizlet. I look for question banks that look and feel like the questions I recognize from exams, not because I want to memorize them, but because if they happen to be actual questions then they will ensure I have studied the right things. So I make one pass through the question set and for each question I get wrong OR a question I got right but felt I was guessing a little and not 100% sure, I star that card. At the end of the question bank, I then measure my percent correct, to see how I scored on questions I was absolutely certain about. This tells me how close I am to taking the exam. If I was certain on 80% or more of the questions, I am taking the exam today. If it is lower, I will likely end up taking it tomorrow. Either way the last part of this step is doing the research. For every question I starred, I go back through and look at each answer and research it until I can show with 100% certainty why that answer was wrong or right, using salesforce’s documentation sources. This is an arduous process, but often it's where I learn the absolute most. Being able to explain each answer and why it was not the right answer, or the right answer, cements my understanding in the areas where it might have been insufficient. Once I have done this for all the starred questions, I go through the question bank a second time and retest. I should get 100% correct. I expect it, and I deliver on it. That gives me the confidence that I am ready for the test.

  8. Saturday-Sunday: As soon as I finish step 6, I go online to web assessor and schedule an online exam for 15 minutes out. During that 15 minutes, I go to the bathroom, get a drink, and set up my webcam so I am ready to go. I make sure my family knows not to interrupt, and lock my office door. 90 mins or less later, I have the certification in hand. ✅ 🎉

This methodology is undefeated for me, and I am certain it will work for you. Pick a week, and plan to take your next certification and follow this methodology. I want to hear from you when you pass, so post to LinkedIn and tag me so I can see your shiny new certification.

If for some reason you are the first person that this methodology fails, make sure to copy your results of how you did in each section so you know how to focus your efforts to prepare for a retake. Then follow the same process, with a laser focus on the categories you were weak on.

🔥 Good luck! YOU CAN DO THIS! 🔥

How much do certifications cost?

The basic certifications like Salesforce Administrator start at $100 to take the exam, with the consultant level exams being $200 and the architect exams costing $400. If you fail, the retake will cost you half of the first fee. So follow my methodology above to make sure you pass on your first attempt.

It is important to note that most employers will pay for these exams. If your employer doesn't offer that, ask them to pay for it! You would be surprised how often you can get this taken care of by simply building a business case, as described above. This is a good investment for your employer and you should work with them so you don't have to incur the expense. However, if your employer doesn't cover the expense I still think the value is worth paying for it yourself.

Once certified, you should expect to take maintenance exams 1-3 times a year for each certification you pass. Once a year, there is a renewal fee for most certifications that is about $100 dollars. While that cost can add up, Salesforce rewards people that are highly invested in their ecosystem by capping your expense on this once you reach a certain threshold. I believe it was somewhere between certification 8-10 that Salesforce told me that going forward I would pay a flat $300 annually to cover all my maintenance exams. Thus, I recommend that if you are paying yourself, you should move from certification 3 up to 8 or so within the same year to minimize your future expense. Salesforce will email you once you qualify for the reduced renewal expense. If you have good experience under your belt already, and you follow my methodology above, this is a very attainable goal. If you are newer to the Salesforce platform, get 3-5 years experience before trying to make that kind of a jump. It is certainly possible to do earlier, but you will retain and understand less, which will hurt the overall value for you going forward. In a world constantly looking for shortcuts, if you focus on actually learning, developing, and becoming something over time, you will have a huge competitive advantage due to your depth of expertise.