Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Flows action is hanging #134

Open
k-capehart opened this issue Oct 30, 2024 · 10 comments
Open

Fix Flows action is hanging #134

k-capehart opened this issue Oct 30, 2024 · 10 comments

Comments

@k-capehart
Copy link
Member

Describe the bug
When running the "Fix Flows" action in the VS Code extension, I am seeing it get stalled. It will parse through a few of the flows and then get stuck on the same specific flows. I haven't been able to figure out what it is about these flows that are causing issues but it seems consistent.

To Reproduce
Steps to reproduce the behavior:

  1. Click Scan Flows
  2. Click Fix Flows

Expected behavior
It should parse through all of the flows, or at least give me an error message in the output.

Screenshots

It will get stuck on loading right here, after parsing through this first flow and fixing it. The only way to get it to continue is to delete the next flow that it is attempting to scan and then run again. But then it gets stuck on another one further down.

image

Desktop (please complete the following information):

  • OS: MacOS
  • Version 14.7 (23H124)

@junners

@junners
Copy link
Member

junners commented Oct 30, 2024

Ohhh good catch lemme check this out! Appreciate your contributions Kyle!!

@k-capehart
Copy link
Member Author

Of course! I'll see if I can narrow down what's causing it in my flows. I'm not sure if the issue is coming from core or from here.

@junners
Copy link
Member

junners commented Nov 16, 2024

Hey @k-capehart - can't seem to fully replicate this. I've released a new version to help troubleshoot the issue. Here's the PR for it #141

@junners
Copy link
Member

junners commented Nov 16, 2024

When you're free, could you please install 3.28.0 - then, on your vscode, press cmd (ctrl for windows) + shift + p > then type Developer: Set Log Level then select trace.

Once enabled, run step 1 and 2 again, then go to the output tab (shift+cmd(ctrl for windows)+u) then on the right hand side, select the dropdown for available log channels, you should see Lightning Flow Scanner as an option, then share the logs with me
Screenshot 2024-11-16 at 2 41 26 AM

@k-capehart
Copy link
Member Author

@junners Here is the output. I removed everything from my local files except 2 flows. It still gets stuck after fixing the first one. It correctly prints out Fixed File twice, but doesn't get to Has fixed results, storing inside cache.

Lightning Flow Scanner output 2024-11-19 10:34:20.761 [debug] Selected uris /Users/kylecapehart/Documents/repos/gdlsf/force-app/main/default/flows/case_notifications_slack.flow-meta.xml /Users/kylecapehart/Documents/repos/gdlsf/force-app/main/default/flows/User_Merge_Flow.flow-meta.xml 2024-11-19 10:34:20.762 [trace] create panel 2024-11-19 10:34:20.762 [trace] load vscode stored configurations 2024-11-19 10:34:20.989 [debug] Scan Results {"flow":{"flowVariables":["choices","constants","dynamicChoiceSets","formulas","variables"],"flowResources":["textTemplates","stages"],"flowMetadata":["description","apiVersion","processMetadataValues","processType","interviewLabel","label","status","runInMode","startElementReference","isTemplate","fullName","timeZoneSidKey","isAdditionalPermissionRequiredToRun","migratedFromWorkflowRuleName","triggerOrder","environments","segment"],"flowNodes":["actionCalls","apexPluginCalls","assignments","collectionProcessors","decisions","loops","orchestratedStages","recordCreates","recordDeletes","recordLookups","recordUpdates","recordRollbacks","screens","start","steps","subflows","waits"],"fsPath":"/Users/kylecapehart/Documents/repos/gdlsf/force-app/main/default/flows/case_notifications_slack.flow-meta.xml","name":"case_notifications_slack","xmldata":{"@xmlns":"http://soap.sforce.com/2006/04/metadata","actionCalls":{"name":"post_to_Owner","label":"post to Owner","locationX":"176","locationY":"323","actionName":"slackv2__invokePostMessage","actionType":"apex","flowTransactionModel":"CurrentTransaction","inputParameters":[{"name":"message","value":{"stringValue":"test"}},{"name":"messageDestinationId","value":{"stringValue":"a2Y5Y000007IeWjUAK"}},{"name":"recordId","value":{"elementReference":"$Record.Id"}}],"nameSegment":"slackv2__invokePostMessage","versionSegment":"1"},"apiVersion":"58.0","environments":"Default","interviewLabel":"case notifications {!$Flow.CurrentDateTime}","label":"case notifications slack","processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"processType":"AutoLaunchedFlow","start":{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"},"status":"Obsolete","variables":{"name":"RecipIds","dataType":"String","isCollection":"true","isInput":"false","isOutput":"false"}},"label":"case notifications slack","interviewLabel":"case notifications {!$Flow.CurrentDateTime}","processType":"AutoLaunchedFlow","processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"start":{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"},"status":"Obsolete","type":"AutoLaunchedFlow","elements":[{"element":{"name":"post_to_Owner","label":"post to Owner","locationX":"176","locationY":"323","actionName":"slackv2__invokePostMessage","actionType":"apex","flowTransactionModel":"CurrentTransaction","inputParameters":[{"name":"message","value":{"stringValue":"test"}},{"name":"messageDestinationId","value":{"stringValue":"a2Y5Y000007IeWjUAK"}},{"name":"recordId","value":{"elementReference":"$Record.Id"}}],"nameSegment":"slackv2__invokePostMessage","versionSegment":"1"},"subtype":"actionCalls","metaType":"node","connectors":[],"name":"post_to_Owner","locationX":"176","locationY":"323"},{"element":"58.0","subtype":"apiVersion","metaType":"metadata"},{"element":"Default","subtype":"environments","metaType":"metadata"},{"element":"case notifications {!$Flow.CurrentDateTime}","subtype":"interviewLabel","metaType":"metadata"},{"element":"case notifications slack","subtype":"label","metaType":"metadata"},{"element":{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":"AutoLaunchedFlow","subtype":"processType","metaType":"metadata"},{"element":{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"},"subtype":"start","metaType":"node","connectors":[{"element":{"targetReference":"post_to_Owner"},"processed":false,"type":"connector","reference":"post_to_Owner"}],"name":"flowstart","locationX":"50","locationY":"0"},{"element":"Obsolete","subtype":"status","metaType":"metadata"},{"element":{"name":"RecipIds","dataType":"String","isCollection":"true","isInput":"false","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"RecipIds","dataType":"String"}],"startReference":"post_to_Owner"},"ruleResults":[{"details":[],"ruleDefinition":{"docRefs":[],"name":"APIVersion","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Outdated API Version","description":"Introducing newer API components may lead to unexpected issues with older versions of Flows, as they might not align with the underlying mechanics. Starting from API version 50.0, the 'Api Version' attribute has been readily available on the Flow Object. To ensure smooth operation and reduce discrepancies between API versions, it is strongly advised to regularly update and maintain them.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/APIVersion.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"APIVersion","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"AutoLayout","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Auto-Layout Mode","description":"With Canvas Mode set to Auto-Layout, Elements are spaced, connected, and aligned automatically, keeping your Flow neatly organized thus saving you time.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/AutoLayout.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"AutoLayout","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"CopyAPIName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Copy API Name","description":"Maintaining multiple elements with a similar name, like 'Copy_X_Of_Element,' can diminish the overall readability of your Flow. When copying and pasting these elements, it's crucial to remember to update the API name of the newly created copy.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/CopyAPIName.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"CopyAPIName","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"DMLStatementInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"DML Statement In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your database operations, including record creation, updates, or deletions, at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DMLStatementInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DMLStatementInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"DuplicateDMLOperation","supportedTypes":["Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Duplicate DML Operation","description":"When the flow executes database changes or actions between two screens, it's important to prevent users from navigating back between screens. Failure to do so may result in duplicate database operations being performed within the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DuplicateDMLOperation.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DuplicateDMLOperation","severity":"error","occurs":false},{"details":[{"violation":{"metaType":"attribute","name":"undefined","subtype":"description","expression":"!==null"},"name":"undefined","metaType":"attribute","type":"description","details":{"expression":"!==null"}}],"ruleDefinition":{"docRefs":[],"name":"FlowDescription","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Flow Description","description":"Descriptions play a vital role in documentation. We highly recommend including details about where they are used and their intended purpose.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowDescription.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"FlowDescription","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Naming your Flows is more critical than ever. By Stephen Church","path":"https://www.linkedin.com/posts/stephen-n-church_naming-your-flows-this-is-more-critical-activity-7099733198175158274-1sPx?utm_source=share&utm_medium=member_desktop"}],"name":"FlowName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Flow Naming Convention","description":"The readability of a flow is of utmost importance. Establishing a naming convention for the Flow Name significantly enhances findability, searchability, and maintains overall consistency. It is advisable to include at least a domain and a brief description of the actions carried out in the flow, for instance, 'Service_OrderFulfillment'.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowName.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"FlowName","severity":"error","occurs":false},{"details":[{"violation":{"element":{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"},"subtype":"start","metaType":"node","connectors":[{"element":{"targetReference":"post_to_Owner"},"processed":false,"type":"connector","reference":"post_to_Owner"}],"name":"flowstart","locationX":"50","locationY":"0"},"name":"flowstart","metaType":"node","type":"start","details":{"locationX":"50","locationY":"0","connectsTo":["post_to_Owner"]}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"},{"label":"Don't hard code Record Type IDs in Flow. By Stephen Church.","path":"https://www.linkedin.com/feed/update/urn:li:activity:6947530300012826624/?updateEntityUrn=urn%3Ali%3Afs_feedUpdate%3A%28V2%2Curn%3Ali%3Aactivity%3A6947530300012826624%29"}],"name":"HardcodedId","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Hardcoded Id","description":"Avoid hard-coding IDs as they are org-specific. Instead, pass them into variables at the start of the flow. You can achieve this by utilizing merge fields in URL parameters or employing a Get Records element.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/HardcodedId.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"HardcodedId","severity":"error","occurs":true},{"details":[{"violation":{"element":{"name":"post_to_Owner","label":"post to Owner","locationX":"176","locationY":"323","actionName":"slackv2__invokePostMessage","actionType":"apex","flowTransactionModel":"CurrentTransaction","inputParameters":[{"name":"message","value":{"stringValue":"test"}},{"name":"messageDestinationId","value":{"stringValue":"a2Y5Y000007IeWjUAK"}},{"name":"recordId","value":{"elementReference":"$Record.Id"}}],"nameSegment":"slackv2__invokePostMessage","versionSegment":"1"},"subtype":"actionCalls","metaType":"node","connectors":[],"name":"post_to_Owner","locationX":"176","locationY":"323"},"name":"post_to_Owner","metaType":"node","type":"actionCalls","details":{"locationX":"176","locationY":"323","connectsTo":[]}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"MissingFaultPath","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Fault Path","description":"At times, a flow may fail to execute a configured operation as intended. By default, the flow displays an error message to the user and notifies the admin who created the flow via email. However, you can customize this behavior by incorporating a Fault Path.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingFaultPath.ts","isConfigurable":false,"autoFixable":false,"severity":"error","applicableElements":["recordLookups","recordDeletes","recordUpdates","recordCreates","waits","actionCalls"]},"ruleName":"MissingFaultPath","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[],"name":"MissingNullHandler","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Null Handler","description":"When a Get Records operation doesn't find any data, it returns null. To ensure data validation, utilize a decision element on the operation result variable to check for a non-null result.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingNullHandler.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"MissingNullHandler","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Process Builder Retirement","path":"https://help.salesforce.com/s/articleView?id=000389396&type=1"}],"name":"ProcessBuilder","supportedTypes":["Workflow"],"label":"No Process Builder","description":"Salesforce is transitioning away from Workflow Rules and Process Builder in favor of Flow. Ensure you're prepared for this transition by migrating your organization's automation to Flow. Refer to official documentation for more information on the transition process and tools available.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/ProcessBuilder.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"ProcessBuilder","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"SOQLQueryInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"SOQL Query In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your SOQL queries at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/SOQLQueryInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"SOQLQueryInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"UnconnectedElement","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unconnected Element","description":"To maintain the efficiency and manageability of your Flow, it's best to avoid including unconnected elements that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnconnectedElement.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnconnectedElement","severity":"error","occurs":false},{"details":[{"violation":{"element":{"name":"RecipIds","dataType":"String","isCollection":"true","isInput":"false","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"RecipIds","dataType":"String"},"name":"RecipIds","metaType":"variable","type":"variables","details":{"dataType":"String"}}],"ruleDefinition":{"docRefs":[],"name":"UnusedVariable","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unused Variable","description":"To maintain the efficiency and manageability of your Flow, it's advisable to avoid including unconnected variables that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnusedVariable.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnusedVariable","severity":"error","occurs":true},{"details":[{"violation":{"metaType":"attribute","name":"\"Obsolete\"","subtype":"status","expression":"!= Active"},"name":"\"Obsolete\"","metaType":"attribute","type":"status","details":{"expression":"!= Active"}}],"ruleDefinition":{"docRefs":[],"name":"InactiveFlow","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Inactive Flow","description":"Like cleaning out your closet: deleting unused flows is essential. Inactive flows can still cause trouble, like accidentally deleting records during testing, or being activated as subflows within parent flows.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/InactiveFlow.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"InactiveFlow","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Learn about data safety when running flows in system context in Salesforce Help","path":"https://help.salesforce.com/s/articleView?id=sf.flow_distribute_context_data_safety_system_context.htm&type=5"}],"name":"UnsafeRunningContext","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unsafe Flow Running Context","description":"This flow is configured to run in System Mode without Sharing. This system context grants all running users the permission to view and edit all data in your org. Running a flow in System Mode without Sharing can lead to unsafe data access.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnsafeRunningContext.ts","isConfigurable":false,"autoFixable":false,"severity":"warning"},"ruleName":"UnsafeRunningContext","severity":"warning","occurs":false}]} {"flow":{"flowVariables":["choices","constants","dynamicChoiceSets","formulas","variables"],"flowResources":["textTemplates","stages"],"flowMetadata":["description","apiVersion","processMetadataValues","processType","interviewLabel","label","status","runInMode","startElementReference","isTemplate","fullName","timeZoneSidKey","isAdditionalPermissionRequiredToRun","migratedFromWorkflowRuleName","triggerOrder","environments","segment"],"flowNodes":["actionCalls","apexPluginCalls","assignments","collectionProcessors","decisions","loops","orchestratedStages","recordCreates","recordDeletes","recordLookups","recordUpdates","recordRollbacks","screens","start","steps","subflows","waits"],"fsPath":"/Users/kylecapehart/Documents/repos/gdlsf/force-app/main/default/flows/User_Merge_Flow.flow-meta.xml","name":"User_Merge_Flow","xmldata":{"@xmlns":"http://soap.sforce.com/2006/04/metadata","@xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","apiVersion":"57.0","decisions":{"name":"Is_Multi_User_Merge_Request","label":"Is Multi User Merge Request","locationX":"182","locationY":"458","defaultConnector":{"targetReference":"Create_Merge_Task"},"defaultConnectorLabel":"No","rules":{"name":"Yes","conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}},"connector":{"targetReference":"Create_Multi_User_Task"},"label":"Yes"}},"description":"SFDC-1834","dynamicChoiceSets":{"name":"Priority","dataType":"Picklist","displayField":{"@xsi:nil":"true"},"object":{"@xsi:nil":"true"},"picklistField":"Priority","picklistObject":"Task"},"environments":"Default","formulas":{"name":"IsRecordTypeOnboarding","dataType":"Boolean","expression":"{!Get_Case_Record.RecordTypeId} = \"0125Y000001SNGfQAO\""},"interviewLabel":"MergeRequest {!$Flow.CurrentDateTime}","label":"User Merge Task Flow","processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"processType":"Flow","recordCreates":[{"name":"Create_Merge_Task","label":"Create Merge Task","locationX":"314","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"TaskName"}},{"field":"WhatId","value":{"elementReference":"recordId"}},{"field":"WhoId","value":{"elementReference":"Contact.recordId"}}],"object":"Task","storeOutputAutomatically":"true"},{"name":"Create_Multi_User_Task","label":"Create Multi User Task","locationX":"50","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"MultiUserSubject"}},{"field":"WhatId","value":{"elementReference":"recordId"}}],"object":"Task","storeOutputAutomatically":"true"}],"recordLookups":[{"name":"Get_Case_Record","label":"Get Case Record","locationX":"182","locationY":"134","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"GetQueueID"},"filterLogic":"and","filters":{"field":"Id","operator":"EqualTo","value":{"elementReference":"recordId"}},"getFirstRecordOnly":"true","object":"Case","storeOutputAutomatically":"true"},{"name":"GetQueueID","label":"GetQueueID","locationX":"182","locationY":"242","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"User_Merge_Request"},"filterLogic":"and","filters":[{"field":"Type","operator":"EqualTo","value":{"stringValue":"Queue"}},{"field":"DeveloperName","operator":"EqualTo","value":{"stringValue":"User_Merge_Requests"}}],"getFirstRecordOnly":"true","object":"Group","storeOutputAutomatically":"true"}],"screens":[{"name":"End","label":"End","locationX":"182","locationY":"758","allowBack":"false","allowFinish":"true","allowPause":"false","fields":[{"name":"EndMessage","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>You can view the queue <a href=\"https://guidelineinc.lightning.force.com/lightning/o/Task/list?filterName=00BVL000000mDZF2A2\" rel=\"noopener noreferrer\" target=\"_blank\">here</a>.</p><p><br></p><p><strong>What to expect next? </strong></p><p><br></p><ul><li>On average, it takes 1-3 business days for a merge. There can be delays though if there are pending transactions.</li><li>Once merged, a BPO agent will @ you in Chatter on the task updating you that the accounts have been merged, and complete the task.</li><li><strong>No updates are automatically made directly on your case. No notice is sent to the user by BPO.</strong></li></ul>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"NotEqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"EndMessageOnb","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>A member of the Onboarding BPO Team will complete this request as soon as possible. The agent will notify you of task completion via a Chatter message on the original case. </p>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}}],"showFooter":"true","showHeader":"true"},{"name":"User_Merge_Request","label":"User Merge Request","locationX":"182","locationY":"350","allowBack":"true","allowFinish":"true","allowPause":"true","connector":{"targetReference":"Is_Multi_User_Merge_Request"},"fields":[{"name":"PriorityFlow","choiceReferences":"Priority","dataType":"String","defaultValue":{"stringValue":"Normal"},"fieldText":"Priority","fieldType":"DropdownBox","isRequired":"true"},{"name":"Is_this_a_Multi_User_Merge_Request","dataType":"Boolean","fieldText":"Multi-User Merge Request","fieldType":"InputField","helpText":"<p>If you're requesting more than one single to be merged, please check the box.</p>","isRequired":"true"},{"name":"Name_and_DOB_Match","dataType":"Boolean","fieldText":"First Name, Last Name, and DOB Exactly Match?","fieldType":"InputField","helpText":"<p>The user's Name and DOB must exactly match on both accounts in order to be merged. </p>","isRequired":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Count_of_Users","dataType":"Number","fieldText":"Count of Users","fieldType":"InputField","isRequired":"true","scale":"0","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"Plan","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"Plan__c"}},{"name":"label","value":{"stringValue":"Plan"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.Plan__c"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Contact","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"ContactId"}},{"name":"label","value":{"stringValue":"Contact"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.ContactId"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"DescriptionBody","defaultValue":{"stringValue":"Admin User Account 1 (Primary):\nPrimary Email: \nAdmin User Account 2:"},"fieldText":"Notes","fieldType":"LargeTextArea","helpText":"<p>If you're requesting more than one user to be merged, you can provide a list of each individual, primary, and secondary user account. Alternatively, you can also provide a link to a Google Sheet if preferred. </p>","isRequired":"true"}],"showFooter":"true","showHeader":"true"}],"start":{"locationX":"56","locationY":"0","connector":{"targetReference":"Get_Case_Record"}},"status":"Active","textTemplates":[{"name":"MultiUserSubject","isViewedAsPlainText":"true","text":"User Merge: Multi-User Merge Request - {!Count_of_Users} Users"},{"name":"TaskName","isViewedAsPlainText":"true","text":"User Merge: {!Contact.recordName} | {!Plan.recordName}"}],"variables":[{"name":"contactID","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},{"name":"planId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},{"name":"ProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},{"name":"recordId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},{"name":"UserProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"true"}]},"label":"User Merge Task Flow","interviewLabel":"MergeRequest {!$Flow.CurrentDateTime}","processType":"Flow","processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"start":{"locationX":"56","locationY":"0","connector":{"targetReference":"Get_Case_Record"}},"status":"Active","type":"Flow","elements":[{"element":"57.0","subtype":"apiVersion","metaType":"metadata"},{"element":{"name":"Is_Multi_User_Merge_Request","label":"Is Multi User Merge Request","locationX":"182","locationY":"458","defaultConnector":{"targetReference":"Create_Merge_Task"},"defaultConnectorLabel":"No","rules":{"name":"Yes","conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}},"connector":{"targetReference":"Create_Multi_User_Task"},"label":"Yes"}},"subtype":"decisions","metaType":"node","connectors":[{"element":{"targetReference":"Create_Merge_Task"},"processed":false,"type":"defaultConnector","reference":"Create_Merge_Task"},{"element":{"targetReference":"Create_Multi_User_Task"},"processed":false,"type":"connector","childName":"Yes","childOf":"rules","reference":"Create_Multi_User_Task"}],"name":"Is_Multi_User_Merge_Request","locationX":"182","locationY":"458"},{"element":"SFDC-1834","subtype":"description","metaType":"metadata"},{"element":{"name":"Priority","dataType":"Picklist","displayField":{"@xsi:nil":"true"},"object":{"@xsi:nil":"true"},"picklistField":"Priority","picklistObject":"Task"},"subtype":"dynamicChoiceSets","metaType":"variable","name":"Priority","dataType":"Picklist"},{"element":"Default","subtype":"environments","metaType":"metadata"},{"element":{"name":"IsRecordTypeOnboarding","dataType":"Boolean","expression":"{!Get_Case_Record.RecordTypeId} = \"0125Y000001SNGfQAO\""},"subtype":"formulas","metaType":"variable","name":"IsRecordTypeOnboarding","dataType":"Boolean"},{"element":"MergeRequest {!$Flow.CurrentDateTime}","subtype":"interviewLabel","metaType":"metadata"},{"element":"User Merge Task Flow","subtype":"label","metaType":"metadata"},{"element":{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":"Flow","subtype":"processType","metaType":"metadata"},{"element":{"name":"Create_Merge_Task","label":"Create Merge Task","locationX":"314","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"TaskName"}},{"field":"WhatId","value":{"elementReference":"recordId"}},{"field":"WhoId","value":{"elementReference":"Contact.recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Merge_Task","locationX":"314","locationY":"566"},{"element":{"name":"Create_Multi_User_Task","label":"Create Multi User Task","locationX":"50","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"MultiUserSubject"}},{"field":"WhatId","value":{"elementReference":"recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Multi_User_Task","locationX":"50","locationY":"566"},{"element":{"name":"Get_Case_Record","label":"Get Case Record","locationX":"182","locationY":"134","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"GetQueueID"},"filterLogic":"and","filters":{"field":"Id","operator":"EqualTo","value":{"elementReference":"recordId"}},"getFirstRecordOnly":"true","object":"Case","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"GetQueueID"},"processed":false,"type":"connector","reference":"GetQueueID"}],"name":"Get_Case_Record","locationX":"182","locationY":"134"},{"element":{"name":"GetQueueID","label":"GetQueueID","locationX":"182","locationY":"242","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"User_Merge_Request"},"filterLogic":"and","filters":[{"field":"Type","operator":"EqualTo","value":{"stringValue":"Queue"}},{"field":"DeveloperName","operator":"EqualTo","value":{"stringValue":"User_Merge_Requests"}}],"getFirstRecordOnly":"true","object":"Group","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"User_Merge_Request"},"processed":false,"type":"connector","reference":"User_Merge_Request"}],"name":"GetQueueID","locationX":"182","locationY":"242"},{"element":{"name":"End","label":"End","locationX":"182","locationY":"758","allowBack":"false","allowFinish":"true","allowPause":"false","fields":[{"name":"EndMessage","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>You can view the queue <a href=\"https://guidelineinc.lightning.force.com/lightning/o/Task/list?filterName=00BVL000000mDZF2A2\" rel=\"noopener noreferrer\" target=\"_blank\">here</a>.</p><p><br></p><p><strong>What to expect next? </strong></p><p><br></p><ul><li>On average, it takes 1-3 business days for a merge. There can be delays though if there are pending transactions.</li><li>Once merged, a BPO agent will @ you in Chatter on the task updating you that the accounts have been merged, and complete the task.</li><li><strong>No updates are automatically made directly on your case. No notice is sent to the user by BPO.</strong></li></ul>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"NotEqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"EndMessageOnb","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>A member of the Onboarding BPO Team will complete this request as soon as possible. The agent will notify you of task completion via a Chatter message on the original case. </p>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}}],"showFooter":"true","showHeader":"true"},"subtype":"screens","metaType":"node","connectors":[],"name":"End","locationX":"182","locationY":"758"},{"element":{"name":"User_Merge_Request","label":"User Merge Request","locationX":"182","locationY":"350","allowBack":"true","allowFinish":"true","allowPause":"true","connector":{"targetReference":"Is_Multi_User_Merge_Request"},"fields":[{"name":"PriorityFlow","choiceReferences":"Priority","dataType":"String","defaultValue":{"stringValue":"Normal"},"fieldText":"Priority","fieldType":"DropdownBox","isRequired":"true"},{"name":"Is_this_a_Multi_User_Merge_Request","dataType":"Boolean","fieldText":"Multi-User Merge Request","fieldType":"InputField","helpText":"<p>If you're requesting more than one single to be merged, please check the box.</p>","isRequired":"true"},{"name":"Name_and_DOB_Match","dataType":"Boolean","fieldText":"First Name, Last Name, and DOB Exactly Match?","fieldType":"InputField","helpText":"<p>The user's Name and DOB must exactly match on both accounts in order to be merged. </p>","isRequired":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Count_of_Users","dataType":"Number","fieldText":"Count of Users","fieldType":"InputField","isRequired":"true","scale":"0","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"Plan","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"Plan__c"}},{"name":"label","value":{"stringValue":"Plan"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.Plan__c"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Contact","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"ContactId"}},{"name":"label","value":{"stringValue":"Contact"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.ContactId"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"DescriptionBody","defaultValue":{"stringValue":"Admin User Account 1 (Primary):\nPrimary Email: \nAdmin User Account 2:"},"fieldText":"Notes","fieldType":"LargeTextArea","helpText":"<p>If you're requesting more than one user to be merged, you can provide a list of each individual, primary, and secondary user account. Alternatively, you can also provide a link to a Google Sheet if preferred. </p>","isRequired":"true"}],"showFooter":"true","showHeader":"true"},"subtype":"screens","metaType":"node","connectors":[{"element":{"targetReference":"Is_Multi_User_Merge_Request"},"processed":false,"type":"connector","reference":"Is_Multi_User_Merge_Request"}],"name":"User_Merge_Request","locationX":"182","locationY":"350"},{"element":{"locationX":"56","locationY":"0","connector":{"targetReference":"Get_Case_Record"}},"subtype":"start","metaType":"node","connectors":[{"element":{"targetReference":"Get_Case_Record"},"processed":false,"type":"connector","reference":"Get_Case_Record"}],"name":"flowstart","locationX":"56","locationY":"0"},{"element":"Active","subtype":"status","metaType":"metadata"},{"element":{"name":"MultiUserSubject","isViewedAsPlainText":"true","text":"User Merge: Multi-User Merge Request - {!Count_of_Users} Users"},"subtype":"textTemplates","metaType":"resource","name":"MultiUserSubject"},{"element":{"name":"TaskName","isViewedAsPlainText":"true","text":"User Merge: {!Contact.recordName} | {!Plan.recordName}"},"subtype":"textTemplates","metaType":"resource","name":"TaskName"},{"element":{"name":"contactID","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"contactID","dataType":"String"},{"element":{"name":"planId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"planId","dataType":"String"},{"element":{"name":"ProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"ProfileName","dataType":"String"},{"element":{"name":"recordId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"recordId","dataType":"String"},{"element":{"name":"UserProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"true"},"subtype":"variables","metaType":"variable","name":"UserProfileName","dataType":"String"}],"startReference":"Get_Case_Record"},"ruleResults":[{"details":[],"ruleDefinition":{"docRefs":[],"name":"APIVersion","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Outdated API Version","description":"Introducing newer API components may lead to unexpected issues with older versions of Flows, as they might not align with the underlying mechanics. Starting from API version 50.0, the 'Api Version' attribute has been readily available on the Flow Object. To ensure smooth operation and reduce discrepancies between API versions, it is strongly advised to regularly update and maintain them.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/APIVersion.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"APIVersion","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"AutoLayout","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Auto-Layout Mode","description":"With Canvas Mode set to Auto-Layout, Elements are spaced, connected, and aligned automatically, keeping your Flow neatly organized thus saving you time.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/AutoLayout.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"AutoLayout","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"CopyAPIName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Copy API Name","description":"Maintaining multiple elements with a similar name, like 'Copy_X_Of_Element,' can diminish the overall readability of your Flow. When copying and pasting these elements, it's crucial to remember to update the API name of the newly created copy.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/CopyAPIName.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"CopyAPIName","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"DMLStatementInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"DML Statement In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your database operations, including record creation, updates, or deletions, at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DMLStatementInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DMLStatementInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"DuplicateDMLOperation","supportedTypes":["Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Duplicate DML Operation","description":"When the flow executes database changes or actions between two screens, it's important to prevent users from navigating back between screens. Failure to do so may result in duplicate database operations being performed within the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DuplicateDMLOperation.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DuplicateDMLOperation","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"FlowDescription","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Flow Description","description":"Descriptions play a vital role in documentation. We highly recommend including details about where they are used and their intended purpose.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowDescription.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"FlowDescription","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Naming your Flows is more critical than ever. By Stephen Church","path":"https://www.linkedin.com/posts/stephen-n-church_naming-your-flows-this-is-more-critical-activity-7099733198175158274-1sPx?utm_source=share&utm_medium=member_desktop"}],"name":"FlowName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Flow Naming Convention","description":"The readability of a flow is of utmost importance. Establishing a naming convention for the Flow Name significantly enhances findability, searchability, and maintains overall consistency. It is advisable to include at least a domain and a brief description of the actions carried out in the flow, for instance, 'Service_OrderFulfillment'.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowName.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"FlowName","severity":"error","occurs":false},{"details":[{"violation":{"element":{"name":"End","label":"End","locationX":"182","locationY":"758","allowBack":"false","allowFinish":"true","allowPause":"false","fields":[{"name":"EndMessage","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>You can view the queue <a href=\"https://guidelineinc.lightning.force.com/lightning/o/Task/list?filterName=00BVL000000mDZF2A2\" rel=\"noopener noreferrer\" target=\"_blank\">here</a>.</p><p><br></p><p><strong>What to expect next? </strong></p><p><br></p><ul><li>On average, it takes 1-3 business days for a merge. There can be delays though if there are pending transactions.</li><li>Once merged, a BPO agent will @ you in Chatter on the task updating you that the accounts have been merged, and complete the task.</li><li><strong>No updates are automatically made directly on your case. No notice is sent to the user by BPO.</strong></li></ul>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"NotEqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"EndMessageOnb","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>A member of the Onboarding BPO Team will complete this request as soon as possible. The agent will notify you of task completion via a Chatter message on the original case. </p>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}}],"showFooter":"true","showHeader":"true"},"subtype":"screens","metaType":"node","connectors":[],"name":"End","locationX":"182","locationY":"758"},"name":"End","metaType":"node","type":"screens","details":{"locationX":"182","locationY":"758","connectsTo":[]}},{"violation":{"element":{"name":"IsRecordTypeOnboarding","dataType":"Boolean","expression":"{!Get_Case_Record.RecordTypeId} = \"0125Y000001SNGfQAO\""},"subtype":"formulas","metaType":"variable","name":"IsRecordTypeOnboarding","dataType":"Boolean"},"name":"IsRecordTypeOnboarding","metaType":"variable","type":"formulas","details":{"dataType":"Boolean"}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"},{"label":"Don't hard code Record Type IDs in Flow. By Stephen Church.","path":"https://www.linkedin.com/feed/update/urn:li:activity:6947530300012826624/?updateEntityUrn=urn%3Ali%3Afs_feedUpdate%3A%28V2%2Curn%3Ali%3Aactivity%3A6947530300012826624%29"}],"name":"HardcodedId","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Hardcoded Id","description":"Avoid hard-coding IDs as they are org-specific. Instead, pass them into variables at the start of the flow. You can achieve this by utilizing merge fields in URL parameters or employing a Get Records element.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/HardcodedId.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"HardcodedId","severity":"error","occurs":true},{"details":[{"violation":{"element":{"name":"Get_Case_Record","label":"Get Case Record","locationX":"182","locationY":"134","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"GetQueueID"},"filterLogic":"and","filters":{"field":"Id","operator":"EqualTo","value":{"elementReference":"recordId"}},"getFirstRecordOnly":"true","object":"Case","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"GetQueueID"},"processed":false,"type":"connector","reference":"GetQueueID"}],"name":"Get_Case_Record","locationX":"182","locationY":"134"},"name":"Get_Case_Record","metaType":"node","type":"recordLookups","details":{"locationX":"182","locationY":"134","connectsTo":["GetQueueID"]}},{"violation":{"element":{"name":"GetQueueID","label":"GetQueueID","locationX":"182","locationY":"242","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"User_Merge_Request"},"filterLogic":"and","filters":[{"field":"Type","operator":"EqualTo","value":{"stringValue":"Queue"}},{"field":"DeveloperName","operator":"EqualTo","value":{"stringValue":"User_Merge_Requests"}}],"getFirstRecordOnly":"true","object":"Group","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"User_Merge_Request"},"processed":false,"type":"connector","reference":"User_Merge_Request"}],"name":"GetQueueID","locationX":"182","locationY":"242"},"name":"GetQueueID","metaType":"node","type":"recordLookups","details":{"locationX":"182","locationY":"242","connectsTo":["User_Merge_Request"]}},{"violation":{"element":{"name":"Create_Merge_Task","label":"Create Merge Task","locationX":"314","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"TaskName"}},{"field":"WhatId","value":{"elementReference":"recordId"}},{"field":"WhoId","value":{"elementReference":"Contact.recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Merge_Task","locationX":"314","locationY":"566"},"name":"Create_Merge_Task","metaType":"node","type":"recordCreates","details":{"locationX":"314","locationY":"566","connectsTo":["End"]}},{"violation":{"element":{"name":"Create_Multi_User_Task","label":"Create Multi User Task","locationX":"50","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"MultiUserSubject"}},{"field":"WhatId","value":{"elementReference":"recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Multi_User_Task","locationX":"50","locationY":"566"},"name":"Create_Multi_User_Task","metaType":"node","type":"recordCreates","details":{"locationX":"50","locationY":"566","connectsTo":["End"]}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"MissingFaultPath","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Fault Path","description":"At times, a flow may fail to execute a configured operation as intended. By default, the flow displays an error message to the user and notifies the admin who created the flow via email. However, you can customize this behavior by incorporating a Fault Path.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingFaultPath.ts","isConfigurable":false,"autoFixable":false,"severity":"error","applicableElements":["recordLookups","recordDeletes","recordUpdates","recordCreates","waits","actionCalls"]},"ruleName":"MissingFaultPath","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[],"name":"MissingNullHandler","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Null Handler","description":"When a Get Records operation doesn't find any data, it returns null. To ensure data validation, utilize a decision element on the operation result variable to check for a non-null result.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingNullHandler.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"MissingNullHandler","severity":"error","occurs":false,"errorMessage":"Something went wrong while executing MissingNullHandler in the Flow: 'User_Merge_Flow"},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Process Builder Retirement","path":"https://help.salesforce.com/s/articleView?id=000389396&type=1"}],"name":"ProcessBuilder","supportedTypes":["Workflow"],"label":"No Process Builder","description":"Salesforce is transitioning away from Workflow Rules and Process Builder in favor of Flow. Ensure you're prepared for this transition by migrating your organization's automation to Flow. Refer to official documentation for more information on the transition process and tools available.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/ProcessBuilder.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"ProcessBuilder","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"SOQLQueryInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"SOQL Query In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your SOQL queries at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/SOQLQueryInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"SOQLQueryInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"UnconnectedElement","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unconnected Element","description":"To maintain the efficiency and manageability of your Flow, it's best to avoid including unconnected elements that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnconnectedElement.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnconnectedElement","severity":"error","occurs":false},{"details":[{"violation":{"element":{"name":"planId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"planId","dataType":"String"},"name":"planId","metaType":"variable","type":"variables","details":{"dataType":"String"}},{"violation":{"element":{"name":"UserProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"true"},"subtype":"variables","metaType":"variable","name":"UserProfileName","dataType":"String"},"name":"UserProfileName","metaType":"variable","type":"variables","details":{"dataType":"String"}}],"ruleDefinition":{"docRefs":[],"name":"UnusedVariable","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unused Variable","description":"To maintain the efficiency and manageability of your Flow, it's advisable to avoid including unconnected variables that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnusedVariable.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnusedVariable","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[],"name":"InactiveFlow","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Inactive Flow","description":"Like cleaning out your closet: deleting unused flows is essential. Inactive flows can still cause trouble, like accidentally deleting records during testing, or being activated as subflows within parent flows.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/InactiveFlow.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"InactiveFlow","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Learn about data safety when running flows in system context in Salesforce Help","path":"https://help.salesforce.com/s/articleView?id=sf.flow_distribute_context_data_safety_system_context.htm&type=5"}],"name":"UnsafeRunningContext","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unsafe Flow Running Context","description":"This flow is configured to run in System Mode without Sharing. This system context grants all running users the permission to view and edit all data in your org. Running a flow in System Mode without Sharing can lead to unsafe data access.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnsafeRunningContext.ts","isConfigurable":false,"autoFixable":false,"severity":"warning"},"ruleName":"UnsafeRunningContext","severity":"warning","occurs":false}]} 2024-11-19 10:34:40.099 [trace] has scan results? 2 2024-11-19 10:34:40.100 [debug] contains scan results {"flow":{"flowVariables":["choices","constants","dynamicChoiceSets","formulas","variables"],"flowResources":["textTemplates","stages"],"flowMetadata":["description","apiVersion","processMetadataValues","processType","interviewLabel","label","status","runInMode","startElementReference","isTemplate","fullName","timeZoneSidKey","isAdditionalPermissionRequiredToRun","migratedFromWorkflowRuleName","triggerOrder","environments","segment"],"flowNodes":["actionCalls","apexPluginCalls","assignments","collectionProcessors","decisions","loops","orchestratedStages","recordCreates","recordDeletes","recordLookups","recordUpdates","recordRollbacks","screens","start","steps","subflows","waits"],"fsPath":"/Users/kylecapehart/Documents/repos/gdlsf/force-app/main/default/flows/case_notifications_slack.flow-meta.xml","name":"case_notifications_slack","xmldata":{"actionCalls":[{"name":"post_to_Owner","label":"post to Owner","locationX":"176","locationY":"323","actionName":"slackv2__invokePostMessage","actionType":"apex","flowTransactionModel":"CurrentTransaction","inputParameters":[{"name":"message","value":{"stringValue":"test"}},{"name":"messageDestinationId","value":{"stringValue":"a2Y5Y000007IeWjUAK"}},{"name":"recordId","value":{"elementReference":"$Record.Id"}}],"nameSegment":"slackv2__invokePostMessage","versionSegment":"1"}],"apiVersion":["58.0"],"environments":["Default"],"interviewLabel":["case notifications {!$Flow.CurrentDateTime}"],"label":["case notifications slack"],"processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"processType":["AutoLaunchedFlow"],"start":[{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"}],"status":["Obsolete"]},"label":["case notifications slack"],"interviewLabel":["case notifications {!$Flow.CurrentDateTime}"],"processType":["AutoLaunchedFlow"],"processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"start":[{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"}],"status":["Obsolete"],"type":["AutoLaunchedFlow"],"elements":[{"element":{"name":"post_to_Owner","label":"post to Owner","locationX":"176","locationY":"323","actionName":"slackv2__invokePostMessage","actionType":"apex","flowTransactionModel":"CurrentTransaction","inputParameters":[{"name":"message","value":{"stringValue":"test"}},{"name":"messageDestinationId","value":{"stringValue":"a2Y5Y000007IeWjUAK"}},{"name":"recordId","value":{"elementReference":"$Record.Id"}}],"nameSegment":"slackv2__invokePostMessage","versionSegment":"1"},"subtype":"actionCalls","metaType":"node","connectors":[],"name":"post_to_Owner","locationX":"176","locationY":"323"},{"element":"58.0","subtype":"apiVersion","metaType":"metadata"},{"element":"Default","subtype":"environments","metaType":"metadata"},{"element":"case notifications {!$Flow.CurrentDateTime}","subtype":"interviewLabel","metaType":"metadata"},{"element":"case notifications slack","subtype":"label","metaType":"metadata"},{"element":{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":"AutoLaunchedFlow","subtype":"processType","metaType":"metadata"},{"element":{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"},"subtype":"start","metaType":"node","connectors":[{"element":{"targetReference":"post_to_Owner"},"processed":false,"type":"connector","reference":"post_to_Owner"}],"name":"flowstart","locationX":"50","locationY":"0"},{"element":"Obsolete","subtype":"status","metaType":"metadata"}],"startReference":"post_to_Owner"},"ruleResults":[{"details":[],"ruleDefinition":{"docRefs":[],"name":"APIVersion","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Outdated API Version","description":"Introducing newer API components may lead to unexpected issues with older versions of Flows, as they might not align with the underlying mechanics. Starting from API version 50.0, the 'Api Version' attribute has been readily available on the Flow Object. To ensure smooth operation and reduce discrepancies between API versions, it is strongly advised to regularly update and maintain them.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/APIVersion.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"APIVersion","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"AutoLayout","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Auto-Layout Mode","description":"With Canvas Mode set to Auto-Layout, Elements are spaced, connected, and aligned automatically, keeping your Flow neatly organized thus saving you time.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/AutoLayout.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"AutoLayout","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"CopyAPIName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Copy API Name","description":"Maintaining multiple elements with a similar name, like 'Copy_X_Of_Element,' can diminish the overall readability of your Flow. When copying and pasting these elements, it's crucial to remember to update the API name of the newly created copy.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/CopyAPIName.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"CopyAPIName","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"DMLStatementInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"DML Statement In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your database operations, including record creation, updates, or deletions, at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DMLStatementInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DMLStatementInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"DuplicateDMLOperation","supportedTypes":["Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Duplicate DML Operation","description":"When the flow executes database changes or actions between two screens, it's important to prevent users from navigating back between screens. Failure to do so may result in duplicate database operations being performed within the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DuplicateDMLOperation.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DuplicateDMLOperation","severity":"error","occurs":false},{"details":[{"violation":{"metaType":"attribute","name":"undefined","subtype":"description","expression":"!==null"},"name":"undefined","metaType":"attribute","type":"description","details":{"expression":"!==null"}}],"ruleDefinition":{"docRefs":[],"name":"FlowDescription","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Flow Description","description":"Descriptions play a vital role in documentation. We highly recommend including details about where they are used and their intended purpose.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowDescription.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"FlowDescription","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Naming your Flows is more critical than ever. By Stephen Church","path":"https://www.linkedin.com/posts/stephen-n-church_naming-your-flows-this-is-more-critical-activity-7099733198175158274-1sPx?utm_source=share&utm_medium=member_desktop"}],"name":"FlowName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Flow Naming Convention","description":"The readability of a flow is of utmost importance. Establishing a naming convention for the Flow Name significantly enhances findability, searchability, and maintains overall consistency. It is advisable to include at least a domain and a brief description of the actions carried out in the flow, for instance, 'Service_OrderFulfillment'.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowName.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"FlowName","severity":"error","occurs":false},{"details":[{"violation":{"element":{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"},"subtype":"start","metaType":"node","connectors":[{"element":{"targetReference":"post_to_Owner"},"processed":false,"type":"connector","reference":"post_to_Owner"}],"name":"flowstart","locationX":"50","locationY":"0"},"name":"flowstart","metaType":"node","type":"start","details":{"locationX":"50","locationY":"0","connectsTo":["post_to_Owner"]}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"},{"label":"Don't hard code Record Type IDs in Flow. By Stephen Church.","path":"https://www.linkedin.com/feed/update/urn:li:activity:6947530300012826624/?updateEntityUrn=urn%3Ali%3Afs_feedUpdate%3A%28V2%2Curn%3Ali%3Aactivity%3A6947530300012826624%29"}],"name":"HardcodedId","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Hardcoded Id","description":"Avoid hard-coding IDs as they are org-specific. Instead, pass them into variables at the start of the flow. You can achieve this by utilizing merge fields in URL parameters or employing a Get Records element.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/HardcodedId.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"HardcodedId","severity":"error","occurs":true},{"details":[{"violation":{"element":{"name":"post_to_Owner","label":"post to Owner","locationX":"176","locationY":"323","actionName":"slackv2__invokePostMessage","actionType":"apex","flowTransactionModel":"CurrentTransaction","inputParameters":[{"name":"message","value":{"stringValue":"test"}},{"name":"messageDestinationId","value":{"stringValue":"a2Y5Y000007IeWjUAK"}},{"name":"recordId","value":{"elementReference":"$Record.Id"}}],"nameSegment":"slackv2__invokePostMessage","versionSegment":"1"},"subtype":"actionCalls","metaType":"node","connectors":[],"name":"post_to_Owner","locationX":"176","locationY":"323"},"name":"post_to_Owner","metaType":"node","type":"actionCalls","details":{"locationX":"176","locationY":"323","connectsTo":[]}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"MissingFaultPath","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Fault Path","description":"At times, a flow may fail to execute a configured operation as intended. By default, the flow displays an error message to the user and notifies the admin who created the flow via email. However, you can customize this behavior by incorporating a Fault Path.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingFaultPath.ts","isConfigurable":false,"autoFixable":false,"severity":"error","applicableElements":["recordLookups","recordDeletes","recordUpdates","recordCreates","waits","actionCalls"]},"ruleName":"MissingFaultPath","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[],"name":"MissingNullHandler","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Null Handler","description":"When a Get Records operation doesn't find any data, it returns null. To ensure data validation, utilize a decision element on the operation result variable to check for a non-null result.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingNullHandler.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"MissingNullHandler","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Process Builder Retirement","path":"https://help.salesforce.com/s/articleView?id=000389396&type=1"}],"name":"ProcessBuilder","supportedTypes":["Workflow"],"label":"No Process Builder","description":"Salesforce is transitioning away from Workflow Rules and Process Builder in favor of Flow. Ensure you're prepared for this transition by migrating your organization's automation to Flow. Refer to official documentation for more information on the transition process and tools available.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/ProcessBuilder.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"ProcessBuilder","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"SOQLQueryInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"SOQL Query In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your SOQL queries at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/SOQLQueryInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"SOQLQueryInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"UnconnectedElement","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unconnected Element","description":"To maintain the efficiency and manageability of your Flow, it's best to avoid including unconnected elements that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnconnectedElement.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnconnectedElement","severity":"error","occurs":false},{"details":[{"violation":{"element":{"name":"RecipIds","dataType":"String","isCollection":"true","isInput":"false","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"RecipIds","dataType":"String"},"name":"RecipIds","metaType":"variable","type":"variables","details":{"dataType":"String"}}],"ruleDefinition":{"docRefs":[],"name":"UnusedVariable","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unused Variable","description":"To maintain the efficiency and manageability of your Flow, it's advisable to avoid including unconnected variables that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnusedVariable.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnusedVariable","severity":"error","occurs":true},{"details":[{"violation":{"metaType":"attribute","name":"\"Obsolete\"","subtype":"status","expression":"!= Active"},"name":"\"Obsolete\"","metaType":"attribute","type":"status","details":{"expression":"!= Active"}}],"ruleDefinition":{"docRefs":[],"name":"InactiveFlow","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Inactive Flow","description":"Like cleaning out your closet: deleting unused flows is essential. Inactive flows can still cause trouble, like accidentally deleting records during testing, or being activated as subflows within parent flows.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/InactiveFlow.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"InactiveFlow","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Learn about data safety when running flows in system context in Salesforce Help","path":"https://help.salesforce.com/s/articleView?id=sf.flow_distribute_context_data_safety_system_context.htm&type=5"}],"name":"UnsafeRunningContext","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unsafe Flow Running Context","description":"This flow is configured to run in System Mode without Sharing. This system context grants all running users the permission to view and edit all data in your org. Running a flow in System Mode without Sharing can lead to unsafe data access.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnsafeRunningContext.ts","isConfigurable":false,"autoFixable":false,"severity":"warning"},"ruleName":"UnsafeRunningContext","severity":"warning","occurs":false}]} {"flow":{"flowVariables":["choices","constants","dynamicChoiceSets","formulas","variables"],"flowResources":["textTemplates","stages"],"flowMetadata":["description","apiVersion","processMetadataValues","processType","interviewLabel","label","status","runInMode","startElementReference","isTemplate","fullName","timeZoneSidKey","isAdditionalPermissionRequiredToRun","migratedFromWorkflowRuleName","triggerOrder","environments","segment"],"flowNodes":["actionCalls","apexPluginCalls","assignments","collectionProcessors","decisions","loops","orchestratedStages","recordCreates","recordDeletes","recordLookups","recordUpdates","recordRollbacks","screens","start","steps","subflows","waits"],"fsPath":"/Users/kylecapehart/Documents/repos/gdlsf/force-app/main/default/flows/User_Merge_Flow.flow-meta.xml","name":"User_Merge_Flow","xmldata":{"apiVersion":["57.0"],"decisions":[{"name":"Is_Multi_User_Merge_Request","label":"Is Multi User Merge Request","locationX":"182","locationY":"458","defaultConnector":{"targetReference":"Create_Merge_Task"},"defaultConnectorLabel":"No","rules":{"name":"Yes","conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}},"connector":{"targetReference":"Create_Multi_User_Task"},"label":"Yes"}}],"description":["SFDC-1834"],"dynamicChoiceSets":[{"name":"Priority","dataType":"Picklist","displayField":{"@xsi:nil":"true"},"object":{"@xsi:nil":"true"},"picklistField":"Priority","picklistObject":"Task"}],"environments":["Default"],"formulas":[{"name":"IsRecordTypeOnboarding","dataType":"Boolean","expression":"{!Get_Case_Record.RecordTypeId} = \"0125Y000001SNGfQAO\""}],"interviewLabel":["MergeRequest {!$Flow.CurrentDateTime}"],"label":["User Merge Task Flow"],"processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"processType":["Flow"],"recordCreates":[{"name":"Create_Merge_Task","label":"Create Merge Task","locationX":"314","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"TaskName"}},{"field":"WhatId","value":{"elementReference":"recordId"}},{"field":"WhoId","value":{"elementReference":"Contact.recordId"}}],"object":"Task","storeOutputAutomatically":"true"},{"name":"Create_Multi_User_Task","label":"Create Multi User Task","locationX":"50","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"MultiUserSubject"}},{"field":"WhatId","value":{"elementReference":"recordId"}}],"object":"Task","storeOutputAutomatically":"true"}],"recordLookups":[{"name":"Get_Case_Record","label":"Get Case Record","locationX":"182","locationY":"134","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"GetQueueID"},"filterLogic":"and","filters":{"field":"Id","operator":"EqualTo","value":{"elementReference":"recordId"}},"getFirstRecordOnly":"true","object":"Case","storeOutputAutomatically":"true"},{"name":"GetQueueID","label":"GetQueueID","locationX":"182","locationY":"242","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"User_Merge_Request"},"filterLogic":"and","filters":[{"field":"Type","operator":"EqualTo","value":{"stringValue":"Queue"}},{"field":"DeveloperName","operator":"EqualTo","value":{"stringValue":"User_Merge_Requests"}}],"getFirstRecordOnly":"true","object":"Group","storeOutputAutomatically":"true"}],"screens":[{"name":"End","label":"End","locationX":"182","locationY":"758","allowBack":"false","allowFinish":"true","allowPause":"false","fields":[{"name":"EndMessage","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>You can view the queue <a href=\"https://guidelineinc.lightning.force.com/lightning/o/Task/list?filterName=00BVL000000mDZF2A2\" rel=\"noopener noreferrer\" target=\"_blank\">here</a>.</p><p><br></p><p><strong>What to expect next? </strong></p><p><br></p><ul><li>On average, it takes 1-3 business days for a merge. There can be delays though if there are pending transactions.</li><li>Once merged, a BPO agent will @ you in Chatter on the task updating you that the accounts have been merged, and complete the task.</li><li><strong>No updates are automatically made directly on your case. No notice is sent to the user by BPO.</strong></li></ul>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"NotEqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"EndMessageOnb","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>A member of the Onboarding BPO Team will complete this request as soon as possible. The agent will notify you of task completion via a Chatter message on the original case. </p>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}}],"showFooter":"true","showHeader":"true"},{"name":"User_Merge_Request","label":"User Merge Request","locationX":"182","locationY":"350","allowBack":"true","allowFinish":"true","allowPause":"true","connector":{"targetReference":"Is_Multi_User_Merge_Request"},"fields":[{"name":"PriorityFlow","choiceReferences":"Priority","dataType":"String","defaultValue":{"stringValue":"Normal"},"fieldText":"Priority","fieldType":"DropdownBox","isRequired":"true"},{"name":"Is_this_a_Multi_User_Merge_Request","dataType":"Boolean","fieldText":"Multi-User Merge Request","fieldType":"InputField","helpText":"<p>If you're requesting more than one single to be merged, please check the box.</p>","isRequired":"true"},{"name":"Name_and_DOB_Match","dataType":"Boolean","fieldText":"First Name, Last Name, and DOB Exactly Match?","fieldType":"InputField","helpText":"<p>The user's Name and DOB must exactly match on both accounts in order to be merged. </p>","isRequired":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Count_of_Users","dataType":"Number","fieldText":"Count of Users","fieldType":"InputField","isRequired":"true","scale":"0","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"Plan","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"Plan__c"}},{"name":"label","value":{"stringValue":"Plan"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.Plan__c"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Contact","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"ContactId"}},{"name":"label","value":{"stringValue":"Contact"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.ContactId"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"DescriptionBody","defaultValue":{"stringValue":"Admin User Account 1 (Primary):\nPrimary Email: \nAdmin User Account 2:"},"fieldText":"Notes","fieldType":"LargeTextArea","helpText":"<p>If you're requesting more than one user to be merged, you can provide a list of each individual, primary, and secondary user account. Alternatively, you can also provide a link to a Google Sheet if preferred. </p>","isRequired":"true"}],"showFooter":"true","showHeader":"true"}],"start":[{"locationX":"56","locationY":"0","connector":{"targetReference":"Get_Case_Record"}}],"status":["Active"],"textTemplates":[{"name":"MultiUserSubject","isViewedAsPlainText":"true","text":"User Merge: Multi-User Merge Request - {!Count_of_Users} Users"},{"name":"TaskName","isViewedAsPlainText":"true","text":"User Merge: {!Contact.recordName} | {!Plan.recordName}"}],"variables":[{"name":"contactID","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},{"name":"ProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},{"name":"recordId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"}]},"label":["User Merge Task Flow"],"interviewLabel":["MergeRequest {!$Flow.CurrentDateTime}"],"processType":["Flow"],"processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"start":[{"locationX":"56","locationY":"0","connector":{"targetReference":"Get_Case_Record"}}],"status":["Active"],"type":["Flow"],"elements":[{"element":"57.0","subtype":"apiVersion","metaType":"metadata"},{"element":{"name":"Is_Multi_User_Merge_Request","label":"Is Multi User Merge Request","locationX":"182","locationY":"458","defaultConnector":{"targetReference":"Create_Merge_Task"},"defaultConnectorLabel":"No","rules":{"name":"Yes","conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}},"connector":{"targetReference":"Create_Multi_User_Task"},"label":"Yes"}},"subtype":"decisions","metaType":"node","connectors":[{"element":{"targetReference":"Create_Merge_Task"},"processed":false,"type":"defaultConnector","reference":"Create_Merge_Task"},{"element":{"targetReference":"Create_Multi_User_Task"},"processed":false,"type":"connector","childName":"Yes","childOf":"rules","reference":"Create_Multi_User_Task"}],"name":"Is_Multi_User_Merge_Request","locationX":"182","locationY":"458"},{"element":"SFDC-1834","subtype":"description","metaType":"metadata"},{"element":{"name":"Priority","dataType":"Picklist","displayField":{"@xsi:nil":"true"},"object":{"@xsi:nil":"true"},"picklistField":"Priority","picklistObject":"Task"},"subtype":"dynamicChoiceSets","metaType":"variable","name":"Priority","dataType":"Picklist"},{"element":"Default","subtype":"environments","metaType":"metadata"},{"element":{"name":"IsRecordTypeOnboarding","dataType":"Boolean","expression":"{!Get_Case_Record.RecordTypeId} = \"0125Y000001SNGfQAO\""},"subtype":"formulas","metaType":"variable","name":"IsRecordTypeOnboarding","dataType":"Boolean"},{"element":"MergeRequest {!$Flow.CurrentDateTime}","subtype":"interviewLabel","metaType":"metadata"},{"element":"User Merge Task Flow","subtype":"label","metaType":"metadata"},{"element":{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":"Flow","subtype":"processType","metaType":"metadata"},{"element":{"name":"Create_Merge_Task","label":"Create Merge Task","locationX":"314","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"TaskName"}},{"field":"WhatId","value":{"elementReference":"recordId"}},{"field":"WhoId","value":{"elementReference":"Contact.recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Merge_Task","locationX":"314","locationY":"566"},{"element":{"name":"Create_Multi_User_Task","label":"Create Multi User Task","locationX":"50","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"MultiUserSubject"}},{"field":"WhatId","value":{"elementReference":"recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Multi_User_Task","locationX":"50","locationY":"566"},{"element":{"name":"Get_Case_Record","label":"Get Case Record","locationX":"182","locationY":"134","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"GetQueueID"},"filterLogic":"and","filters":{"field":"Id","operator":"EqualTo","value":{"elementReference":"recordId"}},"getFirstRecordOnly":"true","object":"Case","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"GetQueueID"},"processed":false,"type":"connector","reference":"GetQueueID"}],"name":"Get_Case_Record","locationX":"182","locationY":"134"},{"element":{"name":"GetQueueID","label":"GetQueueID","locationX":"182","locationY":"242","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"User_Merge_Request"},"filterLogic":"and","filters":[{"field":"Type","operator":"EqualTo","value":{"stringValue":"Queue"}},{"field":"DeveloperName","operator":"EqualTo","value":{"stringValue":"User_Merge_Requests"}}],"getFirstRecordOnly":"true","object":"Group","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"User_Merge_Request"},"processed":false,"type":"connector","reference":"User_Merge_Request"}],"name":"GetQueueID","locationX":"182","locationY":"242"},{"element":{"name":"End","label":"End","locationX":"182","locationY":"758","allowBack":"false","allowFinish":"true","allowPause":"false","fields":[{"name":"EndMessage","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>You can view the queue <a href=\"https://guidelineinc.lightning.force.com/lightning/o/Task/list?filterName=00BVL000000mDZF2A2\" rel=\"noopener noreferrer\" target=\"_blank\">here</a>.</p><p><br></p><p><strong>What to expect next? </strong></p><p><br></p><ul><li>On average, it takes 1-3 business days for a merge. There can be delays though if there are pending transactions.</li><li>Once merged, a BPO agent will @ you in Chatter on the task updating you that the accounts have been merged, and complete the task.</li><li><strong>No updates are automatically made directly on your case. No notice is sent to the user by BPO.</strong></li></ul>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"NotEqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"EndMessageOnb","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>A member of the Onboarding BPO Team will complete this request as soon as possible. The agent will notify you of task completion via a Chatter message on the original case. </p>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}}],"showFooter":"true","showHeader":"true"},"subtype":"screens","metaType":"node","connectors":[],"name":"End","locationX":"182","locationY":"758"},{"element":{"name":"User_Merge_Request","label":"User Merge Request","locationX":"182","locationY":"350","allowBack":"true","allowFinish":"true","allowPause":"true","connector":{"targetReference":"Is_Multi_User_Merge_Request"},"fields":[{"name":"PriorityFlow","choiceReferences":"Priority","dataType":"String","defaultValue":{"stringValue":"Normal"},"fieldText":"Priority","fieldType":"DropdownBox","isRequired":"true"},{"name":"Is_this_a_Multi_User_Merge_Request","dataType":"Boolean","fieldText":"Multi-User Merge Request","fieldType":"InputField","helpText":"<p>If you're requesting more than one single to be merged, please check the box.</p>","isRequired":"true"},{"name":"Name_and_DOB_Match","dataType":"Boolean","fieldText":"First Name, Last Name, and DOB Exactly Match?","fieldType":"InputField","helpText":"<p>The user's Name and DOB must exactly match on both accounts in order to be merged. </p>","isRequired":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Count_of_Users","dataType":"Number","fieldText":"Count of Users","fieldType":"InputField","isRequired":"true","scale":"0","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"Plan","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"Plan__c"}},{"name":"label","value":{"stringValue":"Plan"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.Plan__c"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Contact","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"ContactId"}},{"name":"label","value":{"stringValue":"Contact"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.ContactId"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"DescriptionBody","defaultValue":{"stringValue":"Admin User Account 1 (Primary):\nPrimary Email: \nAdmin User Account 2:"},"fieldText":"Notes","fieldType":"LargeTextArea","helpText":"<p>If you're requesting more than one user to be merged, you can provide a list of each individual, primary, and secondary user account. Alternatively, you can also provide a link to a Google Sheet if preferred. </p>","isRequired":"true"}],"showFooter":"true","showHeader":"true"},"subtype":"screens","metaType":"node","connectors":[{"element":{"targetReference":"Is_Multi_User_Merge_Request"},"processed":false,"type":"connector","reference":"Is_Multi_User_Merge_Request"}],"name":"User_Merge_Request","locationX":"182","locationY":"350"},{"element":{"locationX":"56","locationY":"0","connector":{"targetReference":"Get_Case_Record"}},"subtype":"start","metaType":"node","connectors":[{"element":{"targetReference":"Get_Case_Record"},"processed":false,"type":"connector","reference":"Get_Case_Record"}],"name":"flowstart","locationX":"56","locationY":"0"},{"element":"Active","subtype":"status","metaType":"metadata"},{"element":{"name":"MultiUserSubject","isViewedAsPlainText":"true","text":"User Merge: Multi-User Merge Request - {!Count_of_Users} Users"},"subtype":"textTemplates","metaType":"resource","name":"MultiUserSubject"},{"element":{"name":"TaskName","isViewedAsPlainText":"true","text":"User Merge: {!Contact.recordName} | {!Plan.recordName}"},"subtype":"textTemplates","metaType":"resource","name":"TaskName"},{"element":{"name":"contactID","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"contactID","dataType":"String"},{"element":{"name":"ProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"ProfileName","dataType":"String"},{"element":{"name":"recordId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"recordId","dataType":"String"}],"startReference":"Get_Case_Record"},"ruleResults":[{"details":[],"ruleDefinition":{"docRefs":[],"name":"APIVersion","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Outdated API Version","description":"Introducing newer API components may lead to unexpected issues with older versions of Flows, as they might not align with the underlying mechanics. Starting from API version 50.0, the 'Api Version' attribute has been readily available on the Flow Object. To ensure smooth operation and reduce discrepancies between API versions, it is strongly advised to regularly update and maintain them.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/APIVersion.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"APIVersion","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"AutoLayout","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Auto-Layout Mode","description":"With Canvas Mode set to Auto-Layout, Elements are spaced, connected, and aligned automatically, keeping your Flow neatly organized thus saving you time.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/AutoLayout.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"AutoLayout","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"CopyAPIName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Copy API Name","description":"Maintaining multiple elements with a similar name, like 'Copy_X_Of_Element,' can diminish the overall readability of your Flow. When copying and pasting these elements, it's crucial to remember to update the API name of the newly created copy.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/CopyAPIName.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"CopyAPIName","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"DMLStatementInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"DML Statement In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your database operations, including record creation, updates, or deletions, at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DMLStatementInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DMLStatementInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"DuplicateDMLOperation","supportedTypes":["Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Duplicate DML Operation","description":"When the flow executes database changes or actions between two screens, it's important to prevent users from navigating back between screens. Failure to do so may result in duplicate database operations being performed within the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DuplicateDMLOperation.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DuplicateDMLOperation","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"FlowDescription","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Flow Description","description":"Descriptions play a vital role in documentation. We highly recommend including details about where they are used and their intended purpose.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowDescription.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"FlowDescription","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Naming your Flows is more critical than ever. By Stephen Church","path":"https://www.linkedin.com/posts/stephen-n-church_naming-your-flows-this-is-more-critical-activity-7099733198175158274-1sPx?utm_source=share&utm_medium=member_desktop"}],"name":"FlowName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Flow Naming Convention","description":"The readability of a flow is of utmost importance. Establishing a naming convention for the Flow Name significantly enhances findability, searchability, and maintains overall consistency. It is advisable to include at least a domain and a brief description of the actions carried out in the flow, for instance, 'Service_OrderFulfillment'.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowName.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"FlowName","severity":"error","occurs":false},{"details":[{"violation":{"element":{"name":"End","label":"End","locationX":"182","locationY":"758","allowBack":"false","allowFinish":"true","allowPause":"false","fields":[{"name":"EndMessage","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>You can view the queue <a href=\"https://guidelineinc.lightning.force.com/lightning/o/Task/list?filterName=00BVL000000mDZF2A2\" rel=\"noopener noreferrer\" target=\"_blank\">here</a>.</p><p><br></p><p><strong>What to expect next? </strong></p><p><br></p><ul><li>On average, it takes 1-3 business days for a merge. There can be delays though if there are pending transactions.</li><li>Once merged, a BPO agent will @ you in Chatter on the task updating you that the accounts have been merged, and complete the task.</li><li><strong>No updates are automatically made directly on your case. No notice is sent to the user by BPO.</strong></li></ul>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"NotEqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"EndMessageOnb","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>A member of the Onboarding BPO Team will complete this request as soon as possible. The agent will notify you of task completion via a Chatter message on the original case. </p>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}}],"showFooter":"true","showHeader":"true"},"subtype":"screens","metaType":"node","connectors":[],"name":"End","locationX":"182","locationY":"758"},"name":"End","metaType":"node","type":"screens","details":{"locationX":"182","locationY":"758","connectsTo":[]}},{"violation":{"element":{"name":"IsRecordTypeOnboarding","dataType":"Boolean","expression":"{!Get_Case_Record.RecordTypeId} = \"0125Y000001SNGfQAO\""},"subtype":"formulas","metaType":"variable","name":"IsRecordTypeOnboarding","dataType":"Boolean"},"name":"IsRecordTypeOnboarding","metaType":"variable","type":"formulas","details":{"dataType":"Boolean"}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"},{"label":"Don't hard code Record Type IDs in Flow. By Stephen Church.","path":"https://www.linkedin.com/feed/update/urn:li:activity:6947530300012826624/?updateEntityUrn=urn%3Ali%3Afs_feedUpdate%3A%28V2%2Curn%3Ali%3Aactivity%3A6947530300012826624%29"}],"name":"HardcodedId","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Hardcoded Id","description":"Avoid hard-coding IDs as they are org-specific. Instead, pass them into variables at the start of the flow. You can achieve this by utilizing merge fields in URL parameters or employing a Get Records element.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/HardcodedId.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"HardcodedId","severity":"error","occurs":true},{"details":[{"violation":{"element":{"name":"Get_Case_Record","label":"Get Case Record","locationX":"182","locationY":"134","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"GetQueueID"},"filterLogic":"and","filters":{"field":"Id","operator":"EqualTo","value":{"elementReference":"recordId"}},"getFirstRecordOnly":"true","object":"Case","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"GetQueueID"},"processed":false,"type":"connector","reference":"GetQueueID"}],"name":"Get_Case_Record","locationX":"182","locationY":"134"},"name":"Get_Case_Record","metaType":"node","type":"recordLookups","details":{"locationX":"182","locationY":"134","connectsTo":["GetQueueID"]}},{"violation":{"element":{"name":"GetQueueID","label":"GetQueueID","locationX":"182","locationY":"242","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"User_Merge_Request"},"filterLogic":"and","filters":[{"field":"Type","operator":"EqualTo","value":{"stringValue":"Queue"}},{"field":"DeveloperName","operator":"EqualTo","value":{"stringValue":"User_Merge_Requests"}}],"getFirstRecordOnly":"true","object":"Group","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"User_Merge_Request"},"processed":false,"type":"connector","reference":"User_Merge_Request"}],"name":"GetQueueID","locationX":"182","locationY":"242"},"name":"GetQueueID","metaType":"node","type":"recordLookups","details":{"locationX":"182","locationY":"242","connectsTo":["User_Merge_Request"]}},{"violation":{"element":{"name":"Create_Merge_Task","label":"Create Merge Task","locationX":"314","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"TaskName"}},{"field":"WhatId","value":{"elementReference":"recordId"}},{"field":"WhoId","value":{"elementReference":"Contact.recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Merge_Task","locationX":"314","locationY":"566"},"name":"Create_Merge_Task","metaType":"node","type":"recordCreates","details":{"locationX":"314","locationY":"566","connectsTo":["End"]}},{"violation":{"element":{"name":"Create_Multi_User_Task","label":"Create Multi User Task","locationX":"50","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"MultiUserSubject"}},{"field":"WhatId","value":{"elementReference":"recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Multi_User_Task","locationX":"50","locationY":"566"},"name":"Create_Multi_User_Task","metaType":"node","type":"recordCreates","details":{"locationX":"50","locationY":"566","connectsTo":["End"]}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"MissingFaultPath","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Fault Path","description":"At times, a flow may fail to execute a configured operation as intended. By default, the flow displays an error message to the user and notifies the admin who created the flow via email. However, you can customize this behavior by incorporating a Fault Path.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingFaultPath.ts","isConfigurable":false,"autoFixable":false,"severity":"error","applicableElements":["recordLookups","recordDeletes","recordUpdates","recordCreates","waits","actionCalls"]},"ruleName":"MissingFaultPath","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[],"name":"MissingNullHandler","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Null Handler","description":"When a Get Records operation doesn't find any data, it returns null. To ensure data validation, utilize a decision element on the operation result variable to check for a non-null result.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingNullHandler.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"MissingNullHandler","severity":"error","occurs":false,"errorMessage":"Something went wrong while executing MissingNullHandler in the Flow: 'User_Merge_Flow"},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Process Builder Retirement","path":"https://help.salesforce.com/s/articleView?id=000389396&type=1"}],"name":"ProcessBuilder","supportedTypes":["Workflow"],"label":"No Process Builder","description":"Salesforce is transitioning away from Workflow Rules and Process Builder in favor of Flow. Ensure you're prepared for this transition by migrating your organization's automation to Flow. Refer to official documentation for more information on the transition process and tools available.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/ProcessBuilder.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"ProcessBuilder","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"SOQLQueryInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"SOQL Query In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your SOQL queries at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/SOQLQueryInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"SOQLQueryInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"UnconnectedElement","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unconnected Element","description":"To maintain the efficiency and manageability of your Flow, it's best to avoid including unconnected elements that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnconnectedElement.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnconnectedElement","severity":"error","occurs":false},{"details":[{"violation":{"element":{"name":"planId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"planId","dataType":"String"},"name":"planId","metaType":"variable","type":"variables","details":{"dataType":"String"}},{"violation":{"element":{"name":"UserProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"true"},"subtype":"variables","metaType":"variable","name":"UserProfileName","dataType":"String"},"name":"UserProfileName","metaType":"variable","type":"variables","details":{"dataType":"String"}}],"ruleDefinition":{"docRefs":[],"name":"UnusedVariable","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unused Variable","description":"To maintain the efficiency and manageability of your Flow, it's advisable to avoid including unconnected variables that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnusedVariable.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnusedVariable","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[],"name":"InactiveFlow","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Inactive Flow","description":"Like cleaning out your closet: deleting unused flows is essential. Inactive flows can still cause trouble, like accidentally deleting records during testing, or being activated as subflows within parent flows.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/InactiveFlow.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"InactiveFlow","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Learn about data safety when running flows in system context in Salesforce Help","path":"https://help.salesforce.com/s/articleView?id=sf.flow_distribute_context_data_safety_system_context.htm&type=5"}],"name":"UnsafeRunningContext","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unsafe Flow Running Context","description":"This flow is configured to run in System Mode without Sharing. This system context grants all running users the permission to view and edit all data in your org. Running a flow in System Mode without Sharing can lead to unsafe data access.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnsafeRunningContext.ts","isConfigurable":false,"autoFixable":false,"severity":"warning"},"ruleName":"UnsafeRunningContext","severity":"warning","occurs":false}]} 2024-11-19 10:34:40.100 [debug] invoked scanned results in total: 2 2024-11-19 10:34:40.100 [trace] Fixed File {"flow":{"flowVariables":["choices","constants","dynamicChoiceSets","formulas","variables"],"flowResources":["textTemplates","stages"],"flowMetadata":["description","apiVersion","processMetadataValues","processType","interviewLabel","label","status","runInMode","startElementReference","isTemplate","fullName","timeZoneSidKey","isAdditionalPermissionRequiredToRun","migratedFromWorkflowRuleName","triggerOrder","environments","segment"],"flowNodes":["actionCalls","apexPluginCalls","assignments","collectionProcessors","decisions","loops","orchestratedStages","recordCreates","recordDeletes","recordLookups","recordUpdates","recordRollbacks","screens","start","steps","subflows","waits"],"fsPath":"/Users/kylecapehart/Documents/repos/gdlsf/force-app/main/default/flows/case_notifications_slack.flow-meta.xml","name":"case_notifications_slack","xmldata":{"actionCalls":[{"name":"post_to_Owner","label":"post to Owner","locationX":"176","locationY":"323","actionName":"slackv2__invokePostMessage","actionType":"apex","flowTransactionModel":"CurrentTransaction","inputParameters":[{"name":"message","value":{"stringValue":"test"}},{"name":"messageDestinationId","value":{"stringValue":"a2Y5Y000007IeWjUAK"}},{"name":"recordId","value":{"elementReference":"$Record.Id"}}],"nameSegment":"slackv2__invokePostMessage","versionSegment":"1"}],"apiVersion":["58.0"],"environments":["Default"],"interviewLabel":["case notifications {!$Flow.CurrentDateTime}"],"label":["case notifications slack"],"processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"processType":["AutoLaunchedFlow"],"start":[{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"}],"status":["Obsolete"]},"label":["case notifications slack"],"interviewLabel":["case notifications {!$Flow.CurrentDateTime}"],"processType":["AutoLaunchedFlow"],"processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"start":[{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"}],"status":["Obsolete"],"type":["AutoLaunchedFlow"],"elements":[{"element":{"name":"post_to_Owner","label":"post to Owner","locationX":"176","locationY":"323","actionName":"slackv2__invokePostMessage","actionType":"apex","flowTransactionModel":"CurrentTransaction","inputParameters":[{"name":"message","value":{"stringValue":"test"}},{"name":"messageDestinationId","value":{"stringValue":"a2Y5Y000007IeWjUAK"}},{"name":"recordId","value":{"elementReference":"$Record.Id"}}],"nameSegment":"slackv2__invokePostMessage","versionSegment":"1"},"subtype":"actionCalls","metaType":"node","connectors":[],"name":"post_to_Owner","locationX":"176","locationY":"323"},{"element":"58.0","subtype":"apiVersion","metaType":"metadata"},{"element":"Default","subtype":"environments","metaType":"metadata"},{"element":"case notifications {!$Flow.CurrentDateTime}","subtype":"interviewLabel","metaType":"metadata"},{"element":"case notifications slack","subtype":"label","metaType":"metadata"},{"element":{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":"AutoLaunchedFlow","subtype":"processType","metaType":"metadata"},{"element":{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"},"subtype":"start","metaType":"node","connectors":[{"element":{"targetReference":"post_to_Owner"},"processed":false,"type":"connector","reference":"post_to_Owner"}],"name":"flowstart","locationX":"50","locationY":"0"},{"element":"Obsolete","subtype":"status","metaType":"metadata"}],"startReference":"post_to_Owner"},"ruleResults":[{"details":[],"ruleDefinition":{"docRefs":[],"name":"APIVersion","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Outdated API Version","description":"Introducing newer API components may lead to unexpected issues with older versions of Flows, as they might not align with the underlying mechanics. Starting from API version 50.0, the 'Api Version' attribute has been readily available on the Flow Object. To ensure smooth operation and reduce discrepancies between API versions, it is strongly advised to regularly update and maintain them.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/APIVersion.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"APIVersion","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"AutoLayout","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Auto-Layout Mode","description":"With Canvas Mode set to Auto-Layout, Elements are spaced, connected, and aligned automatically, keeping your Flow neatly organized thus saving you time.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/AutoLayout.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"AutoLayout","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"CopyAPIName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Copy API Name","description":"Maintaining multiple elements with a similar name, like 'Copy_X_Of_Element,' can diminish the overall readability of your Flow. When copying and pasting these elements, it's crucial to remember to update the API name of the newly created copy.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/CopyAPIName.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"CopyAPIName","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"DMLStatementInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"DML Statement In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your database operations, including record creation, updates, or deletions, at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DMLStatementInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DMLStatementInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"DuplicateDMLOperation","supportedTypes":["Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Duplicate DML Operation","description":"When the flow executes database changes or actions between two screens, it's important to prevent users from navigating back between screens. Failure to do so may result in duplicate database operations being performed within the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DuplicateDMLOperation.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DuplicateDMLOperation","severity":"error","occurs":false},{"details":[{"violation":{"metaType":"attribute","name":"undefined","subtype":"description","expression":"!==null"},"name":"undefined","metaType":"attribute","type":"description","details":{"expression":"!==null"}}],"ruleDefinition":{"docRefs":[],"name":"FlowDescription","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Flow Description","description":"Descriptions play a vital role in documentation. We highly recommend including details about where they are used and their intended purpose.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowDescription.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"FlowDescription","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Naming your Flows is more critical than ever. By Stephen Church","path":"https://www.linkedin.com/posts/stephen-n-church_naming-your-flows-this-is-more-critical-activity-7099733198175158274-1sPx?utm_source=share&utm_medium=member_desktop"}],"name":"FlowName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Flow Naming Convention","description":"The readability of a flow is of utmost importance. Establishing a naming convention for the Flow Name significantly enhances findability, searchability, and maintains overall consistency. It is advisable to include at least a domain and a brief description of the actions carried out in the flow, for instance, 'Service_OrderFulfillment'.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowName.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"FlowName","severity":"error","occurs":false},{"details":[{"violation":{"element":{"locationX":"50","locationY":"0","connector":{"targetReference":"post_to_Owner"},"filterLogic":"and","filters":[{"field":"OwnerId","operator":"IsChanged","value":{"booleanValue":"true"}},{"field":"Id","operator":"EqualTo","value":{"stringValue":"5005Y00002VC1b4QAD"}}],"object":"Case","recordTriggerType":"Update","triggerType":"RecordAfterSave"},"subtype":"start","metaType":"node","connectors":[{"element":{"targetReference":"post_to_Owner"},"processed":false,"type":"connector","reference":"post_to_Owner"}],"name":"flowstart","locationX":"50","locationY":"0"},"name":"flowstart","metaType":"node","type":"start","details":{"locationX":"50","locationY":"0","connectsTo":["post_to_Owner"]}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"},{"label":"Don't hard code Record Type IDs in Flow. By Stephen Church.","path":"https://www.linkedin.com/feed/update/urn:li:activity:6947530300012826624/?updateEntityUrn=urn%3Ali%3Afs_feedUpdate%3A%28V2%2Curn%3Ali%3Aactivity%3A6947530300012826624%29"}],"name":"HardcodedId","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Hardcoded Id","description":"Avoid hard-coding IDs as they are org-specific. Instead, pass them into variables at the start of the flow. You can achieve this by utilizing merge fields in URL parameters or employing a Get Records element.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/HardcodedId.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"HardcodedId","severity":"error","occurs":true},{"details":[{"violation":{"element":{"name":"post_to_Owner","label":"post to Owner","locationX":"176","locationY":"323","actionName":"slackv2__invokePostMessage","actionType":"apex","flowTransactionModel":"CurrentTransaction","inputParameters":[{"name":"message","value":{"stringValue":"test"}},{"name":"messageDestinationId","value":{"stringValue":"a2Y5Y000007IeWjUAK"}},{"name":"recordId","value":{"elementReference":"$Record.Id"}}],"nameSegment":"slackv2__invokePostMessage","versionSegment":"1"},"subtype":"actionCalls","metaType":"node","connectors":[],"name":"post_to_Owner","locationX":"176","locationY":"323"},"name":"post_to_Owner","metaType":"node","type":"actionCalls","details":{"locationX":"176","locationY":"323","connectsTo":[]}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"MissingFaultPath","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Fault Path","description":"At times, a flow may fail to execute a configured operation as intended. By default, the flow displays an error message to the user and notifies the admin who created the flow via email. However, you can customize this behavior by incorporating a Fault Path.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingFaultPath.ts","isConfigurable":false,"autoFixable":false,"severity":"error","applicableElements":["recordLookups","recordDeletes","recordUpdates","recordCreates","waits","actionCalls"]},"ruleName":"MissingFaultPath","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[],"name":"MissingNullHandler","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Null Handler","description":"When a Get Records operation doesn't find any data, it returns null. To ensure data validation, utilize a decision element on the operation result variable to check for a non-null result.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingNullHandler.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"MissingNullHandler","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Process Builder Retirement","path":"https://help.salesforce.com/s/articleView?id=000389396&type=1"}],"name":"ProcessBuilder","supportedTypes":["Workflow"],"label":"No Process Builder","description":"Salesforce is transitioning away from Workflow Rules and Process Builder in favor of Flow. Ensure you're prepared for this transition by migrating your organization's automation to Flow. Refer to official documentation for more information on the transition process and tools available.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/ProcessBuilder.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"ProcessBuilder","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"SOQLQueryInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"SOQL Query In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your SOQL queries at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/SOQLQueryInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"SOQLQueryInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"UnconnectedElement","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unconnected Element","description":"To maintain the efficiency and manageability of your Flow, it's best to avoid including unconnected elements that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnconnectedElement.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnconnectedElement","severity":"error","occurs":false},{"details":[{"violation":{"element":{"name":"RecipIds","dataType":"String","isCollection":"true","isInput":"false","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"RecipIds","dataType":"String"},"name":"RecipIds","metaType":"variable","type":"variables","details":{"dataType":"String"}}],"ruleDefinition":{"docRefs":[],"name":"UnusedVariable","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unused Variable","description":"To maintain the efficiency and manageability of your Flow, it's advisable to avoid including unconnected variables that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnusedVariable.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnusedVariable","severity":"error","occurs":true},{"details":[{"violation":{"metaType":"attribute","name":"\"Obsolete\"","subtype":"status","expression":"!= Active"},"name":"\"Obsolete\"","metaType":"attribute","type":"status","details":{"expression":"!= Active"}}],"ruleDefinition":{"docRefs":[],"name":"InactiveFlow","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Inactive Flow","description":"Like cleaning out your closet: deleting unused flows is essential. Inactive flows can still cause trouble, like accidentally deleting records during testing, or being activated as subflows within parent flows.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/InactiveFlow.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"InactiveFlow","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Learn about data safety when running flows in system context in Salesforce Help","path":"https://help.salesforce.com/s/articleView?id=sf.flow_distribute_context_data_safety_system_context.htm&type=5"}],"name":"UnsafeRunningContext","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unsafe Flow Running Context","description":"This flow is configured to run in System Mode without Sharing. This system context grants all running users the permission to view and edit all data in your org. Running a flow in System Mode without Sharing can lead to unsafe data access.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnsafeRunningContext.ts","isConfigurable":false,"autoFixable":false,"severity":"warning"},"ruleName":"UnsafeRunningContext","severity":"warning","occurs":false}]} 2024-11-19 10:34:40.134 [trace] Fixed File {"flow":{"flowVariables":["choices","constants","dynamicChoiceSets","formulas","variables"],"flowResources":["textTemplates","stages"],"flowMetadata":["description","apiVersion","processMetadataValues","processType","interviewLabel","label","status","runInMode","startElementReference","isTemplate","fullName","timeZoneSidKey","isAdditionalPermissionRequiredToRun","migratedFromWorkflowRuleName","triggerOrder","environments","segment"],"flowNodes":["actionCalls","apexPluginCalls","assignments","collectionProcessors","decisions","loops","orchestratedStages","recordCreates","recordDeletes","recordLookups","recordUpdates","recordRollbacks","screens","start","steps","subflows","waits"],"fsPath":"/Users/kylecapehart/Documents/repos/gdlsf/force-app/main/default/flows/User_Merge_Flow.flow-meta.xml","name":"User_Merge_Flow","xmldata":{"apiVersion":["57.0"],"decisions":[{"name":"Is_Multi_User_Merge_Request","label":"Is Multi User Merge Request","locationX":"182","locationY":"458","defaultConnector":{"targetReference":"Create_Merge_Task"},"defaultConnectorLabel":"No","rules":{"name":"Yes","conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}},"connector":{"targetReference":"Create_Multi_User_Task"},"label":"Yes"}}],"description":["SFDC-1834"],"dynamicChoiceSets":[{"name":"Priority","dataType":"Picklist","displayField":{"@xsi:nil":"true"},"object":{"@xsi:nil":"true"},"picklistField":"Priority","picklistObject":"Task"}],"environments":["Default"],"formulas":[{"name":"IsRecordTypeOnboarding","dataType":"Boolean","expression":"{!Get_Case_Record.RecordTypeId} = \"0125Y000001SNGfQAO\""}],"interviewLabel":["MergeRequest {!$Flow.CurrentDateTime}"],"label":["User Merge Task Flow"],"processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"processType":["Flow"],"recordCreates":[{"name":"Create_Merge_Task","label":"Create Merge Task","locationX":"314","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"TaskName"}},{"field":"WhatId","value":{"elementReference":"recordId"}},{"field":"WhoId","value":{"elementReference":"Contact.recordId"}}],"object":"Task","storeOutputAutomatically":"true"},{"name":"Create_Multi_User_Task","label":"Create Multi User Task","locationX":"50","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"MultiUserSubject"}},{"field":"WhatId","value":{"elementReference":"recordId"}}],"object":"Task","storeOutputAutomatically":"true"}],"recordLookups":[{"name":"Get_Case_Record","label":"Get Case Record","locationX":"182","locationY":"134","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"GetQueueID"},"filterLogic":"and","filters":{"field":"Id","operator":"EqualTo","value":{"elementReference":"recordId"}},"getFirstRecordOnly":"true","object":"Case","storeOutputAutomatically":"true"},{"name":"GetQueueID","label":"GetQueueID","locationX":"182","locationY":"242","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"User_Merge_Request"},"filterLogic":"and","filters":[{"field":"Type","operator":"EqualTo","value":{"stringValue":"Queue"}},{"field":"DeveloperName","operator":"EqualTo","value":{"stringValue":"User_Merge_Requests"}}],"getFirstRecordOnly":"true","object":"Group","storeOutputAutomatically":"true"}],"screens":[{"name":"End","label":"End","locationX":"182","locationY":"758","allowBack":"false","allowFinish":"true","allowPause":"false","fields":[{"name":"EndMessage","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>You can view the queue <a href=\"https://guidelineinc.lightning.force.com/lightning/o/Task/list?filterName=00BVL000000mDZF2A2\" rel=\"noopener noreferrer\" target=\"_blank\">here</a>.</p><p><br></p><p><strong>What to expect next? </strong></p><p><br></p><ul><li>On average, it takes 1-3 business days for a merge. There can be delays though if there are pending transactions.</li><li>Once merged, a BPO agent will @ you in Chatter on the task updating you that the accounts have been merged, and complete the task.</li><li><strong>No updates are automatically made directly on your case. No notice is sent to the user by BPO.</strong></li></ul>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"NotEqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"EndMessageOnb","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>A member of the Onboarding BPO Team will complete this request as soon as possible. The agent will notify you of task completion via a Chatter message on the original case. </p>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}}],"showFooter":"true","showHeader":"true"},{"name":"User_Merge_Request","label":"User Merge Request","locationX":"182","locationY":"350","allowBack":"true","allowFinish":"true","allowPause":"true","connector":{"targetReference":"Is_Multi_User_Merge_Request"},"fields":[{"name":"PriorityFlow","choiceReferences":"Priority","dataType":"String","defaultValue":{"stringValue":"Normal"},"fieldText":"Priority","fieldType":"DropdownBox","isRequired":"true"},{"name":"Is_this_a_Multi_User_Merge_Request","dataType":"Boolean","fieldText":"Multi-User Merge Request","fieldType":"InputField","helpText":"<p>If you're requesting more than one single to be merged, please check the box.</p>","isRequired":"true"},{"name":"Name_and_DOB_Match","dataType":"Boolean","fieldText":"First Name, Last Name, and DOB Exactly Match?","fieldType":"InputField","helpText":"<p>The user's Name and DOB must exactly match on both accounts in order to be merged. </p>","isRequired":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Count_of_Users","dataType":"Number","fieldText":"Count of Users","fieldType":"InputField","isRequired":"true","scale":"0","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"Plan","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"Plan__c"}},{"name":"label","value":{"stringValue":"Plan"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.Plan__c"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Contact","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"ContactId"}},{"name":"label","value":{"stringValue":"Contact"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.ContactId"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"DescriptionBody","defaultValue":{"stringValue":"Admin User Account 1 (Primary):\nPrimary Email: \nAdmin User Account 2:"},"fieldText":"Notes","fieldType":"LargeTextArea","helpText":"<p>If you're requesting more than one user to be merged, you can provide a list of each individual, primary, and secondary user account. Alternatively, you can also provide a link to a Google Sheet if preferred. </p>","isRequired":"true"}],"showFooter":"true","showHeader":"true"}],"start":[{"locationX":"56","locationY":"0","connector":{"targetReference":"Get_Case_Record"}}],"status":["Active"],"textTemplates":[{"name":"MultiUserSubject","isViewedAsPlainText":"true","text":"User Merge: Multi-User Merge Request - {!Count_of_Users} Users"},{"name":"TaskName","isViewedAsPlainText":"true","text":"User Merge: {!Contact.recordName} | {!Plan.recordName}"}],"variables":[{"name":"contactID","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},{"name":"ProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},{"name":"recordId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"}]},"label":["User Merge Task Flow"],"interviewLabel":["MergeRequest {!$Flow.CurrentDateTime}"],"processType":["Flow"],"processMetadataValues":[{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}}],"start":[{"locationX":"56","locationY":"0","connector":{"targetReference":"Get_Case_Record"}}],"status":["Active"],"type":["Flow"],"elements":[{"element":"57.0","subtype":"apiVersion","metaType":"metadata"},{"element":{"name":"Is_Multi_User_Merge_Request","label":"Is Multi User Merge Request","locationX":"182","locationY":"458","defaultConnector":{"targetReference":"Create_Merge_Task"},"defaultConnectorLabel":"No","rules":{"name":"Yes","conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}},"connector":{"targetReference":"Create_Multi_User_Task"},"label":"Yes"}},"subtype":"decisions","metaType":"node","connectors":[{"element":{"targetReference":"Create_Merge_Task"},"processed":false,"type":"defaultConnector","reference":"Create_Merge_Task"},{"element":{"targetReference":"Create_Multi_User_Task"},"processed":false,"type":"connector","childName":"Yes","childOf":"rules","reference":"Create_Multi_User_Task"}],"name":"Is_Multi_User_Merge_Request","locationX":"182","locationY":"458"},{"element":"SFDC-1834","subtype":"description","metaType":"metadata"},{"element":{"name":"Priority","dataType":"Picklist","displayField":{"@xsi:nil":"true"},"object":{"@xsi:nil":"true"},"picklistField":"Priority","picklistObject":"Task"},"subtype":"dynamicChoiceSets","metaType":"variable","name":"Priority","dataType":"Picklist"},{"element":"Default","subtype":"environments","metaType":"metadata"},{"element":{"name":"IsRecordTypeOnboarding","dataType":"Boolean","expression":"{!Get_Case_Record.RecordTypeId} = \"0125Y000001SNGfQAO\""},"subtype":"formulas","metaType":"variable","name":"IsRecordTypeOnboarding","dataType":"Boolean"},{"element":"MergeRequest {!$Flow.CurrentDateTime}","subtype":"interviewLabel","metaType":"metadata"},{"element":"User Merge Task Flow","subtype":"label","metaType":"metadata"},{"element":{"name":"BuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"CanvasMode","value":{"stringValue":"AUTO_LAYOUT_CANVAS"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":{"name":"OriginBuilderType","value":{"stringValue":"LightningFlowBuilder"}},"subtype":"processMetadataValues","metaType":"metadata"},{"element":"Flow","subtype":"processType","metaType":"metadata"},{"element":{"name":"Create_Merge_Task","label":"Create Merge Task","locationX":"314","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"TaskName"}},{"field":"WhatId","value":{"elementReference":"recordId"}},{"field":"WhoId","value":{"elementReference":"Contact.recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Merge_Task","locationX":"314","locationY":"566"},{"element":{"name":"Create_Multi_User_Task","label":"Create Multi User Task","locationX":"50","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"MultiUserSubject"}},{"field":"WhatId","value":{"elementReference":"recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Multi_User_Task","locationX":"50","locationY":"566"},{"element":{"name":"Get_Case_Record","label":"Get Case Record","locationX":"182","locationY":"134","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"GetQueueID"},"filterLogic":"and","filters":{"field":"Id","operator":"EqualTo","value":{"elementReference":"recordId"}},"getFirstRecordOnly":"true","object":"Case","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"GetQueueID"},"processed":false,"type":"connector","reference":"GetQueueID"}],"name":"Get_Case_Record","locationX":"182","locationY":"134"},{"element":{"name":"GetQueueID","label":"GetQueueID","locationX":"182","locationY":"242","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"User_Merge_Request"},"filterLogic":"and","filters":[{"field":"Type","operator":"EqualTo","value":{"stringValue":"Queue"}},{"field":"DeveloperName","operator":"EqualTo","value":{"stringValue":"User_Merge_Requests"}}],"getFirstRecordOnly":"true","object":"Group","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"User_Merge_Request"},"processed":false,"type":"connector","reference":"User_Merge_Request"}],"name":"GetQueueID","locationX":"182","locationY":"242"},{"element":{"name":"End","label":"End","locationX":"182","locationY":"758","allowBack":"false","allowFinish":"true","allowPause":"false","fields":[{"name":"EndMessage","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>You can view the queue <a href=\"https://guidelineinc.lightning.force.com/lightning/o/Task/list?filterName=00BVL000000mDZF2A2\" rel=\"noopener noreferrer\" target=\"_blank\">here</a>.</p><p><br></p><p><strong>What to expect next? </strong></p><p><br></p><ul><li>On average, it takes 1-3 business days for a merge. There can be delays though if there are pending transactions.</li><li>Once merged, a BPO agent will @ you in Chatter on the task updating you that the accounts have been merged, and complete the task.</li><li><strong>No updates are automatically made directly on your case. No notice is sent to the user by BPO.</strong></li></ul>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"NotEqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"EndMessageOnb","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>A member of the Onboarding BPO Team will complete this request as soon as possible. The agent will notify you of task completion via a Chatter message on the original case. </p>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}}],"showFooter":"true","showHeader":"true"},"subtype":"screens","metaType":"node","connectors":[],"name":"End","locationX":"182","locationY":"758"},{"element":{"name":"User_Merge_Request","label":"User Merge Request","locationX":"182","locationY":"350","allowBack":"true","allowFinish":"true","allowPause":"true","connector":{"targetReference":"Is_Multi_User_Merge_Request"},"fields":[{"name":"PriorityFlow","choiceReferences":"Priority","dataType":"String","defaultValue":{"stringValue":"Normal"},"fieldText":"Priority","fieldType":"DropdownBox","isRequired":"true"},{"name":"Is_this_a_Multi_User_Merge_Request","dataType":"Boolean","fieldText":"Multi-User Merge Request","fieldType":"InputField","helpText":"<p>If you're requesting more than one single to be merged, please check the box.</p>","isRequired":"true"},{"name":"Name_and_DOB_Match","dataType":"Boolean","fieldText":"First Name, Last Name, and DOB Exactly Match?","fieldType":"InputField","helpText":"<p>The user's Name and DOB must exactly match on both accounts in order to be merged. </p>","isRequired":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Count_of_Users","dataType":"Number","fieldText":"Count of Users","fieldType":"InputField","isRequired":"true","scale":"0","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"Plan","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"Plan__c"}},{"name":"label","value":{"stringValue":"Plan"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.Plan__c"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"Contact","extensionName":"flowruntime:lookup","fieldType":"ComponentInstance","inputParameters":[{"name":"fieldApiName","value":{"stringValue":"ContactId"}},{"name":"label","value":{"stringValue":"Contact"}},{"name":"objectApiName","value":{"stringValue":"Case"}},{"name":"required","value":{"booleanValue":"true"}},{"name":"recordId","value":{"elementReference":"Get_Case_Record.ContactId"}}],"inputsOnNextNavToAssocScrn":"UseStoredValues","isRequired":"true","storeOutputAutomatically":"true","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"Is_this_a_Multi_User_Merge_Request","operator":"EqualTo","rightValue":{"booleanValue":"false"}}}},{"name":"DescriptionBody","defaultValue":{"stringValue":"Admin User Account 1 (Primary):\nPrimary Email: \nAdmin User Account 2:"},"fieldText":"Notes","fieldType":"LargeTextArea","helpText":"<p>If you're requesting more than one user to be merged, you can provide a list of each individual, primary, and secondary user account. Alternatively, you can also provide a link to a Google Sheet if preferred. </p>","isRequired":"true"}],"showFooter":"true","showHeader":"true"},"subtype":"screens","metaType":"node","connectors":[{"element":{"targetReference":"Is_Multi_User_Merge_Request"},"processed":false,"type":"connector","reference":"Is_Multi_User_Merge_Request"}],"name":"User_Merge_Request","locationX":"182","locationY":"350"},{"element":{"locationX":"56","locationY":"0","connector":{"targetReference":"Get_Case_Record"}},"subtype":"start","metaType":"node","connectors":[{"element":{"targetReference":"Get_Case_Record"},"processed":false,"type":"connector","reference":"Get_Case_Record"}],"name":"flowstart","locationX":"56","locationY":"0"},{"element":"Active","subtype":"status","metaType":"metadata"},{"element":{"name":"MultiUserSubject","isViewedAsPlainText":"true","text":"User Merge: Multi-User Merge Request - {!Count_of_Users} Users"},"subtype":"textTemplates","metaType":"resource","name":"MultiUserSubject"},{"element":{"name":"TaskName","isViewedAsPlainText":"true","text":"User Merge: {!Contact.recordName} | {!Plan.recordName}"},"subtype":"textTemplates","metaType":"resource","name":"TaskName"},{"element":{"name":"contactID","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"contactID","dataType":"String"},{"element":{"name":"ProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"ProfileName","dataType":"String"},{"element":{"name":"recordId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"recordId","dataType":"String"}],"startReference":"Get_Case_Record"},"ruleResults":[{"details":[],"ruleDefinition":{"docRefs":[],"name":"APIVersion","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Outdated API Version","description":"Introducing newer API components may lead to unexpected issues with older versions of Flows, as they might not align with the underlying mechanics. Starting from API version 50.0, the 'Api Version' attribute has been readily available on the Flow Object. To ensure smooth operation and reduce discrepancies between API versions, it is strongly advised to regularly update and maintain them.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/APIVersion.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"APIVersion","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"AutoLayout","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Auto-Layout Mode","description":"With Canvas Mode set to Auto-Layout, Elements are spaced, connected, and aligned automatically, keeping your Flow neatly organized thus saving you time.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/AutoLayout.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"AutoLayout","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"CopyAPIName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Copy API Name","description":"Maintaining multiple elements with a similar name, like 'Copy_X_Of_Element,' can diminish the overall readability of your Flow. When copying and pasting these elements, it's crucial to remember to update the API name of the newly created copy.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/CopyAPIName.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"CopyAPIName","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"DMLStatementInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"DML Statement In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your database operations, including record creation, updates, or deletions, at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DMLStatementInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DMLStatementInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"DuplicateDMLOperation","supportedTypes":["Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Duplicate DML Operation","description":"When the flow executes database changes or actions between two screens, it's important to prevent users from navigating back between screens. Failure to do so may result in duplicate database operations being performed within the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/DuplicateDMLOperation.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"DuplicateDMLOperation","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"FlowDescription","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Flow Description","description":"Descriptions play a vital role in documentation. We highly recommend including details about where they are used and their intended purpose.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowDescription.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"FlowDescription","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Naming your Flows is more critical than ever. By Stephen Church","path":"https://www.linkedin.com/posts/stephen-n-church_naming-your-flows-this-is-more-critical-activity-7099733198175158274-1sPx?utm_source=share&utm_medium=member_desktop"}],"name":"FlowName","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Flow Naming Convention","description":"The readability of a flow is of utmost importance. Establishing a naming convention for the Flow Name significantly enhances findability, searchability, and maintains overall consistency. It is advisable to include at least a domain and a brief description of the actions carried out in the flow, for instance, 'Service_OrderFulfillment'.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/FlowName.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"FlowName","severity":"error","occurs":false},{"details":[{"violation":{"element":{"name":"End","label":"End","locationX":"182","locationY":"758","allowBack":"false","allowFinish":"true","allowPause":"false","fields":[{"name":"EndMessage","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>You can view the queue <a href=\"https://guidelineinc.lightning.force.com/lightning/o/Task/list?filterName=00BVL000000mDZF2A2\" rel=\"noopener noreferrer\" target=\"_blank\">here</a>.</p><p><br></p><p><strong>What to expect next? </strong></p><p><br></p><ul><li>On average, it takes 1-3 business days for a merge. There can be delays though if there are pending transactions.</li><li>Once merged, a BPO agent will @ you in Chatter on the task updating you that the accounts have been merged, and complete the task.</li><li><strong>No updates are automatically made directly on your case. No notice is sent to the user by BPO.</strong></li></ul>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"NotEqualTo","rightValue":{"booleanValue":"true"}}}},{"name":"EndMessageOnb","fieldText":"<p><span style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">🥳 </span><strong style=\"color: rgb(71, 71, 71); font-size: 16px; background-color: rgb(255, 255, 255);\">User Merge Task Successfully Created!</strong></p><p><br></p><p>A member of the Onboarding BPO Team will complete this request as soon as possible. The agent will notify you of task completion via a Chatter message on the original case. </p>","fieldType":"DisplayText","visibilityRule":{"conditionLogic":"and","conditions":{"leftValueReference":"IsRecordTypeOnboarding","operator":"EqualTo","rightValue":{"booleanValue":"true"}}}}],"showFooter":"true","showHeader":"true"},"subtype":"screens","metaType":"node","connectors":[],"name":"End","locationX":"182","locationY":"758"},"name":"End","metaType":"node","type":"screens","details":{"locationX":"182","locationY":"758","connectsTo":[]}},{"violation":{"element":{"name":"IsRecordTypeOnboarding","dataType":"Boolean","expression":"{!Get_Case_Record.RecordTypeId} = \"0125Y000001SNGfQAO\""},"subtype":"formulas","metaType":"variable","name":"IsRecordTypeOnboarding","dataType":"Boolean"},"name":"IsRecordTypeOnboarding","metaType":"variable","type":"formulas","details":{"dataType":"Boolean"}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"},{"label":"Don't hard code Record Type IDs in Flow. By Stephen Church.","path":"https://www.linkedin.com/feed/update/urn:li:activity:6947530300012826624/?updateEntityUrn=urn%3Ali%3Afs_feedUpdate%3A%28V2%2Curn%3Ali%3Aactivity%3A6947530300012826624%29"}],"name":"HardcodedId","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Hardcoded Id","description":"Avoid hard-coding IDs as they are org-specific. Instead, pass them into variables at the start of the flow. You can achieve this by utilizing merge fields in URL parameters or employing a Get Records element.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/HardcodedId.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"HardcodedId","severity":"error","occurs":true},{"details":[{"violation":{"element":{"name":"Get_Case_Record","label":"Get Case Record","locationX":"182","locationY":"134","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"GetQueueID"},"filterLogic":"and","filters":{"field":"Id","operator":"EqualTo","value":{"elementReference":"recordId"}},"getFirstRecordOnly":"true","object":"Case","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"GetQueueID"},"processed":false,"type":"connector","reference":"GetQueueID"}],"name":"Get_Case_Record","locationX":"182","locationY":"134"},"name":"Get_Case_Record","metaType":"node","type":"recordLookups","details":{"locationX":"182","locationY":"134","connectsTo":["GetQueueID"]}},{"violation":{"element":{"name":"GetQueueID","label":"GetQueueID","locationX":"182","locationY":"242","assignNullValuesIfNoRecordsFound":"false","connector":{"targetReference":"User_Merge_Request"},"filterLogic":"and","filters":[{"field":"Type","operator":"EqualTo","value":{"stringValue":"Queue"}},{"field":"DeveloperName","operator":"EqualTo","value":{"stringValue":"User_Merge_Requests"}}],"getFirstRecordOnly":"true","object":"Group","storeOutputAutomatically":"true"},"subtype":"recordLookups","metaType":"node","connectors":[{"element":{"targetReference":"User_Merge_Request"},"processed":false,"type":"connector","reference":"User_Merge_Request"}],"name":"GetQueueID","locationX":"182","locationY":"242"},"name":"GetQueueID","metaType":"node","type":"recordLookups","details":{"locationX":"182","locationY":"242","connectsTo":["User_Merge_Request"]}},{"violation":{"element":{"name":"Create_Merge_Task","label":"Create Merge Task","locationX":"314","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"TaskName"}},{"field":"WhatId","value":{"elementReference":"recordId"}},{"field":"WhoId","value":{"elementReference":"Contact.recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Merge_Task","locationX":"314","locationY":"566"},"name":"Create_Merge_Task","metaType":"node","type":"recordCreates","details":{"locationX":"314","locationY":"566","connectsTo":["End"]}},{"violation":{"element":{"name":"Create_Multi_User_Task","label":"Create Multi User Task","locationX":"50","locationY":"566","connector":{"targetReference":"End"},"inputAssignments":[{"field":"Description","value":{"elementReference":"DescriptionBody"}},{"field":"OnboardingMergeRequest__c","value":{"elementReference":"IsRecordTypeOnboarding"}},{"field":"OwnerId","value":{"elementReference":"GetQueueID.Id"}},{"field":"Priority","value":{"elementReference":"PriorityFlow"}},{"field":"Reason__c","value":{"stringValue":"User Merge"}},{"field":"Subject","value":{"elementReference":"MultiUserSubject"}},{"field":"WhatId","value":{"elementReference":"recordId"}}],"object":"Task","storeOutputAutomatically":"true"},"subtype":"recordCreates","metaType":"node","connectors":[{"element":{"targetReference":"End"},"processed":false,"type":"connector","reference":"End"}],"name":"Create_Multi_User_Task","locationX":"50","locationY":"566"},"name":"Create_Multi_User_Task","metaType":"node","type":"recordCreates","details":{"locationX":"50","locationY":"566","connectsTo":["End"]}}],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"MissingFaultPath","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Fault Path","description":"At times, a flow may fail to execute a configured operation as intended. By default, the flow displays an error message to the user and notifies the admin who created the flow via email. However, you can customize this behavior by incorporating a Fault Path.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingFaultPath.ts","isConfigurable":false,"autoFixable":false,"severity":"error","applicableElements":["recordLookups","recordDeletes","recordUpdates","recordCreates","waits","actionCalls"]},"ruleName":"MissingFaultPath","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[],"name":"MissingNullHandler","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Missing Null Handler","description":"When a Get Records operation doesn't find any data, it returns null. To ensure data validation, utilize a decision element on the operation result variable to check for a non-null result.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/MissingNullHandler.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"MissingNullHandler","severity":"error","occurs":false,"errorMessage":"Something went wrong while executing MissingNullHandler in the Flow: 'User_Merge_Flow"},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Process Builder Retirement","path":"https://help.salesforce.com/s/articleView?id=000389396&type=1"}],"name":"ProcessBuilder","supportedTypes":["Workflow"],"label":"No Process Builder","description":"Salesforce is transitioning away from Workflow Rules and Process Builder in favor of Flow. Ensure you're prepared for this transition by migrating your organization's automation to Flow. Refer to official documentation for more information on the transition process and tools available.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/ProcessBuilder.ts","isConfigurable":true,"autoFixable":false,"severity":"error"},"ruleName":"ProcessBuilder","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Flow Best Practices","path":"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],"name":"SOQLQueryInLoop","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow"],"label":"SOQL Query In A Loop","description":"To prevent exceeding Apex governor limits, it is advisable to consolidate all your SOQL queries at the conclusion of the flow.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/SOQLQueryInLoop.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"SOQLQueryInLoop","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[],"name":"UnconnectedElement","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unconnected Element","description":"To maintain the efficiency and manageability of your Flow, it's best to avoid including unconnected elements that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnconnectedElement.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnconnectedElement","severity":"error","occurs":false},{"details":[{"violation":{"element":{"name":"planId","dataType":"String","isCollection":"false","isInput":"true","isOutput":"false"},"subtype":"variables","metaType":"variable","name":"planId","dataType":"String"},"name":"planId","metaType":"variable","type":"variables","details":{"dataType":"String"}},{"violation":{"element":{"name":"UserProfileName","dataType":"String","isCollection":"false","isInput":"true","isOutput":"true"},"subtype":"variables","metaType":"variable","name":"UserProfileName","dataType":"String"},"name":"UserProfileName","metaType":"variable","type":"variables","details":{"dataType":"String"}}],"ruleDefinition":{"docRefs":[],"name":"UnusedVariable","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unused Variable","description":"To maintain the efficiency and manageability of your Flow, it's advisable to avoid including unconnected variables that are not in use.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnusedVariable.ts","isConfigurable":false,"autoFixable":true,"severity":"error"},"ruleName":"UnusedVariable","severity":"error","occurs":true},{"details":[],"ruleDefinition":{"docRefs":[],"name":"InactiveFlow","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich","Survey"],"label":"Inactive Flow","description":"Like cleaning out your closet: deleting unused flows is essential. Inactive flows can still cause trouble, like accidentally deleting records during testing, or being activated as subflows within parent flows.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/InactiveFlow.ts","isConfigurable":false,"autoFixable":false,"severity":"error"},"ruleName":"InactiveFlow","severity":"error","occurs":false},{"details":[],"ruleDefinition":{"docRefs":[{"label":"Learn about data safety when running flows in system context in Salesforce Help","path":"https://help.salesforce.com/s/articleView?id=sf.flow_distribute_context_data_safety_system_context.htm&type=5"}],"name":"UnsafeRunningContext","supportedTypes":["AutoLaunchedFlow","CustomEvent","InvocableProcess","Orchestrator","EvaluationFlow","ActionCadenceAutolaunchedFlow","Flow","IndividualObjectLinkingFlow","LoginFlow","RoutingFlow","Appointments","ActionCadenceStepFlow","ContactRequestFlow","ContactRequestFlow","CustomerLifecycle","FieldServiceMobile","FieldServiceWeb","SurveyEnrich"],"label":"Unsafe Flow Running Context","description":"This flow is configured to run in System Mode without Sharing. This system context grants all running users the permission to view and edit all data in your org. Running a flow in System Mode without Sharing can lead to unsafe data access.","uri":"https://github.com/Lightning-Flow-Scanner/lightning-flow-scanner-core/tree/master/src/main/rules/UnsafeRunningContext.ts","isConfigurable":false,"autoFixable":false,"severity":"warning"},"ruleName":"UnsafeRunningContext","severity":"warning","occurs":false}]}

@k-capehart
Copy link
Member Author

Ok, I think I actually figured out the problem, but I'm unsure how to solve it. I hacked together a way to call the fix method from the cli and it actually gave me an error when attempting to run it.

Error (1): Invalid character in name

I did some searching and found that this can occur when there are special characters in the XML element name.

Through some trial and error I found the specific element that things were failing on. This is the culprit.

<displayField xsi:nil="true"/>
<object xsi:nil="true"/>

Removing these lines allows it to process correctly. As far as I can tell, this is a valid way to represent a null element in XML format, and similar lines are present in many flows of mine.

I think there has to be a way to parse it correctly in the Builder options, I just haven't been able to figure out what exactly it is.

@k-capehart
Copy link
Member Author

Hey @junners, were you able to check back on this?

@junners
Copy link
Member

junners commented Jan 14, 2025

Hey @k-capehart! I've not made updates over the holidays haha but will try and release a fix today / tomorrow. Should be an easy one

@k-capehart
Copy link
Member Author

Oh great! Yeah no rush, just crossed my mind to check back in.

Thanks so much!

@junners
Copy link
Member

junners commented Jan 14, 2025

Hey @k-capehart - I've created an undocumented command on lfs-sfdx. something temporary till I patch things up on lfs-vsce

It's super restrictive. you can use sf flow fix --rules UnusedVariable UnconnectedElement --dir <a directory> or sf flow fix --rules UnusedVariable UnconnectedElement --file file1 file2 file3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants