• Saravanan @Creation
  • 367 Points
  • Member since 2011
  • Technical Lead
  • Creation Technology Solution

  • Chatter
  • 11
    Best Answers
  • 1
    Likes Received
  • 5
    Likes Given
  • 42
  • 176
Hello All,
We are not using Opportunity Product object in our org. But whenever an opportunity is created a popup comes up in lightning view to Add Products. Is it possible to disable this popup without overriding the standard opportunity page. Please help me in this regard. Below is the popup I am talking about.

Opportunity Product Popup




Here is my requirement:


To upload Images,charts and Graphs to account page layout. Please suggest any tool to do this.


I have come across Rich Text Area, but I am looking for any other options.



  • November 12, 2013
  • Like
  • 0



i am confused to below statement, can you explain the staments. 


Apexpages.addMessge(new apexpages.message(apexpages.severity.info,'error message'))


Apexpages.message mymsg=new Apexpages.message(apexpages.severity, summary, detail);


how many ways create a object in apex?




I am using iframe and giving vf page in that.In the vf page when when i am clicking to the save button it is going to the another page.but is calling the reference page in the i frame.How can i close the window which is containing the iframe and the open the referenced page in new tab.


<apex:page >

    <apex:form >
         <apex:commandButton value="Close" onclick="window.top.close()"/>





  • January 24, 2013
  • Like
  • 0



Currently, i want to connect Salesforce.com via HTTP but not HTTPS. And I found I can set it in "Administration Setup" -> "Security Control" -> "Session Setting" -> "Require secure connections ".


The problem is this "Require secure connections " option is grey that i can't uncheck it. How can I do that? I'm the administrator of Salesforce.com. 



Is there a way to parse the file into better readable form or in a tabel 

I have field that is lookup field to contact.


I want to send Email alert to the contact that in this field when this field is update and the contact is changed.


Hope somebody knows some formula that checks if the values in the field was changed in order to use it as a trigger?  


Thank you

I need to filter the records in pageblock section.


Eg: rendered="{!IF(A.Appt_Time__c=='AM 08:00',true,false)}" 







  • December 09, 2011
  • Like
  • 0

I have two users, one an administrator and other a more restricted user. Both have full access to my custom objects bus and bus trips.

The bus trips object has a lookup which displays a list of buses with the "In service" attribute checked.

When the admin goes to the lookup and enters * in the search, he sees all the "In service" buses, as expected.

But when the other user does exactly the same lookup, she only sees a single bus.

She can see more buses by entering a few characters of the bus name, so I know she has the rights to see the buses (and she can see all the buses from the "Buses" tab).


Has anyone any idea why there is a difference in the way the lookup filter works?

Hello All,

Did anyone face this issue with latest release of chrome 89.0.4389.82.

I was having a below code and it was working fine with the chrome verison 88.0.4324.190.

 let newdatevalue = new Date(Intl.DateTimeFormat('en-UK').format(dateValueParam)); 

This line is throwing a error Invalid Date.

1. dateValueParam is a milliseconds. 
2. Intl.DateTimeFormat('en-UK').format(dateValueParam) --> This return a string of 15/03/2021

Thanks in advance!
Hello Everyone,

I am trying to load the bootstrap into my lwc component to create the mobile responsive table. 

I have created the LWC Tab and in the. And I was getting this below error while loading the page so I placed the compoent into another component 


After that I not getting this error, I placed this lightning component in another LWC and even though it's not loading the reesource successfully.

<h2>Common Fruits</h2>
<div class = "table-responsive">
<table class="table table-bordered table-striped" id="tableOne">
<thead >
<th>Taste 1</th>
<td>Green and Red</td>
<td>Sweet and Tart</td>
<td>Sweet and Tart</td>
<td>Sweet and Mushy</td>
<td>Sweet and Mushy</td>
<td>Yellowish Green</td>
<td>Sweet and Tangy</td>
<td>Sweet and Tangy</td>
<td>Mild Sweetness</td>
<td>Mild Sweetness</td>
<!-- /.container -->

import { LightningElement } from 'lwc';
import tableresponsive from '@salesforce/resourceUrl/TableResponsiveSource';
import { loadScript, loadStyle } from 'lightning/platformResourceLoader';
export default class TableResponsive extends LightningElement {
loadStyle(this, tableresponsive +'/bootstrap-4.5.0-dist/css/bootstrap.css'),
loadStyle(this, tableresponsive +'/bootstrap-4.5.0-dist/css/bootstrap.min.css'),
loadStyle(this, tableresponsive +'/bootstrap-4.5.0-dist/css/bootstrap-grid.css'),
loadStyle(this, tableresponsive +'/bootstrap-4.5.0-dist/css/bootstrap-grid.min.css'),
loadScript(this, tableresponsive +'/bootstrap-4.5.0-dist/js/jquery-3.5.1.js'),
loadScript(this, tableresponsive +'/bootstrap-4.5.0-dist/js/bootstrap.js'),
loadScript(this, tableresponsive +'/bootstrap-4.5.0-dist/js/bootstrap.min.js'),
]).then(() => {
.catch(error => {

If you have any solution please let me know.
Hello All,

I have generated the Web to Lead and used in Website. In the Org under the network access I have added the IP address.
Does this impact anything on the web to lead creation?

Thanks in advance!
Hi All,

For an Opportunity in the Page layout I have customised 'Salesforce Mobile and Lightning Experience Actions'

Below is the behavior for system admin
I can see only 'Salesforce Mobile and Lightning Experience Actions' button on the record details

Below is the behavior for Standard User
Productivity actions - Call
Global and object-specific quick actions, except for those related to creating tasks, creating events, and logging calls
Standard buttons
Custom object-specific Lightning component quick actions
Custom flow actions (beta)
Custom Visualforce quick actions
Custom Visualforce buttons
Canvas actions

Standard User order is correct and it is explained in the document below

I want to know why the behaviour is different for system Administrator.

Hello All,

I have added the below code in my lightning component

<wave:waveDashboard showTitle="false" dashboardId="0FK0q00000000NyGAI" height="200"   filter="{'datasets':{'Activities':[{'fields':['OtherPeople.Person.Person_Id'], 'filter':{'operator': 'matches', 'values':['0030q000006ze6rAAA']}}]}}"/>

I want to replace that id(Mentioned in the filter) to {!v.recordId}. The main aim to populate that id dymanically

Hi All,

Currently we are using ANT for moving the changes from one org to another org. We are facing some difficulty like Namespace prefix and delecting the component. We want to know is there any tool apart from ANT to handle all this stuff.

Thanks in advance!

Hi All,

While I am checking my Visualforce execution time line, I saw this two event in the log which takes more time in Visualforce.
I want to know what exactly it is and which part of the controller code is resposible for this.

Attached the log for the reference
User-added image
Hi Everyone,

1. I want to retrive a metadata from a org when we will create the package. I can able to retrive but after retrival in few places of the component like formulas the namespace prefix is added 'Test__' becasue of this I can't able to deploy to the sandbox or the developer org. If I need to deploy without any error I have to remove this namespace prefix manually. Is there any way while retriving the metadata we can able to remove the namespace prefix in standard salesforce retrival?

<target name="NPD">
      <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="test" unpackaged="test/package.xml"/>

2. Once the development is done in the Sandbox we want move all the metadata to org where we will create a package.Before moving do i need to manually update the namespace prefix eg. IN workflow field update formulas.  Is this correct ? if yes can we able to automate this process.

Thanks in advance!!
Hi All,

I have below code in my visualforce page

    <apex:pageBlockButtons >
        <apex:actionStatus id="saveXX">
          <apex:facet name="stop">
            <apex:commandButton action="{!saveEdit}" status="saveXX" rerender="error" value="Save"/>
          <apex:facet name="start">
            <apex:commandButton status="saveXX" value="Processing..." disabled="true"/>
when i click the save button which is in stop facet  it will display the process button which is in the stop facet.
The problem here is after clicking the save button saveEdit method is executing but this method is executing two times.

Please explain me how this work like this.And how do i stop it.

Thanks in advance

Hi All,

Salesforce have asked me to do a BURP Scan on my managed package before I submit it to the AppExchange.
My Managed Package is built on the Force.com platform. It does perform a couple of callouts to other applications.
I have a license and was able to launch BURP.

Here's what I have tried (based on this tutorial - http://security.force.com/security/tools/webapp/burptut ):

I have added login.salesforce.com to scope
Logging into salesforce and Spider the Org url where i have my managed package
Finally, I have run scanner on my Org url.
I have tried this,But the Burp Scanner aborted the scan and displayed "abandoned - too many errors".

Should I need to scan mywhole salesforce Org or Is it enough to only scan my Visualforce pages ?

And I have one more doubt. I am calling out GoogleMaps API to find location in my app. I am using this in only 3 pages in my app.

So, Is that enough to scan only those 3 pages ? And do I have to run scan on my page url or page sourcecode ?

Thanks in advance!!
Hi All,

I am trying to upload a package.But its failed and its shown me the error that overall percentage should be greater than 75%.
So I have run all the test class and i have checked the overall coverage and its says 82% without failure.All the classes and triggers are having more than 0%. But I don't the in which place the issue is.In the package also i have added all the test classes.Could some one help me to figure out the exact issue.

Thanks in advance!!
Hi All, am getting Constructor is not visible: [Namespaceprefix.controllerName]<init>()  error on the Visualforce page
after i installed my managed package app in production.But there is no issue on my development org.Please help me
to resolve this.

I have declared my class as global and class constructor with public access specifier.Is this will cause an above error.

Thanks in advance!!
Hi All,

I have a object called X and I have 2 manager field through trigger code I need to share this record with the two manage with the reson of X_manager .
Its working but if the qbject don't have 'modify all' permission the then its sharing with manager wirh reason manual sharing not with X_manager.

But the code are .Please help me If I missed any permission

Hi All,

I have object called MyCustom__c object. In my controller I want to check whether this object has any approval proceess?
If its possible please help me to achieve this.


Hi All,

By using the Ant I am trying to retrive the my org metadata.But I am getting below error.

C:\Migarationtool\sample>ant MyYahooOrg
Buildfile: C:\Migarationtool\sample\build.xml

[sf:retrieve] Note: use ant -verbose to get more information on the failure

C:\Migarationtool\sample\build.xml:21: Failed to login: UNSUPPORTED_API_VERSION
- Invalid Api version specified on URL

Total time: 6 seconds


<project name="Sample usage of Salesforce Ant tasks" default="test" basedir="." xmlns:sf="antlib:com.salesforce">

    <property file="build.properties"/>
    <property environment="env"/>

    <taskdef resource="com/salesforce/antlib.xml" uri="antlib:com.salesforce">
            <pathelement location="../ant-salesforce.jar" />

<!--My own code added by saravana-->
<target name="MyYahooOrg">
   <sf:retrieve username="xxxxxxxx@yahoo.in"
<!--End Saravanan  -->

    <!-- Test out deploy and retrieve verbs for package 'mypkg' -->
    <target name="test">
      <!-- Upload the contents of the "mypkg" package -->
      <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="mypkg" rollbackOnError="true"/>
      <mkdir dir="retrieveOutput"/>
      <!-- Retrieve the contents into another directory -->
      <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="retrieveOutput" packageNames="MyPkg"/>

<!-- Retrieve an unpackaged set of metadata from your org -->
    <!-- The file unpackaged/package.xml lists what is to be retrieved -->
    <target name="retrieveUnpackaged">
      <mkdir dir="retrieveUnpackaged"/>
      <!-- Retrieve the contents into another directory -->
      <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="retrieveUnpackaged" unpackaged="unpackaged/package.xml"/>

    <!-- Retrieve all the items of a particular metadata type -->
    <target name="bulkRetrieve">
      <sf:bulkRetrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" metadataType="${sf.metadataType}" retrieveTarget="retrieveUnpackaged"/>

    <!-- Retrieve metadata for all the packages specified under packageNames -->
    <target name="retrievePkg">
      <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="retrieveOutput" packageNames="${sf.pkgName}"/>

    <!-- Deploy the unpackaged set of metadata retrieved with retrieveUnpackaged -->
    <target name="deployUnpackaged">
      <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="retrieveUnpackaged" rollbackOnError="true"/>

    <!-- Deploy a zip of metadata files to the org -->
    <target name="deployZip">
      <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" zipFile="${sf.zipFile}" pollWaitMillis="1000" rollbackOnError="true"/>

    <!-- Shows deploying code & running tests for code in directory -->
    <target name="deployCode">
      <!-- Upload the contents of the "codepkg" directory, running the tests for just 1 class -->
      <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="codepkg" rollbackOnError="true">

    <!-- Shows removing code; only succeeds if done after deployCode -->
    <target name="undeployCode">
      <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="removecodepkg"/>

    <!-- Shows retrieving code; only succeeds if done after deployCode -->
    <target name="retrieveCode">
      <!-- Retrieve the contents listed in the file codepkg/package.xml into the codepkg directory -->
      <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="codepkg" unpackaged="codepkg/package.xml"/>

    <!-- Shows deploying code, running all tests, and running tests (1 of which fails), and logging. -->
    <target name="deployCodeFailingTest">
      <!-- Upload the contents of the "codepkg" package, running all tests -->
      <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="codepkg" runAllTests="true" rollbackOnError="true" logType="Debugonly"/>

    <!-- Shows check only; never actually saves to the server -->
    <target name="deployCodeCheckOnly">
      <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="codepkg" checkOnly="true"/>

<!-- Retrieve the information of all items of a particular metadata type -->
    <target name="listMetadata">
      <sf:listMetadata username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" metadataType="${sf.metadataType}"/>

<!-- Retrieve the information on all supported metadata type -->
    <target name="describeMetadata">
      <sf:describeMetadata username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}"/>


<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">

Please explain me what I am doing wrong and how to resolve that.

Thanks in advance!!!
Hi All,

I have created a domain


But i don't want foce.com from the above domain link .I think it also added into site URL.Please let me know how do I remove
force.com from URL.

Thanks in advance!!
Hi All,

I have an page on site that have one form and two button(save & cancel).The page is loading correctly but while clicking save or cancel
I am getting Authorizartion required error.

Cancel method code:
PageReference curPage;
             curPage = new PageReference('/apex/AAAA?id='+positionId);
             curPage = new PageReference('/apex/BBBB');               
  return curPage;

redirectVal I am collection in the constructor.help me to figureout the issues.Thanks in advance
Hi All,

Can any one please tell Is it possible to send email to some one(Admin) when user login to the external system via SSO from

If so please let me know how to achieve this.

Thanks in advance!!
Hi All,

I want to create sobject instance record id. If any on know please help me

for(sobject rcd: sobjectRecordList)
             sObject obj = Schema.getGlobalDescribe().get(rcd.id).newsObject();

sobjectRecordList is a collection of recods with different type.

Hi All,

I am creating standard user with following values .

User:{Generate_new_password__c=true, Phone=34543432, TimeZoneSidKey=Europe/London, UserPermissionsSFContentUser=true, LanguageLocaleKey=en_US, UserPreferencesContentEmailAsAndWhen=true, ProfileId=00eb0000000ct9oAAA, LocaleSidKey=en_GB, LastName=Saravanan, UserPreferencesContentNoEmail=true, EmailEncodingKey=ISO-8859-1, Email=ssaravananbtech@gmail.com, Alias=TeS, Username=ssaravananbtech@gmail.com, FirstName=Selvaraj, MobilePhone=898888665}

For insert i am using below code

                        Database.DMLOptions dmlo = new Database.DMLOptions();
                        dmlo.EmailHeader.triggerUserEmail = true;
                        Database.SaveResult results = database.insert(CreateUser,dmlo);

This code is sending the email to set the password for new user in one org(Sandbox) but not in other org(production). I have checked the below settings in both the org.

1.CRM Content is- Enabled (Because i am using some content related fields)
2. Email deliverability- All email
3. Checked the Test deliverability - receiving email from all IP address.

Is there any thing I need to check apart from these setting.

Thanks in advance!!
Hi All,

I am trying to upload a package.But its failed and its shown me the error that overall percentage should be greater than 75%.
So I have run all the test class and i have checked the overall coverage and its says 82% without failure.All the classes and triggers are having more than 0%. But I don't the in which place the issue is.In the package also i have added all the test classes.Could some one help me to figure out the exact issue.

Thanks in advance!!
i want to get the test2 on clicking in test2 link .how can i get ?User-added image
Picklist values are cutting off/truncated in the modal box. I have 10 picklist values to be displayed but when opened the combobox in ligtening it is showing only 3.
Could you please help me out fixing this issue.

Here is the code:
 <div class="slds-modal__content slds-p-around_medium">
                           <div class="slds-text-color_error">{requiredError}</div>
                    <lightning-combobox class="validValue" name="reason" label="Reason" value={reason}
                            placeholder="Select Closed Loss Reason" options={picklistOptions.data.values}
                            onchange={handleChangePicklist} required>

Thank you,
Hello All,
We are not using Opportunity Product object in our org. But whenever an opportunity is created a popup comes up in lightning view to Add Products. Is it possible to disable this popup without overriding the standard opportunity page. Please help me in this regard. Below is the popup I am talking about.

Opportunity Product Popup


Error ID: 204507431-23397 (207752844)

Anyone else running into this? I just wanted to report and see if there is a fix yet.

Hello All,

I have generated the Web to Lead and used in Website. In the Org under the network access I have added the IP address.
Does this impact anything on the web to lead creation?

Thanks in advance!
Is there a way to stop the drop down that give and option to wrap or clip text in a lightning data table?

User-added image
I have a Trigger and workflows on an object.

In trigger for every insert or update certain functionality happens. this functionality is added to trigger mainly because of Data loader(records inserted or updated from data loader).

The issue is, it is causing Too many SOQL for insert or update of records from VF page.

I'm using flag to determine if the insert happing from VF page or data loader, if it is from VF page then execute this functionality only at end of the transaction.

Is there any design or logic which can be used to execute this functionality only once and only at end of the transaction when coming from VF page?
I am having this error:
FATAL_ERROR System.LimitException: SBQQ:Too many queueable jobs added to the queue: 2
when I deploy the automation of the Renewal process (I have tried  with batch size = 1,batch size = 50 and batch size = 200 nothing works ) in production (works in Sandbox), even though I have followed this article and almost have copied the batch apex class that appears in this Knowledge article: https://help.salesforce.com/articleView?id=000267468&language=en_US&type=1 .

Below is my batch apex class.The main difference to the one in the Knowledge article mentioned before is the Query at the 'start()' method, see below:
///***Batch Apex Class***

global class Renewal implements Database.Batchable<SObject>, Database.Stateful {
	global Integer recordsProcessed = 0;

	global Database.QueryLocator start(Database.BatchableContext bc){
		return Database.getQueryLocator(
			//This is where you input the conditions for the records which you wish to set renewal for 
			'SELECT SBQQ__RenewalForecast__c, Id FROM Contract WHERE SBQQ__RenewalForecast__c = false AND EndDate=NEXT_N_QUARTERS:2');
	global void execute(Database.BatchableContext bc, List<Contract> scope){
		for(Contract contract: scope){    
            System.debug('<DEBUG> Update Renewal Forecast and Quoted for Contract: '+ contract.Id);
			contract.SBQQ__RenewalForecast__c = true;
			recordsProcessed = recordsProcessed + 1;

        update scope;
	global void finish(Database.BatchableContext bc){
       // Get the ID of the AsyncApexJob representing this batch job
       // from Database.BatchableContext.
       // Query the AsyncApexJob object to retrieve the current job's information.
       AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed,TotalJobItems, CreatedBy.Email FROM AsyncApexJob WHERE Id =:BC.getJobId()];

       // OPTIONAL: Send an email to the Apex job's submitter notifying of job completion.
       Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
       String[] toAddresses = new String[] {a.CreatedBy.Email};
       mail.setSubject('Contract Renewal Batch ' + a.Status);
       ('The batch Apex job processed ' + a.TotalJobItems +
       ' batches with '+ a.NumberOfErrors + ' failures.');
       Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
This is the test class for this batch apex class, although I don't think it has any relation to the problem:
public class RenewalTest {
    public static testMethod void testRenewal() {
        // Create an Account
        Account ac = new Account();
        ac.Name = 'Jamones Corporation Number';
        ac.Type = 'Manufacturer';
        ac.Industry = 'Food';
        ac.Tiering__c = 'Tier-1';
        ac.Language__c = 'Spanish';
        insert ac;
        // Create an Opportunity
        Opportunity op = new Opportunity();
        op.Name= 'OriginalOpNumber';
        op.AccountId = ac.Id;
        op.Type = 'New business';
        op.StageName = 'A - Interest';
        op.CloseDate = Date.today();
        insert op;
        // Create the Contract
        Contract c = new Contract();
        c.StartDate = Date.today().addMonths(-8);
        c.ContractTerm = 12;
        //c.EndDate = c.StartDate.addMonths(c.ContractTerm);
        c.Status = 'draft';
        c.AccountId = ac.Id;        
        c.SBQQ__Opportunity__c = op.Id;
        c.SBQQ__RenewalForecast__c = false;
        //c.SBQQ__RenewalQuoted__c = false;
        insert c;
       	System.debug('<DEBUG> Contract Id:'+ String.valueOf(c.Id));
        System.debug('<DEBUG> Date of today:'+ String.valueOf(Date.today()));
        System.debug('<DEBUG> Contract Start Date:'+ String.valueOf(c.StartDate));
        System.debug('<DEBUG> Contract End Date:'+ String.valueOf(c.EndDate));
        System.debug('<DEBUG> Contract Renewal Forecast:'+ String.valueOf(c.SBQQ__RenewalForecast__c));
        //System.debug('<DEBUG> Contract Renewal Quoted:'+ String.valueOf(c.SBQQ__RenewalQuoted__c));

        Renewal obj = new Renewal();
        Contract contract = [SELECT SBQQ__RenewalForecast__c FROM Contract WHERE Id= :c.Id];
        System.assertEquals(true, contract.SBQQ__RenewalForecast__c );
        //System.assertEquals(true, contract.SBQQ__RenewalQuoted__c ); 
    	System.debug('<DEBUG> Contract Renewal Forcast:'+ contract.SBQQ__RenewalForecast__c);
        //System.debug('<DEBUG> Contract Renewal Forcast:'+ contract.SBQQ__RenewalQuoted__c );

I am pretty new to salesforce but after analizing the logs the only thing that is bothering me is that there are some triggers in the Opportunity that seem to be called very frequently, and I have a suspicion they might me not 'bulkified'? However the trigger i am talking about is part of the Salesforce package 'Declarative Rollup Summary' and therefore I cannot see this part of code, so I have no idea how the triggers of this package work. See screenshots below:
User-added image
User-added image

Can anyone tell me if the fact that these triggers are called constantly is normal or not? And more importnaly, does anyone have any idea of what could be happening?

I can post more information if neeeded. 
Thanks in advance!!
Good day Developers,

I am struggling to find the solution to this problem.  

/** this function will get leave reason if needed
*  @param email_linesP is array containing all the email lines
*  @return reason string will be returned
    private String getLeaveReason( List< String > email_linesP ){
        String reason_string = '';              //this is the reason string
        //check if we dont have reason
        if( m_reason_index != -1 ){
            //loop through the email lines
            for( Integer i = m_reason_index + 1; i < email_linesP.size(); ++i ){
                //check if current line has : charecter( will indicate keyword )
                if( email_linesP[ i ].contains( ':' ) )
                    break;                                  //leave the loop
                reason_string += email_linesP[ i ] + '\n';          //append line
            }//end of for-block
            reason_string = 'No Reason Provided';       //set the reason string to default value
        return reason_string;                   //return the reason 
    }//end of function definition

The above code is returning the correct information except for when there is no reason for my reason_string, instead it returns a "NULL" value instead of 'No Reason Provided' which is the reason_string. how do I get it to reflect 'No Reason Provided' instead of "NULL"
I have started looking into a way of creating a save to calendar link on a html email template as we find attempting to convert a HTML email template to a visualforce email template. 

I have got the link to appear on the email but I cannot get it to save as a ics file to see if it has worked. The script is below
var cal = ics(); 
cal.addEvent('{!Service_Request__c.Name}', '{!Service_Request__c.Change_Details__c}', 'None', '{!Service_Request__c.Expected_Start__c}', '{!Service_Request__c.Expected_Completion_Date__c}'

<a href="javascript:addToOutlook()">Demo</a>

Is there anything I am missing? 
User-added image
I want to host my website on salesforce and found these limits but i was confused that Maximum Pageviews limit is per hour or per month.
  • September 02, 2017
  • Like
  • 0
Hi everybody!

I have a question I hope somebody can give me some help with. We have built a site on Force.com, and have registered a domain name on Godaddy, how do I setup the name servers so the visiting public only sees http://www.oursite.com, instead of http://www.oursite.force.com?

So far we've followed directions we found that say to to create a site, domain and custom URL in Salesforce. Then on Godaddy, we created a CNAME record which points to "oursite.our18characterOrgId.live.siteforce.com", which does work if you were to type in www.oursite.com.

The problem is, this does not work if somebody doesn't put the www in front of the url.

From my understanding of how this needs to work (please correct me if I'm wrong), on Godaddy I'd have to create an A record on Godaddy that ponits to salesforce, which I'm not able to do because an A record requires an IP address, not a domain.

Any feedback, will be greatly appreciated!

Thank you :-)
i am new to salesforce,Can anyone explain what is inline edit support?why it is used and how?
  • September 23, 2016
  • Like
  • 0
Hi All,

I recently recueved an automated email from Salesforce saying that I have a certifcate in Salesforce which will expire in 60 Days.
Below is a screenshot of the Certificate Detail;
User-added image

I am not sure what to do here, if someone couuld kindly explain, that'll be great

Thanks in advance,
I have installed a managed oackage in my org and now i want to upgrade it. This app access is controlled by licence and permission set.  When i click on the upgrade link, Below 3 options are displayed,
1. Install for admin only
2. Install for All Users
3. Install for Specific profile.

Which option should i select? Not all users assigned to same profile have access to this app. So i think chosing the 3rd option will not be correct. 
If i select 'Install for admin only', will the licence be revoked from all the other users?

Thank you for your help in advance.

We recently went live with our Community Portal that is hosted at ourcompany.force.com. With that, we installed an SSL certificate for this portal through salesforce.com > setup > security controls > Certificate and Key Management. The only problem is that the salesforce.com portal does not have a way to install the Intermediate (Leaf) CA which is associated with our SSL cert. If we connect to our portal with Firefox or if we run a Qualys/Symantec SSL check, the browser/SSL Check throw an error about chain validation. The reason why IE doesn't show an error is that IE ships with many Intermediate CAs already embedded which is a security no-no. I've opened up many support tickets with salesforce.com but they keep on telling me this is a dev issue which I disagree. Has anyone else come across this issue since 99% of the SSL market now have Intermeidate CAs associated with their SSL certs?


This is driving me crazy! I have come to the Excel Connector because I needed a bi-directional data tool so I can correct some text errors in the lead source fields of converted leads. I understand that Data Loader is available in EE but I have PE so I thought this would be the answer. However, when I attempted to edit the data I get an error message that says, "Update Row Failed: cannot reference converted lead."
Am I correctly understanding that the Excel Connector will update any data in SF except data in a converted lead???????? Why is this data so guarded that it appears to be impossible to edit any textual info that has no formulas or logic running against it? I have some lead sources from previous months that are incorrect and they skew my report and require me to manually correct them every time.; Simple things like a lead source of "ASP 2008" should be "ASP 0208". I don't want to delete the converted lead and then convert a corrected lead because it will throw off the date of the conversion and break the connection with the existing opportunity. There must be a way? Any help would be greatly appreciated.

Message Edited by DalStar1999 on 07-25-2008 02:32 PM

Message Edited by DalStar1999 on 07-25-2008 02:34 PM

Message Edited by DalStar1999 on 07-25-2008 02:50 PM
i want to get the test2 on clicking in test2 link .how can i get ?User-added image
Here is the question
<div class="slds-col"> 
            <label class="slds-form-element__label slds-no-flex">Posting Date</label>
            <lightning-input type="date" 

import { LightningElement,api ,track} from 'lwc';

import getInvoiceData from '@salesforce/apex/CustomerRefundLwcController.getInvoiceData';
import getBankAccounts from '@salesforce/apex/CustomerRefundLwcController.getBankAccounts';
import processCustomerRefund from '@salesforce/apex/CustomerRefundLwcController.processCustomerRefund';

export default class CustomerRefund extends LightningElement {
    @api recordId; /*Sales Credit Id*/
    @track invoiceData;
    @track invoiceLinesData;
    @api headerText;
    @api recordProcessing;
    @api bankAccounts = new Array();
    @track selectedBankId;
    @track allocateToSalesCredit;
    @track referenceDetail;
    @track bShowModal = false;
    @track PostingDate;
    /*Toast Event Variables*/
    @api isError = false;
    @api iswarning = false;
    @api issuccess = false;
    @api ToastMessage;

        this.PostingDate = event.target.value;
        this.invoiceData.PostingDate = this.PostingDate;

processRefundHandler() {
        this.recordProcessing = true;
        processCustomerRefund({ lstInvoiceLines : this.invoiceLinesData, bankId : this.selectedBankId, allocateToSalesCredit : this.allocateToSalesCredit, reference : this.referenceDetail, postingdate : this.PostingDate })
        .then(result => {
            var responseMessage = result;
            this.recordProcessing = false;
            this.ToastMessage = responseMessage;
            if(responseMessage == "Success"){
                //this.issuccess = true;
                this.isError = false;
                this.ToastMessage = "Your Bank Customer Refund has been created";
                this.bShowModal = true;
                this.isError = true;
        .catch(error => {
            this.isError = true;
            this.ToastMessage = error ;

public with sharing class CustomerRefundLwcController {
    public CustomerRefundLwcController() {

    public static string processCustomerRefund(List<ScLineWrapper> lstInvoiceLines,string bankId,boolean allocateToSalesCredit,string reference){
        system.debug('start update');
        string successMessage = 'Success';
        string responseMessage = 'Success';
        Savepoint spTran = database.setSavePoint();
            List<Sales_Invoice_Line_Item__c> lstLinesToUpdate = new List<Sales_Invoice_Line_Item__c>();
            decimal amount=0;
            Id taxRate;
            Id salesinvoiceid;

            boolean isValid = true;
            boolean allocateToInvoice = allocateToSalesCredit;
            map<id,Sales_Invoice_Line_Item__c> mapOfSelectedLines = new map<id,Sales_Invoice_Line_Item__c>();

            for(ScLineWrapper lineWrapper : lstInvoiceLines){
                system.debug('isselect>> ' + lineWrapper.isSelected);
                    salesinvoiceid = lineWrapper.InvoiceLine.Sales_Invoice__c;
                    decimal lineAmount = lineWrapper.InvoiceLine.Foreign_Gross__c;
                    if(lineAmount != null && lineAmount > 0){
                        amount += lineAmount;

                    if(lineWrapper.InvoiceLine.Tax_Rate__c != null){
                        taxRate = lineWrapper.InvoiceLine.Tax_Rate__c;

            if(salesinvoiceid == null){
                isValid = false;
                responseMessage = 'Please select at least one sales invoice line';
            }else if(bankId == null){
                isValid = false;
                responseMessage = 'Please select bank account';
            }else if(amount <= 0){
                isValid = false;
                responseMessage = 'Refund amount should be greater than zero';

            system.debug('updatelst>> ' + lstLinesToUpdate);
            //update lstLinesToUpdate;
                Sales_Invoice__c siInfo = [select id,Status__c,Account__c,Name from Sales_Invoice__c where id=: salesinvoiceid];
                BankCustomerRefundService objCustomerRefundService = new BankCustomerRefundService();
                BankCustomerRefundService.BankCustomerRefundWrapper objRefundWrapper = new BankCustomerRefundService.BankCustomerRefundWrapper();
                Id accountId = siInfo.Account__c;
                objRefundWrapper.AccountId = accountId;
                objRefundWrapper.PostingDate = Date.Today()+(-216);
                objRefundWrapper.BankAccountId = bankId;
                objRefundWrapper.TaxRate = taxRate;
                objRefundWrapper.Amount = amount;
                objRefundWrapper.Reference = reference;
                BankCustomerRefundService.Response objResponse = objCustomerRefundService.CreateBankCustomerRefund(objRefundWrapper);
                responseMessage = objResponse.ResponseMessage;
                if(allocateToInvoice && responseMessage == successMessage){
                    Bank_Payment__c objBankPayment = objResponse.BankPayments.get(accountId);
                    List<Ledger__c> listofLedgers = [Select id,name,Foreign_Gross_Total__c,Type__c
                                                    FROM Ledger__c
                                                    Where Customer_Supplier_Account_Name__c =: accountId AND Show_On_Transaction__c=1
                                                    AND Paid__c = 'N' AND Is_Deleted__c = false
                                                    AND (Sales_Invoice_Line_Item__c IN: mapOfSelectedLines.keyset() OR Bank_Payment__c =: objBankPayment.id) ];
                        BankAllocateCreditsAndPaymentsService objAllocateCreditsAndPaymentService = new BankAllocateCreditsAndPaymentsService();
                        BankAllocateCreditsAndPaymentsService.BankAllocateCreditsAndPaymentsWrapper objAllocateCreditWrapper = new BankAllocateCreditsAndPaymentsService.BankAllocateCreditsAndPaymentsWrapper();
                        objAllocateCreditWrapper.AccountId = accountId;
                        objAllocateCreditWrapper.PostingDate = Date.Today()+(-216);
                        List<BankAllocateCreditsAndPaymentsService.BankAllocateCreditsAndPaymentsLineWrapper> BankAllocateCreditsAndPaymentsLines = new List<BankAllocateCreditsAndPaymentsService.BankAllocateCreditsAndPaymentsLineWrapper>();
                        for(Ledger__c ledger : listofLedgers){
                            BankAllocateCreditsAndPaymentsService.BankAllocateCreditsAndPaymentsLineWrapper objPaymentLine = new BankAllocateCreditsAndPaymentsService.BankAllocateCreditsAndPaymentsLineWrapper();
                            objPaymentLine.LedgerName = ledger.Name;
                            objPaymentLine.Amount = ledger.Foreign_Gross_Total__c;

                        objAllocateCreditWrapper.BankAllocateLines = BankAllocateCreditsAndPaymentsLines;
                        BankAllocateCreditsAndPaymentsService.Response objAllocateResponse = objAllocateCreditsAndPaymentService.BankAllocateCustomerBalance(objAllocateCreditWrapper);
                        responseMessage = objAllocateResponse.ResponseMessage;
                        system.debug('Response>>' + objAllocateResponse.ResponseMessage);
        }catch(Exception ex){
            responseMessage = ex.getStackTraceString();
        if(responseMessage != successMessage){
        system.debug('Response>>' + responseMessage);
        return responseMessage;


I want to use LWC datepicker input to pass date value in CRLWC.cls in PostingDate variable. 

Can anyone help please
Is it possible to stop the execution of the flow in apex classes / triggers so that I could put a breakpoint in the apex class and when I hit the breakpoint in the class it would stop the execution and I could step thru the code in the Eclipse IDE and inspect the variables ?
This is a very good way of learning how the code works and which code is executed in different scenarios.
This is possible in non-cloud normal app development with Java
I know that it is possible to set debug log statements in the code and then run thru the code and it would print the result but this is not nearly as easy as stepping thru the code.
Thanks, Jani
  • January 14, 2014
  • Like
  • 4

We recently published Ten Common Mistakes Architects Make When Building a Force.com Application. As I wrote in my blog post, "Force.com makes it easy to create applications. But take a minute to think about architecting solutions as well." 


Feedback welcome.