Tag Archives: Review

Salesforce Winter 18 Release Review

Seems like yesterday that Salesforce released Summer 17 and here we are with Winter 18’s pre-release and release notes. Below is my review of the release notes. For a complete list of everything, check out the Winter 18 Release Notes PDF.

Lightning Experience Gets a New Look and Feel

Based on your feedback, we improved information density, legibility, contrast, and even added a splash of color. That means less time scrolling and scanning and more time focused on what matters most. This change applies to Lightning Experience only.

  • More information density and less white space, so you can see more of what you need without scrolling.
  • Improved legibility (using font size and color) to draw attention to what’s most important.
  • Better contrast between foreground and background, making it easier to scan and scroll while staying focused on what you need. We even added color and a background image inspired by our own Trailhead.

That’s a relief because when I implemented Salescloud for a customer, they commented about their being way too much white space so it’s great to see this change coming.

Navigate More Quickly with Keyboard Shortcuts

New keyboard shortcuts allow your users to be more efficient in both console and standard navigation Lightning apps. This change applies to Lightning Experience only. To view the available keyboard shortcuts, press:

• Windows: Ctrl+/

• macOS: Cmd+/

As someone who doesn’t like to leave the keyboard, thank you, especially with simply pressing “e” for editing and “Ctrl+S” for saving!

Set Up Person Accounts with Ease

Ready to start using person accounts? You picked a great time because we steamlined the enablement process. This change applies to both Lightning Experience and Salesforce Classic.

An automated process checks whether or not your org meets the requirements for using Person Accounts. The requirements are:

• At least one record type for accounts.

• Users that have read permission on accounts have read permission on contacts.

• Organization-wide default sharing is set so that Contact is Controlled by Parent or Account and Contact is Private.

From Setup, enter Account Settings in the Quick Find box, and then select Allow Customer Support to enable Person Accounts. After we confirm that your org is ready for Person Accounts, we’ll send an email with additional information about logging a Support case.

Salesforce, I can’t thank you enough for this! I wish you had done this about 5 years ago! At my last employer, our package used Person Accounts heavily, and waiting for Salesforce to enable Person Accounts through a case would usually take 1-2 days. That was even after we streamlined the case body to have all the info they always required, especially the “YES, I am the admin and understand this can’t be turned off once enabled”.

In fact, Ted Husted and I did a “Person Accounts in Action” white paper describing Person Accounts in-depth and published it but have to find it.

Various List View Enhancements

  • Sticky column widths – You can resize a list view’s column width and it remains that size when you return to it later. You can reset it to its original size too.
  • Edit More Records at Once with Mass Inline Editing – You can now update up to 200 records without leaving a list view! Select multiple records, click edit next to the field you want to update, enter the new value and click apply. It’s essentially the same as it worked in Classic. Glad this is finally added because this will really increase a power user’s productivity.

Merge Person Accounts in Lightning Experience

Sales reps can now view duplicates on person accounts in Lightning Experience just as they can on business accounts, contacts, and leads. Users with permission can merge person accounts, too. This change applies to Lightning Experience only.

1. In Setup, make sure that a duplicate rule for person accounts is active.

2. Configure the Potential Duplicates component in Lightning App Builder. Your sales team sees this alert when they view a person account with a duplicate.

I so wish this was available sooner like so many other things. In the past, I had to resort to customizations and other means for this. I wish this was available in Classic too but this is a start!

Better Email Integrations

The Gmail and Outlook integrations are getting better with every release! Task management and two-way syncing are amazing and setting it up is all declarative.

Wave Analytics Renamed to Einstein Analytics

They renamed it and are now including Einstein Discovery. There’s a ton of functionality here and it’s on my to-do list to dig into.

Embed Flows in Lightning Community Pages

Very interesting! This will allow all kinds of new interactions in Communities. Am excited to see how this pans out.

Create Communities in Enterprise, Performance, and Unlimited Editions — Even Without Communities Licenses!

All Enterprise, Performance, and Unlimited orgs can now create up to 100 communities, even without purchasing a Communities license. To start creating your community, first enable Communities in your org. After you create a community, give access to internal users with Salesforce user licenses. Guest users without a license have limited access to your community. Purchase Community Cloud licenses for more access or page views, based on your business needs.

Interesting. I wonder if internal users can now have departmental communities within Salesforce?

Dynamic Lightning Pages

Now you can control when a component appears on a record page by adding filter conditions and logic to its properties. No need to add anything to your custom components. It’s all handled by the Lightning App Builder. For example, construct a filter that causes a rich text component on an opportunity page to display when the Amount is greater than $1 million.

Component visibility filters are supported for standard components, custom components, and components from AppExchange. If you don’t define a filter, the component displays on the Lightning record page as usual. When you define one or more filters and set the filter logic for a component, the component is hidden until the filter logic criteria are met.

Admins can now declaratively define criteria for when a Lightning component is visible on a page through Lightning App Builder. Very nice!

Take Lightning Page Customization to a Whole New Level with Custom Page Templates

Now you’re no longer limited to the standard templates available for Lightning record, app, and Home pages. Take your business needs in hand, and create a custom page template of your own that has the structure and components that you define. Add as many regions as you need, and even custom styling. This feature is available in Lightning Experience and all versions of the Salesforce1 mobile app. It all works by using Lightning components.

Every Lightning page includes a template component that defines the page’s regions and what components it includes. Now you can create a custom Lightning page template component and make it available as a custom page template in the Lightning App Builder’s new page wizard.

There are new interfaces and tags for the .cmp and .design files that help you define the template’s structure, regions, and included components. Each page type has a different interface that the template component must implement.

• lightning:appHomeTemplate

• lightning:homeTemplate

• lightning:recordHomeTemplate

This definitely helps with UI and UX consistency, especially for those building large, custom applications.

Launch a Flow from an Object-Specific Action (Beta)

Add flows to the action menu on your Lightning pages without hunting down the flow’s URL. When you create a flow action, you can pick from a list of available flows rather than enter the flow URL manually. This feature is available in Lightning Experience and all versions of the Salesforce1 mobile app.

Tip: If your flow needs the ID of the record that it’s operating on, don’t worry! Salesforce sends the record ID to the flow as long as you have a Text input variable called recordId.

Thank you thank you thank you! Now, typical workflows can be even more specific per object! I have a few use cases for a client that I can apply this to. I wish this was available in Classic though as with so many of the other new features.

Configure a Flow to Wait for a Platform Event to Occur

You can now subscribe to platform events in a flow Wait element. With platform events, a flow can wait for something to occur, inside or outside your Salesforce org. Previously, a flow could wait only for a relative or absolute date/time value. This feature is new in both Lightning Experience and Salesforce Classic.

This opens up a lot of interesting possibilities since one can now use Flows in this Pub-Sub architecture. This is now on my backlog to experiment with. What use cases can you think of for using this?

Salesforce DX: The New Frontier for App Development (Generally Available!!!)

With a focus on source-driven development, Salesforce DX makes it easier for developers to build together and continuously deliver using the tools that make you most productive. Salesforce Developer Experience (Salesforce DX) will be generally available in mid-October 2017.

Salesforce DX is built on these core principles:

• Source code drives everything.

• Metadata and code are modular.

• Environments are easily created and disposable.

• Development is organized around team collaboration.

• Development is based on open standards and extensibility.

• Flexible packaging supports an agile distribution model.

• Processes and tools facilitate continuous integration and continuous delivery.

Salesforce DX shifts the source of truth from the org to the version control system. By managing your Salesforce code outside of the runtime environment, you can harness industry-standard tools and drive team collaboration during the development and deployment process.

Whether you’re an individual developer or working as part of a large team, Salesforce DX provides an integrated, end-to-end life cycle designed for high-performance agile development. And best of all, we built it to be open and flexible so that you can build together with the tools and practices you know and love.

Simply awesome. This has to be my favorite Winter 18 release feature, by far. Getting changes from one org to another has always been a challenge but this should makes things easier. Additional investigation is needed to see how this can be done with Admins as well.

Lightning Data Service is GA

Spectacular! This is good for standard CRUD operations but for more advanced interactions, APEX is still needed.

Various New Lightning Base Components

There are around 30 new Lightning Base components available. Here are a few that really look interesting:

  • lightning:datatable – More easily display tabular data.
  • lightning:dualListbox – The Classic multi-picklist UI comes to lightning. I wish this didn’t.
  • lightning:flow – Represents a lightning flow in Lightning. Now you can embed flows into custom components and apps. Very nice!
  • lightning:fileUpload – Enables mutiple file to be uploaded to a record. It also includes drag-and-drop and filtering by file types. I wish this existed a couple months ago when I created something similar.
  • lightning:helptext (Beta) – An icon with a text popover. The popover is displayed when you hover or focus on the icon that’s attached to it.

Bulk API 2.0 Generally Available

Bulk API 2.0 uses the same secure, high-performance REST framework as the Force.com REST API, which provides features like OAuth authentication and CORS support. Bulk API 2.0 also provides a streamlined interface for data operations by breaking data files into batches automatically. Upload your data and specify an operation. Salesforce then determines the most efficient way to batch the data.

This is my second favorite new feature. The new API automatically breaks up data files into batches automatically. Thank you. I spent a decent amount of time in the Salesforce Bulk API Starter project getting that to work. Now updating that project to use the 2.0 API is on my backlog!

What features were noteworthy to you?










Salesforce Summer 2017 Release Review

I know I know…. a few weeks ago I reviewed the Winter Release and the Spring Release. However, all the cool kids stay on top of the latest releases so here I am writing my review of the upcoming Summer 17 Release.

To see the complete list of new features, look at the Summer 17 Release Notes PDF.

Make Lightning Experience the Only Experience

Ready to move from Salesforce Classic to Lightning Experience without looking back? Just hide the option to switch to Salesforce Classic from your Lightning Experience users so that they stay in Lightning Experience. This feature is new in both Lightning Experience and Salesforce Classic.

By default, when you enable Lightning Experience, your users get the Switcher, allowing them to switch back and forth between Lightning Experience and Salesforce Classic. But if you want some or all of your users to stick to Lightning Experience, you can remove the Switcher (1).

In Setup, enable the Hide Option to Switch to Salesforce Classic permission (2) in profiles and permission set.

Usually my recommendation is to allow the users to choose what they’d like to use so potentially limiting some or all users from switching between Salesforce Classic and Lightning Experience (LEX) is interesting that Salesforce allows it. My guess is that Salesforce will make this option defaulted in upcoming releases to discourage the use of Salesforce Classic but we’ll see. My recommendation is to leave the switcher on unless there’s a compelling reason to have it off.

Ditch Your Mouse—Keyboard Shortcuts Are Here

You can now use keyboard shortcuts to maximize your efficiency and speed while working in Lightning Experience. You can search for, edit, save, and close a record—all without touching a mouse. We’ve even got keyboard shortcuts to help you go to the publisher and post to a feed. So start planning what you want to do with all the time you’re going to save! By default, keyboard shortcuts work in all Lightning apps. This change applies to Lightning Experience only.

It’s the little things like this that really make a difference. For heavy data entry, this is a life saver and really speeds things up. Thank you Salesforce!

Access Field History Related Lists in Lightning Experience

Field History is one of my favorite features in Salesforce. It’s one of those things that’s nice to have when you need it and really make troubleshooting / auditing hard when it’s not on. While I don’t use it daily, it’s nice that it’s now accessible in LEX.

See Results from External Search Engines with Federated Search (Generally Available)

Salesforce makes it possible to search external content from within Salesforce with Federated Search. It’s now easy to connect external search providers to your org with the Salesforce OpenSearch connector. Users stay inside Salesforce to view Salesforce records and external search results, saving time and hassle. This change applies to both Lightning Experience and Salesforce Classic.

While this doesn’t sound very sexy, this could be really helpful for an organization with many different systems by allowing them to be searched from within Salesforce after creating various search connectors. With so much information available today and it growing faster and faster each year, being able to aggregate it and search in one place could save significant time, potentially. I’m adding this to my backlog of items to R&D further.

Lightning Sync & Lightning for Gmail Generally Available

These two offerings let Salesforce connect with Gmail and keep your email and calendar synched with your Salesforce data. Very helpful for Sales reps!

Various Wave Enhancements!

Wave is Salesforce’s analytics offering. It works by having you import various data into it and then being able to slice-n-dice the data in various ways afterward. Under the hood, it uses Hadoop to store the information and a variant of PIG called SAQL to query the data.

One new feature that’s now generally available is Wave Connectors where an admin can create a connector and have it connect to your current Salesforce org, other Salesforce Orgs, AWS, or a PostGres database on Heroku using click and not code. I’ll be more excited when other connectors are created for SQL Server, Oracle, and other widely used persistent data stores.

Wave is another one of those items of my R&D backlog. If you’ve used Wave, let me know what you think of it in the comments!

Move Communities Between Orgs with Change Sets

You asked and we delivered! Change sets are now available for Lightning communities and Salesforce Tabs + Visualforce communities, making it easy to move your community between orgs that have a deployment connection. Create, customize, and test your community in your sandbox environment and then migrate the community to production when testing is complete.

This makes life much easier. Setting up a new community can be a time consuming process depending on how many settings are customized and other changes. The changeset can’t be used to create a new community so one still has to create the initial empty community but then a changeset can be used to migrate the rest from a source org into the destination org.

Power Up Your Lightning Pages with the Flow Component (Generally Available)

This may be the most exciting feature for me that’s coming in the Summer Release. Granted it’s been available for a while now but having it Generally Available means that I can really recommend it to my clients and use it more. For a lot of things, Flows in LEX can be used. I’ve only scratched the surface. For some other ideas on it, check out my Flows in Lightning Experience.

Embedded Login Enables Users to Log In to Your Website

Salesforce introduces the Embedded Login feature to authenticate your website’s visitors. Your web developers can add login capabilities to the website with just a few lines of HTML. Embedded Login connects your website with Salesforce. This feature works for communities created with either our Communities or Salesforce Identity products. This feature is new in both Lightning Experience and Salesforce Classic.

Embedded Login is another option for customers who want to authenticate their users through Salesforce, but their website doesn’t support user authentication through SAML or OpenID Connect

This is the second most exciting feature coming out in Summer for me. I can’t tell you how many hours I’ve spent working with vendors trying to implement Single Sign-On with Salesforce as the identity provider using OpenId. This sounds very promising but will have to see this in action to confirm.

Einstein Vision Is Now Generally Available

Sign up for Einstein Vision to receive 1,000 free predictions per calendar month. If you need more predictions, you can purchase them.

Salesforce has touted Einstein since Dreamforce with their Dream House app. I’m glad to see that it’s now Generally Available and allows up to 1,000 free predictions per month. This is another item on my R&D backlog.

What’s your experience with Einstein been like?

Safely Cache Values with the New Cache Builder Interface

The Cache.CacheBuilder interface makes it easy to safely store and retrieve values to a session or org cache. A Platform Cache best practice is to ensure that your code handles cache misses by testing cache requests that return null. You can write this code yourself, or you can use the new Cache.CacheBuilder interface.

The documentation is a little vague around this but it sounds like we now have session and application based caching on the platform. I’ll take a look at this in more depth once the release is out.

Validation Rules for Custom Metadata Type Fields

This will allow admins to provide much better data integrity for custom metadata.

Custom Metadata Types Support Long Text Areas (Generally Available)

Being able to store more than 255 characters is awesome. This is usually for specialized markup, SOQL Queries, and other things that require long values.

What are your favorite Summer features?

Salesforce Winter 2017 Release Review

I recently posted my Salesforce Spring 2017 Release Review and then remembered I haven’t reviewed the Winter Release Notes yet. Priorities….Ya know. Anyway here’s my review of the Winter 2017 Release.

See the Salesforce Winter 2017 Release Notes PDF for complete details. Note: It’s about 500 pages but covers it all. I prefer the details in one place so it’s faster to consume everything rather than clicking between various documents and other release content.

Daily Org Limits for Sending Emails with the API Have Increased

Using the Salesforce API or Apex, you can now send single emails to 5,000 external email addresses per day based on Greenwich Mean Time (GMT). You can also send mass email to 5,000 external email addresses per day per org. The maximum number of external email addresses is no longer based on your Salesforce edition. You can use your remaining daily balance of external email addresses in as many mass emails as you’d like, regardless of your edition. This feature is available in both Lightning Experience and Salesforce Classic.

VERY NICE! You can sent up to 5,000 external emails via Apex instead of being limited to the usual 1,000 per day. I can’t tell you how many hours I and others have spent trying to understand the various email limits and how to calculate them. Having 5,000 instead of 1,000 should help alleviate that further. Thank you Salesforce!

Find the Right Record with Person Account Search Enhancements

Person Account searches that contain terms spanning both business account and contact fields now return person account search results. This feature is available in Lightning Experience, Salesforce Classic, and all versions of the Salesforce1 mobile app.

The Person Account object contains fields that originate from both the Business Account and Contact objects. Previously, if a user’s search term contained information from both the Business Account object and the Contact object, such as name and title or name and address, the matching person account wouldn’t always be returned in the search results. Now, search terms that include both types of information return the right person account records.

For example, suppose that you want to find the person account record for Agatha Parker, an account executive in San Francisco. If you search for Agatha San Francisco, search results include the Agatha Parker person account record. In this case, Agatha is from the Business Account object and San Francisco is from the Contact object.

At my last employer, Person Accounts were used extensively. It’s great to see Salesforce adding additional Person Account support, especially when I could see it being used more in the future. The Spring release also has a number of Person Account enhancements.

Get a Better View with Global Instant Results

Search suggests recent and matching records from multiple objects—not just the object the user is on. These instant results let users quickly access a record before performing a full search. With this wider view of suggestions, users find what they’re looking for faster no matter where they are in the app. This feature is available in Lightning Experience only.

As users type in the search box, the list of suggested records spans multiple objects. Previously, users searching from a record or object home page would see instant results for only that object.

While a relatively minor enhancement, this will be very beneficial to users who frequently search for items by speeding up searches. It would be nice if this enhancement was available in Salesforce Classic too.

Navigate at the Speed of Lightning!

In the improved navigation model, the navigation menu that previously displayed on the side of Lightning Experience becomes a horizontal navigation bar at the top of the page, letting your users:

– Find what they need using item names instead of icons for easy recognition

– Complete actions and access recent records and lists with a single click

– Use a consistent and familiar navigation experience

This reminded me that the “tabs” used to be on the left and vertically listed. I totally forgot about this. I am glad that it’s not a vertical bar instead so that its “Use a consistent and familiar navigation experience” aka its more like Salesforce Classic. Being able to create new records and view recent records and list views for each Object Tab is really helpful.

Get Field-Level Help in Lightning Experience

Fields now show “Help Text” like Salesforce Classic. This is another welcome addition that I’ve been taking for granted.

Account Insights Is Now Called News

In Lightning Experience and Salesforce1, various news articles for a given account are shown in the related “News” component. This can be very beneficial when your Sales Reps hear about this information for the first time. When I was giving training to some executives for their new Salescloud implementation, we looked at one account and the news showed a timely and relevant article that they didn’t know.

Add Lightning Components from the AppExchange in Community Builder

This is nice but the Component AppExchange only has about 90 components at the time of this writing. Hopefully, this gets increased soon.

Launch a Lightning Component from an Action

Lightning component actions are custom actions that invoke a Lightning component. Because they support Apex and JavaScript, Lightning component actions provide a secure way to build client-side custom functionality. This feature is available in Lightning Experience and all versions of the Salesforce1 mobile app.

This feels like a really powerful addition to Lightning to help alleviate things like “Lightning Experience not supporting Javascript buttons” even though it requires coding. Andy Fawcett’s Using a Lightning Component from an Action provides a good writeup on how to use this.

AppExchange and Your Salesforce Org—Together at Last

Salesforce now allow one to view AppExchange apps from within Salesforce itself in Lightning Experience. This streamlines the back and forth between the AppExchange and Salesforce that was previously done.

Process Twice as Many Records with Bulk API

One can upload 10,000 batches a day instead of 5,000.

View Obfuscated Code in Subscriber Orgs with Login As

License Management Org users with the “Author Apex” permission can view their packages’ obfuscated Apex classes when logged in to subscriber orgs via the Subscriber Support Console

This is really helpful when trying to troubleshoot a managed package in a subscriber org. In the past, one way to see the code is to ensure every packaged release was tagged in source control so you could see the code for a particular version. This makes this a little easier to deal with.

What Winter features were noteworthy to you?

Salesforce Spring 2017 Release Review

It’s that time of year again. Salesforce released their Spring 2017 version of their software. Let’s take a look at some of the new features worth noting.

For complete details, see the Spring 17 Release Notes PDF.

Salesforce Optimizer

Salesforce runs programmatic analysis of your sandbox or production environment and then you are sent a report of the findings. From the Optimizer Included Features Help Documentation, the optimizer evaluates the following features:

  • Fields
  • Apex Triggers
  • Page Layouts
  • Report Types
  • Validation Rules
  • Sharing Rules
  • Administrator Permissions

The documentation doesn’t go into too much detail so I’ll try running this and post the results in a separate post.

Favoriting in Lightning Experience

Favorites lets you quickly access important records, lists, groups, dashboards and other frequently used pages in Salesforce. An item is favorited by clicking the star on the current page. It’s unfavorited by clicking the highlighted star again.

I’m glad Salesforce came out with this feature because so much time is spent navigating the same things usually that this saves considerable time searching and navigating. It also saves from having additional browser bookmarks. I’m also glad because I literally was prototyping a similar feature in December for a client and am glad there’s native support now in Lightning.

Manage Duplicate Person Accounts

At my former employer, we used Person Accounts heavily and it’s a great feature. One limitation was that the duplicate management feature didn’t support them. NOW IT DOES!

To create duplicate rules for them, go to the duplicate rules in Setup in Lightning Experience or Salesforce Classic.

Context-Sensitive Merge Fields and Person Account Support

In email templates, one can now see all the person account merge fields when a person account is in the “Related To Field”. This is in Lightning Experience only.

Inline Editing in List Views in Lightning Experience

Users can edit records in a listview without opening it. Also, they can search for and create records on the fly in lookup fields.

There are some fields that aren’t editable and a lock appears next to them. For example, one can’t edit multi-select picklist values. Also, users can’t edit if the listview uses filter logic.

Run Custom Mass Actions on Multiple Records in Related Lists

Remember those brilliant custom buttons that you created in Salesforce Classic by using Visualforce? With the ability to select multiple records in a Lightning Experience related list, those buttons take on new life. Watch your reps’ productivity soar when they click a button to perform a custom mass action on several records at once. This change applies to Lightning Experience only. View All records on a related list to access that list’s mass action buttons.

This definitely needs more explanation and further research. For example, javascript buttons aren’t supported in Lightning Experience so this could be a possible replacement in some cases?

Subscribe to Reports in Lightning Experience

Users can subscribe up to 5 reports but can’t set notification conditions and can only receive report results via email.

Automatically Add Emails and Events to Salesforce with Automated Activity Capture for Inbox

With Automated Activity Capture, Inbox users can connect their email and calendar to Salesforce. Then, their emails and events are automatically added to related Salesforce records. This feature is new in Lightning Experience. After you set up Inbox, Salesforce asks Inbox users to connect their Google™ or Microsoft® Office 365® account to Salesforce. Then, on accounts, contacts, leads, opportunities, and person accounts, they see their related emails and events. They also see related emails and events from others on their team.

For one particular client, this is a huge feature add. They had purchased Salesforce Inbox but then discovered they had to log emails and meetings manually all the time from Office into Salesforce. In case they don’t know about this, I’m sending them an email to let them know.

Filter Reports via URL Parameters in Lightning Experience

One can specify filters for reports now in Lightning Experience via the report’s URL parameters. This is done using fv0, fv1 … fvN parameters that match the order of the custom filters in the report. This has been used widely in Salesforce Classic for a long time. It’s good to see this added to Lightning too.

Create New Records From Lookups

Community members can now create records via lookups, a handy trick that saves time and frustration. Imagine a partner community member who creates the opportunity Awesome Widgets to track a potential sale. The partner looks up the contact Jess Fabulous to see if Jess exists in the system. If Jess isn’t in the system, the partner simply clicks New to create the contact. No break in flow, and no time lost.

Assign Record Pages by App, Record Type, and Profile

In addition to profiles, you can now add location and record type criteria to page variations and hit your target audience. For example, by combining criteria, you can have a page that’s visible only to sales users in Canada or create a custom group geared just to that set of users.

Build Dynamic Picklists for Lightning Page Components with Apex

Now you can expose a component property as a picklist when the component is configured in the Lightning App Builder. The picklist’s values are provided by an Apex class that you create.

For example, let’s say you’re creating a component for the Home page to display a custom Company Announcement record. You can use an Apex class to put the titles of all Company Announcement records in a picklist in the component’s properties in the Lightning App Builder. Then, when admins add the component to a Home page, they can easily select the appropriate announcement to place on the page.

This is awesome and adds another layer of flexibility for design-time customization to Lightning Components. Some time soon, I’ll try using this for replacing the Object Name from a textbox in my Lightning Lookup Dropdown Component to a dropdown list with all usable Objects in the org.

Customize How Related Lists Display on Lightning Pages

We want you to get exactly what you want on your Lightning pages. Instead of displaying all the related lists for a record, you now get to pick exactly which list you want with the new Related List component. This feature is new in Lightning Experience.

With the Related List component, your users can focus on the things that matter most. For example, you can use this component to display activity history front-and-center on all case pages. You can even configure this component to display a related list for a parent record. Say that you want your users to know if a case’s contact has any other open cases. Your users will never miss a beat.

External Services Wizard Walks You Through Setup (Beta)

Use External Services to connect your Salesforce org to a service of your choice. Invoke methods based on the external source via a flow. Import data from the service into Salesforce. You can do all this with the help of an easy-to-use wizard. This feature is new in Lightning Experience.

Let’s say you want to connect to a service that determines if credit is extended to a Salesforce account. You also want to know the payment terms. With External Services, you: •

1) Supply a named credential, a URL, and authentication settings. Salesforce uses this information to make callouts to the external service. •

2) Enter a schema URL path (or endpoint) or provide a complete schema.

3) Create a flow based on the Apex classes generated from your external service registration using Salesforce’s point-and-click automation tool.

This is really interesting because I haven’t heard about this capability yet. There’s an upcoming integration project on my horizon that may be able to use this so more research is needed.and this is added to my backlog.

Run Flows with a Lightning Skin (GA)

Have you ever wanted your flows to look better? So have we. When you enable this feature, all your URL-based flows render using the Lightning runtime instead of the Classic runtime. The new skin fits in with the rest of Lightning Experience, but it’s also available in Salesforce Classic.

It’s about time 🙂

Debug Lightning Components on Every Page with Lightning Inspector

The Lightning Inspector now has more debugging information such as Component information on every page and information about components that initiated actions. Debugging can be tricky so I’m glad there’s more diagnostic information to use if needed.

Bulk API Now Supports More Complex Queries

Bulk queries now support the queryAll operation and SOQL relationships.

queryAll returns records that have been deleted because of a merge or delete as well as information about archived Task and Event records. To make a queryAll request, set the operation field on the JobInfo to “queryall”.

YOU CAN NOW USE SOQL RELATIONSHIPS IN BULK QUERIES. That is huge and will streamline data conversions and integrations so much. This provides another enhancement to make to my Salesforce Bulk API Starter Project.

Metadata Relationships Now Support Field Definition Relationships

Metadata relationship fields for custom metadata types now let you look up field definitions. Previously, you could look up entity definitions for standard and custom Salesforce objects, but not a specific field on an object. Now, field definitions are supported as a type of metadata relationship field.

Finally comes to mind here. It’ll be nice to have true data integration among associations between records.

What Spring 17 features do you like and dislike? What do you think of the Spring release so far?

Lightning Experience Review: A Few Weeks In

The last few weeks were spent learning and being hands-on with Lightning Experience, which is Salesforce’s replacement UI for internal, non-community users.  Here are my thoughts on it so far.

User Interface


A screen shot of the “All Accounts” listview in Lightning Experience from a personal development org.

Overall, the user interface is better than Salesforce Classic but it  feels like an incremental improvement instead of a revolutionary one.

Salesforce decided to keep feature parity with Salesforce Classic and make the look and feel modern using a Single Page Application (SPA) architecture using individual components built on the Aura framework and the Lightning Design System. The structure of the pages consist of

  • Global Search – The global search is at the top so one can search for records and files.
  • App Switcher. The App Switcher displays the currently selected application, which is the “Sales” application in the above screen shot. The application is the list of tabs that comprise that application which can be customized like in Salesforce Classic.
  • Navigation Bar – The navigation bar is the collection of tabs in the application. All the Object Tabs are a menu that let you, depending on permissions, create a new record, view recently viewed records, and view recent viewed listviews.
  • Main Body – This is where the main content is displayed. In the above example, the all accounts listview is displayed.

Having used Salesforce Classic for years, it was very easy to pickup the basic interactions since most of the day-to-day operations had a one-to-one comparison to Salesforce Classic features and concepts such as Objects, Listviews, Search, and navigation. It also works well on mobile browsers compared to Salesforce Classic.

Sluggish Performance

Everyone keeps touting that Lightning Experience is faster because it uses a SPA architecture with its client side framework, Aura, but it feels slower to me than Salesforce classic. When initially logging in, it takes around 3-4 seconds to open the vanilla dev org’s home page. Salesforce Classic opens the home page within a second. A quick search yields the Lightning Experience LEX – lightning speed please! Idea.

Many factors affect performance so try this out in your own sandbox and see what the performance is like. I’m comparing Lightning Experience performance in my own personal development org with a few thousand test account records to Salesforce Classic on the same org using a 2016 mid-grade laptop on a broadband connection.

Too Much Asynchronous Behavior

After the initial page loads, the processing image is often seen when opening menus on the tabs and other areas that you wouldn’t expect since you just waited a decent while for the application to open.

Administration Awkwardness

Record Page Layout Admin with VF

The main “Details” tab and the “Related” tabs are configured using page layouts from Salesforce Classic. When you can drag-n-drop various components onto the page and rearrange them with ease but then have to view the page layout in Salesforce classic to affect the details and related lists, it is awkward and feels unpolished.

From a technical perspective, it makes sense to use the same page layout configuration to drive both the Salesforce Classic and Lightning Experience record page layouts so they have a similar look and feel for when someone switches between the views and it reduces how much configuration is needed for the UIs. However, the administration experience is still awkward. I want a Lightning experience page editor that’s completely done within Lightning and doesn’t depend on Salesforce classic page layouts. Understandably, this would cause more work for an admin if they have to keep the layouts synchronized between Lightning Experience and Salesforce Classic but it also gives the ability, more easily, to allow different page configurations across the user interfaces.

Visualforce setup pages show in Lightning


Instead of creating Lightning Experience specific administration pages, Salesforce decided to reuse many of its existing Salesforce Classic administration pages but within the Lightning Experience “container”. See the global picklist value sets image above for an example.

Object Definition Custom Field Paging

When viewing an Object’s definition in Object Manager, the list of fields are paged now to show 25 fields at a time. If you’re viewing an object with a lot of fields, say 100 or more, you have to scroll through the pages or use the object’s search to find the desired field(s). This is one area where I actually preferred seeing all the custom fields without having to page through them. These extra clicks mean extra time to examine an object and find the details desired. It would be nice to have an option to view all fields and be able to keep that preference enabled.

Lightning Component AppExchange

Salesforce has a new Lightning Component AppExchange marketplace where ISVs can sell Lightning components. This is great in theory but at the time of this writing, early Feb 2017, there are only about 90 components. Many of them seem useful but none feel compelling enough to be a must-have. Since the marketplace has been around for a while, I was expecting hundreds of components to be available instead of 90. This seems to be an indicator that Lightning still isn’t mainstream and has a ways to go yet.

What’s nice is that ISVs can upgrade their existing AppExchange packages or develop new ones to be Lightning compatible. On the AppExchange, the products that are Lightning ready have the “LIGHTNING READY” designation in their listing as seen below.


Lightning Development

A separate post or two will be created in the future to detail this more.

So far, I’ve developed a generic Lightning “Lookup Dropdown” record component that lets one drop the component on a record detail page, tell it which lookup or master-detail field to use, and it’ll show a dropdown of all the records in the parent object. One simply chooses the parent record and clicks Update to update that field with the selected record.


The use case for this is to replace the out-of-the-box Lookup textbox field that uses autocomplete after typing in a few characters to find the desired parent record. If the parent object only has a manageable amount of records, say 200 or less, show all of them so the user doesn’t have to know which one to select.

To develop this fairly simple component required more Javascript and Apex than expected. To implement the same functionality with a Visualforce component would’ve taken half the amount of code. What led to this is that the Lightning Component Framework doesn’t handle as much of the plumbing for you, at least yet, as compared to Visualforce. Also, the list of available Lightning components is still limited. I’m expecting Salesforce to release more infrastructure and components here to ease the burden on Lightning development in future releases.

Limited “Lightning” Community Support

Lightning Experience is not supported in communities at this time.

What is supported are a few “Lightning” compatible templates. These include the “Napili”, “Koa” and “Kokua” templates at the time of this writing in early Feb 2017. Future posts will detail my experience with these. For now, I recommend starting with the Napili template and evaluating if that’s a good fit for your community.

Closing Thoughts

Lightning Experience at first glance looks impressive but after using it for a while, it still feels like a Beta to me that needs a bit more polish and performance tuning. My recommendation is to use it for out-of-the-box implementations that require little to no customization and wait a few more releases for Salesforce to implement more Lightning features and infrastructure and then reassess.

What are your thoughts on Lightning Experience? Has your team and organization switched over yet?