Home Blog

Developers: Empower Your Admins and Make Your Team More Efficient

0

I was in a sprint planning meeting a while back where we were looking at the work we wanted to accomplish over the next two weeks. We were a smaller team with 5 admins and 3 developers in a customized org with a good amount of apex. Once we scoped our tickets, it was clear that the majority of them required a developer and we didn’t have the capacity. Even more, since most of the work was falling to the developers, it left our admins under utilized – a big no-no.

Utilization: Getting The Most Out Of A Development Team

So what happened in the scenario above? Well, we had to push a bunch of the developer tickets out of the sprint because we weren’t going to get to them. Then, we had to bring in additional tickets for our admins. And that means that we’re 1) pushing out the timeline on important work that we had originally prioritized and 2) now working on things that are of lower priority just to make sure people have things to do.

In a word, we were inefficient. We weren’t nimble. We were clunky and slow. And we decided to do something about it.

How Developers Can Help Support Admins and Business Partners

As a developer, one of the things I’m constantly thinking about as I write code is “How can I avoid having to touch this code again?” Now, that’s not always possible, but the idea is that I want to right code that we don’t need to spend time revisiting in the future, even if the business strategy shifts slightly.

I’m going to give you two concrete examples of things you can do to start empowering your admins and become less of a blocker as a developer, but before I do, it’s important to call out that a big part of this relies on you having a solid understanding of your relevant business processes, goals, and how your end users will interact with whatever you are building. You need to be able to identify what levers the business will want to pull in the future, and then separate those things from the application logic. Let’s get into some examples of how this plays out in real life scenarios.

Custom Settings and Custom Metadata

Your boss slacks you and says that they want to do an A / B test on a particular page used in your community. They want you to create two different versions of the page (Version A and Version B), and at the start, they’d like to show Version A to 10% of users, and Version B to 90% of users. Depending on the results of that test, they may ramp up Version A or decide to abandon it entirely.

So how would we handle this? I’ll avoid the details of the page itself as that’s irrelevant, but let’s assume we call an apex method that returns which version of the page we should show. It might look something like this:

Ok, that works, easy enough. You ship the code and move on. Two days later your boss comes back and says “Version A is on fire! Let’s ramp it up to 50% of users!” So, you pull up VSCode again, make a tweak and send it up:

What happens when they want 95%? What happens when version B should be at 0%? This is a great example of a lever that the business can pull, so let’s find a way to make it easier to pull.

Ok, so whats changed? Well, first, I’ve created a new custom setting thats storing an opt in percentage in the OptInPercent__c field. In a real life scenario, we’d want to make sure that the values stored in this field match what we’re expecting to receive, but for now, lets just assume that we are always setting that value to be between 0 and 10.

The benefit of using a custom setting like this is that any Admin on my team (or anyone we give access to) now has the ability to change this percentage on the fly by simply updating a custom setting. Doing so immediately impacts the end user’s experience, but. doesn’t require me as a developer to do anything. Win win!

Invocable Methods

One of my favorite ways to empower admins is via invocable methods. Invocable methods are methods that can be invoked from things like Flow. Lets walk through an example.

Lets say one of the admins on your team is working on building a flow on Opportunities. While Flow is constantly improving, there are certain scenarios that are simply put, better handled in Apex (Map handling is one example where things can be simplified drastically in Apex). Invocable methods allow you to combine Flow and Apex – best of both worlds! Here’s what an invocable method might looks like:

So here we’ve written a method that is now accessible within Flow. Your admin can simply call this as an Apex Action and pass in the list of Opportunities they are working with. You can then make your updates in Apex, and then hand the Opportunities back to them to finish the rest of the flow.

Invocable methods are really fantastic ways to give your admins some control to handle complex scenarios while still doing the heavy lifting via Apex.

Hope these two examples helped illustrate how you can help streamline your admin and developer processes!

How to Build and Release Your Own Salesforce App on AppExchange – Part 1: Partner Community

I’m in the process of releasing my first App on the Salesforce App Exchange and am going to document the process in a series of posts to help anyone who might be interested in doing something similar.

For a lot of us who work as developers or admins in single org’s, the process of releasing something onto App Exchange can seem a bit daunting, but luckily Salesforce has put together a number of great documents, trailhead modules, and onboarding steps to get you up and running. I found the trailhead modules to be very helpful in understanding the end to end process of releasing an app – and the first part of that process is signing up for the Partner Community!

What is the Salesforce Partner Community?

The Salesforce Partner Community is a portal thats specifically designed for people and business who are partners of Salesforce. A partner could include consulting businesses and/or businesses releasing apps like we are going to do.

The partner community is a place where you can get support, engage with Salesforce employees, learn best practices, and chat with fellow partners in a secure environment. There is also a robust help content offering where you can learn about how to make the most of your partnership with Salesforce. Most of the content on the partner community is publicly available without even signing up so feel free to peruse the portal before moving on to the next section.

Step 1: Join the Salesforce Partner Community

Before we do anything else, we’ll need to sign up for the Salesforce Partner Community. You can do so by visiting https://partners.salesforce.com/ and clicking the “Join Now” link.

Salesforce Partners Community with Join Now button.

One note about signing up in the Partner Community is that Salesforce recommends you create a brand new Salesforce login rather than using an existing dev org login. The reason is because your org will become your Partner Business Org which is where you will manage certain aspects of your partner account moving forward.

You’ll need to fill out and e-sign a few forms during the sign up process but once everything is completed, your account should be approved within a few minutes. You’ll receive a few emails with additional details shortly thereafter, but most importantly, you should be able to login to the partner community with your credentials!

Step 2: Exploring the Partner Community

Once you are logged into the Partner Community, you’ll be directed to a home page similar to this:

Most of the navigation along the top is self explanatory, but there are a couple areas that are important to note.

First, is the ‘Manage Users’ link shown above which will take you to your hub for managing your team.

You can invite additional team members via the button in the top right, and subsequently control what access they have within the partner community.

I’ll talk a little bit more about some of the other items available in a future post (namely the Publishing section) but feel free to poke around and explore the community!

Step 3: Partner Business Org and Environment Hub

If you created a new account when signing up for the Partner Community, Salesforce should have spun up a new environment for you that will be your Partner Business Org. If you used an existing account, that dev org will be your Partner Business Org.

Once you login, you can search for ‘Environment Hub’ in the app launcher. If you don’t find the app, you’ll need to contact Salesforce support to get it enabled. You can learn more about this here.

After the hub is enabled, you’ll have access to the app within your org. It will look something like the screenshot below (although you won’t have any environments created just yet – we’ll cover that in the next post).

Wrapping Up

By this point, you should have a Partner Community account, your Partner Business Org setup, and have enabled your Environment Hub. In the next post, we’ll talk through the Environment Hub and get started building out your app!

Study Guide and Exam Tips: Salesforce Data Architecture and Management Designer Certification

0

I mentioned in my last post that I’ve recently began studying for some of the Salesforce architect exams, and last week I had the chance to take the Data Architecture and Management Designer certification exam and passed!

I sort of took this exam on a whim last Thursday. I was reviewing the exam guide and felt like I was pretty confident in a number of the sections, even with limited study, so I booked the exam for that night. Thats one of the great things about taking these online proctored tests is that you can schedule your test for 15 minutes from now and be on your way with no problem. Also, at the time of this writing (due to Covid), Salesforce is allowing you to use internal webcams during the exam (normally you have to use an external webcam which I know a lot of people dont have). This makes it super convenient and I hope Salesforce keeps this policy post Covid.

One other thing to keep in mind about this particular exam is that you only need a 58% to pass. A lot of the other exams require 65% to pass, so you’ve got a 7% buffer here to give you a bit more confidence. I’m certainly not an advocate of just learning enough to scrape by the exam as I dont think it will translate well for you in the real world, but I’ll take any sort of buffer I can get 🙂

Before I get into the details of this certification, I’ll just say that although I did pass the exam, there were a few core sections that came up multiple times during the test that I just was not confident in. Specifically, I felt like there was a lot of emphasis on making sure you understood what limits existed for things like big objects, external objects, etc. So understanding the concept and when it should be implemented wasn’t necessarily enough – you really needed to know the nitty gritty details.

Lets get into the exam sections.

Exam Outline

Data modeling/Database Design: 25%

  • Compare and contrast various techniques and considerations for designing a data model for the Customer 360 platform. (e.g. objects, fields & relationships, object features).
  • Given a scenario, recommend approaches and techniques to design a scalable data model that obeys the current security and sharing model.
  • Compare and contrast various techniques, approaches and considerations for capturing and managing business and technical metadata (e.g. business dictionary, data lineage, taxonomy, data classification).
  • Compare and contrast the different reasons for implementing Big Objects vs Standard/Custom objects within a production instance, alongside the unique pros and cons of utilizing Big Objects in a Salesforce data model.
  • Given a customer scenario, recommend approaches and techniques to avoid data skew (record locking, sharing calculation issues, and excessive child to parent relationships).

I think if you’ve spent a good amount of time as an admin or developer, a lot of this section will likely come naturally to you. If you haven’t, getting a solid understanding of CRM / Salesforce fundamentals is super important (field times, relationships, best practices, etc). The two callouts I’ll make are around Big Objects and deferred sharing calculations. The trailhead for this exam covers big objects fairly well, but as I mentioned above, dont skim over the limits sections. Read through this tip sheet for deferring sharing calculations which covers the basics.

Master Data Management: 5%

  • Compare and contrast the various techniques, approaches and considerations for implementing Master Data Management Solutions (e.g. MDM implementation styles, harmonizing & consolidating data from multiple sources, establishing data survivorship rules, thresholds & weights, leveraging external reference data for enrichment, Canonical modeling techniques, hierarchy management.)
  • Given a customer scenario, recommend and use techniques for establishing a “golden record” or “system of truth” for the customer domain in a Single Org
  • Given a customer scenario, recommend approaches and techniques for consolidating data attributes from multiple sources. Discuss criteria and methodology for picking the winning attributes.
  • Given a customer scenario, recommend appropriate approaches and techniques to capture and maintain customer reference & metadata to preserve traceability and establish a common context for business rules 

This section is only 5% of the exam so I wouldn’t spend too much effort here. If you are familiar with MDM concepts you are going to be just fine here. If you aren’t or dont know what MDM is, go through the trailhead as it gives you a good enough understanding for this exam. Also, unrelated to the exam, I’ve worked with a number of customers that feel like MDM is a thing of the past and isn’t relevant anymore. That topic probably deserves a post of its own, but I’ll just say that in my opinion, MDM still has a place and role, although it may look slightly different than it has in the past. And being familiar with the concepts will help you have conversations with folks who still or did use the approach.

Salesforce Data Management: 25%

  • Given a customer scenario, recommend appropriate combination of Salesforce license types to effectively leverage standard and custom objects to meet business needs.
  • Given a customer scenario, recommend techniques to ensure data is persisted in a consistent manner. 
  • Given a scenario with multiple systems of interaction, describe techniques to represent a single view of the customer on the Salesforce platform.
  • Given a customer scenario, recommend a design to effectively consolidate and/or leverage data from multiple Salesforce instances.

This trailhead gives a good intro the Customer 360 concepts. You should also be familiar with multi-org strategies, and something like the hub and spoke model. Lastly, I suggest memorizing the high level access each license type gives you. I was particularly blind to Lightning Platform Starter vs Lightning Platform Plus so pick out the differences using a table like this.

Data Governance: 10%

  • Given a customer scenario, recommend an approach for designing a GDPR compliant data model. Discuss the various options to identify, classify and protect personal and sensitive information. 
  • Compare and contrast various approaches and considerations for designing and implementing an enterprise data governance program. 

This is another small section on the test and I have to imagine that anybody actively working in Salesforce is at least familiar with GDPR concepts. I found that these types of questions were easy to use logic to sort out. If you aren’t familiar with GDPR you can read up on it here.

Large Data Volume considerations: 20%

  • Given a customer scenario, design a data model that scales considering large data volume and solution performance.
  • Given a customer scenario, recommend a data archiving and purging plan that is optimal for customer’s data storage management needs.
  • Given a customer scenario, decide when to use virtualised data and describe virtualised data options.

This section is covered pretty well in the main exam trailhead Understanding key concepts around data archiving will be helpful for you such as knowing the differences between archiving, purging, deleting, etc. A lot of the limits I mentioned above will help drive you to the answers in for these questions.

Data Migration: 15%

  • Given a customer scenario, recommend appropriate techniques and methods for ensuring high data quality at load time. 
  • Compare and contrast various techniques for improving performance when migrating large data volumes into Salesforce.
  • Compare and contrast various techniques and considerations for exporting data from Salesforce.

Think Data loader, data exports, bulk APIs, parallel vs serial API usage, etc. Again you are going to get asked about key differences in each of these strategies so you’ve got to know. where the weak spots are. Also, brush up on PK chunking if you haven’t used it before.

Let me know if you have any resources that were particularly helpful for you and best of luck with the exam!

Study Guide and Exam Tips: Salesforce Certified Identity And Access Management Designer

Over the past few months I’ve ramped up studying for my Salesforce Architect certifications, and last week I took (and passed!) the Identity and Access Management Designer exam. I’ll be honest in saying that I didn’t expect to pass this one on the first go – I’d heard that this exam was very difficult and I didn’t have a ton of experience implementing enterprise SSO solutions. That being said, I found a ton of resources out there in the community that were helpful and true to the exam and I wanted to share those here, along with a few suggestions of my own while the exam is fresh in my mind.

Before I detail my thoughts on each section of the exam below, I want to give a shout out to Apex Hours – they’ve created some awesome resources that were very helpful in my preparation, especially this playlist of videos that walks through key concepts. Now lets get into the deets!

Exam Outline

Identity Management Concepts: 28%

  • Describe the role(s) an identity provider and service provider play in an access control solution.
  • Describe common methods for how trust connections are established between two systems and the methodologies used to describe trust between an identity provider and service provider.
  • Given a scenario, articulate whether it describes an authentication, authorization, or accounting scenario and what Salesforce feature should be used to accomplish the task.
  • Given a scenario, recommend the appropriate method for provisioning users in Salesforce and other third-party services (SOAP/REST API, SAML JIT, Identity Connect, User Provisioning for Connected Apps, etc.).
  • Describe the risks to enterprise security that federated Single Sign-on solutions aim to address.
  • Given a scenario, troubleshoot common points of failure that may be encountered in a Single Sign-on solution (SAML, OAuth, etc.).

Identity Management Concepts Notes and Resources:

This is the meat and potatoes of this exam and in my opinion, is where you should spend the majority of your preparation time. First, you need to have a very firm grasp of identity provider vs service provider roles. And I say a “very firm grasp” because you will be given a lot of scenarios where you are asked to identify which is which, and the questions can be vague and can be confusing if you aren’t confident in what these roles look like in a real world scenario. This Service Provider Initiated and Identity Provider Initiated videos are great. Don’t get hung up in the nitty gritty details and focus on understanding the concepts as a whole.

The other points in this section are covered well enough if you follow the recommended trailmix found here.

Accepting Third-Party Identity in Salesforce: 22%

  • Describe the components of an identity management solution where Salesforce is accepting identity from a third party.
  • Given a scenario, recommend the appropriate authentication mechanism when Salesforce needs to accept Third-Party Identity (Enterprise Directory, Social, Community, etc.).
  • Given a scenario, recommend the appropriate method of SAML initiation to fulfill the requirements (SP-init, IdP-init.).
  • Describe the components of a Delegated Authentication solution.
  • Describe the risks of implementing delegated authentication.

Accepting Third-Party Identity Notes and Resources:

I know I mentioned it above but just to reiterate, understanding SP-init vs IdP-init flows will do wonders for you here!

The other area I needed to brush up on was using social identities. You should understand how you might implement login via social on something like a community, and what options you have for mapping those sign ups to contacts/accounts (or person accounts).

Also, Jitendra’s blog here is a great overview of the key points.

Salesforce as an Identity Provider: 23%

  • Given a scenario, determine the most appropriate flow type to recommend when implementing an OAuth solution where Salesforce is providing identity to a third party (for example, User Agent, Web Server, JWT, etc.).
  • Describe the various implementation concepts of OAuth (for example; scopes, secrets, tokens, refresh tokens, token expiration, token revocation, etc.).
  • Describe the role(s) Connected Apps play when Salesforce needs to provide identity to a third-party system.
  • Given a scenario, recommend the Salesforce technologies that should be used to provide identity to the third-party system (Canvas, Connected Apps, App Launcher, etc.).

Salesforce as an Identity Provider Notes and Resources:

So going into this I thought that I knew quite a bit about OAuth. I’d implemented OAuth a number of times, both within Salesforce and in other applications. All of that was a good starting point, and if you haven’t worked with OAuth before, doing a mock implementation can be a good way to get familiar with scopes, secrets, refresh tokens, etc.

The part that I was significantly less familiar with is identify what the most appropriate OAuth flow is based on a particular situation. There were a number of questions directly related to this on the exam so I’m grateful that I spent some time brushing up on these. Apex Hours created this post that has a chart that shows which flow is best for certain scenarios – memorize it. The accompanying video also does a good job explaining why you would use one flow over another.

Access Management Best Practices: 15%

  • Describe the risks that Two-Factor Authentication mechanisms aim to mitigate.
  • Given a scenario, determine the most appropriate Two-Factor Authentication mechanism for an identity solution.
  • Given a scenario, identify the risks and mitigation strategies that session security and Two-Factor Authentication enable (for example; High Assurance Sessions, 2FA, etc.).

This section is pretty self explanatory and I think its covered well by the trailmix. You should know how to implement 2FA. One callout is that you should also make sure you understand Login IP ranges and what options you have for setting up multiple ranges for different populations of users / scenarios (i.e. mobile apps).

Salesforce Identity: 7%

  • Given a scenario, recommend the most appropriate Salesforce license type(s) to support the identity requirements.
  • Describe the role(s) Identity Connect plays in an Identity Management solution.

The most important piece here is understanding how to use Identity Connect in conjunction with Active Directory. I’ve never used Active Directory myself and have only implemented the SFDC portion, but thats all you really need to know. You should know what options you have to map users, profiles, permission sets, etc. from Active Directory into Salesforce. Dont get too hung up on the details of the Active Directory side as its not needed.

Community (Partner and Customer): 5%

  • Describe the capabilities for customizing the registration experience for external communities (for example; Branding options, self-registration, communications, etc.).

Self registration is the key here. You should know how contacts are created and mapped to Accounts when using self registration. Also, know how to use person accounts with self registration as well.

Final Thoughts

If you haven’t implemented SSO or worked with OAuth before, this exam can be a doozy. The exam touches on a lot of areas of Salesforce that I think a lot of people don’t use in their day to day work which makes it hard to draw on your experience during the test. The good news is that the exam outline provided by Salesforce is very well defined and accurate, so if you can read through the topic prompts and explain each concept at a high level, you’ll do great.

Now that I’ve taken and passed the exam, I think I would have focused less on the really detailed development aspects of implementation. I spent a lot of time making sure I knew methods and parameters and whatever else I thought might come up for something like OAuth, and it just wasn’t necessary. And I think that makes sense – these exams are meant to test your ability to architect solutions, so keep your studies zoomed out.

Let me know your thoughts on the exam below. And if you are sitting for the test here in the near future, best of luck!