Summer ’20

Another Summer, another Salesforce release. While this release was delayed and its mascot icon changed due to the COVID-19 pandemic, Summer ‘20 is finally here. A lot of great new features coming to an org near you and a ton of cool stuff to stay excited about in the future as well!

While these features are not GA yet, this was my top most wanted feature in my 2020 Outlook and I’m super excited about it!

Dynamic Forms (Non-GA Preview)

Your users can now customize their Lightning App Builder pages down to the Layout Section or even Field level based on certain conditions. No more having to create tons of layouts just to add one field, or having to have a bunch of extra fields crowd the screen if they’re not needed at a certain point. I’m super excited to try this out and the PM from Salesforce, Vin Addala, is soliciting feedback and has some resources for you to get started too.

Dynamic Forms

Dynamic Actions to Highlight Panel (Beta)

In addition to Dynamic Forms, I’m also pretty excited that a new Beta feature allows us to customize the Actions that appear in the Highlights Panel. Once again, we can cut down on page layouts by providing conditions on actions showing up. I love the idea of decluttering my layouts and only showing the actions when they’re needed.

Dynamic Actions

Flows

Once again, following the Spring ‘20 Release, Flow takes a MAJOR step forward in this release. Following the “Before Save Flows” functionality we got in Spring, we now have the next logical step: “After Save Flows”

After Save Flows

I think the line that stands out the most for me is “You can replace most of your workflows and record-change processes that you created in Process Builder.” If you’re already familiar with code, “A flow that performs after-save actions is similar to an after trigger”. If you’re not already familiar with code, consider yourself that much closer to being an Apex Developer! With After-Save Flows, you can fire off a flow automatically after a record is saved. The implication of this means that you’ll have access to the record’s ID as well as the LastModified information.

As Flows continue to get stronger, if you aren’t already familiar with how to build flows, it’s time to start. I think it’s pretty clear that the new automation in Salesforce on the declarative side is coming to Flow while Process Builder and Workflow appear to be falling out of style. Count this as another win for “clicks before code” as well, as there is now more we can do without needing an Apex Trigger.

After Save Flow

Debug Flows Faster and Track Flow Resource Usage in Debug Logs

One of the reasons I’ve preferred code to Flows in the past is because, in my opinion, existing flows are hard to troubleshoot, or debug, and are also hard to start building. The troubleshooting/debug piece is considerably addressed in this release. Now you can configure Debug options including “rollback mode”, which will undo, or “rollback”, all records changes done as a result of the flow if something goes wrong.

Debug Flows

Flows will also show you more information in the Debug Logs that you can run for yourself or another user about how many Salesforce resources they’re using and how close they are about hitting limits. This should help determine why Flows are hitting errors as well and resolve them quicker.

Flow Debug Logs

Flow Builder Guidance

Salesforce addressed my other concern with Flow in this release as well, by showing Tips to help you build your flows while you’re building them!

Flow Guidance

Access Apex-Defined Variables in Flows

Yet another Apex/code feature being brought to flow, custom variable types. For those unaware with writing code, you’re not necessarily limited to just having a variable of type Number, Text, Account, etc, but can create your own types or structures with properties that you define. For example, maybe you want a single variable that has multiple properties. I could have a variable in Apex defined as follows:

Type: Bank Account

Bank Account.Customer Name (Text)

Bank Account.Amount (Decimal)

Bank Account.Account Number (Number)

Bank Account.Bank Name (Text)

I can now reference such an Apex-Defined variable in my flow!

Apex Defined Variable

Development

Share CSS Across LWC

I love the ability of Lightning Web Components to import almost anything. I also hate having to duplicate things, including styling. Now you can develop a CSS component and import it into your other components to create a consistent look and feel across your components.

Import CSS

Import User Permissions LWC

Yet another thing to import into LWC! Check whether users have specific permissions specified by importing them.

Import Perms

Track Source Changes in Sandboxes (Beta)

I love using Scratch Orgs but sometimes it just isn’t feasible for a specific use case or bug fix. One of the difficult things about developing with SFDX with sandboxes is having to manually track your changes. I’m excited about this new Beta feature to start letting SFDX track your sandbox changes like it’s a scratch org.

LWC Test Create Commands CLI

While Lightning Components don’t (yet) require tests, it’s always best practice to be testing your code. That’s why I’m glad to see these new SFDX commands to focus on testing your components, including creating some boilerplate code to get you started.

Other Customizations

Outside of Development, Flow, and the Dynamic items, there are a few other items that I’m excited about in this release.

Split List View

I loved the Kanban view when it first launched and I’m a big fan of this new List View type as well. Far too often I find myself having to open a bunch of new tabs from a list view to make modifications or look at details to a bunch of records. Now I can choose the Split List View to view them all from one tab and keep my browser RAM to a minimum.

Split ViewSplit View2

Minimum User Access Profile

With Salesforce security being shifted to Permission Sets, I think this is a long time coming; an empty Profile where ALL security for a user can be managed by Permission Sets.

In App Guidance Builder

I haven’t used this feature yet, but I’m glad to see that Salesforce is focusing on helping with User Adoption by providing tools to help build in-app guidance for end users.

Related Record Component

This is another nice way Salesforce is extending the capabilities of the Lightning Experience. Now with the “Related Record” component for the Lightning App Builder, you can show and edit fields on a record 2 levels up. My friend Jagannathan walked through a good example on Slalom’s Medium blog. 

Reasons to get Excited

Lastly, I’m always interested to see what Salesforce is working on that I’ll be able to start using in a few releases. Here are a few of the Beta and Pilot features that I’m looking forward to becoming Generally Available. 

Release Updates (Beta)

This appears to be a complete overhaul of the Critical Updates functionality and based on the initial release notes, I’m a fan. I think it’ll help provide context and better understanding for the impacts of the critical updates that need to be implemented.

LWC Based Community Template (Pilot)

I recently started supporting a Visualforce + Tabs Community for Mobile and it leaves a lot to be desired. I was surprised that we were still so reliant on Visualforce to get our customized Community working. I think this will be the start of something great that will vastly improve the customized Communities experience.

Einstein Natural Language Search (Beta)

This requires a separate Permission Set license, but like many Einstein features, this one looks pretty cool. Use natural language to search for records and Salesforce will find them for you. Tremendous possibilities!

Einstein Search

Let me know if you found anything else I missed. Hope everyone is staying safe and healthy and hope to be able to connect with you in person someday soon. Until then, make sure to take advantage of all the virtual events happening across the globe that you can now attend from your own home. I’m “speaking” in New Delhi, India later this week and hope to see you there!

My First Lightning Web Component

Recently I had the much overdue experience of writing my first Lightning Web Component for my day job. While I’ve gone through some Trailhead modules and built a couple on my own for demos, there’s something special about being able to deliver a component that other people will end up seeing and using. While I can’t share the specifics of my company’s processes, I wanted to share some thoughts and feelings on my experiences as well as some tips as to how you can start writing your own!

Starting Out

I’ve been developing in Apex for over 5 years now, and did some Java before that. I think it’s true what they say that “JavaScript is to Java as carpet is to car”. There’s definitely a learning curve there, even coming from Aura development, which has a touch of some JavaScript functionality but primarily uses JSON with some light JS mixed in.

As with any new type of coding, I think it’s always helpful to start with some sort of design followed by pseudocode. For the design, a co-worker of mine had already come up with what the final result should look like, so I just had to figure out how to break it down into individual components.

Similar to the approach I normally take to writing Apex, I start by writing pseudocode and then generally just put everything into one method, or in this case one component. My component involved 1 screen that needed to have 3 different sections, of which only 1 would be expanded and the other 2 collapsed at any one time. Since there would be 3 separate sections within the 1 large page, that told me I’d need 3 child components and 1 parent component.

Starting Out

Tools

Salesforce has invested heavily in VS code and with good reason, it’s a very powerful software development tool. Salesforce has developed many custom extensions to assist your development with the tool as well. If you haven’t already, check out this Trailhead module to get started!

While I knew that I’d need to start calling Apex eventually to bring in data, I wanted to get a working component first with just some hard coded dummy data. I also knew that I’d need to be able to call some sort of event for the child components to talk to the parent components to figure out which components should be expanded or collapsed. CSS is also critical here to make sure that components and their parts are in the right spot and the right color.

While I can go for long periods of time writing Apex before syncing it to my org, it’s harder with UI development since minor tweaks are often frequent to be able to check events and CSS attributes. While you can play around in the Chrome Developer console to edit certain attributes, I personally like playing around with the different SLDS classes before I start creating my own CSS.

Salesforce to the rescue once again, using the newly announced LWC Local Development! It was pretty easy to set up and automatically updated immediately without me having to wait 10-20s to push to my org to view each change. I highly recommend this for making quick UI changes and checking event propagation. I moved away from this once I started working with Apex, since my local computer wouldn’t have access to my org’s data, but up until that point, it massively cut down on my development time.

Local Dev

Events

I’d had some experience dealing with events in Aura, creating custom Lightning Events and then firing them from the child components via aura:registerEvent and then listening for it on the parent component via aura:handleEvent. On LWC however, event propagation works differently and depending on what you’re trying to do, there are several different approaches. They primarily involve creating custom events and custom event handlers whose names need to match the name of the event (i.e. if you create a custom event called notify, you’ll need a parameter for onnotify similar to how you’d have onclick or onchange. I found this documentation on events and this sample code base tremendously helpful! In general, the Sample Gallery has a lot of great examples whose code you can use and customize for your own needs! LWC also uses “kabob case”, stylized-using-dashes, to reference child components, even when your child component’s name uses camelCase.

Child component (sectionOneComponent) sending custom event called “section one next clicked”:

Events 1

Parent component calling an action on the “section one next clicked” event that was fired from sectionOneComponent:

Events 2

Component Parts

Once I figured out the event propagation, I needed to actually populate my components with various sub parts. Similar to Aura, this is where Base Components came in to give me an existing card, combo-box (picklist), buttons, and allowed me to lay things out in an organized manner using the layout and layout item components. Using the “Open in Playground” functionality from the Component library gave me another way to play around with different combinations before having to deploy it to my org.

Apex

Once I had the layouts more or less in place, I started deploying to my org and connecting to Apex. By utilizing decorators and events to respond when users changed values from my hard-coded dummy data, I had confidence that once I wired up the Apex, I would have a very short turn-around time to get the real data.

Once again, I went back to the Sample Gallery and documentation for some examples. While I decided to keep everything in a single Apex class for my series of components, knowing that I could add additional Apex controllers to my single LWC gave me peace of mind if I wanted to separate functionality. I had to modify my events a little bit to send data from one child component, up to the parent, and then back down to the other child component, but other than that it was relatively straightforward! I also found out that you can create a custom structure that you can assign to the detail attribute in the event to send multiple parameters to your parent components at the same time. Also ran into some issues with camelCase vs kabob-case again, but I’m guessing that will get better with experience.

Child Component One JS:

Apex 1Apex 2

Parent component JS:

Apex 3Apex 4

Parent component HTML:

Apex 5

Child Component Two JS:

Apex 6

Conclusion

While I still definitely have a lot more to learn about JavaScript and Lightning Web Component development, I was excited that I was able to turn these components around in just a few days! All of my HTML and JS files across my components only have 40-50 lines of code each. I still have a bunch of SLDS and other CSS changes to add before this is ready for production but I’m excited to build off of this and am looking forward to developing more LWC in the future. If you’re interested in learning more about how to make the switch from Apex to LWC, check out my session on May 16th at Virtual Dreamin!

2020 Outlook

As we start Salesforce’s new Fiscal Year, I’ve had some time to take a breath for a few months following Dreamforce, I thought I’d share some thoughts on where I see Salesforce going this year based on what I’ve seen from Dreamforce and the Spring ‘20 Release. While I may not have any more success than Harry Potter at looking into a Crystal Ball, hopefully these predictions will be a little more evidence based.

Admin Takeaways

1. Dynamic Layouts are coming!

As the most requested feature on the Idea Exchange, it is very exciting that truly dynamic layouts are on the way! Soon we’ll be able to customize layouts at the field level and truly give users the fields we want for the use cases we need. Definitely a win for #AwesomeAdmins. It sounds like this feature is in pilot now but should hopefully be GA sometime in 2020!

DynamicLayouts

2. Flows are about to become stronger than ever

I’ve been hearing some rumors that Flows are about to get even MORE powerful than ever before and (spoiler alert from the Spring ‘20 release notes, they did) this was furthered by a slide shown during the Admin keynote. Unclear what “Before Triggers” will mean for the future but if more functionality can be built into flows, including more functionality that currently requires triggers, that’s yet another tool that Salesforce Admins will have that won’t require any custom development. It also sounds like Process Builder functionality may start moving more and more into Flow (as evidenced by Process Builder being listed under the Flow section of the Release Notes). I’ve been hesitant to become a “Flownatic” for a long time but seeing things like this are great reasons to start diving in!

Unlimited_Power_Banner

3. Permission Set Groups are changing Salesforce security for good

This is a pretty big change to how security works in Salesforce, and appears to be the first step in “discouraging admins from relying on profile for permissions management going forward” according to this Salesforce Admins blog post. Without a doubt, the ability to assign users multiple permissions at the same time, as well as being able to mute permissions within the group without needing a whole new permission set, is a win for admins. It’s also a win for Devs who have been frustrated about the inability to utilize profiles effectively in Salesforce DX. Definitely excited to see things move in this direction, while there may be some short term pain in having yet ANOTHER place to configure Salesforce security (as per CTA Steve Simpson there are already 17!), it will allow for greater customization, which is always a good thing.

PermSetGroup

Ways of Sharing

Dev Takeaways

1. Non-Salesforce development languages are coming (Evergreen)

One of the big things I suspected Salesforce was going after when launching Lightning Web Components was developers currently outside the Salesforce ecosystem. They wanted to be able to tell ALL developers that they can start developing on Salesforce. This theory of mine is further confirmed by a demo during the Dev Keynote, Evergreen functions. This will allow you to write standard Java or Node.js on Salesforce and integrate it into your Salesforce code. I suspect this is only the first step as Salesforce continues to cater to more developers, allowing their dev ecosystem to explode and truly become a platform that all developers can use! While it keeps us current Salesforce developers on our toes, I think it’s ultimately the right strategic move and will encourage Salesforce developers such as myself to expand our skills and boost our own careers.

2. Local Development is here

One of the problems with the current Salesforce development experience is that you need access to a Salesforce org in order to see what your components look like. No more! Now you’ll be able to spin up a server on your laptop and get a preview of your component without needing to connect to an org to do it! Very important for developers who want to iterate quickly, especially for UI changes.

LWCLocalDev

3. LWC is the future but the present too!

2 of the biggest takeaways I came away with from Dreamforce though, were from 2 sessions by Greg Rewis, Product Manager of Lightning Components.

  1. Lightning Base Components are now open sourced
  2. Don’t ever write another new Aura component again

One of the increasing trends that Salesforce has embraced is Open Sourcing their technology, and I’m all for it! For those unaware of the term, it basically means they’re revealing the source code behind these products, so that you can download them and customize it yourself!

Don’t know how a component works? Look up the code! Don’t like how a base component works? Download the code and make the edits you want! I think this is very exciting for the future of Salesforce development.

The other thing that I took away from Dreamforce was straight from the mouth of the Product Manager for the technology himself “In Aura we had to take your ‘JS’ file, which was really JSON, compile it, parse it, and turn it into real JS! No wonder it was so slow!”

Greg also shared that all Aura components are actually LWC under the covers. You’re just essentially implementing an intentional performance hit with every Aura component that you build! Based on this information, it’s pretty apparent to me that ALL new component development should come from LWC rather than Aura wherever necessary. This will not only be good to keep up with the latest Salesforce technology, but it’ll be working with more standard technology in general, and help Salesforce devs take the next step to truly becoming Full-Stack Developers. It also continues the trend of allowing non-Salesforce developers to start doing their work on the Salesforce platform!

Summary

As Salesforce continues to grow at incredible rates, it’s extremely important for the community to go along with it. Salesforce jobs have been some of the hottest around and it’s great to see Salesforce investing in bringing more and more Admins and Devs to the platform. By moving toward industry standards with LWC, open-sourcing the base components, and starting to allow for non-Salesforce code to run on the platform, it is clear that Salesforce is increasing its addressable market of Developers and that’s a good thing. There were also billboards all over Dreamforce this year about people who went from “cashier to engineer” or “driver to developer”. 

With flows becoming even stronger and the addition of Permission Set Groups, it’s clear that the role of the Admin is continuously increasing as well. With each new release it seems that Admins can do more and more without needing a Developer and that’s also a good thing!

Salesforce’s approach to open sourcing Lightning Web Components and allowing for non-Salesforce code with Evergreen, are also welcome developments to not just Salesforce developers, but non-Salesforce developers as well who are thinking about getting into code! Seeing a Beta exam opportunity for a “JavaScript Developer” cert is even more proof that the time is right to get into front-end development if you haven’t already!

 

Spring ’20

It’s that time of year again. Another release is about to hit your Salesforce Org! Here are the top 10 #AwesomeAdmin additions and top 4 Developer additions that I’m excited about!

Admin

Before Save Flows to replace Process Builder

One note I saw during the Salesforce Admins Keynote at Dreamforce, was that “Before Triggers” in Flow was coming. Yet another #AwesomeAdmin weapon to avoid having to resort to Code, now you can fire off a Flow that makes updates before a record is saved to Salesforce. As per the Release Notes, instead of using Process Builder to update a field on a record “Before-save updates in flows accomplish that same goal, but much more quickly because each record doesn’t get saved to the database again. Avoiding that extra save procedure means skipping another round of assignment rules, auto-response rules, workflow rules, and other customizations that take time to execute.

If I can do the same thing, without code, and do it faster, I’m all for it!

BeforeFlow

Permission Set Groups

As Salesforce begins the process of rethinking Profiles, I’m excited to see additional capabilities added to Permission Sets. Now I don’t need to combine Permission Sets or assign multiple for certain users, I can just add them all to a Permission Set Group, and assign them once!

PermSetGroup

Muting Permissions

Along with creating Permission Set Groups, comes the ability to Mute permissions within the group! Note that this won’t remove access if they have it via another Permission Set or their Profile, but it allows for further customization of how to manage permissions!

MutedPermissions

It will also, however, add to CTA Steve Simpson’s list of ways to manage Salesforce permissions.

17WaysOfSharing

URL Hack Buttons

They’re back! After being one of the main reasons people didn’t want to upgrade from Classic to Lightning, URL Hack buttons are back in Salesforce.

URL Hacks

JavaScript button converter

Another reason people were sad to leave Classic, no JavaScript buttons. Now there’s a tool to convert them to Lightning Components so you can continue using them in the Lightning Experience!

Turn Off Automatic Report Preview Updates

Did you ever get annoyed that whenever you were building a report, you had to wait until your preview would finish loading? No more! Now you can make all the changes you want and reload the preview on demand. Should make report building even faster!

AutomaticReportUpdates

Filter Reports by Field to Field Comparisons

Another cool new feature in Reports, you can now compare 2 fields to one another as a report filter. This should allow Reports to account for even more use cases!

FieldToFieldComparison

Unique Values in Report Results

Ever need to resort to the Power of One formula to figure out just how many unique records are being accounted for in your Report? Yet another addition to reports in Spring ‘20, you can now add a Unique Count to your report column.

UniqueValues

Don’t go deleting your Power of One formulas just yet though…

Easier App Launcher

I didn’t know how much I needed this until I saw it, now I’m not sure I can live without it! Access your apps and tabs without having to have a whole overlay screen!

AppLauncher

In-app Guidance videos

I haven’t yet used the In-App Guidance feature outside of Trailhead, but I’m excited about the possibilities. If I can now provide an instructional video for how to use a feature that shows up whenever a user navigates to a tab, that should hopefully cut down on a lot of support tickets!

InAppGuidance

Dev

@track is no longer required in LWC

One of the new features to Salesforce in Lightning Web Components were decorators. These properties make it so that when a variable changes, the UI automatically will update to get the changed value. With this update, Salesforce has made it so that the @track decorator is always applied in almost all cases, making creating Lightning Web Components even easier and ensuring that your UI always has up to date data!

LWC Base Components Open Source

Don’t like how a Lightning Web Base Component works? Now you can rebuild it and make it work to your heart’s content! LWC Base Components are now live on Github making it easier than ever for Salesforce Developers to take advantage of Base Components while being able to add to them as well.

Lightning Message Service

This feature is only in Beta, but I love the idea of being able to have a place for all my stuff to talk to each other, rather those things are LWC, Aura Components, or Visualforce pages. Rather than custom building a listener service, I can send things to the Lightning Message Service and have my other components on the page respond accordingly!

LWC Local Dev

Last but certainly not least, I love the idea of being able to quickly iterate on my Web Components without having to update it with the Salesforce org each and every time. Also in Beta, but I can now run localhost on my computer and see my changes immediately!

LWCLocalDev

Winter ’20

 

It’s that time of year again. While not overlapping with Dreamforce this year, Winter ‘20 still has a lot to be excited by! It also looks like Salesforce heard the feedback from our friends in the Southern Hemisphere wondering why we’re talking about the Winter release while they’re enjoying their summer. Astro Yeti is now joining them!

When I go into Release Notes, I have a similar outlook as when I go into a Keynote. I want to know what I can leave with immediately, and I want to know what’s going to keep me excited in the future. I found 10 things that I can go out and use now that my org is on Winter ‘20 and 5 others that have me extremely excited for the future!

 

Security

Control Custom Metadata Type access by Profile and Perm Set

customMDT

One of the great things about Salesforce is the security model, and how customizable it is. I’ve always been super excited about Custom Metadata and how I could add additional parts of my org and use them however I like. Now I can also control security access to them!

 

Customization

Lightning App Builder accounts for mobile layouts

mobilePages

While I don’t completely endorse the concept that I can “run my business from my phone”, I’ve always been a fan of using Salesforce on mobile devices, just like I can use pretty much other site. Salesforce has added additional capabilities to customize exactly how pages will look on mobile devices and where they should differ from desktop devices.

 

Schedule Flows

Lookup Components in Flows

Dynamic Flow Screens

I’ve only worked with flows a small amount but I understand how powerful they are. I’m excited about the new capabilities that allow for flows to take one more step toward code. As someone who is presenting at Dreamforce about how Admins are already using most of the principles of coding, this helps make my point for me! Now users can schedule flows as well as add lookup components. They can also make flow screens dynamic just like components in App pages.

 

Where is this Used? For fields (GA)

whereIsThisUsed

A much needed feature, being able to see where all the parts of your metadata live. Before you change or delete a field, make sure you’re aware of the implications!

 

Delayed Layout Updates (up to 1 hour)

Not necessarily an update I’m excited about but an important one nonetheless. Updates to app pages may now take longer to update users. I understand Salesforce wants to improve performance, but I’d like there to be some sort of option to force loading the new pages from Salesforce rather than the cache when pages have changed.

 

Reports & Dashboards

Row Level Formulas in reports

rowLevelFormula

Ever have to create a new formula field that you didn’t need, just so you can report on it? No more! Now create the ad hoc fields directly in your report and keep your metadata clean!

 

Misc

Recycle Bin Lightning Experience

A long awaited feature to get Lightning to parity with Salesforce Classic, the Recycle Bin is finally in the Lightning Experience!

 

Navigate Directly to an App

There have been more than a few times where I’ve found myself annoyed that I last logged out of Salesforce in an app I rarely use and have a few extra clicks to get to my primary app. Now I can bookmark the apps that I want to start at when I login and always be directed there.

 

Like I said, I’m also interested in what Salesforce is coming out with in the future to keep me interested. Here are my top 5 that are in Beta or Preview.

Beta/Preview

Lightning Message Channel to communicate b/t VF, Aura, LWC (Dev Preview)

Definitely interested in finding out more about this, but it looks like Salesforce will let you communicate between Visualforce, Aura, and LWC without having to implement the capability yourself!

 

Metadata Component Dependency Queries (Beta)

Similar to the “Where is this used” feature, I can now run a query to see what all the dependencies are for my metadata. 

 

Permission Set Groups (Beta)

permSetGroup

There have definitely been several situations in which I’ve had to add multiple permission sets to the same users. Now I can put them all in a group and save myself a few clicks!

 

Filter by comparing one field to another (Beta) 

filterCompareFields

Solving another use case, Salesforce will now let us run filters by comparing one field in the report to another!

 

Unique Count of distinct values (Beta)

uniqueCount

As much as we all love the Power of One solution, Salesforce is giving a default way to get the unique count of records in a report!

 

Let me know if there’s anything I missed!

Why You Should Submit a Dreamforce Presentation Idea

The year was 2014. I had just started using Salesforce a month prior, and I got to experience Dreamforce for the first time. Needless to say, I was quite overwhelmed! Before the Admin Zone existed, I remember superheroes decked out around the booths with helpful Salesforce employees and customers telling me that ‘I too, could be a superhero with Salesforce!’. Trailhead and Process Builder were announced! I also remember being blown away by the caliber of speakers from Vice President Al Gore, to Secretary Hillary Clinton, to will.i.am, to Neil Young, to Arianna Huffington. I also remember the incredible show that Bruno Mars put on. What I think I remember most about the conference, was the passion of everyone there. The Salesforce employees. The customers. The MVPs. And the presenters. Several thousand sessions teaching me much more than my Salesforce-newbie self could consume over 4 days.

Fast forward about 6 months to mid-2015 and it was suggested to me by a mentor to submit a topic to present at Dreamforce. While I had taken some classes in college to help me give presentations and work on public speaking, I was definitely nowhere near ready enough to present at a major tech conference like Dreamforce! I hadn’t even been a year long Salesforce user yet! While there were some topics that I was interested in, and I could begin to feel the passion of the Salesforce Ohana around me, I still didn’t feel that I was qualified.

Fortunately, I was talked into submitting 2 sessions, figuring I had nothing to lose. It was one of the best decisions of my professional career. After I got over the initial shock of not one, but both talks getting accepted however, the imposter syndrome really set in. Who am I? How am I qualified to speak? Why would anyone care what I had to say?

Self doubt aside, I had nothing to be worried about, since out of 150K+ people, there’s quite a few people that like just about any topic you can think of. I had the pleasure of presenting on one of my favorite topics to this day, Salesforce Connect (which I was fortunate enough to present again at DF the following year). The presentation I was probably most excited about though, took a bit from my personal story about getting certified, while also incorporating a hot new Salesforce technology, Trailhead. I was also fortunate to be invited to present this talk again in India 2 years later.

Pre-session selfie

Me and Jayvin, preparing to speak at Dreamforce 2015

YOU have an interesting story. YOU have experiences that no one else has. YOU have knowledge that needs to be shared with the rest of the Ohana. Just remember if your imposter syndrome is setting in (mine continues to this day), that a large portion of the attendees probably just started using Salesforce, or have yet to start using it, and have a lot to learn from you. Don’t be afraid to get your ideas out there and get your voice heard! Don’t be afraid to team up with a buddy and present together! It also helps only have to put together half of a slide deck and present half the time 🙂

If you get accepted, that’s great! You’ll get a chance to share your ideas, practice your presentation skills, pad your resume, and have a ready made presentation to potentially present again at a community conference! If you don’t get accepted, that’s ok too! It gets harder and harder every year, but worst case scenario, you’ll still have a solid presentation idea ready for a community conference and the chance to build on it for a future submission!

My tips for crafting a Dreamforce session idea:

  1. Pick a topic you are passionate about
    • This will show in both your submission and the actual presentation. Presenting, and making the presentation, is a lot more fun when you care about the topic
  2. Pick a topic you have some experience with
    • It’s a lot easier to present and answer questions on topics you have knowledge about
  3. Look for what’s hot in Salesforce and the industry
    • While there’s something for everyone, it may be easier to find traction with a topic about Flows or Lightning Web Components than Workflow Rules or S-Controls
  4. Incorporate something that is uniquely you
    • Why can only you present this topic? What experiences have you had that makes this special? This will shine through in the submission and the presentation as well
  5. Think outside the box
    • It doesn’t even have to be a topic about technology. Dreamforce offers many sessions about equality, mindfulness, and career development
    • If you do go the tech route, think about the amazing things you’ve done with the Salesforce platform. Show one of them off in a 20 min theater session or dive in deep in a 40 min breakout session!

No matter your experience or imposter syndrome, submit your ideas for DF19 before the deadline Friday night Pacific Time: https://developer.salesforce.com/cfp/df2019 

Best of luck!

Summer ’19

Maybe it was just me, but this release felt a little smaller than past releases (although the 491 pages beg to differ). That being said, while not as flashy as the Lightning Web Components we got in Spring ‘19, there is still a ton of great content in the Summer ‘19 release! Here are my favorites!

Enhanced Related Listsenhanced_related_lists_combo

This is probably my favorite new feature of the release! Finally users will be able to show up to 10 fields in a Related List section and at least (not sure what the limit is) 10 related records! For someone whose records tend to have many related records, I’m super excited to see this in action!

Report Condition Notifications

subscription_conditions1

Another one of my favorites this release, get notified when your reports hit a certain threshold! Cautiously optimistic about this one as I’m guessing it’ll only work for certain conditions, but excited nonetheless! Hopefully it’ll cut down on a few emails at least since I can have my report email me only when I want it to as opposed to having to check it every day.

 

Celebrate Path Milestones

sales_path_celebration

It was only a matter of time before confetti found its way into the org. Let some confetti fall for your users when they reach a certain stage or milestone in their path. I’m all for anything that makes work more exciting so let the confetti fly!

 

Pop Out Utility Bar Notes

pop_out_notes

I’ve worked with a lot of reps who end up taking notes outside of Salesforce, only to find out that they need to be re-entered later, or worse, they don’t get re-entered and the information is lost. Hoping this feature makes it easier to keep reps in Salesforce and keep all the info accurate!

 

Context Switching from Classic to Lightning

Hopefully you’ve switched over to the Lightning Experience now but if you’re like me you need to switch back to Classic every once in a while. Classic actually looks weird to me now, so as soon as I can, I happily switch back into Lightning. It’s incredibly annoying to have to re-navigate to where I was before. Hopefully switching back to Classic keeps the context too but I’ll take what I can get!

View Records in Full View

ecord_page_view_full_and_grouped

Are you missing your record views in Salesforce Classic? Fear not! Now you can view your Lightning records just as they used to look in Classic, complete with all related lists below. It looks like it can be assigned as an Org Default or at Lightning Pages level.

recordview

 

Automation Home

automationhome

I’m hesitant to get too excited about this feature now, but definitely excited about where it’s going. I don’t use flows too much but if this is extended to Process Builder, I’d love to be able to measure how often my processes are getting used and how often errors are encountered. For now though, Flownatics rejoice!

 

Flow Builder Improvements

undo_redo_duplicate

One of my hesitations about getting into Flows was how painful it was to use the UI. While I haven’t actually used Flow Builder yet, I love it already! Undo and Redo buttons as well as Search capability makes it even closer to coding for when Clicks are the answer!

 

20MB Debug Logs

Logs are crucial as a developer and now Salesforce has really blown the lid off by increasing the log size to a whopping 20MB from 5MB (and recently 2MB)!

 

Custom Metadata in Process Builder

Custom Metadata becomes even stronger thanks to the ability to now use them in Process Builder! With the increase to 200 Custom MDT records in this release as well, there’s more reason than ever to use them wherever you can!

 

Lightning Prompts

220_rn_lex_proompt_floating

This is another feature I’m cautious to get too excited about until I start playing with it but I love the idea of being able to create in-app training for my users! Too often I’m finding myself closing tickets with links to existing documentation because a user forgot how to do something or a new user is onboarded without reading the documentation. Now I can make sure those users don’t get stuck again!

 

Those are my favorites but if I missed any that you love, let me know!

Spring ’19

As they say, better late than never! In case you still haven’t had the chance to go through the Spring ‘19 Release Notes, or maybe just missed a few things, here are my 10 favorite things from the latest Salesforce release!

Salesforce Functionality

Pinned Lists

Ever click into an object tab on a regular basis, only to always have to change the List View from Recently Viewed to your favorite custom view? No more! With Pinned Lists, you can now mark your favorite list view as the default that will load every time you click into the object tab.

218_lex_pinned_list

Flow Builder

Rejoice Flownatics! Salesforce has replaced the old Flash-based Cloud Flow Designer with a faster, more eye-popping tool, the Flow Builder! In addition to getting a makeover, the Flow Builder no longer relies on the outdated Flash technology and should allow you to build flows much faster!

218_forcecom_flow_builder

Lightning Page Template Switcher

Have you ever built Lightning App Builder page, only to realize mid-way through that you used the wrong template? Instead of re-building it from scratch, take advantage of the new template switching functionality for Lightning Pages!

lab_template_switching_page_props

12 Column Dashboards

Speaks for itself! Dashboards can now have 12 columns! Show off even more of your data!

rd_dashboards_12columns

Sandbox Cloning (GA)

Another long requested feature! Ever start working on one project in a sandbox, only to realize that you need to start working on a second project, but don’t want to have to re-deploy your current project to the new sandbox? Now you can clone sandboxes and pickup right where you left off without having to stop development on anything! (Side note, you can also look into Salesforce DX)

Things to be aware of

Lightning Experience Auto-Enabled

Not an update so to speak, but starting with the Winter ‘20 release (October 2019), all users that have the Lightning Experience User permission enabled will be automatically switched to Lightning Experience on a weekly basis. While part of me thinks that this is a bit intrusive, I also know how annoying it is to support multiple versions of the same product, so I kind of understand it. It’s a long time coming and while it might be annoying at first, I can attest that once users get used to Lightning, they won’t want to go back!

Permission Set Groups (Pilot)

Have you ever had to assign multiple permission sets to the same group of users? No longer! With this new pilot, you can now bucket these Permission Sets into a Permission Set Group and assign them all at once!

Where is this field used? (Beta)

This may be my favorite new addition to this release! I can now go to any field and check to see where it is being used across all my configuration and code! Extremely useful if you have to change a field name and/or remove a field

where_is_this_used_button

Development Updates

Salesforce has been focusing on Developers quite a bit lately and I love it! This release brought the biggest change to the way Salesforce Developers work since Lightning Components were launched!

Lightning Web Components

Salesforce has launched a whole new way to develop with Lightning Web Components! The best part actually is, to most developers, it’s not new at all. In what I see is a move to attract non-Salesforce developers to develop on the platform, it has the added effect of leveling up all current Salesforce developers to use industry standards. Salesforce will now have a say in helping develop those standards too!

By utilizing industry standards, Salesforce can take the next step forward as a platform. From a day to day perspective, LWC advertise a performance improvement as well as an opportunity to level up your skills. Start working on that HTML, JavaScript, and CSS!

If you want to get started, highly recommend checking out this LWC Trail on Trailhead! Salesforce also offers some base components out of the box to get you started!

Change Data Capture (GA)

Change Data Capture is now generally available, allowing you to get notified in near real time when records from your objects are updated and give you the option to replay changes to see how and when a specific change occurred. Check out a full presentation on it here!

Have a great Spring!

 

Dreamforce ’18 Prep

With Dreamforce just around the corner, I thought I’d put together a list of my top Dreamforce tips both for newbies and returning conference goers. Let me know if there are any that I missed! And check out my recap from last year to get you psyched up about #DF18!

Tip Number 1: Come in with 3 things you want to learn about

With over 3000 sessions to choose from, 150K people, and a seemingly unlimited amount of things to see, it’s important to have goals to focus on. Whether those goals involve making a new connection, learning about the latest and greatest products, gaining a new skill, or reinforcing your existing knowledge, I highly recommend choosing 3 major things you want to focus on. For me this year, that’ll be Lightning Components, Salesforce DX, and the Integration Cloud. While it’s great to try to learn everything, especially if your employer is paying for you to be there, it’s easy to get overwhelmed and for that reason it’s important to focus on what you really want to focus on and come away with something you can bring back to your company. Now that Agenda Builder is live, use the filters to build a session that will accomplish your goals. Check out Salesforce’s Agenda Builder tips if you’re having trouble!

Tip Number 2: Give yourself some free time

Marc Benioff likes to joke that there are 3000 sessions and he expects you to attend every one of them. Not only is that not possible, I wouldn’t recommend packing in as many sessions as you can, since you can find most of them on YouTube after anyway! I’d refer you to Tip #1 and only add the sessions that you find most important and interesting. In addition to the sessions, there’s also usually an Admin Meadow, a Developer Forest, and more Trailhead themed locations surrounding different products and industries. These areas are great for getting quick demos, meeting new people, and completing your Dreamforce quests to earn swag. There’s also an expo hall that has a ton of great sponsors that offer solutions to help you improve your Salesforce implementation. Make sure to leave some gaps in your calendar to take advantage of these Dreamforce only opportunities.

Tip Number 3: Make sure to network

While you probably won’t have time to meet all 150,000 attendees, try to connect with a few people if you can! Salesforce MVPs such as myself are always up for meeting new people and sharing our love of Salesforce! Circles of Success sessions are also great ways to meet people to talk about certain topics of interest of specific industries. Just walking around the Trailhead zones, you never know who you might run into!

Tip Number 4: Have fun

While there’s a ton to learn at Dreamforce, there’s also a lot of fun to be had! If the smiling mascots and passion about technology and innovation doesn’t do it for you, the week of Dreamforce is also packed with parties! Check out the lists and make them part of your plan. There are also some pretty light hearted sessions such as the #AwesomeAdmin Lip Sync battle, which yours truly won last year, and #AwesomeAdmin Karaoke so don’t be afraid to let your hair down and have some fun with your fellow attendees! The conference also takes place in San Francisco so try to make some time to enjoy the city!

Tip Number 5: Dreamforce is more than a tech conference

While Salesforce has been consistently named one of the most innovative tech companies for several years in a row by Forbes, co-CEO Marc Benioff has said that “the business of business is improving the state of the world”. Nowhere is this more prevalent than at Dreamforce. In addition to learning about the latest and greatest technology, there are sessions such as a talk on Global Sustainability with former Vice President Al Gore, a session about Ethical Responsibility with Salesforce Chief Equality Officer Tony Prophet, and many others surrounding Equality and Diversity. These are also valuable topics to bring back to your companies and to incorporate in your work and personal lives and part of what makes working with Salesforce so special.

Bonus Tip: Use hand sanitizer

This is a bonus tip but something that I seem to forget every year. In your Dreamforce bag that is provided for being an attendee, there will be a bottle of hand sanitizer. MAKE SURE TO USE IT! The Dreamflu is a real thing! With 150,000 people in close quarters, you can bet that unfortunately not all of them will be as you are so using this hand sanitizer is a great way to help ensure that you can get back to work the next week.

Have a great Dreamforce!

Summer ’18

Another couple months, another Salesforce release! This time it’s Summer ‘18 and to avoid you having to read all 512 pages of the release notes (although there is some great stuff in there!) I’m going over my favorite features that are coming out. I had a hard time narrowing it down so decided to stick with my lucky number, 17!

 

Declarative

There’s a lot of great new functionality on the declarative side of things, specifically for the Lightning Experience. My favorite features focused on two areas; Reports & Dashboards and Process Builder/Flow.

Reports & Dashboards

Link Dashboard Components

My first top feature from this release is that you can now link dashboard components to either elsewhere internal to Salesforce or somewhere external! I see a lot of potential here in making it faster to act on data you see in dashboards

rd_dashboards_link

Add to Dashboard from Report

I’ve never been a fan of how many steps it takes to start building a dashboard after just spending time building a report. That’s all over with the “Add to Dashboard from Report” functionality in Summer ‘18! Now you can add a report to an existing dashboard or start a new dashboard directly from the report itself!

rd_dashboards_add_report

Report and Dashboard Subfolders

I like to stay organized and as a result, am the type of person who has folders on folders on folders on my computer. Now I can bring that organization to Salesforce as well with the ability to create subfolders for reports or dashboard folders!

dashboard_subfolders

Filter on Old and New Values in Field History Reports

My last favorite new feature on Reports and Dashboards is the ability to properly report on field history by being able to filter on old and new values. This should make it much easier to determine when records changed and why!

reports_filter_old_value_new_value

 

Process Builder and Flow

Guided Action List Component

This may only kind of be a feature for flow but the new Guided Action List component based on flows should be tremendously helpful in walking support reps through a given process. While probably most applicable for service agents, I can see how this component could potentially get used for other processes as well.

guided_flow

 

Flow Debug Capability

This has been a long time coming, the ability to fully debug Flows! Flows now have a Debug option to walk you through the flow with all of its variable values.

flow_debugger_details_panel

 

Process Builder Helpful Error Messages

In addition to being able to debug flows, Process Builder now has actually helpful error messages! Looking forward to reduced frustration when trying to figure out why one of these isn’t working properly (not that it wouldn’t work on the first try of course 😉 )

process_error

 

Process and Flow Limit Information

Not a very flashy change, but another one that will help with troubleshooting. Processes and Flows will now show additional info on how close they are to hitting governor limits. Kudos to Salesforce to continually making these easier to troubleshoot!

flow_limits

 

Partial Save Process Builder Mass Create and Update

My final favorite Process and Flow feature is the capability to allow for partial save of records. This capability comes in very handy all the time with Apex and now Processes will benefit from it as well! If one of your 500 updated records fail due to a validation error, you will now still have 499 successes instead of 0 previously!

 

Coding

2.5X Debug Log Size Limit

This one may be one of my favorite updates all time in Salesforce releases. The Debug Log size limit has more than doubled from 2MB to 5MB! I’ve spent far too much time messing with debug log settings to get the levels I want to be able to get the necessary output while staying under the limit, (hopefully) no more!

 

Lightning Pages work with broken Components

Another much needed feature/bug fix, Lightning Pages will no longer completely fail if one of the components is broken! Instead, just the component will fail to properly render. It’s too bad this wasn’t the case when I was troubleshooting the Trailhead Lightning Component Superbadge but better late than never!

 

Apex Switch Statement

A long asked for addition to Apex, the Switch statement is finally here! It should make those long if/else blocks MUCH simpler! Check out the switch statement in action from TrailheaDX!

apex_switch

 

Run Apex Tests without Code Coverage

I’m all for almost ANYTHING that will make my tests run faster. Apex now lets you opt out of calculating code coverage while tests are running to increase performance. This is one of those features that I didn’t know I needed but now I can’t understand how I ever lived without!

 

Metadata Dependency API

This is just a Pilot but looked AMAZING when demoed at TrailheaDX, the Metadata Dependency API! It’s primary use is figuring out what components are necessary to be able to spin up scratch orgs properly but I’m hoping I’ll be able to use it to figure out what related components are needed for deployments and deletions as well!

dependency_api

 

Instance Names Removed from Sandbox URLs

This last one tends to bug me as someone who has to end up hardcoding instance names for Communities and other pages and then change then whenever a sandbox gets refreshed but finally the instance name is being removed from URLs in sandboxes!

 

Einstein

Einstein Service Bots

My last section of updates I’m most excited about deals with Einstein. For years I’ve been hearing about bots and this is one of the first ones I’ve seen that is configurable declaratively! Einstein Service Bots are here for orgs with Live-Agent! Salesforce even put together a nice video on it!

einstein_service_bot_main_dialog

Einstein Next Best Action

My last favorite feature is another Pilot but one that I’m very excited about due to its potential. It’s the Einstein Next Best Action capability. I’m guessing that there may be some initial kinks to work out, but the idea that Einstein can suggest to a user what action they should take is one of the big ideas that AI is striving towards! I’m hopeful it catches on!

next_best_action_component

 

Hopefully this gave you a nice taste of what Summer ‘18 has to offer, Coming Soon to an Org near you! Let me know if you agree/disagree and if I missed anything! Be sure to check out the Summer ’18 badge on Trailhead and make sure you’re #Ready4Summer18