Skip to main content

#Flow158 debatiendo

  #Trailhead Challenges #Salesforce Admin #Flow #Apex What are the most important Salesforce debugging skills a fresher should learn? For example, Debug Logs, Flow Debug, Apex errors, or permission-related troubleshooting? 

2 respuestas
  1. 9 oct, 14:35

    Hi @ROHIT PIPPERA

     

    As a fresher, you don't need to be an expert in debugging, but you should know how to identify and troubleshoot common Salesforce errors. 

     

    Focus on these key areas:

    1. Debug Logs: Learn how to check logs and identify errors.
    2. Flow Debug: Practice debugging Screen Flows and Record-Triggered Flows.
    3. Apex Debugging: Understand System.debug(), exceptions, and common DML errors.
    4. Permission Issues: Learn how to troubleshoot Profiles, Permission Sets, OWD, and Field-Level Security.
    5. Validation Rules: Understand why records fail to save and how to identify the issue.
    6. SOQL Errors: Practice identifying query errors and governor limit exceptions.

    My suggestion: Create a few errors intentionally in your practice org and try to fix them yourself.

    In interviews, don't just explain what Debug Logs are. Be ready to explain how you identified and resolved an issue. 

     

    Practical troubleshooting skills will definitely help you stand out as a fresher. 

     

    All the best!

0/9000

#Salesforce #Flow #Trailhead

 

I’m currently learning Salesforce Screen Flows through Trailhead. What real-world business scenarios should I practice to understand Screen Flow distribution, user interaction, and automated record assignment in a real Salesforce project?

4 respuestas
  1. 9 oct, 14:36

    Hi @ROHIT PIPPERA

     

    Screen Flows are widely used in real-time projects to collect user inputs and automate business processes. 

     

    I suggest practicing these scenarios:

    1. Case Creation: Collect customer issues and assign cases to support queues.
    2. Lead Assignment: Capture lead details and assign leads based on region.
    3. Employee Onboarding: Collect employee information using multiple screens.
    4. Opportunity Creation: Create opportunities using a guided Screen Flow.
    5. Leave Request: Allow employees to submit leave requests.

    For Screen Flow Distribution, focus on:

    • Adding flows to Lightning Record Pages and App Pages.
    • Launching flows using Quick Actions.
    • Passing Record IDs using input variables.
    • Using flows in Experience Cloud.

    My suggestion:

     Start with Case Creation and Lead Assignment. Practice Decision elements, input validation, and fault handling. 

     

    Don't just follow Trailhead steps. Build these scenarios independently in your practice org.

    All the best!

0/9000

Hi everyone,

The link that I have bookmarked for the Salesforce Architect's Decision Guide for Record-Triggered Automation seems to be broken. It looks like the guide was taken down via the following link:

https://architect.salesforce.com/decision-guides/trigger-automationWhere is the Architect's Guide to Record-Triggered Automation?

 

I also cannot find the decision guide for record-triggered automation anywhere on the architect's website. Was it moved to a different URL or was it taken down completely? I found the Automated page on the architect's website, which even references the decision guide for record-triggered automation. But that isn't the same content as the decision guide. 

Automated | Salesforce Architects

 

I always referenced this guide when making architecture decisions between Apex and Flow, especially to explain my decision to clients when discussing solutions, so not being able to point to this architecture reference from Salesforce is really unfortunate. 

 

I hope this was just a mistake and the decision guide will be added back to the architect's website soon. I'd love to hear from someone on the Salesforce Flow Product Team. Thank you!

5 respuestas
0/9000

I have a requirement to build a Flow that will send out a series of emails to Lead prospects based on the Lead Source. Each Lead Source has it's own unique set of emails that will be sent out on a timeline. There are 4 total Lead Sources that will have a series of emails sent out. Each Lead Source will get the following schedule of emails: 

Immediately after creation of Lead, 2 Days after, 4 Days after, 7 Days after, 10 Days after, 30 Days after, 60 Days after, 90 Days after, 120 Days after, 150 Days after, 180 Days after, 210 Days after, 240 Days after, 270 Days after, 300 Days after, 330 Days after, and 360 Days after Lead creation. 

So that would be 17 different scheduled paths and there are 4 Lead Sources so that would make a total of 68 email possibilities. 

What would make the most since in a design for this Flow structure. I could use Decision elements after each Scheduled Path and have email alerts. Doing so would make a large Flow. What would be a better solution is designing this type of Flow? 

 

#Flow  #Trailhead  #Salesforce Admin

6 respuestas
  1. 4 oct, 03:56

    Hi Justin, 

     

    I would avoid creating 68 separate email paths. A better approach would be to make the solution data-driven by creating a custom object such as Lead Email Schedule, with fields like Lead Source, Days After Creation, Email Template, and Active.  

     

    The Flow can identify the Lead Source and use the schedule records to determine which email should be sent and when. This keeps the Flow much easier to maintain and allows you to add or change Lead Sources and email timings without redesigning the entire Flow. With 17 scheduled paths for each Lead Source, the Flow could become difficult to maintain. 

0/9000

#Trailhead #Flow In a real Salesforce project, how do you decide whether a requirement should be implemented using Flow or Apex? What factors do experienced developers normally consider? 

1 respuesta
  1. Ayer, 09:10

    Hi @Pradeepthi Nagarthi

     

    Good question! In real-time projects, we don't decide between Flow and Apex based on personal preference. It mainly depends on the requirement and its complexity. 

     

    Here are a few things I normally consider:

    1. Simple Automation: If the requirement involves updating records, sending emails, or creating related records, I prefer Flow.
    2. Complex Business Logic: If there are complex calculations, multiple conditions, or advanced processing, I prefer Apex.
    3. Large Data Volumes: For processing thousands or millions of records, Batch Apex or other asynchronous Apex options may be more suitable.
    4. External Integrations: For complex API integrations, custom authentication, or advanced error handling, Apex is usually a better choice.
    5. Maintenance: If admins need to make changes frequently, Flow is generally easier to maintain.
    6. Performance: I also consider governor limits, bulk processing, execution time, and future scalability.

    Simple Example:

    If an Opportunity is Closed Won and we need to create a follow-up Task, I would use Flow.

    But if we need to process thousands of records with complex calculations and external API calls, I would consider Apex. 

     

    My suggestion:

    Start by checking whether Flow can handle the requirement efficiently. If the logic becomes too complex or needs capabilities better suited to code, go with Apex. 

     

    Also, remember that we can combine both using Flow and Invocable Apex when needed.

    The goal is not to use more code, but to build a solution that is simple, scalable, and easy to maintain.

    Hope this helps! 

     

    Thank you, 

    Venkat Yadav.

0/9000

Hello all, 

I have (Recently upgraded the servers to version 2026.2.1) Linux server and using tnsnames.ors files for Oracle DB connections. Also has the 'ojdbc11.jar' driver file placed at /opt/tableau/tableau_driver/jdbc location.  

 

(Note: Other data extracts or refreshes works normally. only issue with this recently created flow which outputs multiple files) 

 

I see one of the prep flows on the server is failing with ERROR: "

Output step error message: [FailedToConnectExternalResourceError] - Unable to connect to DataSource_Name on DataSource_Name. Check that the data source is available, or edit the connection and enter your credentials again

" 

 

When I check connection from the panel 'Test Connection' works and shows successful, but at the runtime this flow fails.  

 

I have tnsfiles.ora with proper DB connection names and have placed the 'oracle.properties' file with the string 'oracle.net.tns_admin=/etc' within at locations: 

1. /var/opt/tableau/tableau_server/data/tabsvc/flowminerva/Datasources/oracle.properties 

2./var/opt/tableau/tableau_server/data/tabsvc/minerva/Datasources/oracle.properties 

3./var/opt/tableau/tableau_server/data/tabsvc/vizqlserver/Datasources/oracle.properties  

 

also, just now added the file at - 

4. /var/opt/tableau/tableau_server/data/tabsvc/flowprocessor/Datasources/oracle.properties

 

Any idea what can I check for?  

 

Thank you! 

 

#Tableau Server  #Flow  #Tableau

1 respuesta
  1. 8 oct, 00:56

    Hi Vikas,

    Test Connection and the flow run are not the same session. Test Connection uses you. A Prep flow on Tableau Server runs with the credentials embedded on the flow, under the server account that executes flows. Other extracts can keep working while this flow doesn't, if this one is the only place those credentials aren't embedded.

    The message you pasted is on the output step: unable to connect to that data source. That's the output connection, not automatically the Oracle input. A flow that writes several files has an output connection of its own, and that's the one I'd open first.

    On the Oracle side, the process that actually runs the flow has to see the JDBC driver and oracle.properties. Dropping the file under flowprocessor while that process is already up doesn't always get picked up. Restart the flow services after the file is in place, then run this one flow again.

    I wouldn't call this a tnsnames problem until the output step still can't connect when you run it as the same account the server uses. I also don't have a published defect for 2026.2.1 that matches this, so I won't invent one.

0/9000

Good afternoon everyone, how are you? 

 

I would like to ask a question regarding the email dynamic content for abandoned carts, where we need the ProductName, CurrentPrice, ProductImageURL, and PDPUrl information. Is it necessary to have a Data Graph configured in order to perform a test send with the dynamic personalization based on our Trigger Events? 

 

Because so far we have basically everything configured and are correctly receiving the abandoned cart event data, but when we simulate a send via the flow, none of our emails are dynamically populated. 

 

I created my entire flow based on this link: https://medium.com/@marketingcloudtips/marketing-cloud-next-abandoned-shopping-cart-trigger-d1039e12bf79

 

 

If we missed anything, please help us out! Thank you ! 

 

#Trailhead  #Salesforce Developer  #Salesforce Admin  #Salesforce  #TrailblazerCommunity  #Flow  #Marketing Cloud

4 respuestas
  1. 7 oct, 23:21

    @Guilherme Sequine Saquei! 

     

    O evento chegar no flow e no Data Cloud confirma que o carrinho abandonado está entrando. A vitrine é outro passo: ela só repete os produtos quando o Repeater tem uma fonte, e cada campo de dentro (imagem, nome, preço e link) é merge field dessa mesma fonte. Com o layout estático, o teste envia o e-mail e a vitrine vem vazia ou fixa. 

     

    O data graph só alimenta a vitrine quando ela está em Data Graph Attribute. Nesse caso ele precisa incluir o DMO dos itens do carrinho, no caminho Unified Individual → Unified Link Individual → Individual → itens, com nome, preço, imagem e URL marcados. O e-mail usa o graph padrão do Setup (Customer Engagement), salvo se tiverem colocado outro na própria mensagem. Esse graph atualiza na agenda, então o carrinho pode já estar no Data Cloud e ainda não estar disponível para a vitrine. Um graph só de perfil envia o e-mail e não tem linha de produto para repetir. 

     

    Para esse teste, liguem a vitrine no evento, que é o payload que vocês já validaram. No e-mail, aba Data Sources, adicionem o evento de carrinho abandonado (o mesmo do flow). No Repeater, definam o Repeater Source nesse evento, nos itens do carrinho. Dentro da vitrine, a imagem entra como Merge field, e nome, preço e URL do botão também, todos dessa mesma fonte. Salvam e fazem o preview com a pessoa que gerou o evento. Se nome e preço aparecerem e a imagem continuar em branco, incluam o domínio da imagem em Setup → Trusted URLs.

0/9000

Hi!  

In Flow Builder when we 

Deactivate the flow, sometimes we are asked whether we want to:

  1. Deactivate and complete work, or
  2. Deactivate and cancel work.

And for some flows this question is not asked. But I still haven't figured out exactly when this happens and it could be that there are similar scenarios where a question is asked. 

Flow Deactivation Behaviour

 

My code is trying to imitate that behavior.  

  

 To deactivate the flow I currently use the tooling API to set the 

activeVersionNumber of a flow definition to 0. And this deactivates the flow:

HttpRequest req = new HttpRequest();req.setEndpoint('callout:' + MY_NAMED_CREDENTIA+ '/services/data/v61.0/tooling/sobjects/FlowDefinition/' + flowDefId);req.setMethod('PATCH');req.setHeader('Content-Type', 'application/json; charset=utf-8');req.setBody('{"Metadata":{"activeVersionNumber":0}}');req.setTimeout(60000);

 

I am looking at the documentation of FlowRecord and FlowRecordVersion

. But I still haven't been able to conclude what the lifecycle is. 

 

The 

ProgressStatus 

field in specific is interesting. The flow version can be in statuses like "InProgress", "Finishing", "PreparingData", etc. 

 

In 

FlowRecordVersion 

we have fields for the number of Entries, Exists, Errors and Stopped. 

 

If you want to code the deactivation, how do you make sure that the flow still has some work in progress (e.g., contacts in a wait activity, a path scheduled in the future), or not? Salesforce knows when to show that dialog. So, why can't I? 

  

 @Salesforce Flow Automation

#Flow

4 respuestas
0/9000

How are others handling Video Calls that fail to related to an Account due to prospects joining from their car or a conference room full of people?  We have more records unassigned than assigned and getting the Sales Users to related records back to the proper accounts after the fact is proving to be difficult.  I thought creating a flow that reviews names that DID log as joined against Contact and Lead records, as well as Video Call subject line would be helpful to at least populate another 10-20% of those blanks.  However upon reading more documentation, it looks like SF doesn't support additional flows to match unless we turn off org wide matching.   

How have others addressed this issue, or is it truly an Enablement/Sales issue?  Perhaps an addon tool like

Otter.ai

- or will that also conflict with existing matching?  

 

#Flow  #Agentforce  #Salesforce Developer  #Data Management

3 respuestas
  1. 28 ago, 15:56

    Hey Misty, 

     

    Your read is accurate: per Salesforce's own docs, Related Record Matching is an org-wide, all-or-nothing setting, when it's on, ECI runs its own algorithm (participant email/domain matching against Contact, Lead, Account) and populates the Related Record field automatically. If you want to run your own Flow-based matching logic instead (your name-against-Contact/Lead + subject line idea), you have to turn Related Record Matching OFF entirely, then a Flow becomes the only thing setting that field. You can't layer a supplemental Flow on top of the native matching to "catch the extra 10-20%", it's one or the other, not additive. 

     

    Given that, your options really are: 

    1. Turn off native matching, build your own Flow to replicate ECI's built-in logic PLUS your extra fallback rules (name-against-Contact/Lead, subject line parsing). This means you inherit responsibility for the baseline matching ECI already does well, not just the edge cases, that's a bigger lift than it initially sounds. 

    2. Keep native matching on, and instead build a separate Flow/batch job that runs afterward on unmatched records only, checking if Related Record is null, then applying your own supplemental logic to update it. This avoids fighting the native system since you're only touching records ECI already gave up on, not replacing its matching entirely. 

    3. Turn on Einstein Activity Capture integration alongside ECI, per Salesforce's own guidance, this specifically enhances guest participant matching quality, which sounds directly relevant to your "joining from a car/conference room" problem, worth testing before building custom logic at all. 

     

    On

    Otter.ai

    or similar tools: since ECI's matching is a Salesforce-side process, not tied to which video/transcription vendor recorded the call, a third-party transcription add-on wouldn't conflict with ECI's matching logic, but it also wouldn't replace or feed into it automatically. It solves a different problem (better transcript quality) than record-matching itself. 

     

    Given the scale you're describing, option 2 (supplement only nulls, don't disable native matching) is usually the least disruptive path, worth prototyping that before considering a full matching rebuild. 

     

    Reference:

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

0/9000

Hi everyone,

I’m looking for some architectural input on a record visibility design for a multi-subsidiary arquitecture. 

 

Context:

  • Account and Quote OWDs are set to Private.
  • An ERP integration creates Quote records linked directly to QuoteAccountId (field when you activate the feature "Create Quotes without Opportunities"
  • All sales users share the same Profile and Role and public groups BUT
  • Field Sales users should only see Quotes linked to Accounts they own, provided the Quote and Account regions (e.g. Spain, France, etc.) match.

Current Solution:

To distinguish Field Sales users from back-office users, I created dedicated Public Groups per region (e.g. Group_FieldSales_RegionA, Group_FieldSales_RegionB).

A Record-Triggered Flow checks whether the Account Owner belongs to the corresponding Field Sales group. If so, the Flow creates a QuoteShare record for that user.

Importantly, these Public Groups created for the Field Sales users are not used in Sharing Rules

. They are only used by the Flow as an internal validation mechanism to identify whether the Account Owner is a Field Sales user. This is also important for managers with hybrid responsibilities, who may belong to both Field Sales and back-office groups (they are everywhere in every public group with execption of my newly created Field Sales public groups) 

 

Architectural Question:

There is a concern of non-developer members about using Public Groups and believes visibility should be based purely on Account Ownership.

  1. Would you consider using Public Groups as an internal identity/validation mechanism in Flow a sound architectural approach in this scenario?
  2. If Public Groups cannot be used, what would be a robust alternative for a Flow to identify Field Sales users, given that Profiles, Roles and public groups are shared and some users have hybrid responsibilities (Sales Managers are inside and outside at the same time)?

I’d appreciate your thoughts on the best practice for this design.

Thanks in advance! 

 

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

 

 

#Trailhead Challenges  #Trailhead  #Salesforce Developer  #Salesforce Admin  #Solution Architects  #Architects  #Enterprise Architecture  #Flow  #Security

4 respuestas
  1. 6 oct, 16:13

    @Lena Wong

    You're right the business rule doesn't care who owns the Quote. The risk comes from how the platform stores the share, not from the rule. 

     

    Where the Quote owner matters (platform mechanics, not business logic) 

    A Flow created QuoteShare is a manual share (row cause "Manual"). Salesforce deletes manual shares on a record when that record's OwnerId changes. Your Flow most likely triggers on events like Quote created or Account owner changed. A Quote owner change isn't one of those events, so: 

    1. The ERP (or a user or mass transfer) changes the Quote's owner.
    2. The platform silently deletes the share the Flow created.
    3. Nothing re-runs the Flow, so the Account Owner loses access even though the business rule says they should have it.

    Fixes, in order of preference: 

     

    • Add a trigger path on Quote update when OwnerId changes, so the Flow recreates the share.
    • Add a scheduled reconciliation that compares expected and actual shares. This also catches other drift.

    A related edge case:

    if the Account Owner is also the Quote owner, they already have access. The Flow should skip creating the share in that case, because inserting a share for the owner is rejected or ignored. 

     

    If the ERP never changes Quote ownership

    (it creates Quotes under a fixed integration user and never updates them), this risk mostly goes away, and the Account owner, region, and bulk-load gotchas are what remain. I can't confirm that from here, so it's worth asking the ERP team. 

     

    On the permission set groups

     

    If every sales user is in the same Permission Set Group, that group can't tell Field Sales from back-office, so it doesn't help as the identifier. Option 2 only works with a separate, standalone permission set (for example

    Field_Sales_Spain) assigned directly to Field Sales users and not included in the shared group. Hybrid managers just get that one assigned too.

0/9000