Image for post
Image for post

A common use case

Lightning Data Service is a great tool allowing you to use the same cache as Lightning Experience, bringing better performances and less code to write.

Using Lightning Base Components like lightning-record-form or using out-of-the-box getRecord or createRecord methods will make record editing much easier. Thanks to the shared cache from Lightning Data Service, updating a record from your custom component will automatically update the standard record page, and vice versa.

Still, you’ll most likely end up at some point using Apex, if your use case is a little bit more complex than that, for instance involving a web service or multi-record editing. …

This is a two parts blog series: Part 1 is focused on a simple command to export/import data, while Part 2 handles with more advanced use cases.

Image for post
Image for post


Having an easy to use command to export/import data is nice, but at some point you may be stuck with more complex use cases.

This happened to me with a quite basic one though. The command described in the first part of this blog post series (see here if you haven’t read it) was intended to be as easy to use as possible. But what if you need to handle a relationship between the same sObject ? For instance Account and Parent Account. …

This is a two parts blog series: Part 1 is focused on a simple command to export/import data, while Part 2 handles with more advanced use cases.

Every time I begin a new project for a customer and that we start talking about using Scratch Orgs, one of the question that keeps coming up is “How do I load data ?”.

Image for post
Image for post

What’s already available

The Salesforce CLI comes with a nice set of commands to export data, sfdx force:data:tree:export and its counterpart to importsfdx force:data:tree:import. …

Each day we will reveal our “tip of the day” regarding the #Winter20 release.

Image for post
Image for post
Icon made by wanicon

What’s new ?

When you’re in App Launcher, you can now right click on an app, and open it in a new tab !

Image for post
Image for post

We love it !

Yes we love it, and why is that you’ll ask ? Well as an app builder and developer, I spend a lot of time in setup. …

Image for post
Image for post

A few months back, I had the opportunity to talk to Xi Xiao who is running the Salesforce Way website, a Podcast and a YouTube channel.

The result of this talk is a 40mn podcast where Xi Xiao asked me several questions about Unlocked Packages, how these are working, how we’re using them, plus some more advanced topics.

If you never tried Unlocked Packages this podcast can be a good starter as Xi Xiao really covered the questions you may have before starting using it.

You can find the episode we made together on his website and on iTunes:

I like podcasts as it’s easy to listen on the go and usually a good way to learn new stuff, so I definitely recommend having a look at the one from Xi Xiao. …

If you’ve started using Salesforce DX, it’s likely you’ve already seen this picture of happy Trailhead characters moving metadata from the so-called “Happy soup” to separate projects:

Image for post
Image for post

In an older blog post, I wrote about our first steps with DX and Unlocked Packages. We started small with a new project that had no dependency with the existing org’s metadata.

At some point however, having more complex projects required to split metadata in separate projects and packages.

I’m not going to talk about the best strategy to split your org in separate projects, but if you’re interested (and I’m sure you are), you can have a look to the great blog post serie Working with Modular Development and Unlocked Packages on Salesforce Developer blog, or John Daniel & Dileep Burki’s talk at TDX18, Architecting Unlocked Packages in your Salesforce Org. …

Image for post
Image for post

Winter ’19 introduces a new component, lightning:empApi, that lets you easily receive streaming events directly in your Lightning Components. Another new feature that comes in Developer Preview in Winter ’19 is Change Data Capture. What’s best than doing a demo component to test these 2 new features ?

Change Data Capture

Change Data Capture is a really powerful feature that will send notification everytime a record is created, updated, deleted or undeleted. This is very handy to keep data consistent across all your applications. …

Since the Spring ’18, Second-Generation Packages can be installed in Production orgs. Three days after the release went out, we had our first DCP installed in Production. I’m very excited about this new tool, and thought it could be interesting to share our journey with it.

Image for post
Image for post

What is a Developer-Controlled Package ?

Except if you’ve been meditating in a cave for the last two years, you should have heard of Salesforce DX. DX is standing for Developer Experience, bringing to Salesforce Developers a better and modern development flow.

Image for post
Image for post

From planning to releasing, DX is bringing you better tooling, and as deployment has always been a challenging part of Salesforce development, I was very curious and excited about the new features coming with Second-Generation Packaging. …

Passing values from client-side to server-side is an important part of Lightning Component Development, and is pretty easy once you understood the way to write it. In theory.

Passing a value to a server-side controller

Let’s take a very simple example of a server-side call in a Lightning Component. There is 3 parts in this call:

  • An attribute value stored on the component markup
  • A server-side Apex controller that will receive and use the value
  • A client-side JavaScript controller that will make the link between them
Image for post
Image for post

A very basic component that would send a String to the server would look like this:


<aura:component controller="myApexController">
<aura:handler name="init" value="{!this}" action="{!c.callServer}"/>
<aura:attribute name=”myAttribute” type=”String” default=”Hello World”/>

JavaScript Client-side Controller

callServer : function(component, event, helper) {
var myAttribute = component.get("v.myAttribute");
var action = component.get("c.setAttribute");
action.setParams({ "myString" : myAttribute });
action.setCallback(this, function(response) {

var state = response.getState();
if (state === “SUCCESS”) {
// Do stuff
else {
console.log(state); …

Or how to transition from back-end to front-end development

Image for post
Image for post

In 2015, Salesforce unveiled #Lightning Experience, a whole new UI for the Platform. Not only was it a visual change, but also a complete revamp of the technology behind it.

Whereas Salesforce Classic used a page-centric model, reloading the entire page whenever you clicked on a link, Lightning Experience uses an app-centric model (like Gmail for instance): The app will first load, and then will only need to call the server for lightweight data, refreshing only parts of the screen and thus speeding up navigation.

On a developer’s perspective, Lightning Experience makes use of the Lightning Component framework which is a complete new development experience for Salesforce developers. …


Fabien Taillon

Salesforce MVP | CTO @TexeiFrance | @ParisDUG Co-organizer | @FTDreamin Team

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store