Blog Posts

Family GTD

A look at incorporating Getting Things Done (GTD) into your family life, from significant others to offspring.
Family GTD

Family GTD

Since Justin and I are doing an entire GTD summer series on CloudFocus Weekly, I thought I would add another twist, talking about doing GTD in the family. Loyal listeners of the podcast will know that I talk about getting my wife and child involved as part of my GTD journey, so here are some of the lessons that I have learned.

A Little GTD is Better Than No GTD

One of the challenges of someone who has the big “ah-ha” moment in GTD is it becomes one of those things you want to share. Sharing is caring after all. Right? Well, not always. Sometimes sharing and oversharing and talking about something constantly can get friends and family to be less interested.  When trying to get your friends and family into GTD, think of it as a long journey that might not just start with “read the book.” My suggestion is to start with success and go from there. So when your significant other remarks on your new found calmness, or what a good mood you are in after your Weekly Review, point subtlely to GTD, giving it all the credit. If they show interest, maybe start them on David Allen’s 20-minute TEDx talk on YouTube. This is a great intro and isn’t as time consuming as reading a 300+ page book. If 20 minutes is too much, try the two minute GTD overview video. If all else fails, maybe point them to this blog post.

Keep It Simple

My lifelong mission to turn my wife and daughter into GTD black belt masters is a great goal but maybe not as realistic as I once thought it was. I have found that if I make some very small suggestions during the right times, they eventually start to take. For example, I have been working with my 12-year-old daughter on just doing some very basic capturing of things to do during the week. A daily todo list, if you will. We review it together, make sure it is complete, and off she goes to do the things she needs to do. We had the same talk about homework from school; write it down in the planner, review it daily, and prosper. My spouse of 14 years is way past capture at this point, so I moved onto the 2-minute rule (if it can be done in 2 minutes, do it instead of writing it down). Once that had stuck after a few years (yes, years) we worked on calendar management and how those are hard landscapes that need to be reviewed at least daily, and in advance once a week. It is amazing how a well-organized calendar can keep a family in sync

Be Tool Agnostic

One thing that I have found in my ten plus year GTD journey is that the tool you pick both matters and doesn’t matter at all. While I believe that a good tool (hint hint OmniFocus) can get you to that black belt, for the casual GTD practitioner the tools can be overwhelming. For my daughter, we started digital but it just became too distracting, so we went back to good old fashioned pen and paper. For my wife, who might love her iPhone as much as me, the built in Apple Reminders app was good enough. She can capture quickly, review them wherever she is, and is just one tap away from #Done. David Allen has been very consistent in proclaiming that his system is not about the tool; it is about the mindset, and for the family members, this rings very true.

Enjoy The Journey

The last point to spreading the GTD love in your family is make sure not to push it too fast or too hard. It might be frustrating that you are enjoying so much success with your new productivity, but like any new-found passion, not everyone is going to come along for the ride. Think of your family members as passengers on a very long journey, one not measured in days but in years or decades. The key is to let them discover their own levels of success with the system and incorporate the parts that they feel comfortable with. If they have small wins, embrace them. If they slip now and again, gently remind them they have a better way. One of the many beautiful things about GTD is that the principles are timeless and pretty universal; they will work today, tomorrow, and when my daughter is telling my grandkids about her GTD practice <fingers crossed>.

Do you have some family GTD stories, tips or hints? Drop them in the comments below, on our Facebook page, in the GTD group in the Success Community or directly at me on Twitter @JasonMAtwood

TrailheaDX - Is This Dreamforce For Developers?

TrailheaDX is a great addition to the Salesforce event calendar, focused on developers and with lots of great content. Several exciting announcements came out of the conference. Overall, I think it could focus a bit more tightly.
TrailheaDX - Is This Dreamforce For Developers?

TrailheaDX - Is This Dreamforce For Developers?

The last week of June saw around 6,000 Salesforce professionals descend on San Francisco for the second annual TrailheaDX. The conference took place on the upper floors of Moscone West, rather than sprawling all over the SOMA and Union Square areas of Salesforce’s home town, as Dreamforce does. But the space still had a familiar feel, with Salesforce product booths, partner product booths, several theater areas for sessions, and lots of Trailhead swag to be earned.

Exciting Announcements

The conference bills itself as the “must-attend developer conference of the year,” but in doing so is using Salesforce’s expansive definition of “developer,” from skilled admins who take advantage of the declarative tools the platform provides to serious coders. Within the coder group, there are those with experience writing Apex, Visualforce, and Lightning Components, as well as those who are new to the platform and have experience in other development environments.

There were several product announcements during the keynote, with follow-up sessions that were very coder-focused. The first was three new APIs that give developers access to parts of the Einstein AI platform. The biggest “wow”-factor was the Einstein Object Detection API, which builds on the image recognition of the Einstein Vision API that’s been available for a little while. This facilitates identification of individual objects within an image. Einstein Vision itself is very cool - there’s a Trailhead Project that walks you through using it to identify breeds of cats from images.

I was more interested in the Einstein Sentiment and Intent API announcements, which start to bring natural-language analysis and interpretation to the platform. The Sentiment API classifies text strings (think Chatter posts, Case comments, or even Tweets) as positive, negative or neutral. This could be used to escalate the cases of very angry users, or to find good customers to reference from their positive feedback. The keynote provided the least information on the Intent API, but I’m looking forward to exploring more; we’re working on a project now that could really benefit from some natural-language processing to help community users find the content they’re looking for.

For coders, the way that we work and the tools we use are sometimes almost as important as the platform, languages, and their features. The announcement of the public beta of Salesforce DX (Developer eXperience) was directly targeted at coders and development teams. It has three main components:

  • A new command line tool that works with tools developers are already using to manage and deploy their source code to different Salesforce environments. 
  • A new way, using this command line tool, to quickly create and use “scratch orgs,” short-lived Salesforce orgs with different configuration parameters to which you can deploy and test your code.
  • A new version of the IDE that takes advantage of both of the above features.

Managing multiple developers working on different functionality for the same production org has been a challenge, and these features seek to make this a lot smoother. There are also some potentially interesting applications for tech-savvy, command-line friendly admins, to foreshadow a future blog post.

As I selected my breakout sessions, I was mostly focussed on Lightning Component development and Salesforce DX in my selection. In some cases, that broad range of attendees at a “developer” conference made it difficult for presenters, especially in the 30-minute theater sessions, to really provide the deep dives I was hoping for. A session on “Data Access Control for Apex, Visualforce, and Lightning” spent way too long for my tastes covering the basics of object CRUD, field-level security, and sharing, leaving too little time to cover how the different platform languages treat the data access definitions.

On the flip side, a session about becoming a “command-line ninja” with Salesforce DX skipped right over all the standard use cases for the command lines tool and covered writing your own custom plugins to the command line tool using NodeJS. It is an interesting topic for the right audience but wasn’t what I was hoping and expecting to learn.

I did learn a ton about developing with Lightning Components and was especially grateful for a roadmap session that spelled out (with lots of Forward Looking Statements) how Lightning development is going to be improving over the next several releases.

Does this replace Dreamforce for developers?

This was a question that a number of people I spoke with had in mind. After all, two trips to San Francisco a year is an expensive endeavour, and we all want to get the best advantage for our time and money.

The smaller size of the conference and the greater availability of some key Salesforce staff, like product managers and engineering team leads, is a big plus for TrailheaDX. On the flip side, the speakers were nearly all Salesforce staff, with a few partner product sessions, and less than a handful of community-presented sessions. The opportunity to learn from my professional colleagues, in a session setting rather than hallway conversations, was the thing I missed most in comparison to Dreamforce.

The overall amount of content available, at the level I sought, is actually about equal between the two events. It’s nice to be able to focus exclusively on developer content at TrailheaDX, but I think most of what I attended will be similarly presented at Dreamforce. At the end of the day, I was extremely grateful to be there, and it left me very much looking forward to Dreamforce in just a few more months.

Were you at TrailheaDX? Did you love it? Agree or disagree with my characterization? Share your stories and questions with me on the Arkus Facebook page, in the comments below, in the Success Community, or to me directly via Twitter at @tet3.

Salesforce Path Evolution and Best Practices

This post delves into Salesforce Path functionality from where it began to present state.
Salesforce Path Evolution and Best Practices

Salesforce Path Evolution and Best Practices

“The path to success is to take massive, determined action.” - Tony Robbins

Let’s travel back for a moment to the Spring ‘15 release, for that was when the Sales Path functionality came to fruition. Sure, it was only available using Salesforce1, but it certainly was a game changer. Our own Jason Atwood wrote a great post — Sales Path Implementation Tips & Tricks that introduced the feature.

On the Right Path

Jump ahead to Winter ‘16, somewhat hidden behind the introduction of the monumental Lightning Experience release, a community-submitted idea to make Sales Path available for desktop use became a reality. Closely aligned with customized stages defined within the Sales Process, organizations could visually guide users along a determined path to success. Have multiple Sales Process? No problem, you can easily create a Path for each. Record types? Got it covered; roll out a Path per Record Type as needed. Displaying only the fields that matter and including guidance, such as tips and details about policies or pricing, it simplifies the process and helps establish a standardized approach for success.


What’s Changed?

Subsequent enhancements have made it easier for Administrators to manage the Sales Paths, exposed them to Partners, renamed the tool Path, and added the capability to use it for Quotes and custom objects. Throw in Kanban, and you have a visual smorgasbord; we’ve come a long way baby!

PathFor Project Custom Object

Take a Step Back

It all begins with having a clearly defined and documented process. As noted in the Salesforce Getting Started Workbook, it’s critical to capture your sales process when you are just getting started. Don’t be put off by the “selling” terminology in the workbook; instead focus on the critical steps in your process. If you haven’t put them on paper, now is the time. It need not be fancy-schmancy either. What is important is that you capture the step-by-step activity performed by your team end to end. A good webinar for reference is “Business Process Mapping for Salesforce Admins.” Watch and identify what the tools are that work for you and your organization. I’m a fan of the SIPOC diagram,along with a simple bulleted document that captures each step in the process.

process mappingSIPOC

And a Step Forward

Let your imagination run wild; the great news is that Path can provide your team invaluable guidance, while holding everyone accountable for both documenting and streamlining your processes. Once you have the process nailed down, start here to begin building out the experience. We are all looking forward to seeing what you come up with, and remember the sky’s the limit. Have some fun!  

“If the path be beautiful, let us not ask where it leads.” - Anatole France

Do you have any cool examples of your own?  Want to share your experiences or opinions? Please feel free to reach out on the Arkus Facebook page, in the comments below, in the Success Community, or to me directly via Twitter at @sfdcclicks.

The Humble Salesforce Campaign

The standard Salesforce Campaign object can provide a lot of value to a marketer who doesn’t have a lot of room for marketing automation.
The Humble Salesforce Campaign

The Humble Salesforce Campaign

Marketers always struggle to demonstrate the impact of their efforts, to prove that they are not just a cost center for a business. Technology has made it easier to demonstrate a marketing campaign’s ROI - marketing automation is a powerful tool that can break down costs to the most minute details. But marketing automation is yet another cost, and it’s one that not all companies, for profit or nonprofit, can afford.

Enter the humble Salesforce Campaign.

Campaigns are a standard object for Sales Cloud customers, and while they don’t look like much at first glance, they pack some real reporting firepower, as well as some unique functionality with a little creativity.

So what is a Campaign?

From a strictly technical viewpoint, a Salesforce Campaign is a standard object that allows a user to group Contacts and Leads together into one bundle via a junction object called Campaign Members. This is most commonly done for marketing purposes.

Have a special email that you want to send to individuals that recently attended a conference or tradeshow? Great! You can create a Campaign for that, and you can include current Contacts and brand new Leads. If that doesn’t seem like a big deal, then consider the alternative - running multiple reports to get the data that you need, exporting those reports, and combining them to get the full list.

This doesn’t have to be restricted to traditional marketing campaigns, either. You can use Campaigns to categorize people across Contacts and Leads by interest, for instance.

Don’t overlook hierarchies

What’s better than a single Campaign? An integrated series of Campaigns with a common message, theme, or channel.

Campaign Hierarchies allow you to create that integrated series. For instance, you might want to track the success rate of your email marketing over the course of a fiscal year. With hierarchies, you can do this is any number of ways.

You might have a Parent Campaign called “FY17 Emails,” and for each email that you send, you can create a new Campaign that looks up to that parent. At the end of the year, you can report on the entire hierarchy’s performance, either one by one, or as a whole.

You can stack these up to 5 levels.

Response Rates and ROI

Right out of the box, Campaigns provide fields to show response rate of a Campaign, the cost of running a Campaign, and the value of Opportunities related to that Campaign.

Other handy information provided by default:

  • Number of Leads in the Campaign that have been converted

  • Number of Responses in a Campaign

  • Number of Opportunities associated with the Campaign via the Opportunity field “Campaign Source”

You can get direct reporting metrics, such as response rate and ROI based on these standard fields.

Response Rate is simply the number of responses divided by the total number of Campaign Members.

Screen Shot 2017-06-23 at 10.02.52 AM.png

ROI is the ratio between the value of won Opportunities associated with the Campaign and the actual cost of the Campaign.

Screen Shot 2017-06-23 at 10.03.44 AM.png

With two formula fields, you have basic metrics that you can share with the broader team to demonstrate what marketing is bringing to the table.

And if you have marketing automation

All of these things work without marketing automation, but with marketing automation, they require even less hands-on time.

Each marketing automation platform works a little bit differently, but they can all help assign individual records to a Campaign and drive updates that will populate the standard and custom fields that you need for reporting. As you send an email and people click on links, you can update their Campaign Member status to “Responded,” which will help drive your response rate metrics.

Some considerations

Like any other data in Salesforce, what you get out of Campaigns will only be as good as what you put in, so remember to plan ahead.

By default, there are only two Campaign Member statuses - Sent and Responded. You can use Advanced Setup (Classc) or the Campaign Status Related List (Lightning) to create more granular status names , but ultimately they are either “sent” or “responded.” Cloned Campaigns will retain the same statuses, so if you’re frequently using the same ones, you can create a “template” Campaign to clone for easy access. (Bonus: There’s an app for this!)

Manipulation of Campaigns and Campaign Members is restricted to users with the “Marketing User” permission, so not everyone will be able to create or edit Campaigns, even if they are able to view them. That’s a good thing; make a list of the people in your organization who should have create/edit access and have them drive.

While Campaigns do a lot, they are not a replacement for marketing automation, but they are a great stepping stone on your way there. Campaigns provide a lot of value to the marketing team that’s willing to put in the time and test the waters.

Do you have an interesting or unusual use case for Campaigns? Have you used Campaigns to measure your marketing efforts?  Tell us all about it on Twitter, on the Salesforce Community, Facebook, or chat with me @thesafinhold.

Relate an Activity to Multiple Whats

Ever wanted a simple way to add more than one RelatedTo record to an Event? Keep reading.
Relate an Activity to Multiple Whats

Relate an Activity to Multiple Whats

Relate an activity (task/event) to multiple 'Related To' records.  A client of mine recently approached me with this issue.  Not only did she need to be able to relate several contacts to an event in Salesforce, but also multiple records from a custom object.  If your organization has enabled Shared Activities, you can relate as many as 50 contacts to non-recurring and non-group tasks, and non-recurring events, but relating to multiple records of other objects is not available or supported by Salesforce.  


This Is Not a New Idea

Here's the latest revival of this idea in the success community.  Here’s another iteration of the same thing, and here's the original idea which was posted 10 years ago, then merged (mistakenly, in the opinion of most) into another idea that was similar but not the same concept.  Needless to say, the idea has been around and continues to be an issue for some Salesforce Users.  


An Unreasonable Solution

 It’s likely to occur to many that a combination of custom objects could be used to achieve this functionality from a data model standpoint, but without extensive automation or a fair amount of custom code, including a Visualforce page, the data model will be difficult to maintain.  Such a lengthy addition to the data model for such a small amount of additional functionality also just seemed a bit silly, and after a quick sandbox demo of how this might look, my client required a cleaner, simpler solution.  

The Pseudo Related List (I made that up)

The solution that I came up with doesn’t create a relationship between objects via a lookup field.  It simply captures a name from a lookup and appends it to a long text field on the event object. At the same time, a task is created on the related record referring back to the event. To finish off the process, the lookup field value that was selected is removed in order to allow the addition of further records.  

Now roll up your sleeves. Here’s what you’ll need to replicate the process.

We’ll need to create some custom fields to help us accomplish this, see detail below:


Custom Fields

  • Activities   ( In Classic: Setup → Customize → Activities → Activity Custom Fields )


Field Name

Field Type

Add to layout

Add New Opportunity

Lookup to Opportunity

Event Layout

Related Opportunities

Text Area

Event Layout

Event/Meeting Link


Task Layout

Event URL

Fomula → text





Custom Label

  • This will be used to allow the text area to appear as a list.  It’s actually a workaround for a known issue with line breaks in Process builder formulas.  More info here.
  • Setup → Create → Custom Labels
  • NewLine
  • Value should equal dashes “ - “ on two separate lines


Process builder

  • Setup → Create → Workflow & Approvals → Process Builder


  • Start the process when an Event record is created or edited




  • Next we’ll create some criteria for appending an Opportunity name to our list.  
  • The AddNewOpportunity__c field should be changed or new and not be null.  We’ll use 3 criteria to set this.   









Is Changed








Does not equal

Global Constant





If these criteria are met, the following actions should occur:

  • Append the opportunity name to the Related Opportunities field by adding an action to update a record.
  • Update the ‘Related Opportunities’ field on the Event that started your process
  • Use the following formula to put each appended name on a new line.


[Event].AddNewOpportunity__c.Name &  








  • Create a Task on the related Opportunity that links back to the Event
  • Add an action to Create a Record of type Task




The last step will be to remove the value from our ‘Add New Opportunity field’  



  • If ‘Add New Opportunity’ field is not null




  • Make the field null



Next, make sure to update the process to ‘Evaluate the Next Criteria’ instead of stopping




Be sure to Activate your process.



Next time you create an event and save it, you can add Opportunities to the “related list” by selecting opportunities in the ‘Add New Opportunity’ field lookup and saving the record.



Each time you do this, it should add the opportunity name to your ‘Related Opportunities’ field and  leave the ‘Add New Opportunity’ field blank.  




Each of the opportunities you add will also have a task related to them with the subject as the event.




The activity will display in the Activity History of the Opportunity as well.  





Other Considerations


  • Removing an opportunity name from the list will not remove the related task from the Opportunity. This will need to be done manually.  Automating this would require a fairly complex Apex trigger that would completely defeat the simplicity of this project.
  • Modifying an event date or start time will not propagate through to the created tasks.  Although the link back to the event will still be correct.  Tasks will continue to have original date until updated manually.  
  • Activities reporting should function as expected, given that each Opportunity will have its own activity assigned to it.
  • The use of Opportunities was only for the purpose of this demo.  This process could easily be updated to accommodate any custom or standard object available via lookup.
  • Rich text fields are not available on Activities records.  If the list was to be implemented on an object that allowed this, the names could be inserted as hyperlinks connecting to the related record directly.  
  • Using a lookup field as a point of data entry for an adjacent text field may be confusing, as this is definitely a non-standard way to use Salesforce.  


It was my client’s suggestion that I share this as a possible solution for a fairly common problem.  With a little imagination, the concept of a pseudo related list has lots of potential use cases beyond events.


Do you have any uses for a pseudo related list like the one I outlined above? If so, tell me all about it. Share them with me on the Arkus Facebook page, in the comments below, in the Success Community, or to me directly via Twitter at @jpbujold