Skip to main content

#Data Management108 discussing

Hi community, 

 

I'm trying to find the enable oath in data loader and I'm not seeing it. I think my screen is not letting me see all of the options. Does anyone know how I can fix this? 

 

#Sales Cloud  #Service Cloud  #Data Management

5 answers
0/9000

Hello Team,

 

I want to change the status to Never for the WorkItem which is in Promoted stage in DevOps center currently. Along with that how to remove the promoted workitem from the pipeline stage as I want to discard the workitem.

5 answers
0/9000

Hi everyone,

I have a question regarding the “Create Quotes without Opportunities” feature and a potential future requirement involving Orders.

 

After enabling the “Create Quotes without Opportunities” feature, Salesforce automatically provides the QuoteAccountId field on the Quote object. For Quotes created without an Opportunity, the Account relationship is stored in QuoteAccountId, while the standard AccountId is not populated.

 

Would it be technically possible to populate the standard AccountId field with the value from QuoteAccountId

for Quotes created without an Opportunity?. 

 

The reason for considering this is that Orders will be used in the future, and the standard Account relationship may be required for the Order process.

Would populating AccountId = QuoteAccountId be a supported and recommended approach, or are there any Salesforce limitations or implications we should consider when working with Quotes without Opportunities? or any workaround?.

Thanks for your guidance! 

 

@Salesforce Administrators & Developers, @Salesforce Administrators and Developers, @APAC Architects, @Data Quality & Management

 

 

#Trailhead Challenges  #Trailhead  #Salesforce Developer  #Salesforce Admin  #Salesforce  #Flow  #Data Management  #Apex  #Sales Cloud

2 answers
  1. Yesterday, 3:17 PM

     

    Short answer: you generally cannot (and do not need to) write QuoteAccountId into the standard Quote.AccountId field. On the Quote object, AccountId is a system-derived, read-only reference that Salesforce fills from the related Opportunity's Account. It is not createable/updateable through the UI, Flow, Apex or the API, so an update like AccountId = QuoteAccountId will be rejected or ignored. For quotes created without an Opportunity, QuoteAccountId (label "Account for Quote") is the field Salesforce intends you to use as the account relationship. 

     

    For your future Order process this is already covered: Salesforce's documentation for quotes without opportunities says associating the quote to an account is optional but recommended, because an account is required to convert the quote to an order. When you create an Order from such a quote, the account comes from the quote's account (QuoteAccountId), so you don't need Quote.AccountId populated. 

     

    Practical recommendations: 

    1. Make QuoteAccountId required (validation rule, e.g. ISBLANK(OpportunityId) && ISBLANK(QuoteAccountId)) so every quote can be turned into an Order. 

    2. After enabling the feature, open Object Manager > Quote > Fields > Account for Quote and grant field-level security to your profiles/permission sets. It is hidden by default, which is why it often looks unavailable in Flow, reports and Apex. 

    3. In reports, flows, sharing logic and Apex, use one source of truth, for example a formula field BLANKVALUE(QuoteAccountId, Opportunity.AccountId), so logic works for quotes with and without an Opportunity. 

    4. If you create Orders yourself via Flow/Apex (rather than the standard Create Order action), set Order.AccountId = Quote.QuoteAccountId and Order.QuoteId = Quote.Id. 

     

    References: 

    Enable Quote Creation Without a Related Opportunity:

    https://help.salesforce.com/s/articleView?id=sales.cpq_quotes_without_opportunities.htm&type=5

     

    Release note, Create Quotes Without a Related Opportunity:

    https://help.salesforce.com/s/articleView?id=release-notes.rn_sales_quotes_without_opportunities.htm&release=244&type=5

     

    Quote object reference:

    https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_quote.htm

     

     

    Assumption: the statement that Quote.AccountId is read-only is based on the Quote object reference field properties and commonly reported org behaviour; please confirm in a sandbox (e.g. attempt the update in a Flow or Developer Console) before designing around it.

0/9000

Looking to Migrate Rackspace Email to Gmail. The good news is that migrating Rackspace emails to Gmails is an easy process. Either do it manually by configuring your Gmail account to import emails from Rackspace. Or use a dedicated migration tool for Migrate Rackspace Emails To Gmail. This tool allows you to quickly and easily transfer all your emails, and calendars to Gmail smoothly. The key benefits of this tool are speed accuracy, and the ability to maintain email's folder structure. Here are some simple steps for the Migration Process.

 

Download and launch the IMAP Mail Backup tool on your system.

Sign in to your account with your Rackspace credentials.

From the tree-structure list, preview and choose the folders that you need to migrate.

Now, choose Gmail from the drop-down list, then sign with the required details.

Finally, choose the additional features if you wish, and then click on the Convert button to start the migration process.

 

 

2 answers
  1. Yesterday, 11:39 AM

    To migrate from Rackspace to Gmail

    , you can manually transfer emails using an IMAP-supported email client like Outlook or Thunderbird. However, moving large mailboxes folder by folder can be time-consuming. 

     

    For bulk migration, use

    BitRecover Rackspace Backup Tool

    . It lets you select specific folders, apply date filters, transfer multiple Rackspace accounts & preserve emails, attachments, formatting & folder hierarchy while moving data to Gmail. 

     

    Steps: Add your Rackspace account → select folders → choose Gmail as the destination → sign in to Gmail → start the migration.

0/9000
3 answers
  1. Yesterday, 11:04 AM

     For managing and removing multiple Salesforce files efficiently, you can use Salesforce’s built-in file management tools or a suitable data management utility that supports bulk deletion. Before deleting, it’s a good idea to review the files and confirm they’re no longer needed, as bulk deletions can be difficult to reverse. 

0/9000
I'm doing masive creation of contact objects,  in the process sometimes fail one or more of my data and then SALESFORCE does a rollback. I´m using the SALESFORCE PHP API in version 20.
1 answer
  1. Sep 23, 2:46 PM

    Hi Eduardo,

    If you're using the Salesforce PHP Toolkit, you can control this with the SOAP API AllOrNoneHeader. 

     

    By default, the API can roll back the entire create() operation when one or more records fail. If you want successful records to be committed while only the failed records are returned as errors, set allOrNone to false. 

     

    For example, depending on the PHP Toolkit version, the call is typically along these lines:

    $result = $client->create($records, array('AllOrNoneHeader' => array('allOrNone' => false))); 

     

    The exact method signature can vary between PHP Toolkit versions, so check the generated SforceClient method for API v20. 

     

    If you want the whole batch to succeed or fail together, leave allOrNone as true. 

0/9000
Due to the limit of 20 fields that can be tracked on an Account we sometimes have to add/remove fields from tracking based on special projects and/or evolving needs.

 

Is there any way to see an audit log of when individual field tracking is turned on/off other than the following options?

 

  1. adding custom code to track more efficiently (not worth expense)
  2. relying on documentation maintained outside of SFDC (mistakes can be made)
  3. looking at setup audit trail (very close but  only goes back 6 months unless this is manually exported & deduped before 6 months go by )
  4. simply looking at the first/last changes tracked for any given field (doesn't account for gaps or situations when field is rarely changed)
1 answer
  1. Sep 23, 2:45 PM

    Hi Brian,

    Unfortunately, the standard Field History Tracking feature doesn't maintain a separate, permanent audit history showing when each individual field was enabled or disabled for tracking.

    The Setup Audit Trail is the main standard place to identify configuration changes, but as you mentioned, its retention is limited. Exporting it periodically is one way to retain that history longer.

    If you need a permanent audit of tracking configuration changes, you'd generally need to maintain it outside the standard Field History Tracking mechanism—for example, by periodically exporting the Setup Audit Trail or using a custom/configuration-management process.

    Looking at the first and last history records for a field won't reliably identify gaps, so I wouldn't recommend that as an audit method. 

0/9000
I would like to add Vendor information into Salesforce for each project and lead.

 

How can I add Vendor information into sales force? How can I add the service/good cost for each lead, opportunity and projects.
1 answer
  1. Sep 23, 2:44 PM

    Hi Connee,

    I would recommend creating a Vendor custom object to store the vendor information, rather than entering the vendor details directly on each Lead or Opportunity.

    Then create Lookup relationships from the relevant records to Vendor, for example:

    • Lead → Vendor
    • Opportunity → Vendor
    • Project → Vendor

    For the service/good cost, you can add a Cost/Currency field on the related record or, if a project/opportunity can have multiple vendors or services, create a child object such as Vendor Cost with fields for Vendor, Service/Product, Quantity, Unit Cost, and Total Cost.

    This structure will make it much easier to report on vendor spending by Lead, Opportunity, or Project.

    If you describe how many vendors/services can be associated with each record, I can suggest the simplest object structure. 

0/9000
Hi All,

 

I am using following code to call one external .NET webservice which support form based authentication (asking username/pwd from browser inbuilt window). How should i call this service using HTTPRequest.

 

I know how to use BASIC authentication in HTTPREquest class but i dont know how to use Form Based authenication. Here is my sample code:

 

HttpRequest hr = new HttpRequest();

 

            hr.setEndPoint('http://xyz/test.asmx');

 

            hr.setMethod('POST');

 

            String username = 'test';

 

            String password = 'test';

 

                      

 

            Blob headerValue = Blob.valueOf(username + ':' + password);

 

            String authorizationHeader = 'FORM ' +

 

            EncodingUtil.base64Encode(headerValue);

 

            hr.setHeader('Authorization', authorizationHeader);

 

            system.debug('##### '+ authorizationHeader);

 

            hr.setHeader('Content-Type', 'application/soap+xml');       

 

            string body = '<?xml request....xxx....';

 

            hr.setBody(body);

 

            hr.setTimeout(60000);           

 

            String resBody;

 

            Http con = new Http();

 

            HttpResponse hsp;

 

            hsp = con.send(hr);

 

            resBody = hsp.getBody();

 

            system.debug('@@response='+resBody);

 

---------- I am getting

 

HTTP Error 401.2 - Unauthorized: Access is denied

 

Any solution?

 

Thanks

 

Aslam Bari
1 answer
  1. Sep 23, 2:43 PM

    Hi Aslam,

    HttpRequest doesn't have a special "FORM" authentication scheme. The Authorization header you're creating is not a standard way to perform form-based authentication.

    If the .NET service is using browser-style form authentication, you generally need to:

    1. Make an initial POST to the login/authentication endpoint with the username and password in the format expected by the service.
    2. Read the authentication cookie/token returned by that request.
    3. Send that cookie/token with the subsequent request to the .asmx service.

    For example, if the service uses a session cookie, the flow would be:

    Login request → Set-Cookie → SOAP request with Cookie header

    The exact implementation depends on how the .NET application implements authentication. If you can provide the login URL and an example of the HTTP request/response from a browser or tool such as Fiddler, it should be possible to determine exactly what needs to be sent from Apex. 

0/9000