Skip to main content

#Trailhead Challenges1.395 diskutieren mit

Hands-on challenges are the “secret sauce” of Trailhead. Before searching for solutions to superbadge challenges, review the Salesforce Certification Program Agreement and Policies. ** NOTE ** : If you were able to get a response that solved your issue, please mark it as the 'Best Answer' to help other Trailblazers. If the issue persists after 48 hours, create a Trailhead Help case at https://help.salesforce.com/s/support for further assistance.

I'm getting stumped on this. Org wants to create a push notification for overdue tasks. I have done it using a record-triggered flow with 7 days and 2 days as being notifications email to say Task is about to be due. Could it just be a push notification which stays in Salesforce, notification sent to the notification bell once daily . 

 

#Trailhead Challenges  #Trailhead  #Salesforce Admin  #TrailblazerCommunity  #Sales Cloud  #Formulas

5 Antworten
  1. 15. Sept., 20:02

    Hi @Scott Holmes -  Create a Scheduled-Triggered Flow that runs once a day.

     Get Task records where: 

    • IsClosed = False
    • ActivityDate < TODAY()

     

     Use the Custom Notification action.  

     

     Send the notification to the Task Owner.  

     

     The notification will appear in the Salesforce notification bell.  

     

     If you also want the 7-day and 2-day reminders, those can remain as scheduled paths in your existing record-triggered flow. 

     

0/9000

Anyone know how to customize track entry rules in cadences? For Positive and Negative tracks I have the same three options:  

 

  • Email Reply
  • Email Open
  • Email Link Click

We've been using Sales Engagement for a little over a year now and are ready to start experimenting with with cadence steps that are more relevant based on target engagement -- but if I can't customize the track entry rules, I'm not sure how this is of value especially for the negative track. Thanks! 

 

 

#Trailhead Challenges

4 Antworten
  1. 3. Sept., 06:38

    For something like “move to the negative path when a rep marks a call as Not Interested,” Flow is probably the cleaner option. You can use the custom field or call outcome as the decision point, remove the prospect from the current cadence, and then enroll them into the appropriate cadence. That gives you much more control without trying to force the cadence builder to handle logic it wasn't designed for. 

     

    I’ve also been looking at how Salesforce-based communication workflows handle rules such as schedules, availability, and routing. This

    Salesforce Business Hours Call Routing page is relevant from that perspective because the same idea applies: keep the business rule separate from the communication step itself.

0/9000

Hi everyone,

I’m working on a project with Sales Cloud and Revenue Cloud (AgentForce Revenue Management license, latest version) and I have a question about the Pricing Configuration.

I’d like to know if it’s possible to automatically synchronize prices between Salesforce’s Pricing Configuration and the product prices (Price Books / price lists), without having to manually update it every time there is a price change.

More specifically:

  • Is there any native feature in Revenue Cloud / CPQ that enables this automatic price synchronization?
  • If it’s not fully native, what is the best practice to keep prices always up to date in the Pricing Configuration (for example, using flows, triggers, APIs, or another recommended approach)?

If anyone has documentation, configuration examples, or can share how you handle this in your org, it would be very helpful.

Thanks in advance for your help! 

 

#Trailhead Challenges

1 Antwort
  1. 14. Sept., 16:27

    Hi Josiane Alves,

    Yes, Revenue Cloud supports keeping pricing data up to date, but the synchronization is not simply an automatic two-way sync between Pricing Configuration and Price Books.

    In Revenue Management, Price Book Entries are used as the source for product list prices, and the List Price pricing element retrieves the applicable price during pricing execution.  

     

    When pricing data used by decision tables changes, Salesforce provides a Sync Pricing Data operation to refresh the decision tables. Salesforce also documents a Scheduled Flow approach to automate this synchronization on a regular cadence.  

     

    Therefore, the recommended approach is:

    • Maintain the product/list prices in the appropriate Price Books/Price Book Entries.
    • Use the Pricing Procedure and List Price element to retrieve the applicable price.
    • Sync pricing data when the underlying pricing information changes.
    • If you need the synchronization to happen automatically, use a Scheduled Flow rather than relying on manual updates.

    You generally wouldn't need a trigger just to keep the pricing decision tables synchronized; Salesforce provides the pricing-data sync capability and documents Scheduled Flow as the automation option.  

     

    If the synchronization is still not working as expected after configuring this, please provide more details about your Pricing Configuration and Price Book setup so we can investigate further. If the issue persists, please create a case with Salesforce Support.

    Thanks! 

0/9000

Good afternoon, 

 

The hands-on challenge is not done yet because it says "

In the 'Review Opportunity with Account Owner' flow, we can’t find a Path with the API name 'X3_Days_After_Last_Modified_Date'. Make sure you saved the changes in your flow.

 

I´ve done it again three times already and is still incorrect. Can I have your help? Thanks! 

 

#Trailhead Challenges  #Record-Triggered  #Flow

0/9000

Dear Forum  

I have a query that Can we add "Specify the time criteria for this rule" other than 0min or 30 min like (12min,20 min) in esclationn rule. 

 

#Service Cloud  #Trailhead Challenges

1 Antwort
  1. 22. Aug., 10:16

    Short answer: no - native Case Escalation Rules only let you pick 0 or 30 minutes for 'Age Over' (you enter the hours, then choose 0 or 30 from the dropdown). Custom values like 12 or 20 minutes are not possible there; it is a fixed platform limit. 

     

    For minute-precise escalation, use one of these instead: 

     

    1. Record-Triggered Flow with a Scheduled Path (easiest): add a scheduled path set to run, say, 12 or 20 minutes after your date/time field (or after the case is created / meets criteria), and put the escalation action - reassign to a queue, send an email, update a field - in that path. Scheduled paths accept any custom minute value. 

     

    2. Entitlements + Milestones (the full SLA framework): 'Minutes to Complete Milestone' accepts any number, and Milestone Actions fire at exactly that time - ideal if you are tracking support SLAs. 

     

    Go with the Flow scheduled path if you just need custom timing; use Milestones if you want a proper SLA model on Cases. 

     

    If this helps, please mark it as the Best Answer so it helps the next person - thanks 🙂

0/9000

i am currently working on the scheduled flow modules which in under the developer intermediate course , i have completed all the task which is given to me , but still it shows not completed , help me in this  

 

#Trailhead Challenges  #Flow

9 Antworten
  1. 13. Aug., 13:29

    Hi,

    I’m currently working through the Scheduled Flow modules in the Developer Intermediate course. I have completed all the tasks and automation steps required by the module, but Trailhead is still showing the module as Not Completed.

    Could you please help me understand what might be causing this issue and what I need to check or update so that Trailhead recognizes the completed work?

    I would really appreciate your guidance.

    Thank you!

0/9000

Hi everyone,

I’m using a Scheduled Flow that calls an Invocable Apex action to send contract expiration reminder emails.

The flow passes the correct Contract Ids to Apex, and the Apex code creates Messaging.SingleEmailMessage records using setToAddresses() for both the Relationship Manager (User email) and Party Contact (Contact email).

Here is the email sending part of my Apex code:

public class ContractReminderController {    // Wrapper class to accept a collection of Contract Ids from Flow    public class ContractRequest {        @InvocableVariable(required=true)        public List<Id> contractIds;    }    @InvocableMethod(label='Send Contract Expiration Reminders')    public static void sendReminders(List<ContractRequest> requests) {        if (requests == null || requests.isEmpty()) {            return;        }        Set<Id> contractIds = new Set<Id>();        // Collect all Contract Ids from the Flow collection        for (ContractRequest req : requests) {            if (req.contractIds != null) {                contractIds.addAll(req.contractIds);            }        }        if (contractIds.isEmpty()) {            return;        }        // Query Contracts        List<Contract__c> contracts = [            SELECT Id,                   Name,                   Contract_End_Date__c,                   Send_Expiration_Reminder_Days_Before__c,                   Relationship_Manager__c,                   Relationship_Manager__r.Name,                   Relationship_Manager__r.Email,                   Party_Contact__c,                   Party_Contact__r.Name,                   Party_Contact__r.Email            FROM Contract__c            WHERE Id IN :contractIds        ];        List<Messaging.SingleEmailMessage> emailList = new List<Messaging.SingleEmailMessage>();        for (Contract__c con : contracts) {            // Relationship Manager Email            if (con.Relationship_Manager__c != null &&                String.isNotBlank(con.Relationship_Manager__r.Email)) {                Messaging.SingleEmailMessage rmEmail = new Messaging.SingleEmailMessage();                rmEmail.setToAddresses(new List<String>{                    con.Relationship_Manager__r.Email                });                rmEmail.setSubject('Action Required: Contract Expiration Reminder - ' + con.Name);                rmEmail.setPlainTextBody(                    'Dear ' + con.Relationship_Manager__r.Name + ',\n\n' +                    'This is a reminder that the contract "' + con.Name +                    '" is scheduled to expire in ' +                    String.valueOf(con.Send_Expiration_Reminder_Days_Before__c) +                    ' days.\n\n' +                    'Contract Details:\n' +                    '- Contract Name: ' + con.Name + '\n' +                    '- End Date: ' + String.valueOf(con.Contract_End_Date__c) + '\n\n' +                    'Please review the contract and initiate the renewal or closure process before the expiration date.\n\n' +                    'Regards,\n' +                    'Contract Management System'                );                emailList.add(rmEmail);            }            // Party Contact Email            if (con.Party_Contact__c != null &&                String.isNotBlank(con.Party_Contact__r.Email)) {                Messaging.SingleEmailMessage contactEmail = new Messaging.SingleEmailMessage();                contactEmail.setToAddresses(new List<String>{                    con.Party_Contact__r.Email                });                contactEmail.setSubject('Upcoming Contract Expiration Notice - ' + con.Name);                contactEmail.setPlainTextBody(                    'Dear ' + con.Party_Contact__r.Name + ',\n\n' +                    'This is a reminder that the contract "' + con.Name +                    '" is scheduled to expire in ' +                    String.valueOf(con.Send_Expiration_Reminder_Days_Before__c) +                    ' days.\n\n' +                    'Contract Details:\n' +                    '- Contract Name: ' + con.Name + '\n' +                    '- End Date: ' + String.valueOf(con.Contract_End_Date__c) + '\n\n' +                    'If you wish to continue the agreement, please contact your Relationship Manager to discuss the renewal process before the contract expires.\n\n' +                    'Regards,\n' +                    'Contract Management System'                );                emailList.add(contactEmail);            }        }        // Send all emails        if (!emailList.isEmpty()) {            Messaging.sendEmail(emailList);        }    }}

The Apex debug log shows:

  • Messaging.sendEmail() returns Success: true
  • The Salesforce Email Log File shows Mail Event = D (Delivered) for the recipient email addresses

However, the emails never appear in either the Gmail inbox or the company Outlook inbox (including Spam/Junk folders).

A simple Anonymous Apex email using the same setToAddresses() approach is delivered successfully.

Has anyone seen a case where emails sent from an Invocable Apex method triggered by a Scheduled Flow are marked as Delivered in the Email Log File but are not received by the recipients? Are there any limitations, sender context differences (Automated Process), or additional settings I should check?

Thanks! 

 

#Salesforce Developer

 

@* Salesforce Developers *

5 Antworten
  1. 4. Aug., 06:35

    I found the solution.

    The issue was not with the Flow or the Invocable Apex logic. The emails were being sent from a Scheduled Flow, which runs as the Automated Process user. Although Messaging.sendEmail() returned success and the Email Log File showed Delivered, the recipients were not receiving the emails.

    The fix was to send the emails using a verified Organization-Wide Email Address.

    I updated the Apex code to retrieve the Organization-Wide Email Address dynamically and set it as the sender:

    OrgWideEmailAddress owea = [

    SELECT Id

    FROM OrgWideEmailAddress

    LIMIT 1

    ];

    email.setOrgWideEmailAddressId(owea.Id);

    After setting the From Address to a verified Organization-Wide Email Address, the reminder emails were delivered successfully to the recipients.

    Hopefully this helps anyone facing the same issue with Scheduled Flows and Invocable Apex email delivery.

0/9000

Getting this Error: Error 'contact' is not defined in outputs line: 123 Error 'contact' is not defined in outputs  

'contact' is not defined in outputsagentscript-compiler 

 

How to solve this Error? 

 

#Trailhead Challenges

14 Antworten
  1. 12. Juni, 10:21

    Okay @Deepshikha Shaw

    , looks like the code to be copied from the section 'Import a New Agent with Agent Builder' has some issue. The code to the copied has fiew lines, which are different in your screenshots. 

    You can try from this step again, create a new agent using scitpt, and follow the steps onwards again. AFter that, it is just saving that agent, append some new instructions (not replace, but added those 5 lines) and done.

0/9000

What are your favorite Trailhead modules for improving Flow skills? 

 

I've been spending more time learning Salesforce Flow and have completed several beginner Trailhead modules. As I move into more advanced automation, I'm looking for recommendations from the community.

 

Which Trailhead modules or hands-on projects helped you the most in understanding topics like:

  • Record-Triggered Flows
  • Scheduled Flows
  • Screen Flows
  • Error handling
  • Best practices for building scalable Flows

I'm also interested in knowing whether you prefer learning through Trailhead alone or by building projects in a Developer Edition org.

 

Looking forward to hearing which resources made the biggest difference in your Salesforce journey! 

 

Get more info

Click Here

 

#Flow  #Trailhead Challenges

0/9000
2 Antworten
  1. Eric Burté (DEVOTEAM) Forum Ambassador
    4. Juni, 22:40

    Hello @Thomas Boxall have you tried flows or apex triggers ? Make sure those are very optimized. Otherwise bypass those mechanisms and leverage scheduled flows / jobs. Eric

0/9000