0 comments on “Salesforce Lightning Migration Considerations”

Salesforce Lightning Migration Considerations

Salesforce Lightning Migration Considerations

Salesforce Lightning Migration:

The big step for every organisation who had Salesforce for a while on Classic mode is to look into Salesforce Lightning Migration.. with every Salesforce Release, the Salesforce Lightning framework is becoming more awesome and supporting most of the features from classic and all the new features are directly in lightning version.

Recently, I had an opportunity to attend 'Lightning Now Tour' and as a Business Analyst, I chose the admin specific training. Throughout the training, my focus was to learn and understand the new features of the Lightning framework.

Next time, I meet my clients I am going to analyze their businesses with respect to how the Lightning features can drive them and recommend the Lightning components, analyze and plan the stages of the work. During the training, my key focus areas were Business and Functional dimensions for the Lightning components. I am also sharing some of the key slides from the training presentation.

This training helped us to gain the insight and hands-on experience for the migration. The exercises focused on the new features and gave us a brief idea on customization and User app/profiles permissions.

Based on our company experience on Salesforce Classic to Lightning migration, we have categorized the migration process into different stages for a project as below:

Stakeholder Management:

1. When do I propose the new Lightning feature and the Drivers to start Lightning transition?

  • Internal Business Event
    • Merging of orgs
    • Start of a new process/project - take advantage of Lightning
  • External Business Event
    ○   Merging & Acquisitions - use the opportunity to transition on Lightning
  • Process standardization/ globalization
    ○   Use Lightning for standardization (path, flow, Kanban)
  • Sales Kickoff/All hands

2. How should I convince my client to migrate to Lightning?
Salesforce is slowly transitioning to its biggest innovation which is currently optional but a mandatory in future, the sooner the better. It has now reached a stable version.

  •   Better collaboration
  •   Faster and varied customization features
  •   Anywhere access like Salesforce1
  •   Lightning Builder: I can build an app with minimal development experience
  •   Better Reporting, Dashboards, and Analytics
  •   Easy and better integration support like Lightning Snap-Ins
  •   Help within reach - Lightning Customer Community

Here is a proven survey that highlights the Lightning features and its statistics:


3. Understanding the users by creating a Persona User story

  • Know your Salesforce users and roles
  • Discuss stakeholder goals and role-specific usage of Salesforce system
  • Establish primary and secondary personas like Managers, team members
  • Prioritise page functionality/layouts for each persona

4. How do we do that?
We do that by taking the proven and standardized approach below:

Capture 2

Schedule Management

Rollout options: Based on the Business, Users and their usage requirements, there are different rollout options.

Capture 3

Risk Management

1. Lightning readiness: Salesforce offers a systematic approach for the transitioning to Lightning with just one click.
● The readiness report identifies the gaps and risk areas for improvements
● Identify which users are ready
● 360-degree view on how the Lightning experience will improve the productivity

2. Create POCs app/components as per the business case and determine the right approach and iterate the same until a solution is achieved

Integration Management

  •  Switch to Lightning using the Transition Toolkit
    ○  Lightning Experience Readiness Check
  • Lightning Experience Visualforce check
  • Magic Mover for Notes & Attachments
  • Lightning Configuration Converter e. Salesforce Optimizer
  • Lightning Usage App
  • Lightning Transition Technical Considerations for any limitations

Capture 4

3. Visualforce Pages and Lightning Experience:

Capture 5

Change Management

It is very important to analyze and plan the change in a controlled environment for the transition into Lightning, considering the real-time analytics for Business Continuity. It is achieved as below:

  • Build a Strategy for change
    ○  Develop a Vision
    ○  Communicate the Vision
    ○   Empower Middle Managers to participate in the Change
    ○   Identify and use Short-term wins to stimulate adoption+
    ○  Persist in advancing the Vision
  •  Identify a Core team

Capture 6

  • Accelerate user Adoption through Change Management and Enablement

Capture 7

  • Avoid future Technical Debt: If the users are still using Classic, it is best to avoid unsupported Lightning components/apps for the future component developments or app installations. Here are the others:
    ○  Enable MyDomain
    ○  Don’t create JavaScript buttons
    ○  Don't add Notes and Attachments and Documents, use Enhances Notes and Files instead
    ○  In Visualforce: Avoid iFrames, window.onlocation

The Upshot

This training gave us the knowledge required to enter the Salesforce Lightning world and make recommendations for businesses. We also had an opportunity to meet and interact with the Salesforce team for any queries and met some great people and shared knowledge and expertise. It is important to keep revisiting the concepts in detail depending on the business needs.

"We @ Techforce Services are specialized in Salesforce Development - Apex, Visualforce and Lightning, API Integrations. We also cover Salesforce Setup, Implementation & Customization".
0 comments on “Lightning Now Tour for Developers”

Lightning Now Tour for Developers

Lightning Now Tour for Developers



This post is a summary/key takeaways from the Salesforce Lightning Now Tour for Developers in Sydney organized by Salesforce in June 2018.

The workshop began with an introduction to the Lightning platform. The introduction talks about Lightning as next level User experience, Lightning as new UI framework and Lightning as an Ecosystem.

Key tools that help in the switch to Lightning

  • Lightning Experience Readiness Check - A report with an assessment of the Org which shows what areas to be addressed is Salesforce.
  • Lightning configuration converter - Available starting Summer 18 release, this tool scans the org for simple JavaScript buttons and converts them to Lightning alternatives such as Lightning components, quick actions and other solutions without changing the original buttons.


  • Lightning usage App - This new App can be very handy to monitor adoption and usage of Lightning experience. It includes key metrics such as Daily/Monthly Active Users, number of users switching to classic.

Using Visualforce in Lightning

Salesforce would continue to support Visualforce and it can be used in Lightning:

  • As a Visualforce Tab
  • Embed in a Standard page layout
  • Global quick actions
  • Lightning component

Use to style Visualforce pages to match the Lightning Experience UI when viewed in Lightning Experience

Use SLDS (Salesforce Lightning Design System) for custom markup to always look like Lightning experience.

Developing in Lightning

  • Component Library - Centralized reference guide of all components with code samples


  • Use Lightning inspector Google extension to inspect Lightning cache, view performance of page and component rendering step by step.
  • Lightning test service using Jasmine, MOCHA

Customizing UI with Lightning components

  • Classic pages vs Lightning pages

Classic pages are compiled on the server and sent to a client as an HTML markup. When a line item is changed, an entire page is sent to the server.

Lightning pages are assembled on the client from component definitions. When a line item is changed, just the message that is sent to the server is limited to the data required.

  • Lightning component structure


Salesforce Lightning Design System (SLDS) provides:

  • Design Guidelines
  • CSS Framework
  • Component Blueprints
  • Styling Utilities
  • Design Tokens
  • Icons

Block Element Modifier naming in SLDS

.house { block or component name }

.house__door { element or component part }

.house_red { modifier or component variation }

.house__door_white { variation of a component part }

Example: .slds-text-heading_large

Base components

  • These are the Building blocks that make up the Lightning experience user interface. 
  • These components talk to Salesforce via Apex.
  • ‘init’ event is used to 'Bootstrap' the component     

Lightning Data Service

  • Use Lightning Data service to Create, Edit or Delete in the lightning component without the need to write Apex.
  • Benefits of LDS include no Apex, no, built-in FLS and sharing, auto-notify on record changes, declarative CRUD operations.

2018-06-12 (3)

2018-06-12 (2)

Events and Actions

The lightning framework uses Events to communicate data between components. Events are triggered by User actions such as a click of a button.

The overall experience of the workshop

The exercises involved create a reusable lightning component that is plugged into a record page that dynamically refreshes when the data on the record page is changed.

This Use case is closer to the real-life scenario and developers can relate it to some of the examples they encounter in everyday work.

Although most of the content used in the workshop is available on multiple websites, this session stands out due to the effective way of explaining concepts behind Lightning features.

And since it was a hands-on session, participants had a chance to discuss and understand the functionality of each block of code.

Working with a group is always a joy and when you are stuck somewhere or missed a point, other participants were ready to help.

Due to the length of the workshop, it was possible to maintain slow pace while trying to complete the exercise giving enough time for everyone to complete.

I would encourage every developer to attend workshops like these because the instructors are the people behind these products and they know firsthand how it works and why it was designed that way.

"We @ Techforce Services are specialized in Salesforce Development - Apex, Visualforce and Lightning, API Integrations. We also cover Salesforce Setup, Implementation & Customization".
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
3 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 Lightning Component Framework Specialist – Trailhead Superbadge”

Salesforce Lightning Component Framework Specialist – Trailhead Superbadge

Salesforce Platform Developer II

I’ve successfully completed the Lightning Component Framework Specialist superbadge & this post documents some of the tips & tricks/gotchas that I noticed as I progressed thru this superbadge..
Overall it took me close to 7 hrs (split across 3 days) to complete this with the below breakdown of steps..

  • Day 1 – Step 1, Step 2, Step 3
  • Day 2 – Step 4, Step 5, Step 6
  • Day 3 – Step 7, Step 8, Step 9, Step 10

Note: This superbadge is both a direct part of the Salesforce Platform Developer II certification and also required to unlock the Advanced Apex specialist superbadge which is again part of the Salesforce Platform Developer II certification
below is the list of points I noted down (categorized by Steps).. hope this helps you if you are working on the superbadge.
Step 1
make sure you read the prerequisite steps and complete all of them.

  • use a New Trailhead Playground environment,
  • disable the component cache in the setup
  • install the unmanaged package, 
  • understand the naming conventions to be used in the javascript controller & helper methods
  • review the data model of the objects introduced by the unmanaged package and check if the data has been imported into those new objects.

Step 2
Read & Understand the use case and visualise the layout of the entire page and how the individual components are fitting in and communicating between them.

  • this step entirely focuses on the BoatSearchForm component so make sure the UI of this component is fully ready
  • make sure the “New” button visibility is controlled by checking the support for the createRecord event
  • create both the Lightning page and the Lightning app containing all the 3 components we created before.

Step 3

  • This step focuses on the BoatSearchResults component
  • you will be creating a component to handle the display of each boat tile

Step 4

  • This step focuses on the communication between the search form & the search results component and how the search results refresh based on the selected boat type
  • make sure the FormSubmit lightning event is of type Component and not Application

Step 5

  • The BoatSelectedEvent is of type Application

Step 6

  • make sure the BoatReviewAdded lightning event is of type Component and not Application
  • In the AddBoatReview component, create both the controller and helper methods and make sure from the helper method and set the response back to the boat review attribute or log the error back to the browser console

Step 7
Step 8
Step 9
Step 10
Use the Salesforce Developer Forum and Stack Exchange discussions when you have exhausted all the options you can think of while solving a Step.. without trying your own attempts, referring these discussion threads will not help..
Good luck with the Super Badge and also with the Platform Developer II Certification.
“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.

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.