How I prepared for Salesforce certified app builder exam

23:41 30 Comments A+ a-

How I prepared for Salesforce certified app builder exam

Hi All,

On 31st August 2018 I cleared Salesforce Platform App Builder Certification exam. And as soon I posted on social media I started to get question regarding the preparation that how I prepared, So finally I am writing my all the steps I took for this certification. Before starting I would like say a big thanks to my collegues and mentors(Aslam Bari , Ranu Bari , Naveen Soni) for motivating and guiding me for this exam.

When I decided for App builder exam, I got a very first question asked from my friends that, you are a developer then why you are going for this certification. You must go for Platform Developer2.So here is answer for all.
As we all know salesforce provides so many out of the box No Code  tools, using them we can complete so many business requirements.We do not need to write a single line of code. So being a developer I should be having knowledge about these tools,becasuse it can save my efforts and increase my work efficiancy, and I was having that much knowledge. Then Why should not I appear in exam and get my skills certified from the salesforce. It was not wasting money/time. It was an investment so I did it.

So let’s start talking about exam. I took around 25 to 30 Hours in preparation of exam.
First of all I took a deep review of official exam guide, and analysis about which section cover higher ratio of question in exam and how much I am confident in that. So if you see the exam guide you will see that these are the topic which covers more then 70% of exam. And to clear exam you need only 63%.

Data Modeling And Management(20%)
Business Logic And Process Automation(27%)
User Interface (14%)

You need to focus more on these topics. Most the question for these topics will be scenario based question. While answering the question remind the consideration for every option. It will help you to eliminate the answer so you can select the right answers.

There are some another topic also
Salesforce fundamentals(8%) : In this section very basic questions would be there, Such as a scenario will be given and you need to identify that should you search for a solution on appexchange.

Social (3%): 1 or 2 question would be in exam.

Reporting(5%): Read about the report types and standard reports available. Which reports are available for chart.

Mobile(5%): Read about the customize saleforce mobile app. Such as navigation, buttons on detail page etc.

App Devlopment(8%): Difference between managed and unmanaged package, when to use change set and when to use other migration tools.

Here are some other steps which I took.

  • Also read about the consideration about process automation tools, lookup/master detail fields, formula fields , roll upsummary. So you can understand when not to use them.

  • I also used an mobile app cram which was suggested by one of my Salesforce Ohana friend Bharat Kumar. On this app you will find flash cards , which are helpful for revising the topics. I used to do practice on this app before going to bed. And it was really helpful. I would like to say a big thank to Bharat for letting me know about this app.

Let me know your suggestions in comment section.

lightning:empApi Salesforce Winter19

03:54 2 Comments A+ a-


Hi All,
Today I will talk about brand new lightning component lightning:empApi , Which was delivered in winter 19 salesforce realease.

When to use empApi:  To see live data in on lightning component.

We had serval options to do this such as polling which is an old technique in this we call server (Apex class) again and again. Or we use streaming api, and cometD JS (external javascript) which requires lots of efforts.

Drawbacks of polling (Calling apex server) : In this we need to travel to server after every particular interval. In this sometimes our server trip is useless , if we do not have any latest data there. 

But now we have an native lightning component (lightning:empApi) , which is very helpful and reducse developer's effort.

lightning:empApi can only be used in desktop browser only and require API version 44.0 and higher. lightning:empApi can be used with platform events, PushTopic events, generic events and Change Data Capture events.

Let's see an example of lightning:empApi with platform events. My colleague Aslam bari already have written an outstanding blog (quick demo salesforce platform events) on Platform event.

In our example we will display all case which has status = open. We would not reload our component and will see live/latest data.


So firts of all we will create a new platform event.
I have created platform event (UpdateRecord__e).

Then we need to publish it whenever a new case is inserted with status = 'open'. As well as you can also publish platform event when status is changed from open to any other or vice versa. And same you can do for delete also.


trigger CaseTrigger on Case (after insert) { List<Case> listOfOpenCase = new List<Case>(); for(Case objCase :{ if(objCase.Status == 'Open'){ listOfOpenCase.add(objCase); } } if(listOfOpenCase.size() > 0){ EventBus.publish(new UpdateRecord__e(message__c = listOfOpenCase[0].id)); } }


<aura:component controller="empApiExampleController" implements="force:appHostable"> <aura:handler name="init" value="{!this}" action="{!c.doInit}"></aura:handler> <aura:attribute name="listOfCases" type="List"/> <aura:attribute name="subscription" type="Map" /> <aura:attribute name="showSpinner" type="Boolean" default="false"/> <lightning:empApi aura:id="empApi"/> <aura:if isTrue="{!v.showSpinner}"> <lightning:spinner size="small"/> </aura:if> <lightning:card title="empApi Example" footer=""> <div> <table class="slds-table slds-table_cell-buffer slds-table_bordered"> <thead> <tr class="slds-line-height_reset"> <th class="slds-text-title_caps" scope="col"> <div class="slds-truncate" title="Opportunity Name">Case Subject</div> </th> <th class="slds-text-title_caps" scope="col"> <div class="slds-truncate" title="Account Name">Priority</div> </th> <th class="slds-text-title_caps" scope="col"> <div class="slds-truncate" title="Close Date">Reason</div> </th> </tr> </thead> <tbody> <aura:iteration items="{!v.listOfCases}" var="objCase"> <tr class="slds-hint-parent"> <td data-label="Case Subject"> <div class="slds-truncate" title="Cloudhub">{!objCase.Subject}</div> </td> <td data-label="Case Priority"> <div class="slds-truncate" title="Cloudhub">{!objCase.Priority}</div> </td> <td data-label="Case Reason"> <div class="slds-truncate" title="Cloudhub">{!objCase.Reason}</div> </td> </tr> </aura:iteration> </tbody> </table> </div> </lightning:card> </aura:component>


({ doInit : function(component, event, helper) { helper.getData(component); // Get the empApi component. var empApi = component.find("empApi"); // Error handler function that prints the error to the console. var errorHandler = function (message) { console.error("Received error ", JSON.stringify(message)); }; // Register error listener and pass in the error handler function. empApi.onError(errorHandler); var channel = '/event/UpdateRecord__e'; // platform event name var replayId = -1; var callback = function (message) { console.log("Event Received : " + JSON.stringify(message)); helper.getData(component); }; // Subscribe to the channel and save the returned subscription object. empApi.subscribe(channel,replayId, callback).then(function(newSubscription) { component.set("v.subscription", newSubscription); // can be used if you want to unsubscribe event }); } })


({ getData : function(component) { component.set("v.showSpinner",true); var action = component.get('c.getListOfCases'); action.setCallback(this,function(response){ if(response.getState() === "SUCCESS"){ component.set("v.listOfCases",response.getReturnValue()); component.set("v.showSpinner",false); } }); $A.enqueueAction(action); } })

empApiExampleController (Apex)

public class empApiExampleController { @AuraEnabled public static List<Case> getListOfCases(){ return [SELECT Id,Subject,Priority,Reason FROM Case WHERE Status = 'Open']; } }