Skip to main content

#Trailhead476 discutindo

I'm working on challenge 1 of the apex for agentforce superbadge. Its requesting to add the following actions:

  1. Lookup Contact by Email: This action queries the contact record based on an email address.
  2. Get Most Recent Booking by Contact: This action queries the most recent booking record before today.
  3. Lookup Experience: This action queries the experience record based on an experience name.

But these actions are not available in the org; Am I missing something? 

 

 

#Trailhead Superbadges  #Trailhead  #Agentforce

2 respostas
  1. Hoje, 02:43

    Hi Ebony, 

     

    Good news: these are pre-built actions that should already exist in the special superbadge org — you're not meant to build them in Challenge 1 (that's Exercise 2, where you create an Invocable Apex class). If they're not showing up, this points to one specific likely cause: you may not be using the special Developer Edition org that comes with this superbadge's pre-loaded Coral Cloud Resorts configuration and sample data. 

     

    To check/fix: 

    1. Confirm you signed up for the org through the "Sign up for a free Developer Edition org with special configuration" link on the superbadge unit page itself (Step I), not a generic playground or an existing DE org. This superbadge requires that specific special-config org — a regular org won't have these actions or the underlying Booking/Experience data at all. 

    2. If you already have a different org connected, disconnect it and sign up fresh via that link, then reconnect. 

     

    Once you're in the correct org, here's where to find them (per the official exercise walkthrough): in Agent Builder, when adding an action to your topic, use the Add Action search box: 

    - Search "Recent" → select Get Most Recent Bookings by Contact 

    - Search "Lookup" → select Lookup Experience 

    - (Lookup Contact by Email should appear the same way — search "Lookup" or "Contact") 

     

    These are found via search in that dialog, not browsed from a list — if you're clicking through a list instead of typing into the search field, that's worth double-checking too. 

     

    If you've confirmed you're in the correct special-config org and searching properly and they still don't appear, that would point to an org provisioning issue worth reporting via Trailhead Help with your org details. 

     

    Reference:

    https://trailhead.salesforce.com/content/learn/superbadges/superbadge-apex-for-agentforce

0/9000
1 resposta
  1. Hoje, 03:01
    We created a case with Salesforce support and were able to get an extension for Phishing-Resistant MFA until Oct 20th.
0/9000

I’m currently working on the "Add a Flow as an Agent Action" challenge, but I’ve run into a blocker: the required flow (Cancel Contact’s Booking) is not available in my org's Flows.

Here is what I’ve done and checked so far:

  • Prerequisites: All previous units and hands-on challenges were completed successfully and verified.
  • Org Setup: I initially used my assigned Special Developer Edition org, and when that failed, I spun up a brand new Agentforce-enabled Developer org. The flow is still missing in the new org as well.
  • Manual Flow Creation: I attempted to build the flow manually in Flow Builder, but I don't have the required input/output parameter specs (like Booking_ID, Error_Message_Output, and Updated_Booking_Record) to configure it correctly for the agent.

Has anyone else encountered this missing flow asset or figured out a workaround/manual setup for the flow parameters? Any tips or insights would be greatly appreciated 

 

#Trailhead Challenges  #Trailhead

14 respostas
  1. 25 de set., 17:13

    It appears that the Cancel Contact's Booking flow is not automatically provisioned in the org. To complete the Add a Flow as an Agent Action challenge, you must first create the Cancel Contact's Booking flow as outlined in the activity instructions. Once the flow has been created and activated, it will become available as a Reference Action, allowing you to complete the challenge and proceed to the next unit.

0/9000

Hi everyone,

I would appreciate some architectural guidance on a Salesforce security requirement.

We need to restrict Sales users from exporting or extracting company-wide financial/reporting data, while they must continue using Salesforce normally, including the Salesforce Mobile App.

Our initial approach was to remove the API Enabled

permission from their corresponding Permission Set Group to prevent API-based extraction tools such as Data Loader or spreadsheet connectors. 

Howeever, I would like to confirm with you, if API Enabled is also required for the Salesforce Mobile App, which Sales users need to use.

Therefore, my questions are:

  1. Is removing API Enabled an appropriate approach for preventing data extraction in this scenario, or would this have unintended consequences beyond the intended restriction?
  2. What would be the recommended Salesforce architecture to restrict API-based data extraction for Inside Sales while keeping access to the Salesforce Mobile App?
  3. Would API Access Control / Connected App allowlisting be a better approach, for example allowing Salesforce Mobile while restricting other API clients?
  4. Are there other Salesforce permissions or security controls that should be considered specifically for preventing report/data export without disabling API access entirely?

The business requirement is specifically to restrict data extraction

, not to prevent Sales users from using Salesforce Mobile or other approved Salesforce functionality. 

 

The focus is on:

  • Reports: No creating, editing, cloning, or exporting.
  • Dashboards: No access to restricted Turnover dashboards.
  • Subscriptions: Prevent receiving Reports/Dashboards via email.
  • List Views: Prevent export/print as an extraction method.
  • Folder Sharing: Prevent indirect access to restricted Reports/Dashboards.

Any guidance or documentation from Salesforce would be greatly appreciated. 

 

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

 

 

#Trailhead Challenges  #Trailhead  #Salesforce Developer  #Salesforce Admin  #Reports & Dashboards

1 resposta
  1. 25 de set., 17:08

    Hi Lena, 

    Yes, removing API Enabled would impact the Salesforce Mobile App, since the mobile app requires API access. So I wouldn’t use that permission alone as the control for this requirement.  

     

    A better approach is to keep API access for the users who need Salesforce Mobile and use API Access Control to restrict API access to only approved/allowlisted connected apps. Salesforce supports this model specifically for limiting API access while allowing approved apps.  

     

    For report extraction, also control the Export Reports permission separately. Removing that permission prevents users from exporting report data, while folder sharing and report/dashboard permissions can be used to restrict access to sensitive content. 

    I’d therefore treat this as multiple layers: API Access Control + Report/Folder permissions + Export Reports + subscription/access controls, rather than disabling API access entirely. 

0/9000

 

Need an Solution please help !

 

 

I am currently working on the Agenblazer Innovator status 2026

 

 

 

While working on the

Agentforce Grid -> Explore Data with Agentforce Grid

 

module i am facing this error eventhough the every configurations are right. Is any agentforce expertice people it would be great to help me!  

  

  

[LXM001] A temporary system error occurred. Please provide this request ID to customer support. RunId: 01a0d49a-4f08-77ec-ad16-74a1a4242732  

  

Thanks in Advance!  

 

 

#Agentforce  #Trailhead  #Trailhead Challenges  #Salesforce Developer

1 resposta
  1. 25 de set., 13:36

    I've just completed this module and had a similar thing happen first time I tried. If right-click on the column and click run hopefully it will resolve the issue it did for me.

0/9000

 I need to automatically create a Chatter post on a Case whenever its pending approval request is reassigned to another user using the standard Reassign action. Since triggers and record-triggered flows aren't supported on ProcessInstanceWorkitem, and the Case itself doesn't change, I'm not sure how to capture this event. Has anyone solved this, whether with scheduled polling, a custom reassign component, or another approach? Any suggestions or sample code would be appreciated.  

 

#Trailhead  #Salesforce Developer  #Salesforce Admin  #Salesforce  #TrailblazerCommunity  #Sales Cloud  #Apex  #Salesforcecommunity  #Salesforce_developer

2 respostas
  1. Ontem 08:00

    You’re correct that there isn’t a direct trigger point here. ProcessInstanceWorkitem doesn’t support Apex triggers or record-triggered flows, and reassigning the approval doesn’t update the Case itself. 

     

    If you need to keep the standard Reassign action, I’d handle it with scheduled Apex:

    1.  Run a scheduled job every few minutes. 
    2.  Query new ProcessInstanceStep records where StepStatus = 'Reassigned'. 
    3.  Use ProcessInstance.TargetObjectId to identify the related Case. 
    4.  Query the pending ProcessInstanceWorkitem for that process instance to get the newly assigned ActorId. 
    5.  Insert a FeedItem with the Case ID as ParentId. 
    6.  Store the processed ProcessInstanceStep.Id in a small custom log object with a unique/external-ID field. 
    7.  Skip any step already in that log so rerunning the job can’t create duplicate Chatter posts. 

    I’d also test it by reassigning the same approval twice and then running the job twice. The expected result should be two Chatter posts total, with no additional posts from the second job run. 

     

    If real-time posting is absolutely required, the other option is to replace the standard Reassign experience with a custom Flow/LWC backed by Apex. That custom action would update ProcessInstanceWorkitem.ActorId and create the Case FeedItem in the same transaction. But the existing standard Reassign action can’t be intercepted directly.

0/9000

Hi everyone,

We recently built a custom Sales Force application in a sandbox environment that handles data sharing with a third-party API. The solution involves custom screens, automations, and data sync back and forth with the external system. 

 

Now, our client wants us to do the exact same thing for another third-party API integration, using the same overall structure and business workflow.

What is the best way to approach this?

  1. Should we replicate/clone the existing application inside the same sandbox/org and adapt it for the second API?
  2. Or is it better practice to package and deploy the build into a fresh, separate environment for the new integration?

If you have done something similar, what would you recommend, and what are the key things or common challenges we should keep in mind before starting?

Thanks in advance! 

 

#Salesforce Developer  #Salesforce  #Integration  #Trailhead

1 resposta
  1. Ontem 10:21

    Hi Cloud Crafter, 

     

    Short answer: don't clone the app — generalize it. Build the integration logic once as a reusable, config-driven layer, then add the second API as a new configuration, not a new copy of the app. 

     

    Why cloning is the wrong move: 

    - Two copies of the same objects/flows/Apex means every future bug fix, security patch, or workflow change has to be done twice, and they will drift out of sync within months. 

    - It roughly doubles your metadata footprint in the same org for no real functional benefit, since both integrations share the same overall structure anyway. 

    - It makes testing, permissions, and reporting messier — you'll end up needing to explain to users/admins why there are two near-identical apps doing conceptually the same thing. 

     

    Recommended approach: 

     

    1. Extract what's actually integration-specific into configuration, not code/metadata. Things like endpoint URLs, auth credentials, field mappings, and payload structure should live in Custom Metadata Types or Named Credentials/External Credentials — not hardcoded per-integration Apex classes or per-integration Flows. 

     

    2. Keep one set of core objects, screens, and automations, parameterized by an "Integration Type" or "Source System" field/record, so the same Flow/Apex logic branches or reads config rather than being duplicated. 

     

    3. Use Named Credentials (or External Credentials with Named Principals) per third-party API. This is the standard Salesforce pattern for "same integration pattern, multiple external systems" — one generic Apex HTTP callout class, driven by whichever Named Credential/config record applies. 

     

    4. If the two integrations genuinely have very different data models or business logic (not just a different endpoint), that's the signal to build a second app rather than force everything into one config-driven framework — don't over-engineer for reuse that doesn't fit. 

     

    On sandbox vs. new org: stay in the same org/sandbox unless there's a hard business reason to separate (e.g., different client legal entities, data residency requirements, or genuinely unrelated user bases). A second full org means duplicating users, licenses, security model, and ongoing maintenance — that's a much bigger cost than it sounds, and it's rarely justified just because it's "a new integration." 

     

    Common pitfalls to watch for: 

    - Hardcoded field mappings buried in Apex instead of Custom Metadata — this is the #1 thing that makes the "just clone it" temptation so strong, and the #1 thing that makes maintenance painful later 

    - Bulkification/governor limits — if the second integration runs concurrently with the first, make sure shared triggers/flows are bulk-safe, since now two integrations' worth of volume can hit the same automation 

    - Error handling and retry logic tied to one specific API's response format — generalize this early, or you'll end up with API-specific error handling scattered everywhere

0/9000

Hi everyone,

I have an OmniScript with 10 steps/screens, and each screen has a custom LWC Continue button.

My requirement is:

  • User is currently on Step 7.
  • Step 7 has another button (e.g., Edit Personal Information).
  • When the user clicks this button, I navigate the user back to Step 2.
  • The data on Step 2 is already populated, so the user can review/update it.
  • When the user clicks the Continue button on Step 2, I want to navigate the user directly back to Step 7, instead of continuing through Steps 3 → 4 → 5 → 6.
  • All navigation buttons are implemented using custom LWC components.

Question:

Is there a supported way in OmniScript/LWC to navigate directly from Step 2 back to a specific later step (Step 7) of the same parent OmniScript?

I have looked into OmniScript navigation methods, but I haven't found a supported method that allows me to specify a particular step/index to navigate to.

Has anyone implemented a similar Edit → navigate back to the original step

pattern in OmniScript? If so, what would be the recommended approach?  

#Omnistudio #Salesforce Developer #Vlocity #Financial Services Cloud #Trailhead

1 resposta
  1. Ontem 08:00

    Hi @Rahul Khedkar

     

    Yes, this can be handled using omniNavigateTo() from the Custom LWC that extends OmniscriptBaseMixin.  

     

    this.omniNavigateTo('Step7'); 

     

    Use the

    Element Name

    of Step 7. This allows you to navigate directly from Step 2 → Step 7 without going through Steps 3–6. omniNavigateTo() is the supported approach for navigating to a specific step within the same OmniScript.  

     

    Hope This Helps!!

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 respostas
  1. Ontem 15:17

     

    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

Have you tried the Explore Agentforce Coworker trail? 

https://trailhead.salesforce.com/content/learn/modules/quick-start-agentforce-coworker/explore-agentforce-coworker

 

 

I'm struggling with the completion. Is there a missed configuration step. For me, the 'Ask ***' is visible and takes questions. No response if given. 

 

Stuck on 'Thinking ***' 

 

 

#Trailhead

5 respostas
  1. Ontem 17:50

    I retried this trailhead from a different machine and was able to interact with the Coworker agent. 

     

    Closing this question.

0/9000