How to convert sforce.apex.execute to Lightning

Let’s see how to convert a Salesforce JavaScript button that uses sforce.apex.execute in to Lightning Experience.

The good news is you will reuse this code and the approach for all your similar buttons

Imagine you have this JavaScript button in your Salesforce instance. OK, probably your button is larger and more complex but the idea is the same


sforce.apex.execute("JSMMyExecuteClass", "myExecuteMethod", {param1:"Im param1",param2:"Im param2"}); 
window.location = '';

In the example above we want to invoke the method myExecuteMethod that belongs to the Apex class JSMMyExecuteClass and you will pass these parameters {param1:"Im param1",param2:"Im param2"}

After that, it redirects to

There’s not a direct solution (aka point and click) so we have to work a little bit

The first step is to create a Lightning component:


<aura:component implements="force:lightningQuickAction" controller="JSMMyExecuteClass" >

  <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>


The controller part of my component is called JSMMyButton.js

  doInit : function(component, event, helper) {
    var action = component.get("c.myExecuteMethodAura");
      "param1": 'Im param1',
      "param2": 'Im param2'
    action.setCallback(this, function(response) {
    var state = response.getState();

    if(state == "SUCCESS" && component.isValid()){
      console.log("success") ;
      var result = response.getReturnValue();

      var urlRedirect = ""+result;
      var urlEvent = $A.get("e.force:navigateToURL");
        "url": urlRedirect
      console.error("fail:" + response.getError()[0].message); 

In JSMMyExecuteClass we need to create an equivalent method to call from our js controller:

public class JSMMyExecuteClass {

  public String myExecuteMethod(String param1, String param2){
    return 'ok '+param1+' - '+param2;

  public static String myExecuteMethodAura(String param1, String param2){
    return new JSMMyExecuteClass().myExecuteMethod(param1, param2);

Create a quick action that points to our component

Add the quick action to the layout(s) you want

That’s all. You can use this approach again for others button you have that require some code.

Maybe this video is interesting for you: Journey to Lightning Experience: Convert Your JavaScript Buttons

Photo by Artem Sapegin on Unsplash

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s