• Naveen KN
  • 1035 Points
  • Member since 2017
  • Salesforce Consultant
  • codekiat.com

  • Chatter
  • 32
    Best Answers
  • 0
    Likes Received
  • 10
    Likes Given
  • 1
  • 445

Beating my head against the wall and hoping someone can point out what I'm missing. I have a basic Lightning component with a drop-down. When that drop-down changes, I'd like the controller to make a second field visible through an aura if. But I can't even get the selection onchange to trigger. 


Component is basically:

<aura:attribute name="rType" type="string"/>  
<lightning:select name="rType" label="Record Type" value="{!v.rType}" required="true" onchange="{!c.syncSelection}">

With controller:

syncSelection: function (component, event, helper) {
        console.log("this worked");


How can I delete definite contact from table by id?

    public static void deleteContact(Id contactId) {        
        List<Contact> deleteContact = 
            [SELECT Id
            FROM Contact 
            WHERE Id = :contactId 
        delete deleteContact;        

    handleDelete() {
            .then(result => {
                console.log(result, 'end')
                this.contacts = result;
            .catch(error => {
                console.log(error, "err")
                this.error = error;                
In screen flows, I have two fields in account like reading 1 and reading 2, The requirement is that they can enter either reading 1 or reading 2 but not both Value and must be greater than zero “0” . I want vaidation on the screen flow. Plase help me to sort this
Hey folks,

I would like to create a custom report type for Approval History(ProcessInstanceStep).

My first approach was creating a trigger or record-triggered flow on the ProcessInstanceStep object.
But for some reason, Salesforce doesn't allow me to create a trigger on the object.

Background information,
There are more than 2,000 submitted approvals daily based.
The client wants to maximize declarative tools' usability.(Not Programatical solution)

How should I resolve this issue?

Much obliged, in advance.
Hi everyone ,i have tried below trigger ,Account should have only one active oppotunity ,but it is not working as expected ,not hitting error.help me..
trigger onlyonechildactive on Opportunity (before insert,before update) {
set<Id>accountId=new set<Id>();
    for(opportunity o:trigger.new){
    List<Account>acclist=[select id,name,(select id,stageName,closeDate,name,Active__c from opportunities where Active__c=true)from Account where Id=:accountId];
    map<id,boolean> bb=new map<id,boolean>();
    //for each account
    for(Account a:acclist){
        bb.put(a.id,a.opportunities.size()>0  );
    for(opportunity op:trigger.new){
        if(bb.get(op.AccountId)==true && op.Active__c==true){
           op.addError('there is already a Active opp'); 
Thanks in Advance
  • December 30, 2022
  • Like
  • 0
I have this trigger in which, when a new quote record is inserted, I am updating couple records, which works fine in the after insert serction.

But when an approval process updates a record, I want some records to be updated in the after update section, which is causing the recurssive error: 

QuoteTrigger: execution of AfterUpdate caused by: System.DmlException: Update failed. First exception on row 0 with id 0Q05D0000007jBySAI; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, QuoteTrigger: maximum trigger depth exceeded Quote trigger event AfterUpdate Quote trigger event 

How can I get around this error and implement my logic? Trigger code is below. Error occours on update qtList; line. I am trying to implement in the // If the quote is approved unmark - section.

trigger QuoteTrigger on Quote (after insert,after update) {
    Set<String> oppIds = new Set<String>();
    for(Quote q : Trigger.New){
    public static Boolean preventRecursive = true;
        preventRecursive = false;
        // To mark the newly inserted quote as latest and unmark the previous quote if there is any
        if(Trigger.isInsert && Trigger.isAfter){
            List<Quote> quoteList = [select id,opportunityId,Latest_quote__c from quote where opportunityId IN :oppIds ORDER BY CreatedDate DESC LIMIT 2];
            if(quoteList.size() == 1){
                quoteList[0].Latest_quote__c = true;
                update quoteList;
            } else if (quoteList.size() > 1) {
            quoteList[0].Latest_quote__c = true;
                quoteList[1].Latest_quote__c = false;
                update quoteList;
        if(Trigger.isAfter && Trigger.isUpdate){
            if(trigger.new != null){
                for(quote qt:trigger.new){
                    if(Trigger.new[0].Status== 'Approved' && qt.Quote_Link__c == Null && qt.Proposal_PDF__c == Null && qt.Site_Services_PDF__c == Null){                
                       // Quote_Lcs.sendemailtemplate(qt.id);
                // If the quote is approved unmark all as latest and mark last updated (approved) quote as latest
                if(Trigger.new[0].Status== 'Approved'){ 
                    List<Quote> qtList = [select id,opportunityId,Latest_quote__c from quote where opportunityId IN :oppIds  ORDER BY LastModifiedDate DESC];
                    if (qtList.size() > 1) {
                        for(Integer i = 0; i < qtList.size(); i++){ // uncheck all from being latest
                            qtList[i].Latest_quote__c = false;
                    qtList[0].Latest_quote__c = true; // mark only the last updated/approved quote as latest
                    update qtList;

We had a vendor create a Aura component to insert an iFrame into one of our community pages to allow an end user to upload attachments.  This is not working because we need to be using ".secure.fore.com" in the URL.  It is getting the URL like this:  "cmp.get('c.getFileUploadSiteURL');  But in the cmp file I do not see "getFileUploadSiteUrl", so I am trying to understand where this field is coming from???
Hi Everyone,

I have JSON data. I wish to store this JSON data in my custom object field.
Is this possible in salesforce? Any idea?
Thanks in Advance.
how to send list<strings> from parent component  to child component  using aura attribute in lightning
 (note : I dont want aura methods or events ) 
I have an issue with lightning bottom menu item's that is within a data table whereby the menu items are not visible if the menu item appears as the last record of the data table (see the 2nd image) or if the data table consists of only 1 record (see the last image). Below is the sample code of the data table with the lightning button menu

Sample Code
<div class="slds-table--header-fixed_container" style="height: 100%">
        <div class="slds-card__body slds-card__body_inner slds-scrollable--y" style="height: 100%">
            <table class="slds-table slds-table--bordered slds-table--header-fixed">
                <tr class="slds-text-title--caps">
                    <aura:iteration items="{!v.columns}" var="col">
                        <th scope="col">
                            <div onclick="{!c.updateColumnSorting}"
                                 class="slds-truncate slds-cell-fixed"
                                 title="{! col.fieldName}" data-field="{! col.fieldName}">
                                {! col.label }
                                    <aura:if isTrue="{!v.sortedBy == col.fieldName}">
                                            {! v.sortAsc ? '&#8593;' : '&#8595;'}
                    <th scope="col"></th>
                <aura:iteration items="{!v.data}"
                                var="record" indexVar="indexVar">
                        <th data-label="Title" class="{! 'popover_'+record.Id +' cell-solution-title-width'}">
                            <div class="slds-truncate cell-solution-title-width" title="{!record.Solution_Title__c}"
                                 data-recordid="{!record.Id}" data-record="{! record}">
                        <th data-label="Category" class="{! 'popover_'+record.Id +' cell-solution-number-width'}">
                            <div class="slds-truncate cell-solution-number-width" title="{! record.Solution_Sub_Category__c}"
                                 data-recordid="{!record.Id}" data-record="{! record.Solution_Sub_Category__c}">
                                {! record.Solution_Sub_Category__c}
                        <th data-label="Status" class="{! 'popover_'+record.Id}">
                            <div class="slds-truncate" title="{!record.Status__c}"
                                 data-recordid="{!record.Id}" data-record="{! record}">
                        <th data-label="Author" class="{! 'popover_'+record.Id}">
                            <div class="slds-truncate" title="{!record.CreatedBy.Name}"
                                 data-recordid="{!record.Id}" data-record="{! record}">
                            <lightning:buttonMenu aura:id="menu" onselect="{! c.handleSelect }"
                                                  alternativeText="Menu" value="{!record.Id}" menuAlignment="right">
                                <lightning:menuItem value="{! 'E,'+record.Id +','+indexVar}" label="Edit"/>
                                <lightning:menuItem value="{! 'A,'+record.Id +','+indexVar}" label="Approve"/>

User-added image
User-added imageUser-added image
Greetings of the day...

I am designing a Lightning component using Developer console and on adding it to Lightning App Builder, I am not finding any custom tab to add my component to the Lightning page.

User-added image

Plz. help us to add a lightning component in the custom section.

I'm a green Salesforce Admin.

I'm trying to close this Booking (Opportunity) by changing the stage fom 'Closed Won' to 'Closed', but gettign the error: 

Object (id = 0060I00000dElwv) is currently in trigger OpportunityTrigger, therefore it cannot recursively update itself

I can see the Apex Trigger in the Object Manager, but I don't have any experience with development, so I can;t tell why this error is occuring. 

Hi Team,

In my project i have the urgent requirement.

At the lookup Field we have an option to create New Record in Lightning View.  
Creating the New Record at Look-Up Field is a Standard Salesforce Out of the box functionality.
1)How can i restrict the user while trying to create the Record at Look-Up in lightning View ?


User-added imageThanks in Advance...

I am trying to create a view to show activity information. However the below code is not displaying any information, only header is showing. Please help.
HTML Component :

    <lightning-card class="slds-text-title_bold"  title = "Activity Information">
        <div class="slds-p-around_medium lgc-bg" style="height: 300px;">
JS File:

import { LightningElement,api,wire,track} from 'lwc';
import ActivitySearchController from '@salesforce/apex/ActivityLeadPage.ActivitySearchController'

const columns = [
    { label: 'Subject', fieldName: 'Subject' },
    { label: 'Due Date', fieldName: 'ActivityDate' },
    { label: 'Status', fieldName: 'Status' },

export default class ActivityLeadPageComponent extends LightningElement {
    @api recordId;
    @track data = [];
    @track columns = columns;
    @wire(ActivitySearchController, { currentID: '$recordID'})
Controller :

public class ActivityLeadPage{
    public static List<Task> ActivitySearchController(String currentID){
        List<Task> TaskList = new List<Task>();
        Map<Id,Lead> leadMap = new Map<Id,Lead>();
                List <Lead> leadList = [SELECT id, Email FROM Lead WHERE ID=:currentId];
                String ldEmail       = leadList[0].Email;
                Set<String> emailIds = new Set<string>();
                TaskList = getTaskList(emailIds);
            catch(Exception e){
                system.debug('getlinenumber-->'+ e.getMessage() +' line '+ e.getLineNumber());
        return TaskList;
    public static List<Task> getTaskList (Set<String> emailIds) {  
        Map<Id,Lead> leadMap = new Map<Id,Lead>();      
        leadMap = new Map<Id,Lead>([SELECT id, Email FROM Lead Where Email IN:emailIds]);       
        Set<Id> leadID = new Set<Id>(); 
        for(Lead lE : leadMap.values()){
        List<Task> TaskList = [Select id, Subject, Description, who.Type, What.Type, Priority, Status, ActivityDate,CreatedDate, LastModifiedDate FROM Task 
                               WHERE whoId IN:leadID ORDER BY createddate DESC LIMIT 20];
        if(TaskList.size() == 0){
            Apexpages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO,''+'No Tasks to Display'));
        return TaskList;
What should i do with this error? Does not let me send quotes by email from the PDF page of the quote...
Hi All,

I have created a lightning component to display a public site from which we can get customers sigup.
I have created the Lightning component for this and able to view the page but, I am unable to fire the toast messages in this.
And also my Save button is not getting disabled after clicking on it. 
This is my code. Any help to solve this is appreciated. Thanks in advance.
Lightning component:
<aura:component controller="CreateContactrecordController" 
             access="global" >
    <!-- Include Static Resource-->
    <ltng:require styles="/resource/bootstrap/css/bootstrap.min.css" 
    <!--aura:attribute name="isSpinner" type="boolean" default="false"/-->
    <aura:attribute name="FirstName" type="String" default="" />
    <aura:attribute name="LastName" type="String" default="" />
    <aura:attribute name="Mobile" type="String" default="" />
    <aura:attribute name="Email" type="String" default="" /> 
    <aura:attribute name="Store" type="String" />
    <aura:attribute name="LanguageList" type="List" />
    <aura:attribute name="SelectedLanguage" type="String" />
    <aura:attribute name="isHide" type="Boolean" default="false" />
     <aura:handler name="onSaveSuccess" event="force:recordSaveSuccess" action="{!c.handleSaveSuccess}"/>
 <force:recordEdit aura:id="edit" recordId=""/>
 <ui:button label="Save" press="{!c.save}"/>
    <div class="slds-page-header">
        <div class="slds-align_absolute-center">
            <div class="slds-text-heading_large">
                <div class="slds-m-top_xx-large">
                    Customer Subscription Form
    <aura:handler name="init" action="{!c.doinIt}" value="{!this}"/> 
    <div class="slds-form-element__control">
         <lightning:input label="First Name" name="firstname" type="text" required="true" value="{!v.FirstName}" />
        <lightning:input label="Last Name" name="lastname" type="text" required="true" value="{!v.LastName}" />
        <lightning:input label="Mobile" type="tel" value="{!v.Mobile}"/>
        <lightning:input label="Email" name="email" type="email" required="true" value="{!v.Email}" />
        <lightning:input label="Store" type="Text" name="Store" value="{!v.Store}" />
        <lightning:select label="Language" name="Language" value="{!v.SelectedLanguage}">
            <aura:iteration items="{!v.LanguageList}" var="Language">
                <option value="{!Language}" text="{!Language}"></option>
   <lightning:button variant="brand" disabled="{!v.isHide}" label="{!v.isHide == true ? 'Save' : 'Save'}" onclick="{!c.savecustomerForm}" /> 
    <!--lightning:button variant="brand" disabled="{!v.isSpinner}" label="{!v.isSpinner == true ? 'Saving...' : 'Save'}" onclick="{!c.savecustomerForm}" /--> 



    doinIt: function(component, event, helper){ 
        var action = component.get('c.getPickListValuesIntoList');          
         // method name i.e. getEntity should be same as defined in apex class         
         // params name i.e. entityType should be same as defined in getEntity method        
        //action.setParams({ "entityType" : component.get('v.componentString') });         
            action.setCallback(this, function(a){             
            var state = a.getState(); // get the response state             
            if(state == 'SUCCESS') {
     savecustomerForm: function(component, event, helper) {
        console.log('Create record');
         var action = component.get("c.save");
        //Setting the Apex Parameter
         action.setParams({"FirstName":component.get("v.FirstName"), "LastName":component.get("v.LastName"),
                           "Email":component.get("v.Email"), "Mobile":component.get("v.Mobile"), 
                           "Store":component.get("v.Store"), "Language":component.get("v.Language")
        //Setting the Callback
            //get the response state
            var state = a.getState();
            var isContactexists = a.getReturnValue();
            //check if result is successfull
            if(state == "SUCCESS"){
                //Reset Form
                var newContact = {'sobjectType': 'Contact','FirstName': '','LastName': '','Email': '',
                                  'Mobile': '', 'Store__C': '','Language__c' : ''};
                //resetting the Values in the form
              //alert('Record Created Successfully');
                    component.find("edit").get("e.recordSave").fireeSuccess : function(cmp, event) {
                     // Display the save status
                     var toastEvent = $A.get("e.force:showToast");
                     "title": "true!",
                     "message": "My Custom Record Saved Successfully"
                component.set('v.isHide', true);  
                else { 
                   alert('Record already exists'); 
            else if(state == "ERROR"){
            alert('Error in calling server side action');


Apex controller:

public class CreateContactrecordController {
     public static List<String> getPickListValuesIntoList()
       List<String> pickListValuesList= new List<String>();
        Schema.DescribeFieldResult fieldResult = Contact.Language__C.getDescribe();
        List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
        for( Schema.PicklistEntry pickListVal : ple){
        return pickListValuesList;
    public static Boolean save(String FirstName, String LastName, String Email, String Mobile, String Store, String Language )
        List<Contact> Contact = [SELECT Id, Email From Contact WHERE Email=:Email];
         if(contact.size() > 0){
             return false;
            Contact con=new Contact(); 
            con.FirstName = FirstName;
            con.LastName = LastName;
            con.Email = Email;
            con.MobilePhone = Mobile;
            con.Store__c = Store;
            con.Language__c = Language;
            insert con;
            return true;
Hi Community!

So I made a flow for closing a feedback case that works as a standard lightning component. However, when I put the flow in as part of a guided action list. The flow runs but doesn't update anything.

I noticed that this iw why the standard version works is because of this check mark where I pass my feedbackcaseID variable as the recordID:

User-added image

What would be the best way to grab the current record ID in my flow so that I can run it through the guided action list?

More than happy to attach screenshots of my current flow if that helps.

Thank you all this would be amazing if I can get this solved!!

trigger Prefix_Dr on Lead (before insert,before update) {
    for(lead L:trigger.new){
public class Prefix_Dr_test {
    testmethod static void test(){
        Lead L=New Lead();
        insert L;
        Lead Le=[select Id,firstname,lastname from lead where company='sfdc'];

here test class is showing error
There is a requirement where we need to group the business field by rows and group status field by column, In this process, we get a matrix report with business as rows and different status as columns

shown below in the screenshot 
User-added image
this is the exported report from salesforce. 

Now we have a requirement to display pending column after Due column in the above-shown screenshot and the value of the pending column is calculated by the subtraction of Due and delivered columns. how to achieve this?

Appreciate your inputs on this. 

- Naveen K N

I want to know in what order should we start Metadata deployment? I will be using one of the tools to deploy. But I want to know what components need to be deployed first and in what order we need to deploy?
Hello Experts,

I dont find any standard documentation on importing custom object and its field to import in lwc js.

Like how do we even import custom obect's picklist and show them on frontend? 

Can anyone help me with this?

I have been wrestling with this issue for quite some time and I'm hoping someone here will have some suggestions. Please let me know if this is better suited under a different board.

Org details: Unlimited Edition org with Service Cloud
Cart details: Launched via Lightning button on the custom object's Lightning page. Using Visualforce, Lightning Out, Aura components.

Things I've tried: Platform Events (not compatible), LMS (also not compatible), Lightning Data Service's force:recordData component with recordUpdated property and using reloadRecord() function (current).
We have a custom cart solution for service reps to use to place Part and Service Orders for our members, which passes all data between components and Apex controllers using JSON objects. This cart is used by all Member Care teams within the United States, so starting over from scratch is a huge undertaking and is not within our current bandwidth. We do have plans to eventually rewrite it all in LWC.

One specific team has a requirement that all Part Orders must have an approved Service Order associated with it before we send the JSON with order details to another system for the Parts. This requirement works fine unless the record doesn't meet criteria for auto-approval and is sent to an approval queue instead. Those manual approvals are typically done right away, within a minute or so. The team would like a callout to be delayed and a particular button in the aura component to be disabled until that Service Order is approved and they can move forward.

I have tried using recordData with the most success, but it's not able to detect the manual approval's field update to the record. I've tried various versions of the below.
<aura:attribute name="recordId" type="String" description="Service Order Id" />
    <aura:attribute name="newServiceOrder" type="Service_Order__c"/>
    <aura:attribute name="updatedServiceOrder" type="Service_Order__c" />
    <aura:attribute name="showPlaceOrderButton" type="Boolean" default="false" />

    <force:recordData aura:id="serviceOrderRecord" 
        fields="Id, First_Approval_Status__c, Approved_For_Dispatch__c" 

Component controller - handleServiceUpdate doesn't capture the new field value as Approved using v.newServiceOrder or v.updatedServiceOrder, with or without using the fields.fieldName.value format, with or without checking Approved_For_Dispatch__c (another field that is set by the approval process).
handleServiceUpdate : function(component, event, helper){
        console.log('-- POA_OrderCheckoutModalController.handleServiceUpdate hit --');
        var changeType = event.getParams().changeType;
        var updatedServiceOrder = component.get('v.updatedServiceOrder');
        console.log('-- POA_OrderCheckoutModalController.handleServiceUpdate updatedServiceOrder : ', JSON.stringify(updatedServiceOrder, null, 3));
        console.log('-- --- ---- ---- Approval Status ' + updatedServiceOrder.fields.First_Approval_Status__c.value);

        if(changeType === "CHANGED" && updatedServiceOrder.fields.First_Approval_Status__c.value === 'Approved'){
            alert('!!!!!! First_Approval_Status has changed to Approved !!!!!!');

I've also tried this in the helper, right before the callback for the Apex that will call the other system. I've tried do-while, and while loops and also tried two ways of checking the values in updatedServiceOrder, with or without setTimeout(). I'm getting the "not approved yet" log in all variations.
var updatedServiceOrder = component.get('v.updatedServiceOrder');
        do {
            console.log('not approved yet');
            // setTimeout(10000);
        } while(updatedServiceOrder.First_Approval_Status__c != 'Approved' || updatedServiceOrder.Approved_For_Dispatch__c != true);
    //} while(updatedServiceOrder.fields.First_Approval_Status__c.value != 'Approved' || updatedServiceOrder.fields.Approved_For_Dispatch__c.value != true);

Ultimately, my results are that the "Approved" First Approval Status (and Approved For Dispatch) value is never captured by the component, so our spinner continues to spin indefinitely and the cart doesn't move forward because the condition in the while/do-while attempts is never met. 

 #Salesforce Developer #Automation  #Sales Cloud

I am trying to get records of all the cases belongs to a list view(Pic for reference)by SOQL query. Any help would be appericated. Thanks


I have a button which is a quick action and I am calling a LWC and the logic is handled in the invoke method. Below is the LWC structure.

@api invoke(){

I want to call @wire(getRelatedListRecords) in the invoke method or I want to reload the LWC component on clicking the button. 
Is this possible? 
Is it possible to create other users in developer organization and let them see accounts and other data?
I am developing a platform that integrates with Salesforce, but I don't want to share my dev credentials with other test users.
I can correctly create users but when they try to login they receive an error.
Hi - Recently I have refreshed one of my sandbox, we are using Docusign managed package, we will send the docusign to the users with set of informations those information will be fetched from salesforce from opportunity. 

But after sandbox refreshed, we are facing the issue docusign is not fetching data in salesforce. any idea or resolution how to debug or resolve this issue?


I recently created a free developer account in order to try and create a connected app for the organization I work for to interact with the Salesforce API and automatically populate leads for their SF account based on information users submit in our app.

I'm unable to get an auth token to start interacting with the SF API, and I think it is because I am not fully connected to their account and do not have the correct permissions set up. How would I get my account connected to theirs and set up with proper permissions?

Thank you!

I have a requirement that i want to  autopopulate contacts account lookup field when the contact is created

Beating my head against the wall and hoping someone can point out what I'm missing. I have a basic Lightning component with a drop-down. When that drop-down changes, I'd like the controller to make a second field visible through an aura if. But I can't even get the selection onchange to trigger. 


Component is basically:

<aura:attribute name="rType" type="string"/>  
<lightning:select name="rType" label="Record Type" value="{!v.rType}" required="true" onchange="{!c.syncSelection}">

With controller:

syncSelection: function (component, event, helper) {
        console.log("this worked");


Hey folks,

I would like to create a custom report type for Approval History(ProcessInstanceStep).

My first approach was creating a trigger or record-triggered flow on the ProcessInstanceStep object.
But for some reason, Salesforce doesn't allow me to create a trigger on the object.

Background information,
There are more than 2,000 submitted approvals daily based.
The client wants to maximize declarative tools' usability.(Not Programatical solution)

How should I resolve this issue?

Much obliged, in advance.
I have installed Dropbox for Salesforce using a Business Standard account. Apparently it is working correctly and as we expected but strange Apex exceptions are occurring in one of the managed triggers. We were getting that error every 60 seconds and we can't confirm if there are issues behind the scenes because of this.

It would help us to know what this exception is about and what we can do to avoid it. Thank you in advance.

Failed to process Queueable job for class Dropbox_for_SF.HandleConvertQueue for job ID 7073f00000F75nl.

caused by: Dropbox_for_SF.DropboxClient.UserNotConnectedException: Script-thrown exception

Class.Dropbox_for_SF.DropboxClient.createHttpRequest: line 74, column 1
Class.Dropbox_for_SF.DropboxClient.httpCallout: line 99, column 1
Class.Dropbox_for_SF.DropboxClient.httpCallout: line 96, column 1
Class.Dropbox_for_SF.DropboxClient.httpCallout: line 93, column 1
Class.Dropbox_for_SF.DropboxClient: line 327, column 1
Class.Dropbox_for_SF.RootFinder.findRecordRoot: line 247, column 1
Class.Dropbox_for_SF.RootFinder.findRecordRoot: line 214, column 1
Class.Dropbox_for_SF.RootFinder.findRecordRoot: line 199, column 1
Class.Dropbox_for_SF.HandleConvertQueue.moveFiles: line 32, column 1
Class.Dropbox_for_SF.HandleConvertQueue.execute: line 13, column 1

 <lightning:datatable style="width: 50%" data="{! v.ContactList }"
                             columns="{! v.mycolumns }"

                             keyField="Id"  onsave ="{!c.onSave}" hideCheckboxColumn="false" onrowaction="{!c.viewRecord }"
<lightning:button variant="Brand" label="Delete Selected Contacts" title="Success" onclick="{! c.handleSelectedRowdelete }"/> 

JS Controller :

handleSelectedRow: function(component, event, helper){
        var abc = event.getParam('selectedRows'); 
        var setRows =[];
        for(var i = 0;i<abc.length;i++ ) {
    handleSelectedRowdelete: function(component, event, helper){
         var conList=component.get("v.selectedRows");
        var conIds =[];
        for(var i = 0;i<conList.length;i++ ) {

        var action = component.get("c.DeleteContactlist");
            'listcon' : conIds
        action.setCallback(this,function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                //if update is successful

I want on click of Delete Selected Contacts , all selected contact should deleted. I have use onselected attribute of datatable and on selestion, I am updating selectedRows. On button click I am using SelectedRows and trying to get the id but getting error. 

Error:   Action failed: c:getContactComp$controller$handleSelectedRowdelete [Cannot read property 'id' of undefined]
I had written code for 3 fileds (FirstName,LastName,PhysicalAttributes) for inserting record in Contact Object.It was successfully Saving Record.
But when i am trying to insert Record using FirstName and LastName i am getting error like

Error creating record
Upsert failed. First exception on row 0; first error: INVALID_TYPE_ON_FIELD_IN_RECORD, Physical Attributes: value not of required type: : [Physical_Attributes__c]

Because while Inserting Records we can skip some Fields(i.e;Non-Mandatory)Fields.Can any one Plz suggest me.

Here is my code:

    <lightning-card title="Insert Contact" icon-name="standard:contact">
            <div class="slds-p-around_x-small">
                <lightning-input label="FirstName" value={rec.FirstName} onchange={handleFirstNameChange}></lightning-input>
                <lightning-input label="LastName" value={rec.LastName} onchange={handleLastNameChange}></lightning-input>
                <lightning-input type="text" label="PhysicalAttributes" value={rec.Physical_Attributes__c} onchange={handlePhysicalAttributesChange}></lightning-input><br/>
                <lightning-button label="Save" onclick={handleClick}></lightning-button>

import { LightningElement,track } from 'lwc';
import createContact from '@salesforce/apex/insertContactApexWeb.saveContactRecord';
import {ShowToastEvent} from 'lightning/platformShowToastEvent';
import FIRSTNAME_FIELD from '@salesforce/schema/Contact.FirstName__c';
import LASTNAME_FIELD from '@salesforce/schema/Contact.LastName__c';
import PHYSICALATTRIBUTES_FIELD from '@salesforce/schema/Contact.Physical_Attributes__c';
export default class InsertContact extends LightningElement {
    @track firstname = FIRSTNAME_FIELD;
    @track lastname = LASTNAME_FIELD;
    @track physicalattributes = PHYSICALATTRIBUTES_FIELD;
   @track  rec = {
        FirstName : this.firstname,
        LastName : this.lastname,
        Physical_Attributes__c: this.physicalattributes
    handleFirstNameChange(event) {
        this.rec.FirstName = event.target.value;
    handleLastNameChange(event) {
        this.rec.LastName = event.target.value;
    handlePhysicalAttributesChange(event) {
        this.rec.Physical_Attributes__c= event.target.value;
    handleClick() {
        createContact({ con : this.rec })
       .then(result => {
            // Clear the user enter values
            this.rec = {};
            window.console.log('result ===> '+result);
            // Show success messsage
            this.dispatchEvent(new ShowToastEvent({
                title: 'Success!!',
                message: 'Contact Created Successfully!!',
                variant: 'success'
        .catch(error => {            
            this.error = error.message;
            window.console.log('error body--'+error.body.message);
                new ShowToastEvent({
                    title: 'Error creating record',
                    message: error.body.message,
                    variant: 'error',
            window.console.log("error", JSON.stringify(this.error));


Apex Class:
public with sharing class insertContactApexWeb {
    public static void saveContactRecord(Contact con){
            insert con;
        catch(Exception ex) {
            throw new AuraHandledException(ex.getMessage());
I have an active user that has a customer community license.  That user is able to own contact records, but I can't seem to change ownership of an account to that user.

In the documentation, I found this statement: "Community Users can't own community-enabled accounts".  Is that my issue?  What does it mean for an account to be "community-enabled"?  Is there a work-around?  My goal here is to have a community licensed user that can own accounts that are outdated/inactive.


- Randy Trigg
  • September 17, 2019
  • Like
  • 1

I have a custom Lightning Web Component that allows modification of multiple records inside of modal. Once a record is updated, I reload that same record-id, but the old data shows up instead of the new data. After thorough research, I have concluded that the Lightning Data Service is at fault here. It is caching the data in the built-in ViewState most likely. The only way to get a data refresh is by refreshing the entire web page. I found multiple articles that explain how to turn off Secure and Persistent Browser Caching, but this is an unacceptable solution, as the entire Organization will take a performance hit, to support my little Lightning Web Component. Also salesforce insists that you don't do it production:



How do I invalidate or send a ChangeNotify Event to the Lightning Data Service (in the context of Lightning Web Components), so my lightning-record-edit-form shows the updated data, instead of the old data (without refreshing the entire web page of course)?
Just wanted to share a problem we had that I haven't seen elsewhere.

We built a Flow Definition with the Process Builder and Added it to our Managed Package

Then we decided to Deactivate the Flow before uploading the Package as some orgs that we support may not use it.

When we tried to install our Managed Package, it failed, saying that the Flow had been Deleted.

It clearly had NOT been deleted, so we were stumped.  Salesforce Support couldn't help us and escalated the Case.

I began studying the Setup Audit Trail and noticed strange entries that happened at the same time I Activated and Deactivated the Flow:

When my Flow was "Activated",  the system was creating a 'Flow Trigger" and a "Workflow Rule" behind the scenes with the same name as my flow, though adding a long id number at the end.

The PROBLEM is that when I deactivated the Flow, the system didn't just deactivate the "backend" Workflow Rule, but THEN it DELETED both the 'Flow Trigger' and the "backend" Workflow Rule!  I don't understand why it was actually deleted? THIS deleted hidden Trigger and Workflow is what caused the package install to fail.

On a hunch I decided to Activate the Flow and build a new package again.  Sure enough, the package uploaded and installed perfectly.

Salesforce needs to put some documentation around this, or at least have a warning popup when you try to Deactivate a Flow that is already in a package.

How are we supposed to know that deactivation is deleting components that we didn't even know were there in the first place?

Hope this saves someone else some time.