6 comments on “Salesforce Lightning Experience Reports & Dashboard Specialist – Trailhead Superbadge”

Salesforce Lightning Experience Reports & Dashboard Specialist – Trailhead Superbadge

Lightning Experience


We at Techforce Services love Trailhead and take the challenge to complete most of the trails, modules, projects & superbadges as its released. Last week we started with the newest of the superbadges “Lightning Experience Reports and Dashboards Specialist” and this post is a summary of some key tips to help you solve the superbadge. These are not direct answers or solutions that you can replicate, but they will help you clear the hurdles in each of the steps.

Prework and Notes to Earn this Superbadge

  • Set Up a new Trailhead Playground for this superbadge, It will help you reduce a lot of configuration issues
  • Don’t forget to add a Value (SolarBot) into Opportunity type (Picklist Value), It is the one of the key filter value in Reports
  • Make sure all Public Groups created properly (better copy/paste the names from the superbadge details to avoid silly mistakes).
  • The Most Important thing is Some of the terminologies used not match the name as it appears in the UI (For Example Solution=Report Type, Categories=Bucket Field and etc)

Step 1:

  • SolarBot report folders use the naming convention SolarBot [team/group] Reports.([team/group replaced by Executive, Sales, Support, R&D]
  • Report Location and Report Type are very Important. Tip: Collect all SolarBot information, whether or not they have related SolarBot Status records
  • Pay attention when Moving reports from existing folder to New Folders
  • Get some practice for Editing Report type page layout to remove particular fields Tip: Create a dummy report type page layout and move unwanted field into that, Finally delete the page layout

Step 2:

  • Accounts Without SolarBot Opportunities
    Create a Cross Filter as below
    Account without Opportunity
    Opportunity type = Solarbot
  • SolarBot High-Case Candidates
    Use Summary field(Number of SolarBots on Account Object) which already created for you(Number of SolarBots=0)
  • SolarBot Warranty Call Sheet
    Pick only Warranty Expired Accounts(Under Warranty?=False)

Step 3:

Top Case Drivers by SolarBot Ownership

  • Report Type is Case(Standard)
    Row Summary field is: SOLARBOT OWNERSHIP
    Column Summary Field is: CASE REASON
  • SolarBot Status Averages
    Report Type is SolarBot and Status Date(Custom which you have created)

Step 4:

  • Temperature to kWh Research
    Make sure the Bucket field value ranges are correct
    Group by Temperature Range (Bucket field)
    Remove Details, Subtotal, Grand Total

Step 5:

  • SolarBot Loyalty Revenue
    The formula is very Important
    Tip: IF the Sum of Number_of_SolarBots__c < 1 the Adjusted Expected Revenue is Just Sum of Expected Amount only otherwise The Adjusted Expected Revenue is Expected Amount + Expected Amount *10%
    The main conditions is The opportunity having Solarbot or not
    Chart is: Vertical Bar type

Step 6:

  • Sales Report Modifications
    Add Billing state field and group it
    Use Relative Date Filter for “Next 45 days”
  • Support Report Modifications
    Add Phone field and pick the Chart type as Horizontal Stack bar(tick the 100%) for the first report
    Change data by week instead of by day and Pick the Chart as Line type for the second report
  • R&D Report Modifications
    compare average kWh and average panel temperature by SolarBot model on another axis
    Place categories on the X-axis, with count on the Y axis
    Pick the Chart as Vertical bar type

Step 7:

  • SolarBot Pipeline by Stage
    Report: SolarBot Loyalty Revenue
    Component Type: Vertical Bar
    Tip:Max Groups Displayed = 9
  • Case Drivers and SolarBot Ownership
    Report: Top Case Drivers by SolarBot Ownership
    Component Type: Vertical Sack Bar
    Tip: Stack to 100%
  • Temperature and Kilowatt Hour Relationship
    Report: Temperature to kWh Research
    Component Type: Line Type
    Tip:X Axis=Temperature Range and SolarBot Model
    Y Axis=Average KiloWatt Hours
  • SolarBot Evangelism Countdown
    Report: Accounts without SolarBot Opportunities
    Component Type: Gauge Type
    Tip: Careful the Segment Range Setting
  • Opportunity Overview
    Report: SolarBot Loyalty Revenue
    Component Type: Lightning Table
    Tip: Set Prospecting first on the list stage opportunities

Step 8:

  • Color Scheme
    Set the Dashboard Theme as Dark Except Opportunity Overview component
    Pick “Sunrise” as Dashboard Palette
  • Marquis Accounts
    Create a Dashboard Filter and name it as Marquis Accounts
    Add 2 mentioned Account
    Pick account name in 1st and 5th component in instead of primary partner
  • SolarBot App Page
    Add this dashboard into SolarBot App Page
  • Schedule the Report
    Schedule this report to you for every Tuesday 9 a.m

Lightning Superbadge

Hope this will help you Trailblazers to solve this superbadge. Thanks for visiting our blog. Checkout our other blogs on Trailhead superbadges 

Salesforce Advanced Apex Specialist – Trailhead Superbadge

Salesforce Lightning Component Framework Specialist – Trailhead Superbadge



0 comments on “Salesforce World Tour Sydney 6 March 2018”

Salesforce World Tour Sydney 6 March 2018

salesforce world tour
What is Salesforce World Tour

Most Salesforce World Tour Sydney 2018 events focus on creating buzz around the high-level ideas that the technology company is working on and World Tours are no different. This year there was a lot of discussion around the new Lightning interface, artificial intelligence, and the customer journey.There were many options to learn how to better use Salesforce. There was even a smartphone app to help you plan your day. This was really helpful as sessions overlapped and you could find yourself bouncing around to different sessions all day.

0 comments on “Using Visualforce components inside Salesforce Service console”

Using Visualforce components inside Salesforce Service console

I was recently working on enhancing a service console and got to learn a lot of things. One of the things I struggled with is embedding Visualforce page as a component inside a console. In this post, I would like to share at a high level, the steps involved in customizing service console using Visualforce component. Please note this post refers Salesforce classic UI.

0 comments on “Salesforce Platform Developer II Certification”

Salesforce Platform Developer II Certification

Salesforce Platform Developer II

If you are taking up the Salesforce Platform Developer II certification, then you should be aware of the new system under which you will be getting this credential.

  1. You need to complete the below 4 Superbadges in Salesforce Trailhead
    1. Apex Specialist
    2. Data Integration Specialist
    3. Lightning Component Framework Specialist
    4. Advanced Apex Specialist
  2. You have to register for the Platform Developer II Multiple choices exams in Webassessor and pass the exam
  3. Once you have completed all the 4 super badges, you will receive an email from Salesforce Trailhead team with the instructions to link your Trailhead and Webassessor accounts (Note – it might take up to a week for you to get this email after you completed all the 4 super badges)
  4. Following the instructions, You have to Link your Trailhead and Webassessor profiles and verify your profiles.
  5. After you have completed
    1. all 4 super badges thru Trailhead,
    2. passed the exam thru Webassessor and
    3. linked your Trailhead and Webassessor profiles,
  6. Salesforce will then award you the Platform Developer II credential. Note again – this might take up to a week once you have completed both 1 and 2 and linked and verified both your Trailhead and Webassessor profiles
  7. Here’s the reference from Salesforce Certification Knowledge Base about the overall process and a quick screenshot of the instructions
6 comments on “Salesforce Advanced Apex Specialist – Trailhead Superbadge”

Salesforce Advanced Apex Specialist – Trailhead Superbadge

Salesforce Advanced Apex Specialist - Trailhead Superbadge

Continuing my quest with trailhead #SeizetheTrail , the last one in my list is the Advanced Apex Specialist Superbadge ..  I started working on this superbadge and this post is to document some of the findings / tips / gotchas as I progress thru this one..

Step 1

  • make sure you create the Custom metadata records with the exact same names given (that matches the product families)
  • in the constants apex class, declare all the properties as public static

Step 2

  • OrderTrigger needs to handle only after update event
  • OrderTrigger should use the Orderhelper internally for the rollup
  • Don’t forget to remove the “with sharing” from the orderHelper class

Step 3

  • Override the Add and New button under Product object to use the visualforce page
  • Product2New visualforce page
    • in the pageblock table columns, use the field labels as headers using $ObjectType
    • update the column values to use the productRecord fields inside the productwrapper
    • use apex:chart to display the horizantal bar chart in a separate pageblock above the table
    • reRender the required components from the Save and Add buttons
  • Product2Extension apex class
    • Make the Controller class “Without Sharing”
    • add the inner class ProductWrapper
    • replace the list of products with list of productwrapper
    • use Savepoint in the Save method
    • iterate thru the productWrapper and extract the products and pricebookentries and insert them separately
    • use try catch block and do a rollback if there are any errors
  • ChartHelper apex class
    • Make the ContChartHelperroller class “Without Sharing
    • move the chart data initialisation logic to Chart Helper class
    • make the GetInventory method @AuraEnabled

Step 4

This is probably the simplest of all the steps.. update theTestDataFactory class to handle the key requirements given..

  • Make sure all the methods in the TestDataFactory class are Public Static and the class is marked “with sharing”
  • all the construct methods should create the mentioned objects with the required fields and unique names and return the records without inserting them
  • use the Insert method to call all the construct methods and then insert the records returned from those methods.

Step 5

  • Update the VerifyQuantityOrdered method in TestDataFactory with a System.Assert to compare the Quantity Ordered between the Updated product and the original product plus the incoming quantity
  • run both OrderTests and Product2Extension_UnitTest and make sure both the test classes are passing  and the classes they are intended to cover has more than 75% coverage

Step 6

  • Don’t forget to create the chatter group “Inventory Announcements” .. mark it public and tick the disable auto archive checkbox and use the description text given
  • update the product trigger to handle only after update and use the product helper class to handle the after update logic
  • update the product helper class AfterUpdate method to use the postAlerts method which in turn will be using the AnnouncementQueueable class to process the chatter group notification
  • AnnouncementQueueable is a Queueable class and uses ConnectApi to post the announcement

Step 7

  • Override the New and Edit buttons under the Order object to use the OrderEdit visualforce page

Step 8


This was my last superbadge and by completing this Advanced Apex Specialist Superbadge , I’m now eligible for Platform Developer II certificate provided I clear the multiple choice exam.. 🙂

Good luck to you all if you are working on this superbadge or preparing for the Salesforce Platform Developer II certification.


2 comments on “Salesforce to Salesforce Integration using Named Credentials”

Salesforce to Salesforce Integration using Named Credentials

We recently had an integration project where we got an opportunity to use “Name Credentials” for one of our clients, to integrate two Salesforce instances. We found it very easy and useful to configure, maintain and implement using Named Credentials to connect two Salesforce Org. We believe it will be useful for you all and so here we are sharing some of the key features and high-level steps to configure “Named Credentials”.

Following are benefits of using Named Credentials:

  • A named credential specifies the URL of a callout endpoint and its required authentication parameters in one definition.
  • You can skip remote site settings, which are otherwise required for callouts to external sites, for the site defined in the named credential.
  • Using Named Credential, we can make a call out to an external system without supplying username or Password in the code.
  • By separating the endpoint URL and authentication from the callout definition, named credentials make callouts easier to maintain. For example, if an endpoint URL changes, you update only the named credential. All callouts that reference the named credential simply continue to work.
  • It supports two types of authentication protocols for now: Basic Authentication(Password authentication) or OAuth

To reference a named credential from a callout definition, use the named credential URL. For example: callout:My_Named_Credential/some_path.

Following are the steps to connect to an external system using “Named Credential”:

  1. Create Connected App
  2. Create Authorization Provider
  3. Define Named Credential
  4. Use Apex to connect in 5 lines of code
  1. Create Connected App:
  • Navigate to “Setup | Build | Create | Apps | Connected Apps” and click on New
  • Provide all necessary information
  • In “Callback URL” enter the temporary Salesforce URL. We will come back again on this step later to provide Callback URL
  • Check “Enable OAuth Settings” checkbox to use OAuth
  • Select the scope
  • Save

“Consumer Key” and “Consumer Secret” will be provided once you save this. We need this information on the next step.


  1. Create Authorization Provider:
  • Navigate to “Setup | Administer | Security Controls | Auth. Providers | Create New”.
  • Select “Salesforce” as Provider Type
  • Provide “Consumer Key” and “Consumer Secret” from the previous step
  • In “Default Scope” enter the value as “refresh_token full”. “refresh_token” and “full” should be separated by space
  • Finally, Save

Once you save, it will provide you the set of URLs in “Salesforce Configuration” section on the same page. Copy “Callback URL” and edit Connected App we created in the previous step and set this URL as Callback URL.



  1. Define Named Credentials:
  • Navigate to “Setup | Administer | Security Controls | Named Credentials | New Named Credential “.
  • Provide the name (label)
  • In URL, provide URL of Salesforce instance where we want to Connect
  • Select “Named Principal” as Identity Type
  • In our example select “Authentication Protocol” as OAuth 2.0
  • Select the “Auth Provider” created in the previous step
  • In scope, enter the value as “refresh_token full”
  • Check “Start Authentication Flow on Save” (this is important)
  • Save

After clicking on “Save” a new page will open to authenticate Salesforce Org using OAuth2 connected App. Log in using the credentials of the Salesforce instance that you want to connect to.  If authentication is a success, you can see a message like “Authenticated as ”.


  1. Use Apex code to connect:

Use the lines similar to the below in your Apex code.

HttpRequest req = new HttpRequest();
Http http = new Http();
HTTPResponse resp = http.send(req);

[Note: Perform the first 3 steps in both the Salesforce orgs to be integrated.]
“We @ Techforce Services are specialized in Salesforce Development – Apex, Visualforce and Lightning, API Integrations. We also cover Salesforce Setup, Implementation & Customization”.

Talk to us to know how we can Simplify your Salesforce journey.