How I Built That: Files Download Quick Link

A recent system review with a client revealed a tedious and repetitive task.

The client’s org contains Files related to a Custom Object we will call “ObjectX”. These Files are XML format and therefore cannot be previewed directly in Salesforce. To view the File, a User needs to access Navigate to Files Related List>Click on the File Name>Select to Download the File>Save the File>Open File….5 steps to accomplish 1 task!

And so we began to think, how can we facilitate this process? The first solution that came to mind was to create a URL hack which would be a quick link on the ObjectX record to access the File. This would already save Users a step. Since there would only be 1 File per record, I didn’t need to worry about handling multiple Files.

I determined that we would need to use DLRS to help pull File data directly into the ObjectX record. Typically when using DLRS, the Rollup record directly references the Parent and Child Object. However, Files do not behave like your standard record with a direct relationship to the Object it is located on. A quick Google search led me to this thread where a contributor explained how to reference Files. Rather than directly referencing the ContentDocument (File) Object, I referenced the ContactDocumentLink which is the liaison between Files and the Record it is related to.

Once I did that, DLRS populated the File Id to a custom field “File__c” on the ObjectX record. Then, I did a little sleuthing (isn’t Salesforce all about detective work?!) and discovered that when I clicked the “Download” button on a File, a new browser tab opened containing a download URL.

I copied the URL to a Formula Text Field, replacing the Id with the “File_c” field on the ObjectX record (which contains the File Id).

I then used this field to create another Formula Text field which returned a URL. I did this in a 2 step process because the Hyperlink formula could not contain a record field.

And voila! Directly from the ObjectX record, a user can click on the File URL link and immediately save the file. A 5 step process automated to 2 steps!


Business Review….Always

Last week I showed a client their Salesforce implementation requirements document. It listed their current business and functional needs, and indicated which items would be addressed in the scope of the project. The client was blown away to see all the requirements listed and segmented by department.

It got me thinking. The person that I was working with knows his business really well. He can describe company processes in detail, and outline areas of success or improvement.

And yet, seeing the requirements written out impressed him.

He was amazed to see his needs transcribed in such a fashion. He was fascinated to read his company’s processes documented.

This was probably the first time he paused and reviewed their internal workings. The systems being used, how they are used, and how they relate to each other. The actions completed by different team members to complete a sale.

I encourage you all to undergo this practice on a regular basis. Dive into your organization’s processes and procedures. Write them out to really get a handle on what is involved. Review this with the team. You might be able to identify areas of improvements, of redundancy, of outdated procedures.

And then take your business to the next level.


Working with Workato

A while back, a client required SMS capabilities within their Salesforce instance. What unfolded as a result was an elegant use of multiple integrations, and native Salesforce functionalities stretched to their limits. It remains one of my favorite solutions to date. For client privacy, I gloss over the actual requirements, needs, and solutions.

I began by narrowing down and understanding the client’s SMS needs. Did they need bi-directional communications? Who were they texting? How do we log the SMS? Did they need mass SMS capabilities? How/when would SMS be sent? Who were the internal system users? What was the goal of the project? How do we measure success? How do we measure system usage?

Then I reviewed the available SMS Apps on the Appexchange. At that time, Salesforce did not have a proprietary SMS solution. Even on the Appexchange, there were very few options. I eventually narrowed the search to a single application which, with much custom configuration, seemed it would meet the project needs.

Thus began a deep dive into said application. To use it, extensive custom work (declarative and code) and automation would be required. It was not an elegant solution, and truthfully did not closely support our use case.

And of course, the question of costs came up and there we met some roadblocks. The App in question has a subscription fee, SMS per-per-use fees, and initial setup costs. We were looking at a step number.

Enter out of the box (err, Appexchange) thinking and we began to look at building a custom SMS integration using Twilio. Understandably, this would require lots of custom code. Until, enter Workato.

Workato is a middleware tool to integrate applications with no/low code. Since the customer was already using Workato, it would be at no extra cost to further utilize their instance. (Please note that Workato has since changed their pricing and this serves as no indication of the current costs. ).

When using Workato, you create a Recipe which is the automation. Similar to an Apex Trigger, you can create and save variables, loop over records, create a list of records, parse data, compute data, update records, create records and more! It’s the full power of code, in a GUI environment. Each Recipe can have one or more Connections which simply said are the applications you are using in the automation.

With Workato, we were able to receive SMS data from Twilio, process the content based on the business requirements, and then take action in Salesforce. In simple terms, the Recipe was triggered by an incoming SMS and then executed a series of steps to determine what to do with it. We were able to update and create multiple Records using this process. We also had a Recipe which was triggered from Salesforce. The Recipe received data from Salesforce and executed specific actions based on parsing the text.

Using Workato opened a plethora of options combining integration and automation. It follows the principles of code, in a user friendly fashions. It enabled us to aggregate functionality in a seamless fashion.


Tech Stack Talk

Tech stack decisions is an important conversation in all technology, with many additional nuances when it comes to Salesforce. In the Salesforce development world, there are out of the box offerings, Salesforce Clouds, custom build, and Appexchange as the primary options. Choosing to custom build, say over using an App on the Appechange is a discussion of it’s own with pros and cons to weight.

Oftentimes when describing a project that I designed, people will question the tech stack used for said project. The response naturally varies based on projects, and by large there is no right or wrong choice. It comes down to the specific requirements and circumstances of this decision.

Some of the criteria which has helped determine the optimal technology:

  • Requirements: What are the technical needs? What are the business needs? This sounds basic, but is truly one of the main factors in determining the solution necessary.
  • Configuration: How is the solution configured? How customizable is it? If you are using an out-of-the-box offerings, you will likely need to modify it to you use case.
  • Provider: Who is the provider of this tool? Are they reliable for long term use? Nobody wants a company that disappears overnight. Support options are also important to consider.
  • Pricing: Is there an annual or per use cost? Is there an upfront cost? Things needs to be factored into the budget and project longevity. Is is also important to calculate the cost of customizing this solution as described above.
  • Existing Technology: Is there an existing system we can repurpose or extend? Is there another system to consider when selecting the technology for this project? Consider the project from all angles, and how it fits into the larger picture and company processes.
  • Project Success: How does this option help us meet our goals? How do we measure success with this tool? Using a tool on it’s own is useful, but using it for larger success is how you ensure long term results

These are just a sampling of some of the thought process involved in selecting your tech stack. What are other considerations you have?


Datify Your System – Part 2

Dynamic Forms is the answer to one of the most asked for features in Salesforce. It’s (GA) delivery in Winter 21′ has excited many users and Admins. With Dynamic Forms, you can create intuitive and clear Record Pages that display information only when necessary.

One of the pitfalls of Page Layouts is the endless assortment of fields that often bog down the page. This in turn can create user frustration, decrease user adoption and cause inefficient processes. As I described in this blog post, users should be able to find, review and enter the data that they need with extreme ease and speed. When users struggle with data, they will often omit entering data or (even worse!) enter incorrect data.

With Dynamic forms (currently only available on Custom Objects), you can create a single Lightning Record Page that will dynamically show field components based on record values, the user viewing the record and other conditions. This optimizes the user’s experience because you can hide or display fields based on their current relevancy.

Simply put, Dynamic Forms enables you to:

  • Segment record fields into components
  • Conditionally display said components
  • Display fields anywhere on a record page
  • Decrease Page load time

For example, say you have a custom Payments Object with fields to enter payment method information. Some of those fields are only necessary for specific payment types. You can create a field component which displays the check date and check number fields only when the Payment Method “check” is selected. Previously this would have required 2 Page Layouts and Record Types to assign them.

The above image has lots going on, so let’s break it down!

  1. The Components side panel has a Fields option for this functionality.
  2. You must first add a Field Section to the Page.
  3. Once that is done, you can individual Fields into the component
  4. Notice the added Field Section. No fields have been included yet.
  5. Once I add the check information fields to the new Field Section, I will remove them from the Page Layout
  6. The side panel offers several settings for the Field Section Component. Here you can:
    • Name the Section
    • Select the column styling
  7. Set Conditional Visibility
    N.B. Once you add individual fields, you can set their own visibility!
  8. Salesforce offers you tips on improving your page.
  9. More page analysis!

In the image below, you can see that I added 2 fields to the left column. I also set the Component Visibility to only display when the Payment Method is “Check”.

There are other ways that I could have configured this. Suppose I wanted to add fields to track other information related to a credit card payment. Using the example above, I could have placed check information fields in the left column, credit card details in the right column and then individually mark the fields as conditional (or even one column). This would give us a relevant view of the data related to this payment.

Dynamic Forms improves your Record Pages, data visibility and Page Layouts management. It decreases the need to have multiple Page Layouts and Record Types based on the data you need to display and who should see it.

Have you been using Dynamic Forms? Tell me about your use case below!

You might also like:
Datify Your System – Part 1
#StruckByLightning – The Lightning Experience

Other Resources:
Salesforce Dynamic Forms – Overview & Deep Dive Tutorial by Salesforce Ben
Video Walkthrough by ApexHours
Salesforce Documentation


You ask Why. I ask How.

When reviewing business processes, it is common for consultants and business analysts to ask the all-time favorite “why” question, along with follow up questions to further delve into a topic. Many educational resources explain this method, and how to effectively utilize it. This process is intrinsic to learning about the company’s needs and how end users carry out their duties. This is a process I myself have carried out with dozens of clients. Asking the “why” question helps give us outsiders an inner view to the organization’s work. It helps identify gaps in the system or redundant efforts and provide areas of improvement.

Obtaining a solid business and tactical understanding of the business is important to create efficient solutions. Knowing why a company operates in a certain manner is crucial to then translate their needs to technology. Oftentimes, delving into a said process reveals redundant tasks, obsolete processes, and archaic procedures. A telling point is when the user is unable to explain why a task is necessary, or how it enables them to better carry out their role. More than once, an end user described a tedious process to me, and we broke it down together. Further examination revealed that this process was originally created due to their limited tools/technology, and was actually no longer needed. Without this business review, we would not be able to improve the person’s role. Other times, processes are in place due to change management deficiencies or a user’s resistance to change. It is common for someone to tell me they are doing something because that is what their predecessor did, and the person before them as well. Cue the use of rolodexes and sticky notes.

Recently, I read an article which challenged the use of the “why”. While I unfortunately cannot find the article to link, the premise was important and resonated with me. Allow me to indulge in paraphrasing some of the key points, along with my own thoughts.

The author opined that asking the “why” question might not be the best approach to take. Firstly, the question can come across as challenging the other and therefore the respondent might get defensive or feel that you are questioning their abilities. This is particularly significant when the participant isn’t fully aware of the need for each step of their duties and is simply carrying out tasks prescribed to them. As a result, they might hesitate to fully share their experiences and omit significant information.

Furthermore, asking “why” leads people to focus on their step-by-step procedures in place of the larger picture. While you might emerge with a functional understanding of their operations, you risk missing the business needs and results of said task. For example, a user might detail the steps they take to reach out to a client, record the conversation, and sell a product. However, since it is “why” (procedural) oriented, this approach doesn’t consider the larger goal of upselling X type of client on Y product. Even if this result is brought up in the discussion, it is likely as a singular statement, without context to the full business results of the upsell efforts. Ultimately, a business is driven by metrics and goals they want to reach. There is a performance result they are targeting, and it important to keep that on the forefront when gathering requirements.

Instead, suggests the author, ask “how”. This is a less confrontational approach and will still provide you with the information you need. “How do you do that”, “how do you carry that out?”, “how does that happen?” are all questions that will help with the procedural side of the conversation. It doesn’t require the user to know the reasoning behind what they do, and provides more context to the purpose of said process. Using the example above, we might ask the user “how do you upsell?”. This in turn would shed light on the target audience and product and lead to a discussion of the business objectives.

On a more significant level, reframing the discussion with “how” questions enables you to delve into the company’s goals and metrics. Transitioning or optimizing a company’s technology should not be a lateral move from system A to B. It should be a time to re-design their processes with business metrics in mind. Constantly ask yourself “how does this fit into their operations?”, “how does this enable them to set/meet goals?”, “how does this optimize the user’s time and skill?”. These are important gain a holistic understanding of the business and its drivers.

Consultants are trusted for their experience is business analysis and solution design. While the “why” method has proven useful, it may be appropriate to consider other approached to requirements and needs gathering that further the company’s goals and mission.


Apsona: Mail Merge that Works for YOU

When I was introduced to Salesforce back in 2011, Apsona was one of the first Apps that I used. Every Apsona webinar reminds me that we have journeyed through Salesforce together over the past decade. My appreciation for Apsona and it’s many features has grown over the years as more client needs are met and resolved via Apsona.

So, what is Apsona?

I typically divide Apsona into 3 main areas of functionality:
1. Data tool (included data queries, mass update, import/export capability)
2. Reporting (think Salesforce reporting on steroids)
3. Mail/Email Merge (see more below!)

I recently partnered with Apsona to show case Apsona’s Email & Document Merge capabilities. In the webinar below, we use a simple scenario and demonstrate creating customer invoices based on the Opportunity & Products. The concepts covered in this session can easily be reused and optimized for your own company’s needs.

Below is the full webinar, along with a list of resources referenced in the webinar. As a bonus, the template used in the demo is available for download.

Click download below to obtain a copy of the template created in this webinar.

Other Resources:
Apsona Reports
Email & Document Merge
Merge with Sublist
Sublist Totals
Lightning Merge Button
Schedule Merges
Previous webinar (featuring conditional merges and templates)


Datify Your System – Part 1

Datify may or may not be a word, and it certainly bears no relationship to dating. Datify is a custom word to represent the act of customizing your Salesforce instance to best support the data and data entry process.

Data is the lifeforce of your company and should receive white glove treatment. And since we want those gloves to stay pristine and clean, we need to ensure that the data being handled is relevant, accurate and actionable.

I recently reviewed this blog post I wrote back in the day. The importance of data entry and accuracy is just as important now as it was then. The information and tips shared are also just as relevant. Now with Lightning, there are many new incredible tools and features that can be leveraged to optimize the data experience in your Salesforce org! Join us as we explore some of our favorite features. This is a blog series that will continue over the next few weeks.

Highlights Panel

Lightning places the Highlights Panel at the top and immediate view of the record page. In this area, you can display key points about the current record. This provides users with instant insight to important information about the record. The user is then ready to review the record in detail and take appropriate action.

Once a field is in the Highlights Panel, you may choose to remove it from the Page Layout. This saves page real estate and keeps the record page clean. You’ll need to consider whether the field needs to be edited at any point.  For example, on the Account record Highlight Panel, you might have a formula field to visually indicate an Account’s rating.  Since the field is never edited (it computes automatically), it no longer needs to show on the Page Layout. Formula fields, Rollup fields, fields populated via API, and fields that are only set when creating a record; are all possible fields that you may chose to include in the Highlights Panel. Alternatively, the fields (if seldom updated) can be moved to a less prominent position on the page, making room for more significant data.

Before removing a field, it is important to consider whether the field has a functional role and place in the Page Layout. Sometimes several fields are displayed together since they have a shared purpose and relate to each other. In such a scenario, it may be best not to remove the field from the Page Layout.

That said, it is important keep in mind that you want to maximize the use of the Highlights Panel and only include key data points.  Displaying less relevant data will decrease your user’s attention and their care to the work that they are doing.

The objective here is to simplify the record page view and ensure that users can easily review the data they need, update records with ease, and carry out their work effectively.

Learn more here:
Compact Layouts

Where Have I Been?

It’s been a hot 🔥 moment since I last blogged here. A very hot moment!

So where have I been the past 4️⃣ years, 11 months and 3 days?

In August 2015, I joined the incredible team at Cloud4Good (C4G) as a Cloud Consultant ☁️. It was an wonderful journey working with thought-leaders and innovators of nonprofit technology. C4G engages exclusively with nonprofits and higher-education organizations, and they are known the be the leaders in the industry. When I was a newbie admin, it was my dream to work at Cloud for Good and it was gratifying to meet that experience. More on that some other time. It deserves a TedTalk of its own!

Cloud 4 Good developed an App for Synagogue management. 🕍 During my time there, I joined the product team and managed development, support and client implementations.

After about 2 years with the company, C4G sold the App to TogetherWork – a company that specializes in group management software and payment processing. ⚙️ I moved along with the App as Product Manager. In my new (and current!) role, I collaborate with a variety of teams across multiple product lines and functional roles. It is delightful to engage with great minds with diverse backgrounds and experiences.

Which brings me to today! 😃

This month I celebrate 9 years with Salesforce. 🥳 I reflect on my journey, my initial introductions, and where I am today. Salesforce has literally transformed my life on so many levels. My career, my focus, my drive, my contribution to the world, my lifestyle. I am able to dream and dream big thanks to Salesforce. 🙏🏻

I am excited to reignite this blog 🎊 and share my passion and love ❤️ for all things Salesforce!

The ABC’s of Salesforce

Better late than never, right? At least in most (read as: some) cases! 
My apologies for my disappearing act. With a month full of High Holidays, it was quite hard to keep up with things. Moving forward I will try to post regularly again. The feedback I have been getting is tremendous and I want to thank you, my incredible readers, for your participation and contributions.


As mentioned in my previous blog post, I was honored to speak in the Admin Zone Theater at Dreamforce. My presentation focused on what I considered to be the ABC’s of Salesforce. The topics I covered were based on my experience and journey with Salesforce: when I first started with Salesforce, there were so many things that I didn’t know and so many more things I wish I had known. Today, I can look back and pinpoint what I have now coined as “The ABC’s of Salesforce”.  As I did in my presentation, I will start with “B” since it is the Beginning of it all.


Basics: Know the Basics
Familiarize yourself with the basics of Salesforce, and specifically what features and objects your Salesforce instance includes.  Know what platform capabilities are and how they can be used. Ask yourself questions that are important and pertinent to your instance and your use of Salesforce.  Take a look at security, automation and reporting because they’re also essentials for your organization.

True Story: Recently, I had an organization approach me about an issue they were having with tasks. Every time a user was assigned a task, they received 2 email notification. One was the standard task notification email and the other….was an email sent through an Apex trigger .

You want to avoid these pitfalls by knowing what Salesforce can do for you and what you can do with it.

This applies if you are part of a nonprofit as well. Using the NPSP as an example, learn what the packages contain and what functionality they offer. This will help you create your processes, trouble shoot any issues you may have and guide you in making the best decisions for your organization.

Pro Tip: The best resource I can possibly suggest is Trailhead. If you have not used it already, you should literally run to try it out and see for yourself how incredible it is. Along with that, there are some great workbooks that offer step-by-step tutorials that will give you a great overview of Salesforce. As well, Udacity has a fun and interactive Salesforce course that you can follow. 

Appexchange: Your One-stop Salesforce Marketplace
The Appexchange is a marketplace of Apps that can extend the functionality and features of your Salesforce instance. Think of it along the lines of having a smartphone – that’s your Salesforce org. Your phone is certainly useful but you can also download additional apps from the Apple Store/Google Play that extend your phone’s capabilities. This is what the Appexchange does; from quote of the day, to mail merge to highlighted fields in your page layout – there are over 2000 Apps that will give you additional functionality and tools to meet your business needs.


True Story: I recall a time I had hours of meeting with a Consultant and developer trying to solution on a complex need we had. This was just when I heard of the Appexchange so I did a quick search and found an app that did exactly what we needed for a nominal cost. We could have saved lots of time by searching there initially. 

Keep in mind that you are one of many other companies using Salesforce. Chances are, that if you need a certain tool, others may also and there might therefore just be in App for it!

Community: Where the Magic Happens
The Salesforce Community is your best option to finding answers and help to any problems you might have. More than just a forum, it is a community of people that care and are dedicated to your success. You can also visit the IdeaExchange to post ideas you would like Salesforce to implement or vote on existing requests.   So many great features have been added just because we asked.

If you are a nonprofit, visit the Power of us Hub. Is is the best place to find information, collaborate, post questions and connect

Pro Tip: You might come across a solution which seems great but doesn’t address your particular need. Think out of the box and consider how you can translate that into business needs for your company.