• mwille64
  • NEWBIE
  • 10 Points
  • Member since 2021

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 6
    Questions
  • 13
    Replies
Scenario from our custom Salesforce apps: 

A user creates a new Booking (custom object) via a dialog that allows the user to add a number of default Services (custom object), as well as to add one or more students (Contact object).

This in turn triggers a number of flows that create the sudent, link it via a generic junction object to the booking, this in turn triggers a flow that creates the services and assigns the student to the services. 

The Services are then calculated in terms of the sales and cost prices and when all is done the Booking is updated with the total value.

A few more things happen, which leads aside from all the optimisations I have implemented, to the famous SOQL 101 error when the number of default services exceeds about 6-8.

The problem is that each custom object has at least one flow attached that is triggered under certain rules. I find it absolutely impossible to trace exactly what is happening.

So the question is, is there a way in Salesforce or a 3rd party tool that can properly trace flow and trigger execution and comes up with an execution table and the number of SOQL calls made.

This would greatly help to see if there are any SOQL calls triggered that shouldn't be and ultimately allow to add further execution rules for unneccessary triggered flows and Apex triggers.
I'm trying to organise my work in the developer console creating multiple workspaces to avoid open file cluttering. However, it seems I hit a limit of 5 workspaces. Seriously? 

Any idea if this is really a limit or if there is something odd going on?
Is it possible to set when to receive governor limits? I don't want to disable the limits. I have some intensive flows that constantly trigger warning message at 50% of the limit. I don't need these warnings, they are really annoying, as I'm aware of the situation and nothing can be done about it. The code is fully optimised, to a point that further optimisation isn't possible. I would really like to control at which limit I'm being notified. Switching of the notifications is however counter productive.
I have a Visualforce page that manages the generation, update and removal of records for annual processing of allocation processes. This is a once a year mannual process in which a user decides to delete older records (previous years), generate records for coming years or simply add records for new allocatable objects.

The controller is using the Database.batchable class to handle the rather large amount of records deleted or created in one go. This means that a simple Apex:ActionFunction to rerender the page isn't doing the trick, as the process triggered by the button is asyncronous and might complete only after several minutes.

I'm passing the controller object to the class that handles the batch calls, but I have not figured out a way to trigger via the page controller a rerendering of the page, once the batch processing is completed.

Any suggestions on how to achieve that?
Using ClickDeploy.io service, I get following error when trying to deploy a few custom and standard object changes:

'No such standard button to exclude IsotopeSubscription'

What / where is 'IsotopeSubscription' standard button? 
I have two custom objects, Booking and related Services. I want to implement an override for the standars New button of the Service object as a new Service record can only be created in the context of a Booking. So I created a Lightning component for that, which should open a new page saying 'please create a Service record from within a Booking, showing below a datatable of the most recent edited Booking records. 

<aura:component controller="BookingController" implements="flexipage:availableForRecordHome,force:hasRecordId,lightning:actionOverride" access="global">
    <ui:message title="Information" severity="warning" closable="false">
        Please create new Service records from a Booking record.
    </ui:message>
    
    <aura:attribute type="Booking__c[]" name="bookList"/>
    <aura:attribute name="mycolumns" type="List"/>
    
    <aura:handler name="init" value="{!this}" action="{!c.fetchBookings}"/>
    
    <lightning:datatable data="{! v.bookList }"
                         columns="{! v.mycolumns }"
                         keyField="id"
                         hideCheckboxColumn="true"/>          
</aura:component>

The component controller has following code:

({
    fetchBookings : function(component, event, helper) 
    {    
        helper.fetchBookingsHelper(component, event, helper);
    }
})

And the helper:

({
    fetchBookingsHelper : function(component, event, helper) 
    {
        component.set('v.mycolumns', [
            {label: 'Booking Number', fieldName: 'Name', type: 'text'},
            {label: 'Booking Reference', fieldName: 'Booking_Name__c', type: 'text'},
            {label: 'Arrival Date', fieldName: 'Arrival_Date__c', type: 'date'},
            {label: 'Departure Date', fieldName: 'Departure_Date__c', type: 'date '},
            {label: 'Agent', fieldName: 'Agent__c', type: 'text'}
           ]);

        var action = component.get("c.fetchBookings");
        
        action.setParams({});
        
        action.setCallback(this, 
            function(response)
            {
                var state = response.getState();
                
                if (state === "SUCCESS") 
                { 
                    component.set("v.bookList", response.getReturnValue());
                    alert("Success: " + response.getReturnValue());
                }
                else if (state === "INCOMPLETE")
                {
                    // do something
                }
                else if (state === "ERROR") 
                {
                    var errors = response.getError();
                    
                    if (errors) 
                    {
                        if (errors[0] && errors[0].message) 
                        {
                            alert("Error message: " + errors[0].message);
                        }
                    }
                } 
                else 
                {
                    alert("Unknown error");
                }
            }
        );
        
        $A.enqueueAction(action);
    }
})

To retrieve the data I wrote an Apex class:

public class BookingController {
    @AuraEnabled
    public static List <Booking__c> fetchBookings() {
        //Qyery 20 recent bookings
        List <Booking__c> bookList = 
            [SELECT Id, Name, Booking_Name__c, Arrival_Date__c, Departure_Date__c, Agent__c 
             FROM Booking__c
             ORDER BY LastModifiedDate DESC
             LIMIT 20];
        //return list of bookings
        return bookList;
    }
}

The BookingController() function works perfectly fine. The data is retrieved correctly. However, when clicking the New button within one of the Service record views, the Lightning components appears (without data) on the screen, followed by an infinite loop of Success message.

I can't get my head around why the callback function that should receive a result set is not receiving any result and on top of that is being called in an endless loop.

Any idea?
 
Scenario from our custom Salesforce apps: 

A user creates a new Booking (custom object) via a dialog that allows the user to add a number of default Services (custom object), as well as to add one or more students (Contact object).

This in turn triggers a number of flows that create the sudent, link it via a generic junction object to the booking, this in turn triggers a flow that creates the services and assigns the student to the services. 

The Services are then calculated in terms of the sales and cost prices and when all is done the Booking is updated with the total value.

A few more things happen, which leads aside from all the optimisations I have implemented, to the famous SOQL 101 error when the number of default services exceeds about 6-8.

The problem is that each custom object has at least one flow attached that is triggered under certain rules. I find it absolutely impossible to trace exactly what is happening.

So the question is, is there a way in Salesforce or a 3rd party tool that can properly trace flow and trigger execution and comes up with an execution table and the number of SOQL calls made.

This would greatly help to see if there are any SOQL calls triggered that shouldn't be and ultimately allow to add further execution rules for unneccessary triggered flows and Apex triggers.
I'm trying to organise my work in the developer console creating multiple workspaces to avoid open file cluttering. However, it seems I hit a limit of 5 workspaces. Seriously? 

Any idea if this is really a limit or if there is something odd going on?
I have a Visualforce page that manages the generation, update and removal of records for annual processing of allocation processes. This is a once a year mannual process in which a user decides to delete older records (previous years), generate records for coming years or simply add records for new allocatable objects.

The controller is using the Database.batchable class to handle the rather large amount of records deleted or created in one go. This means that a simple Apex:ActionFunction to rerender the page isn't doing the trick, as the process triggered by the button is asyncronous and might complete only after several minutes.

I'm passing the controller object to the class that handles the batch calls, but I have not figured out a way to trigger via the page controller a rerendering of the page, once the batch processing is completed.

Any suggestions on how to achieve that?
Using ClickDeploy.io service, I get following error when trying to deploy a few custom and standard object changes:

'No such standard button to exclude IsotopeSubscription'

What / where is 'IsotopeSubscription' standard button? 
I have two custom objects, Booking and related Services. I want to implement an override for the standars New button of the Service object as a new Service record can only be created in the context of a Booking. So I created a Lightning component for that, which should open a new page saying 'please create a Service record from within a Booking, showing below a datatable of the most recent edited Booking records. 

<aura:component controller="BookingController" implements="flexipage:availableForRecordHome,force:hasRecordId,lightning:actionOverride" access="global">
    <ui:message title="Information" severity="warning" closable="false">
        Please create new Service records from a Booking record.
    </ui:message>
    
    <aura:attribute type="Booking__c[]" name="bookList"/>
    <aura:attribute name="mycolumns" type="List"/>
    
    <aura:handler name="init" value="{!this}" action="{!c.fetchBookings}"/>
    
    <lightning:datatable data="{! v.bookList }"
                         columns="{! v.mycolumns }"
                         keyField="id"
                         hideCheckboxColumn="true"/>          
</aura:component>

The component controller has following code:

({
    fetchBookings : function(component, event, helper) 
    {    
        helper.fetchBookingsHelper(component, event, helper);
    }
})

And the helper:

({
    fetchBookingsHelper : function(component, event, helper) 
    {
        component.set('v.mycolumns', [
            {label: 'Booking Number', fieldName: 'Name', type: 'text'},
            {label: 'Booking Reference', fieldName: 'Booking_Name__c', type: 'text'},
            {label: 'Arrival Date', fieldName: 'Arrival_Date__c', type: 'date'},
            {label: 'Departure Date', fieldName: 'Departure_Date__c', type: 'date '},
            {label: 'Agent', fieldName: 'Agent__c', type: 'text'}
           ]);

        var action = component.get("c.fetchBookings");
        
        action.setParams({});
        
        action.setCallback(this, 
            function(response)
            {
                var state = response.getState();
                
                if (state === "SUCCESS") 
                { 
                    component.set("v.bookList", response.getReturnValue());
                    alert("Success: " + response.getReturnValue());
                }
                else if (state === "INCOMPLETE")
                {
                    // do something
                }
                else if (state === "ERROR") 
                {
                    var errors = response.getError();
                    
                    if (errors) 
                    {
                        if (errors[0] && errors[0].message) 
                        {
                            alert("Error message: " + errors[0].message);
                        }
                    }
                } 
                else 
                {
                    alert("Unknown error");
                }
            }
        );
        
        $A.enqueueAction(action);
    }
})

To retrieve the data I wrote an Apex class:

public class BookingController {
    @AuraEnabled
    public static List <Booking__c> fetchBookings() {
        //Qyery 20 recent bookings
        List <Booking__c> bookList = 
            [SELECT Id, Name, Booking_Name__c, Arrival_Date__c, Departure_Date__c, Agent__c 
             FROM Booking__c
             ORDER BY LastModifiedDate DESC
             LIMIT 20];
        //return list of bookings
        return bookList;
    }
}

The BookingController() function works perfectly fine. The data is retrieved correctly. However, when clicking the New button within one of the Service record views, the Lightning components appears (without data) on the screen, followed by an infinite loop of Success message.

I can't get my head around why the callback function that should receive a result set is not receiving any result and on top of that is being called in an endless loop.

Any idea?
 
Hi,

I am using Eclipse to migrate metadata from one org to another.

I am getting this error for 2 custom objects.

Any idea on a fix?

User-added image

Page layouts are with no custom buttons and with only the standard, edit, clone and delete standard buttons.

Thanks for the help.
  • August 18, 2018
  • Like
  • 0