How to Fix Salesforce Deployment Errors: Platform Encryption cannot be enabled for standard fields when Portals are enabled.

Go to Salesforce Classic UI and search under Setup for “Customer Portal” and Disable Login Enabled. You should move your portal to Communities where Platform Encryption is supported.

How to Fix Salesforce Deployment Errors: You may not modify the permission Connect Org to Customer 360 Data Manager while editing a Standard Profile

If you try to deploy the Admin profile and might get this error if you have Dev Hub enabled on your org. You need to edit the Admin profile and remove the following lines


How to Fix Salesforce Deployment Errors: source:push “You may not modify the permission Access Tracer for External Data Sources while editing a Standard Profile”

There are some permissions that are not applicable to a scratch org and this is one of those weird ones. Pushing the standard Admin profile to my scratch org I encountered this error.

You may not modify the permission Access Tracer for External Data Sources while editing a Standard Profile.

To fix this you need to edit and remove this specific profile permission. So far I cannot find any documentation about this TraceXdsQueries permission and what it actually does.


How To Enable SObject Intellisense in VSCode for Salesforce DX

Quick Tip.

Salesforce DX already comes with Intellisense for Apex classes and the different primitive types. Eg. Strings

For SObjects it’s a per-project setting you need to enable once you have your project created. Open the Command Palette and choose SFDX: Refresh SObject Definitions

What the command does under the hood is it will create a class definition of the SObject and store them under the .sfdx folder/tools folder. These don’t get committed to version control as the .sfdx folder is by default ignored.

Each class has properties that allows the Intellisense to work.

Once enabled you are good to go.

If you want more tips and information on Salesforce DX checkout my youtube playlist where I cover them in detail.

How To Get Started With Org Development Model With Salesforce DX

There are two development models you can follow with Salesforce DX.

First is the package model where you develop against a scratch org and prepare all the components that are needed to deploy, similar to change sets but smarter as it handles the dependencies for you. We will talk about this more in the future.

The other method is what you would be most familiar with if you have been developing with Salesforce for sometime now( IDE/Mavensmate/IntelliJ), you develop changes against a sandbox and move the metadata to deploy to the target org till you deploy to production.

With Salesforce DX you can still continue to develop against a sandbox. You do not need to enable Dev Hub for developing against a sandbox or DE org.

Requirements ofcourse if you should have VSCode installed, the VSCode Salesfor ce Extension Pack and the Salesforce CLI.

Boot up VSCode and Open the Command Prompt and type SFDX : Create Project with Manifest

The scaffolding created will contain a manifest folder with a package.xml

The default package.xml adds the base ApexClass, ApexComponent, ApexPage, ApexTestSuite, ApexTrigger,AuraDefinitionBundle and StaticResource.

Next is to Authorise the Sandbox you want to work on, Go to the command pallete. SFDX: Authorize and Org.

Next right click on the package.xml and choose Retrieve Source in Manifest in Org.

Once done you can start modifying your code. Right click on a file to deploy it to the Source Org or enable the auto deploy on Save settings.

That’s it, you should now be able to work with your existing sandbox.

Check out my video and subscribe if you want more tips and suggestions.

Fix for flowruntime:lookup Error With Salesforce Flows

If you recently used the custom lookup component while working on Salesforce Flows and get this error.

We can’t display component ‘flowruntime:lookup’, because it isn’t supported in Classic runtime. 

Chances are you still are on Classic. The component only works on Lightning. An easy fix is to enable the Lightning runtime in Flows.

  1. From Setup, enter Process Automation Settings in the Quick Find box, then select Process Automation Settings.
  2. Select Enable Lightning runtime for Flows.
  3. Save your changes.

How to Clean Up The List of Orgs on force:org:list on Salesforce DX

If you run the cli command sfdx force:org:list and see a bunch of old orgs you recently authorized or scratch orgs that you no longer use.

You can easily clean them up by logging off from the org.

sfdx force:auth:logout -u <alias>

You get this confirmation screen and important reminder if you want to reuse your scratch org you must know the pasword before logging out.

If you don’t need the scratch org you can delete them with the command below.

sfdx force:org:delete -u <alias>

Enable Auto Push or Auto Deploy With Salesforce DX on VSCode

The title says it all if you have been developing before on IDE/ Mavenmate/IntelliJ and started using Salesforce DX. One that gets pretty tedious fast is manually pushing your code to your scratch org or deploying to your non-tracked org(DE/Sandbox).

To enable auto push/deploy simply edit the .vscode/settings.json. This folder can be hidden on Windows or Mac. On a Mac open the Finder and hit CMD+Shift dot(.) to display hidden files.

Add the following settings and set it to true.

"salesforcedx-vscode-core.push-or-deploy-on-save.enabled": true

My settings.json looks like below.

Another method to do this same steps is to go to the Code menu and choose Preferences then Settings.

Next click on Workspace tab then search for Salesforce

Under Salesforce Feature Previews(3rd one), tick the box under Salesforcedx-vscode-core › Push-or-deploy-on-save: Enabled

This is particularly useful specially for cloned repository where the .vscode folder is not part of the repository.

Don’t forget to update the .gitignore file if you are using version control and add the .vscode folder.

Happy coding!

Creating a Modal Popup Lightning Component

A quick tutorial on how to create a modal popup with Lightning Component.

What is modal popup?

Modal popup acts like a container for your content that displays on top of the content you are viewing. Imagine content stacked on top of it.

In short, a modal popup is a very handy way of showing content in front of your app.

How to build one in lightning?

  • First create lightning component and add a boolean attribute then default it’s value to false
  • On your controller, toggle the boolean value as you see fit based on events.
    • cancelBtn onclick event sets the displayModal value to true, thus displaying the modal.
    • yesBtn onclick event tied to the button navigates to another URL and sets the displayModal value back to false, thus hiding the modal popup

That’s it, you should have a working modal popup ready to go.

Final code is available here in GitHub

How to Validate forms built with Lightning Components

Learn how to validate lightning components forms easily.

I recently had a requirement to create a basic lightning component to capture form inputs. I previously had a not so good experience with building custom validation with Lightning components back in Summer17 when lightning was pretty new. I was using force:inputField and also used lightning:inputField.

Past few years it has become more efficient and easier with just the lightning:input field and default HTML5 APIs.

I have a simple bank form that captures and validates the form as such and when submitted validates the required fields.


For the Bank Account Name input field specify the required attribute as true and check the validity of the field.

I use reportValidity to display the error message in the input field

And for the Bank Account Number input field aside from setting the field as true, I also specified a regular expression pattern. And then used the setCustomValidity function to display a custom error message.

And that folks, is how easy to validate the input form. Hit the comments below if you need help building your validation.

Recommended Books: