The SysTools Email Backup Tool can help you create a local backup of your Gmail account. It allows you to select specific Gmail folders, apply date filters, and save emails with attachments in formats such as PST, MBOX, EML, MSG, and PDF. This is useful if you want to keep a separate copy of your Gmail data on your local disk instead of downloading emails manually.
어제 오후 1:15 Hi Mark,
You can add an exception for Closed Lost by checking the previous Stage. Since you want users to be able to move directly to Closed Lost only when the Opportunity has already reached at least Still Qualifying Opportunity, you can wrap your existing logic with an exception like this:
AND(
ISCHANGED(StageName),
NOT(
AND(
ISPICKVAL(StageName, "Closed Lost"),
CASE(
PRIORVALUE(StageName),
"SQLs to be allocated", 1,
"Still Qualifying Opportunity", 2,
"Requirements Captured", 3,
"Proposal Generated", 4,
"Negotiation", 5,
"Deal Committed", 6,
"Closed Won", 7,
"Closed Lost", 7,
0
) >= 2
)
),
CASE(
StageName,
"SQLs to be allocated", 1,
"Still Qualifying Opportunity", 2,
"Requirements Captured", 3,
"Proposal Generated", 4,
"Negotiation", 5,
"Deal Committed", 6,
"Closed Won", 7,
"Closed Lost", 7,
0
)
>
CASE(
PRIORVALUE(StageName),
"SQLs to be allocated", 1,
"Still Qualifying Opportunity", 2,
"Requirements Captured", 3,
"Proposal Generated", 4,
"Negotiation", 5,
"Deal Committed", 6,
"Closed Won", 7,
"Closed Lost", 7,
0
) + 1
)
The important part is the exception:
AND(
ISPICKVAL(StageName, "Closed Lost"),
<prior stage value> >= 2
)
So Still Qualifying Opportunity or any later stage can move directly to Closed Lost, while an Opportunity still in SQLs to be allocated cannot.
So I've searched and tried various validations in different posts from here to stackexchange to reddit.
I am looking for a validation where in the Phone field, the number can be either domestic or international but must start with a + symbol.
US numbers need to have the 1 country code, so should look like +1xxxxxxxxxx.
International numbers need to start with a + and then the country code so like +44xxxxxxxxxx.
Always with a + and NO dashes in btwn.
Has anyone successfully done this please? TIA!!!
어제 오후 1:14 Hi Barb,
You can handle this with a Validation Rule using REGEX(). For example, if the field is Phone:
AND(
NOT(ISBLANK(Phone)),
NOT(REGEX(Phone, "^\\+[0-9]+$")),
OR(
LEFT(Phone, 2) <> "+1",
LEN(Phone) <> 12
)
)
However, because you want US numbers to be exactly +1 + 10 digits, while international numbers can have different country-code and phone-number lengths, I’d recommend separating the US and international checks:
AND(
NOT(ISBLANK(Phone)),
NOT(
OR(
REGEX(Phone, "^\\+1[0-9]{10}$"),
REGEX(Phone, "^\\+[2-9][0-9]{6,14}$")
)
)
)
This requires:
- + at the beginning
- digits only after +
- US: exactly +1 followed by 10 digits
- International: + followed by 8–15 digits, with no dashes/spaces
You can adjust the international length if your organization's phone-number requirements are more specific.
Based on this Known Issue it looks like the ISCLONE() function isn’t supported in debugging entry criteria? Is this the final word on this?
Assuming the reasoning behind the Trigger Order functionality is accurate, then having a decision check after a flow initializes is not the same as handling in entry criteria. When building and testing flows we need to be able to test the design, not something “close enough”.
9월 17일 오전 11:59 Hi Sean,
Yes, the Known Issue indicates that ISCLONE() in the Start/entry criteria of a record-triggered Flow cannot be used with Flow Debugging. The limitation is specifically with debugging the flow when ISCLONE() is part of the entry criteria.
And I agree that moving the check into a Decision element isn't exactly equivalent—the flow has already started, so it doesn't test the same entry-condition behavior.
For testing, one workaround is to temporarily move the ISCLONE() logic into a Decision element while validating the rest of the flow, then restore it to the Start criteria. For the actual platform limitation, I'd also keep an eye on the Known Issue for any status/update from Salesforce.
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
9월 16일 오후 4:35 Yes, you can check the formula syntax directly in Flow Builder. Formula resources are created within the Flow, so you won't find their syntax in Object Manager.
To view the syntax:
- Open your Flow in Flow Builder.
- Go to the Manager tab.
- Under Resources, select your Formula resource (Due in 7 Days / Due in 2 Days).
- Open the formula to view or edit its syntax.
For example:
Due in 7 Days:
{!$Record.ActivityDate} = TODAY() + 7Due in 2 Days:
{!$Record.ActivityDate} = TODAY() + 2You can also review Salesforce's formula documentation for additional functions and syntax.
Hope this helps!
If you find this response helpful, please mark it as the Accepted Answer, as it may also help other Trailblazers facing a similar issue. 😊
I have a screen flow that I'd like users to be able to access two different ways: from a field on the Opportunity Product object, as well as a Detail Page Button. What's paramount is where the screen flow returns at its end: I need it to end on a view of the product related list on the related Opportunity record. I got it to work successfully on the field version. Here's my formula field:
HYPERLINK("/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product" &"?recordId=" &Id &"&retURL=/lightning/r/Opportunity/" & OpportunityId & "/related/OpportunityLineItems/view",
"CLONE",
"_self"
)
But for the life of me, I can't get the Button version of the URL to go back to the Product related list. I figured out that I can't reference the Opportunity Id via merge field in this scenario, so I created a formula field called Opportunity_Id__c, which just utilizes a CASESAFEID version of the Opportunity Id.
In order to save time, here is a list of the various versions I've tried that DON'T work:
/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product?recordId={!
OpportunityLineItem.Id}&retURL=/{!OpportunityLineItem.Id}
/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product?recordId={!
OpportunityLineItem.Id}&retURL=/lightning/r/Opportunity/&OpportunityId&/related/OpportunityLineItems/view
/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product?recordId={!
OpportunityLineItem.Id}&retURL=/lightning/r/Opportunity/OpportunityLineItem.Opportunity_Id__c/related/OpportunityLineItems/view
/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product?recordId={!
OpportunityLineItem.Id}&retURL=/lightning/r/Opportunity/{!Opportunity.Id}/related/OpportunityLineItems/view
/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product?recordId={!
OpportunityLineItem.Id}&retURL=/lightning/r/Opportunity/{!OpportunityLineItem.Opportunity_Id__c}/related/OpportunityLineItems/view
/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product?recordId={!
OpportunityLineItem.Id}&retURL=/lightning/r/Opportunity/&OpportunityLineItem.Opportunity_Id__c&/related/OpportunityLineItems/view
/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product?recordId={!
OpportunityLineItem.Id}&retURL=/lightning/r/OpportunityLineItem.Id}
/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product?recordId={!
OpportunityLineItem.Id}&retURL=/lightning/r/{!OpportunityLineItem.Opportunity_Id__c}/related/OpportunityLineItems/view
/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product?recordId={!
OpportunityLineItem.Id}&retURL=/lightning/r/&OpportunityLineItem.Opportunity_Id__c&/related/OpportunityLineItems/view
Anyone have any thoughts, tips, or suggestions?
#Flow #Flows #Screen Flow #Formulas
9월 15일 오전 1:26 Ah, that's the missing piece — and you're right, I was wrong to steer you off your formula field. On an Opportunity Product button the native OpportunityId genuinely isn't exposed in the merge-field picker (annoying known quirk). Your Opportunity_Id__c CASESAFEID field is exactly the right workaround, so keep it — custom fields DO show up under Insert Field. Just reference that one instead of OpportunityId:
/flow/Opportunity_Product_Screen_Flow_Clone_Opportunity_Product?recordId={!
OpportunityLineItem.Id}&retURL=/lightning/r/Opportunity/{!OpportunityLineItem.Opportunity_Id__c}/related/OpportunityLineItems/view
That sends them back to the Products related list on the parent Opp. Sorry for the runaround getting there!
If this helps, please mark it as the Best Answer so it helps the next person — thanks 🙂
I am working on a Row-Level report formula, and I keep getting a Missing ')' error on this formula. I've tried looking online for tips but I'm still missing something.
I played around with it, so I might've made it worst. I am trying to create a validation field for various conditions.
Here's what I have:
If(Churn_Event__c.Effective_Date__c > TODAY(),
If( OR(
IF(AND(
(ISPICKVAL(Churn_Event__c.Save_Successful__c, "yes")),
Churn_Event__c.Total_Amount_of_ARR_Churned__c < Churn_Event__c.Churned_Revenue__c)
"Yes",
IF(AND (ISBLANK(Churn_Event__c.Save_Successful__c)),
Churn_Event__c.Total_Amount_of_ARR_Churned__c = Churn_Event__c.Churned_Revenue__c)
"Yes",
IF(AND (ISPICKVAL(Churn_Event__c.Save_Successful__c, "no")),
Churn_Event__c.Total_Amount_of_ARR_Churned__c = Churn_Event__c.Churned_Revenue__c)
"Yes",
),
),
"No"),
"No")
9월 14일 오후 6:53 Hi Tarah,
I have reviewed the Row-Level Formula and identified the issue with the formula structure. The IF() statements were being used inside the OR() condition, which was causing the “Missing )” error.
I have restructured the formula to validate the required conditions correctly:
IF( Churn_Event__c.Effective_Date__c > TODAY(), IF( OR( AND( ISPICKVAL(Churn_Event__c.Save_Successful__c, "yes"), Churn_Event__c.Total_Amount_of_ARR_Churned__c < Churn_Event__c.Churned_Revenue__c ), AND( ISBLANK(Churn_Event__c.Save_Successful__c), Churn_Event__c.Total_Amount_of_ARR_Churned__c = Churn_Event__c.Churned_Revenue__c ), AND( ISPICKVAL(Churn_Event__c.Save_Successful__c, "no"), Churn_Event__c.Total_Amount_of_ARR_Churned__c = Churn_Event__c.Churned_Revenue__c ) ), "Yes", "No" ), "No" )
This formula returns
“Yes” when the Effective Date is in the future and any one of the three defined conditions is met. Otherwise, it returns “No.”
I have a complicated issue due to how the shareholders want the data displayed and the calculations involved.
What I am trying to do is simply get for Month 1 for the [Projected Carry From Prior Month] to be
Month 0 ([Shipments Calc] + Month 0 [LOD Actual Demand]) - Month 0 [Forecast) resulting in 24,422 ((14,490 + 111,872)-101,940).
I kept the Old Formula for the [Projected Carry From Prior Month] metric in the workbook as it is made up of three calculations. The issue is when i bring in [LOD Actual Demand] I get the error of cannot mix aggregate and non-aggregate. No matter what I try I cant get the error to fix unless I break the [LOD Actual Demand] by taking off the additional SUM in the formula which results in the wrong answer. Any help would be greatly appreciated. Tried multiple
Expected End Result of formula:
Month 0 is 0 by default since there is no carryover. So for
Month 0 the calc should show 0,
Month 1 the calc should show 24,422
Month 2 the calc should show 12,844
Month 3 the calc should show 13,756
resources before asking here and they could not figure this out
(
9월 14일 오후 1:50 Thank you. I actually solved my own issue by (like most issues in Tableau) restructuring my data tables using SQL since Tableau can't handle calculations like PowerBI or Microstrategy. I simply combined the Actual Demand with the Past Due Tons before ingesting it to Tableau, therefore eliminating the additional LOD for Past Due Tons. Its wild to me how limiting Tableau is with calculations especially if you have used other BI tools. Thank you all for your help.
Want to create a formula on a specific Opportunity record type,
Validation rule needs to prevent the Fund field from being updated to a fund that has a status of Liquidated or Liquidating.
Can you please assist?
Details below:
Record Type ID= 01220000000AOdBAAW
Fund = Fund__c (this is a lookup field)
Fund Status= Fund_Status__c (this is a formula field)
#Formulas
9월 10일 오후 2:28 Because the status lives on the Fund record, reach it cross-object — a lookup lets you reference the parent's fields with the __r syntax, so Fund__r.Fund_Status__c works even though it's a formula field. Put this on the Opportunity validation rule (it fires / blocks the save when TRUE): AND( RecordTypeId = "01220000000AOdBAAW", OR(ISNEW(), ISCHANGED(Fund__c)), OR(Fund__r.Fund_Status__c = "Liquidated", Fund__r.Fund_Status__c = "Liquidating") ). The OR(ISNEW(), ISCHANGED(Fund__c)) limits it to when the Fund is actually being set or changed, so records that already point to a fund aren't locked if that fund later goes into liquidation. Two tips: match the exact text your Fund_Status formula outputs (the comparison is case-sensitive), and consider RecordType.DeveloperName = "Your_RT_API_Name" instead of the hardcoded Id so it survives sandbox refreshes and deploys. if this helps, please mark it as the Best Answer so it helps the next person — thanks 🙂
The SUBSTITUTE function allowed me to make a text formula that turns a multiselect picklist into a list of values in the order I wanted and with no trailing separators. Niche use case, but super helpful when you need it.
https://www.freelikeapuppy.tech/post/functions-inside-functions
#Formulas