Tuesday, May 7, 2019

Quick Highlights of the Summer ’19 Features

Lightning Experience | Communities | Right-to-Left (RTL) Languages | 
Financial Services Cloud | Health Cloud

As we all know Salesforce announces Seasonal Releases three (3) times a year. Summer '19 release notes are now publicly available. Summer '19 release is coming with enhancements and new exciting features!.

Prepare Visualforce Pages for Lightning Experience (LEX) (Beta)

With Summer '19 release, you have an option now to scan Visualforce pages for issues that impact them transition to LEX using the LEX Configuration Converter.

Lightning Experience (LEX) for iPad Devices (Beta)

With Summer '19 release, you can now access LEX from Safari on iPad Devices.

Salesforce Surveys Free! No Licenses Needed Anymore

With Summer '19 release, you no longer need a license to create and send surveys.

Enterprise Territory Management (ETM) objects in LEX

With Summer '19 release, Object Manager will now include ETM objects in LEX.

Celebrate Sales Milestones

With Summer '19 release, on Opportunity path stage a confetti celebration can be created for a little fun when Sales Reps reach a milestone. Available on mobile view as well.

This feature is also available for Work Orders in Field Service Lightning.

Pardot: B2B Marketing Analytics Legacy App Is Retiring

The legacy B2B Marketing Analytics app is retiring with the Spring ’20 release.

Merge Cases into a Single Record (Beta)

With Summer '19 release, you can now merge up to three (3) cases into one (1) case.

Einstein Bots for Service

Summer '19 release is bringing many new features (Intelligently Transfer Bot Sessions, Dialog Map, access features like Field Service Lightning) to faster setup Einstein Bots.

Field Service Mobile App: Mobile Navigation with Deep Linking

With Summer '19 release, you can now use Deep linking to take users to a specific screen in the FSL app from another mobile app on your device.

Field Service Mobile App: Upload & Swipe Multiple Images

With Summer '19 release, you can capture several images at once and swipe to move between images.

Field Service Mobile App: View Files Related List on Android

With Summer '19 release, Files related list is now available on Android devices.

LiveMessage is now Messaging

With Summer '19 release, LiveMessage has been renamed to Messaging.

Connect with Apple Business Chat

With Summer '19 release, Service agents can now connect with customers using Apple Business Chat.

Connect with with WeChat (Pilot)

With Summer '19 release, Service agents can now connect with customers using WeChat from the Service Console.

Live Agent is now Chat

With Summer '19 release, Live Agent has been renamed to Chat.

Snap-Ins is now Embedded Service

With Summer '19 release, Snap-Ins product has been renamed to Embedded Service.

Knowledge in a master-detail lookup Relationship

With Summer '19 release, you can now create Knowledge as the parent in a master-detail lookup relationship.

Reports with Row-Level Formulas (Beta)

With Summer '19 release, you now write a row-level formula directly in the Lightning report builder and you don't need to create a custom formula field.

Einstein Analytics: Connect enterprise applications with Oracle Eloqua and NetSuite (Generally Available)

With Summer '19 release, your can now connect to more enterprise applications data with the Oracle Eloqua and NetSuite connectors. These features are now GA.

Communities: A new metadata type ExperienceBundle (Developer Preview) for Lightning Communities

With Summer '19 release, you can have the experiences folder (ExperienceBundle) that provides human-readable, text-based representations of the different Lightning communities.

Communities: Sharing Sets for Lead object

With Summer '19 release, you can now grant portal or community users access to Leads using Sharing Sets.

Communities: Roles in Communities and Portals have increased

With Summer '19 release, the number of roles that you can have in communities and portals are now increased from 5,000 to 50,000.

Communities: Own more Person Account Users

With Summer '19 release, the number of person account portal users that a Salesforce user can own is now increased from 10,000 to 50,000.

File Sharing Limits Increased

With Summer '19 release, you can share files up to 2000 times which includes shares with records, people, and groups.

Industries specific Ready-Made Solutions

Salesforce industry-specific solutions for Financial Services (FS) and Health Care.

myTrailhead for building Knowledge-base for your Company

myTrailhead for employees on boarding, training and continuous learning.

Note: myTrailhead is available with Enterprise, Performance, or Unlimited editions for an extra cost.

External Change Data Capture (Generally Available)

With Summer '19 release in Salesforce Connect using the OData 4.0 adapter, you can now track changes made to data that’s stored outside Salesforce org.

Custom Objects in an Org

With Summer '19 release, you can now have maximum 2,500 custom objects including the ones you create and from AppExchange managed packages.

Setting External Access Levels for Standard Objects (Beta)

With Summer '19 release, You can now set external access levels for many more standard objects.

International Components for Unicode (ICU) for Date and Time Formats (Pilot)

Salesforce is adopting the internationally standardized formats for dates and times provided by the ICU.

IoT Insights is now Event Insights

With Summer '19 release, IoT Insights has now been renamed to Event Insights.

Customization: Continuation class for Aura & Lightning Web components

With Summer '19 release, Continuation class is now available in Apex to make a long-running request to an external web service from an Aura and Lightning Web components.

Customization: Lightning Web Components (LWC) in Visualforce Pages

With Summer '19 release, you can now reference LWC into a Visualforce page.

Customization: Lightning Out for Lightning Web Components (LWC) (Beta)

With Summer '19 release, you can now use Lightning Out with LWC same as you do with Aura components.

Customization: Enforce Field-Level Security in Apex (Pilot)

With Summer '19 release, Apex has now a security feature for field-level data protection. The Security and SObjectAccessDecision classes will be used with stripInaccessible method to check the context of the current user’s read, create, or update operation. The method can also be used to remove inaccessible fields from sObjects before a DML operation to avoid exceptions.

Customization: Execute Platform Events from Batch Apex Classes (Generally Available)

With Summer '19 release, Batch Apex classes can now execute Platform Events when an error or exception is encountered.

Right-to-Left (RTL) Languages: Arabic, Hebrew, and Urdu

Password Resets (Beta)

With Summer '19 release, you can now use right-to-left (RTL) languages to reset password.

Layouts of Right-to-Left Languages (Beta)

With Summer '19 release,, RTL layout is now the default for Arabic, Hebrew, and Urdu.

Summer '19 release has lots of other exciting and interesting features but these are just few of them. Please read the Summer '19 release notes for details.

Useful Resources

Friday, December 21, 2018

@RemoteAction Static methods with Inheritance, Composition & Polymorphism

This blog post is specifically highlighting an issue of @RemoteAction Static methods with Inheritance, Composition and Polymorphism.

You may read Inheritance, Composition over Inheritance and Polymorphism.

Hypothetical Scenario:

Universal Digital (UD) is a global internet, web, and domain hosting service provider organisation. They are planning to move their current solution on the Cloud. After analysing various software’s, they have chosen Salesforce. It will be a completely custom solution on Lightning platform. Initially two (2) regions: EMEA and NA will be going live in MVP phase.

The solution would be fully custom, the CTO of UD has given some benchmarks for the development. The most important one is that the code should be divided into two (2) parts:
  • Global Repository
    • It will have ONLY common code that will be same across Regions (EMEA, NA).
  • Regional Repository
    • Every Region (EMEA, NA) will have its own code repository where it will have Region specific code + Global common code.


Development team is having issues specifically for @RemoteAction methods as developers are using heavily custom framework to build custom smart UI. So, Development team is struggling to find a way that how to use RemoteAction Static methods with Inheritance, Composition & Polymorphism?

Considerations of "Virtual", "Override" and "Static" Keywords in Apex

  • RemoteAction methods must be declared as "Static".
  • You can't use "Virtual" and "Override" keywords with "Static" keyword.

So specifically for @RemoteAction methods Development team needs to take a slightly different approach.

Please see an example of Remote Action Methods and Inheritance in detail by Salesforce.


(1) How to Re-Use a Common base class @RemoteAction Static method for a Region (EMEA, NA)

(2) How to Extend a Common base class @RemoteAction method for a Region (EMEA, NA)

Approach 1

In this approach you are limited in Common base class and you can't Override any of the Common method in Region specific classes.

Approach 2

In this approach you have flexibility. You can Extend and Override the methods of Common class in a Region specific classes.

Monday, December 17, 2018

Quick Highlights of the Spring ’19 Features

Lightning Web Components | Authentication & Identity | Salesforce IoT

As we all know Salesforce announces Seasonal Releases three (3) times a year. Spring '19 release notes are now publicly available. Spring '19 release is coming with enhancements and new exciting features!.

List View with Pinned Lists in Lightning Experience

In Spring ’19 release, with Pinned Lists, all users can make any List View their new default.

Print a Record Detail Page in Lightning Experience

With Spring ’19 release, you can now Print record detail and related lists from a record page in Lightning Experience. You can disable the Printable View button feature from the record page layout.

Thanks Badges in Lightning Experience (Pilot)

With Spring '19 release, you can now give thanks badges to users from Chatter feed.

Data Storage is Increasing

With Spring '19 release, data storage will be increasing for selected editions. For example: Now, a Professional Edition org will be increasing from 1 GB to 10 GB.

Note: Orgs will begin to see the increase beginning in late March 2019.

Hyperlinks in Formula Fields in Lightning Experience

With Spring '19 release, the critical update ensures that the target value for hyperlinks is honoured, whether it’s explicitly configured or set by default.

Note: This critical update is enabled in Summer ’19 on May 17, 2019.

Update to Retention Limit for Field History Data

With Spring '19 release, the process will be beginning to remove the field history data older than 24 months. This policy applies to all orgs created after June 1, 2011 who have not purchased the Field Audit Trail (FAT) add-on.

Legacy Territory Management Is Being Retired

The original territory management feature is scheduled for retirement as of Summer ’20.

Exciting & Cool features of Calendars in Lightning Experience

With Spring '19 release, you can now Schedule Repeat Events. There are other cool features of Calendars in Lightning Experience.
  • Public Calendars in Lightning Experience
  • Book Resources for Events
  • Add Attendees Without Setting Up Lightning Sync
  • See More Details from the Event Preview
  • See Files Related to Your Events
  • Print Calendars in Lightning Experience

New Languages in Pardot

With Spring '19 release, Pardot user interface can now be translated into French, German, and Spanish (EU) languages.

Einstein Case Classification

With Spring '19 release, Einstein Case Classification can recommend or populate picklist and checkbox field values based on the previous data.

Einstein Bots: Top Intent Conflicts

With Spring '19 release, you can now evaluate quality of your bot’s intent model and a detailed look at individual intents.

Einstein Bots: Customer Input Classification and Feedback

With Spring '19 release, you can now classify customers type in chat and then approve, ignore, or reclassify each input to the proper intent.

Einstein Bots: with Mobile Messaging (LiveMessage SMS) Channel

With Spring '19 release, you can now use Einstein Bot with LiveMessage SMS text messaging channel in addition to the Live Agent chat channel.

Einstein Bots: Channel Settings in the Bot Builder

With Spring '19 release, you can now deploy your Bot quickly and easily from your Bot’s Overview page.

Einstein Bots: New Context and System Variable 

With Spring '19 release, you can now build channel independent Bots with new context and system variables.

Einstein Bots: Improved Performance Dashboard

With Spring '19 release, you have now more options to understand your Bot’s performance: Filter by date and channel (chat, messaging), Top Last Dialogs, Escalation Success, Einstein Intent Usage, and Interactions.

Einstein Bots: New Terminology "Utterance"

With Spring '19 release, a term has been introduced "utterance" and that is different from customer input.

Einstein Next Best Action (Generally Available)

With Spring '19 release, Einstein Next Best Action is generally available. It helps to suggest spot-on recommendations.

Videos in Knowledge Articles

With Spring '19 release, you can now add ooyala.com videos to the list of supported domains for embedding videos in both Salesforce Classic and Lightning Experience.

Communities: Customers Request a Call from Support

With Spring '19 release, your community users can now request that customer support call them back.

Guest Users (without logging in) to Run Flows

With Spring '19 release, Users can now run a flow without logging in.

Use Custom Lightning Web Components in Communities

With Spring '19 release, you can now build custom New Lightning Web components that admins can drag onto community pages.

Lightning Container Components in Communities

With Spring '19 release, you can now integrate your existing or new applications built in React, Angular, Vue, or other third-party JavaScript frameworks or open-source software with lightning:container in Lightning applications and Communities.

Sharing Sets with Campaigns, Opportunities, and Orders (Generally Available)

With Spring '19 release, you can now grant portal or community users access to campaigns, opportunities, and orders using sharing sets.

Sharing Sets with Contacts with Multiple Accounts (Generally Available)

With Spring '19 release, you can now create a sharing set that grants access to all records with a lookup to any accounts related to the contact.

Customize Verify Page for Community Sign-Ups

With Spring '19 release, you can now customize your Verify page’s layout and text with Visualforce and a couple of Apex methods.

Flow Builder: Intuitive & Faster Flow Building Tool

With Spring '19 release, Cloud Flow Designer is being replaced by a streamlined and with a much faster tool.

Please read other exciting tools of Lightning Flow.

Permission Set Groups (Pilot)

With Spring '19 release, you can combine multiple permission sets into a single permission set group based on the tasks that a user regularly performs.

Multiple Permission Sets

Permission Set Group

Globalization: New Languages

With Spring '19 release, 10 new languages and locales for South African and Indian customers have been added as platform languages.

Globalization: Right-to-Left Languages (Beta)

With Spring '19 release, Right-to-left language and layout is available for Arabic, Hebrew, and Urdu.
  • Arabic and Hebrew are now available as end-user languages in Lightning Experience.
  • Urdu is supported as a platform language.
Urdu Language as Platform Language!

Create Custom Big Objects from Setup

With Spring '19 release, as you know you can create Big Objects from Metadata API but you can also now create Big Objects manually from Setup.

Create Objects from Spreadsheets

With Spring '19 release, you can now create a custom object by importing its fields and field data from a Google sheet, a Quip spreadsheet, an .xls file, or a .csv file.

Check a Field’s References (Beta)

With Spring '19 release, you can now view the references to a custom field (in a sandbox org) before you Edit or Delete it.

Reserved Apex Names in External Services Schema

With Spring '19 release, you can now use avoided words like, including “end,” number,” object,” and “transaction." as your external services schema variable names.

Namespace Prefix to pageReference.state Properties and Query Parameters

With Spring '19 release, the query parameters and pageReference.state properties must have namespace prefixes.

Authentication and Identity: Identity-First Login Page with My Domain Login Discovery

With Spring '19 release, you can now create interview-based or identity-first login page with My Domain Login Discovery where user will be asked to enter a custom unique identifier such as an email address or phone number instead of username and password and sends them directly to the identity provider (IdP) login page to authenticate.

Spring '19 is coming with many new features for authentication and identity.
  • Authenticate Users with Certificates
  • Connected App Integrations with OAuth 2.0 Endpoints (Generally Available)
  • New Size Requirement for Client Secrets (Consumer Secrets) for OAuth 2.0 Connected App
  • Customize Verify Page for Community Sign-Ups
  • Send Asynchronous Email Verifications
  • Create Lightweight Contactless External Identity Users (Generally Available)
  • View and Revoke Access to Devices with Device Management (Beta)

Shield Platform Encryption: Encrypt Data in Custom Rich Text Area Fields (Generally Available)

With Spring '19 release, you can now encrypt custom rich text area fields.

Shield Platform Encryption: Exact Match Case-Insensitive Deterministic Encryption (Beta)

With Spring '19 release, you can now use the same capabilities as deterministic encryption but with exact, case-insensitive matching.

Shield Platform Encryption: Encrypt Einstein Discovery Data (Pilot)

With Spring '19 release, you can now encrypt sensitive Einstein Discovery data with Shield Platform Encryption.

Spring '19 is coming with many other features of Shield Platform Encryption.

Salesforce IoT: With Service Cloud Unlimited Edition

With Spring '19 release, Salesforce IoT is now included in Service Cloud at no additional cost.

Development: Lightning Web Components (Generally Available)

With Spring '19 release, you can now build Lightning Components with new programming model "Lightning Web Components". The "Aura Components" model still exist and work with the new model.

Development: Locker Service is now Lightning Locker

With Spring '19 release, Locker Service is now renamed as Lightning Locker.

Development: Must use Square Brackets for Array, Set, and List Attributes

With Spring '19 release, to set a default value for these attribute types you must use surround Square Brackets [] and comma-separated values.

Development: Notify about Unsaved Changes

With Spring '19 release, you can now use lightning:unsavedChanges in standard and console navigation apps to notify UI about unsaved changes.

Development: Enforce Field-Level Security Permissions for SOQL Queries (Beta)

With Spring '19 release, you can use WITH SECURITY_ENFORCED clause to enable checking for field- and object-level security permissions on SOQL SELECT queries.


Enterprise Messaging: Change Data Capture & High-Volume Platform Events (Generally Available)

With Spring '19 release, the Change Data Capture (CDC) and High-Volume Platform Events are now generally available.

Sandboxes: Cloning Sandboxes (Generally Available)

With Spring '19 release, clone an existing sandbox feature is now generally available.

Sandboxes: Format of User Email Addresses is changing in Sandboxes

With Spring '19 release, Salesforce will append ".invalid" to all user email addresses when you create or refresh a sandbox. For example: john@unversal.com becomes john@unversal.com.invalid.

Spring '19 release has lots of other exciting and interesting features but these are just few of them. Please read the Spring '19 release notes for details.

Useful Resources

Saturday, October 6, 2018

Quick Highlights of the Winter ’19 Features

Connected Customer Experiences | Einstein | IoT

As we all know Salesforce announces Seasonal Releases three (3) times a year. Winter '19 release notes are now publicly available. Winter '19 release is coming with enhancements and new exciting features!.


Get Feedback from Users on switching back to Salesforce Classic

With Winter '19 release, you can now collect feedback to find out why users are switching back to Salesforce Classic.

Lightning Experience > Setup > Onboarding & Assistance

Lightning Experience Configuration Converter

With Winter '19 release, Salesforce has introduced Configuration Converter for JavaScript buttons move to Lightning Experience.

Note: The Lightning Experience Configuration Converter is a standalone tool outside of Salesforce.

Lightning Usage App

With Winter '19 release, you can now view page performance by browser, mobile, Salesforce Classic and Lightning Experience in Lightning Usage App.

Note: The Lightning Usage App is not available for sandbox orgs.

Close All Tabs Keyboard Shortcut

With Winter '19 release, use the Shift+w keyboard shortcut to close all of your unpinned tabs at once.

External Objects in Lightning Console

With Winter '19 release, External Objects are now supported in Lightning Console.

Visualforce Overrides in Console Apps

With Winter '19 release, Visualforce Overrides (new, edit, view, tab, list, and clone) are now supported in console apps.

Field History Tracking Data for 18 months ONLY

With Winter '19 release, Salesforce will retain field history tracking data for up to 18 months ONLY.

Salesforce will no longer retain field history beyond 18 months. To retain field history longer, you can purchase the Field Audit Trail add-on.

reCAPTCHA form in Web-To-Lead

With Winter '19 release, you can use reCAPTCHA verification form in Web-to-Lead process to avoid spam leads.

Retain Edit Rights for Previous Opportunity Owners

With Winter '19 release, you can now retain the Edit rights for the previous owner.

Salesforce Live Message

With Winter '19 release, Customers can now contact support center via Text Messages and Facebook Messenger to get their issues resolved. Read more exciting features of Live Message.

Live Agent Setup Lightning Experience

With Winter '19 release, Live Agent Setup is now available in Lightning Experience.

Einstein Bots with No Code Required

With Winter '19 release, you can now call Flows and Send an Email as Actions in Dialogs.

Salesforce Mobile Apps SDK Supports Einstein Bots

With Winter '19 release, the Snap-ins SDK for iOS and Android now includes Einstein Bot support.

Create Cases in Salesforce from YouTube comments

With Winter '19 release, you can now connect YouTube channel directly to Service Cloud. You must have a Social Studio account to sync your YouTube account.

Service Cloud Mobile App

With Winter '19 release, Android and iOS versions of Service Cloud Mobile update to version 1.1.0. Service Cloud Mobile is now localised for your org’s default language. Also ability to post Salesforce Files to the case feed is now available in Android as well.

New Template "Help Center" in Communities

With Winter '19 release, you can create a public self-service help center and make knowledge base public for your customers.

Custom Metadata Types

Reference Custom Metadata Types in Advanced Formula Fields

With Winter '19 release, you can now reference custom metadata type records in an advanced formula field.

Edit Custom Metadata Type Records in Memory within Apex

With Winter '19 release, you can now instantiate and edit custom metadata records in memory within Apex. DML operations aren’t allowed on custom metadata in Apex. For DML operations, you have to use the Apex Metadata API.


Mark Apex Methods as Storable (Cacheable)

With Winter '19 release, you can now use Apex method as storable (cacheable) instead of using setStorable() on every JavaScript action.

To cache data returned from an Apex method for any component with an API version of 44.0 or later, annotate the Apex method with @AuraEnabled(cacheable=true)

public static Account getAccount(Id accountId) {
    // your code here

Fire Platform Events from Batch Apex Classes (Beta)

With Winter '19 release, you can now fire Platform Events from Batch Apex Classes. This is currently a Beta feature.

To fire a platform event, a batch Apex class declaration must implement the Database.RaisesPlatformEvents interface.

public with sharing class YourSampleBatchJob implements Database.Batchable<SObject>, Database.RaisesPlatformEvents
   // your code here


Use Inherited Sharing to Secure Apex Code

With Winter '19 release, you can now specify the inherited sharing keyword on an Apex class, which allows the class to run in the sharing mode of the class that called it.

public inherited sharing class InheritedSharingClass{
// your code here


Streamline API Calls from Apex Code

With Winter '19 release, you can now use the new System.Url.getOrgDomainUrl() method to interact with Salesforce REST and SOAP APIs in Apex code. You can now also use the updated System.UserInfo.getSessionId() method to retrieve session IDs, even when your code runs asynchronously.

Http h = new Http();
HttpRequest req = new HttpRequest();  
req.setEndpoint(Url.getOrgDomainUrl().toExternalForm() + '/services/data/v44.0/limits');
req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());

HttpResponse res = h.send(req);

Extend Functionality with the Callable Interface

With Winter '19 release, you can now use System.Callable interface enables you to use a common interface to build loosely coupled integrations between Apex classes or triggers.

Enterprise Messaging

High-Volume Platform Events (Pilot)

With Winter '19 release, Salesforce has made enhancements in high-volume platform events to publish and process millions of events efficiently.

Receive Streaming Events in Lightning Component

With Winter '19 release, you can now listen streaming events by embedding the lightning:empApi component.

Change Data Capture (Developer Preview)

Change Data Capture publishes change events, which represent changes to Salesforce records. Changes include creating a record, updating a record, deleting a record, and undeleting a record.


Securely Retrieve and Display Third-Party Images in Visualforce Pages

With Winter '19 release, you can now use the IMAGEPROXYURL function to securely fetch images outside Salesforce org’s server. 

<img src={!IMAGEPROXYURL("http://exampledomain.com/pic.png")}/>

<apex:image value="{!IMAGEPROXYURL("http://exampledomain.com/pic.png")}"/>

Improve Security by Isolating Untrusted Third-Party Content with iframes

With Winter '19 release, you can now isolate HTML static resources on a separate domain using iframes. 

To reference a static HTML file on a separate domain, use $IFrameResource.<resource_name> as a merge field, where resource_name is the name you specified when you uploaded the static resource.

URL Redirect Parameters Are No Longer Case-Sensitive

With Winter '19 release, URL parameters used in Visualforce pages—retURL, startURL, cancelURL, and saveURL—are no longer case-sensitive.


Use Modify Metadata permission to Access to Metadata (Beta)

With Winter '19 release, you can now use a new permission "Modify Metadata" that enable access to Metadata without enabling access to Data. This is currently a Beta feature.

Deploy Using REST

With Winter '19 release, you can now use the Metadata REST API with all deployments. You need to have the Modify Metadata permission (currently in Beta) or the Modify All Data permission to perform deployments.

Winter '19 release has lots of other exciting and interesting features but these are just few of them. Please read the Winter '19 release notes for details.

Useful Resources