Salesforce will turn on Lightning Experience on a rolling basis starting with the Winter ‘20 release for all orgs with Supported Editions and User Licenses for Lightning Experience.

After the update, users will still have access to Salesforce Classic when Lightning Experience is turned on, however for a limited time. Currently, users may take advantage of the built-in lead time to get used to the formal change coming next year, by selecting the Turn on Lightning Experience update that appears under Critical Updates.

Utilize this action to verify your organization’s existing features and customizations in the new interface and to prepare your users via change management. Start now to ensure a better experience for everyone when Lightning Experience is turned on later. Every week, starting the Sunday after Lightning Experience is turned on, Lightning Experience-enabled users who are working in Salesforce Classic are automatically logged into Lightning Experience. Users can switch back to Salesforce Classic as needed, but again, for a limited time.


WHAT’S THE TIMELINE FOR THIS UPDATE?

Beginning in Winter ‘20, the update starts to auto-activates. See the auto-activation date listed under Critical Updates for your organization’s specific auto-activation date.

WHICH EDITIONS AND USERS ARE AFFECTED?

All users with the Lightning Experience User permission enabled are affected by this critical update. This includes all users with: (1) Standard profiles, which automatically include the Lightning Experience User permission by default and (2) Custom profiles or permission sets that have the Lightning Experience User permission included.

Set Up Users for Lightning Experience

HOW CAN YOU PREPARE FOR THE UPDATE?

Salesforce offers excellent transition tools that automate and speed up the process. The Lightning Experience Transition Assistant is a one-stop shop for all of the recommended steps and tools that you need; but of course, DaizyLogik is available to assist clients as well.LexNov2019TipsDaizyLogik has done several upgrades to Lightning now, and depending on the timing of the move and the level of customization in the Salesforce instance, the level of effort has been between do-it-yourself to “you need a developer”.

Salesforce has continually improved the automatic inventory of artifacts that need special attention during a Lightning conversion, also known as the Readiness Check. The Lightning Experience Migration Assistant has been replaced by the Lightning Experience Transition Assistant, your central hub for all of the recommended activities, tools, and resources for a successful transition. There are now Beta versions of tools to inventory and convert JavaScript buttons, Visualforce pages, and URL hacks.

Some of the artifacts can be converted automatically by Salesforce, but for those more complicated cases that the tools cannot convert, you will need a consultant and possibly a developer to build the equivalent button, link or page navigation in Lightning.

Specifically, we want to show how we leveraged the power of Lightning Components to solve some of the more complicated cases we ran across.

LEVERAGING LIGHTNING COMPONENTS

While working on converting the HomeKeeper app to Lightning, we had to overcome a layout limitation that required a custom approach. To learn more about the interesting case of displaying objects with larger number of fields in Lightning we invite you to read more in our existing blog: HomeKeeper, A Fieldset Container Component.

CONVERTING COMPLEX URL HACKS

Another complex case in a Lightning migration is converting complex URL hacks that require pulling information from across several objects to pre-populate a new record screen. In Salesforce classic it was possible to craft quite complex URL Hacks that could auto-populate fields on a new record screen for the convenience of the user. URL Hacks have been for the most part replaced with quick actions in Lightning. For simple cases, it is quite straightforward to replace a URL Hack with a quick action, and there are many examples available on how to do it.

However, let us assume that you have a more complicated scenario to support your organization’s program management. Each of your contacts is a ‘participant’ in one of your programs. Each Participant has a Case Record and an Enrollment in the Program. Under the Enrollment you would like to record a Service Participation, every time the participant takes part in an activity within the Program. Your data would be structured something like this:lex_url_hack

In SF Classic, every time you wanted to create a Service Participation, your URL Hack would allow you to pull data from Contact, Case Record, Enrollment. and even Program. Your URL Hack probably looked something like this:

/a0Q/e?
CF00Ni0000007AAAA={!Enrollment__c.Name}
&CF00Ni0000007bbbb={!Enrollment__c.Program__c}
&CF00Ni0000007CCCC={!Enrollment__c.Case_Record__c}
&retURL=/{!ServiceParticipation__c.Id}
&RecordType={!IF(Case_Record__c.RecordType =”DEMO”, “AAAA0000000AAAA”, “BBBB000000BBBB”)}

This scenario is beyond a simple Quick Action, but can be accomplished by pairing a Quick Action with a Lightning Component.

CREATING A QUICK ACTION/LIGHTNING COMPONENT DUO

  • To create this combo, you will first need to create a Lightning Component.
  • From the developer console select File-> New Lightning Component.

NewLEXComp

  • Remember you are creating a bundle of 8 files at this time but you won’t be using all of them.
  • You will be using the Component, Controller and the Renderer
<aura:component implements="force:lightningQuickAction,force:hasRecordId" controller="LEX_Controller">
<aura:attribute name="recordId" type="String" /> 
<aura:handler name="init" action="{!c.doInit}" value="{!this}" /> 
</aura:component>
({
// this method is called when component initializes
doInit : function(component, event, helper){ 
   var progEnrollment = component.get('v.recordId'); 
   var action = component.get("c.getEnrollment"); 
   action.setParams({ "eid": component.get("v.recordId")});

   action.setCallback(this, function(response) {
      var state = response.getState();
      if (state === "SUCCESS") {
         var createRecordEvent = $A.get("e.force:createRecord"); 
         createRecordEvent.setParams({ 
         "entityApiName": "ServiceParticipation__c",
         //set record type and other parameters
         "recordTypeId": (response.getReturnValue().Case_Record__r.RecordType.Name = 'DEMO' ? '000000000000000' : '011100000011111'),
         "defaultFieldValues": {
            'Program_Enrollment__c' : progEnrollment,
            'Program__c' : response.getReturnValue().Program__c,
            'Case_Record__c' : response.getReturnValue().Case_Record__c, 
         } 
         }); 
         createRecordEvent.fire();
     } else if (state === "INCOMPLETE") {
         alert("incomplete");
     } else if (state === "ERROR") {
         var errors = response.getError();
         if (errors) {
            if (errors[0] && errors[0].message) {
               alert("Error message: " + errors[0].message);
            }
         } else {
            alert("Unknown error");
         }
    }
});
$A.enqueueAction(action); 
} 
})
({
   // Your renderer method overrides go here
   afterRender: function (component, helper) {
      this.superAfterRender();
      window.setTimeout(
      $A.getCallback(function () {
         $A.get("e.force:closeQuickAction").fire();
      }), 
   50);}
})
  • Now that you have the Lightning component, you will need to create a new Quick Action under the object where you wish to place the Quick Action.
  • When you create the Quick Action, select Action Type : Lightning Component, and select the component you created previously from the drop down.

Quick Action with Lex Component

  • Final step will be to add the Quick Action to the layout.

By combining a Quick Action with a Lightning Component you have created a button that allows your users to create new pre-populated records quickly without missing those old URL Hacks.

Need help putting together Lightning Components to replace your URL Hacks? Contact us.

For more information and frequent updates, make sure to register for our newsletter!