Skip to main content

#Trailblazer Community Questions3,342 人正在讨论

To repair corrupt, damaged PST files. You can use Outlook PST Repair tool to recover all PST items such as notes, journals, tasks, calendar items, contacts, attachments, distribution lists of an Outlook user mailbox and etc with full accuracy. User can get more information, visit here:- http://www.recoverfilesdata.com/outlook-pst-repair.html

 
9 个回答
  1. 今天,05:00

    Outlook PST files can usually be repaired by first checking the file for corruption and then recovering the damaged mailbox data. For more serious corruption, a dedicated PST repair tool can be helpful. MailsDaddy Outlook PST Repair can scan corrupted PST files and recover emails, contacts, calendars, tasks, notes, and attachments. You can also preview the recovered data before saving it. It supports both ANSI and Unicode PST files and works without requiring Outlook to be installed.

0/9000

Hi, 

 

We just recieved the Power By Us grant to receive 10 free licenses in salesforce. Our team has never used salesforce and could use an onboarding and how to navigate the platform? Who should we contact? 

 

Thanks, 

Dona

3 个回答
0/9000

I am trying to proof out an idea around "Twinning" a value from the Catalog object or Category object to the Quote Line Item in Revenue Cloud.  

 

Context:  

Looking at using Catalogs to represent a store branch. On the Catalog we would have a custom field for that branch id. I need to travel/twin this value from the catalog to the quote line item for pricing.  

 

Use Case: 

A user would browse catalog, representing a specific branch where they would select a product and add it to the quote lines. On that quote line I want to be able to move the value of branch id from that catalog the product was selected from to the quote line for pricing.  

A different branch might not carry the product or have different pricing coming from SAP.  

 

I've reviewed concepts around context definition for product2 to quote line item that works without problem. How do we do something similar with this object or the category under the catalog? 

 

Any help here around setting up the context definitions to make this work would be appreciated. 

1 个回答
  1. 今天,04:49

     Hii , 

    You can approach this using an extended ProductDiscoveryContext and SalesTransactionContext. 

     

    Since the Branch ID is stored on Catalog, add a custom BranchId attribute to the Catalog node in ProductDiscoveryContext and map it to Catalog.BranchId__c.

    Then add the same BranchId attribute under SalesTransactionItem and map it through ProductDiscoveryContextMapping. 

     

    Finally, use QuoteEntitiesMapping to map SalesTransactionItem.BranchId to QuoteLineItem.BranchId__c. 

     

    The flow would be:

    Catalog.BranchId__c 

    → ProductDiscoveryContext.Catalog.BranchId 

    → SalesTransactionContext.SalesTransactionItem.BranchId 

    → QuoteLineItem.BranchId__c

    This allows the pricing procedure to use the branch ID associated with the catalog from which the product was selected.

    Make sure you are using extended context definitions, because the standard ProductDiscoveryContext and SalesTransactionContext can't be directly modified. 

     

     Salesforce's current twin-mapping documentation uses the same general pattern for moving values into Quote Line Items.

    Reference links:

    https://help.salesforce.com/s/articleView?id=005318021&language=en_US&type=1

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

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

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

0/9000

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

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

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

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

 

#Flow  #Trailhead  #Salesforce Admin

0/9000

I have 1 specific user that cannot see the calendar underneath service resource records. I've verified he has the field service resource license, FSL Mobile license, and FSL scheduling license, and the FSL ResourceCalendar VF079_ResourceCalendar permission set - this is exactly the same as other users who have no issues. However for him it just shows up with the Salesforce cloud icon and does not load. 

 

User Cannot See Calendar on Service Resource

 

 

1 个回答
  1. 今天,03:41
    Is this for their service resource, or all service resources? Is the SR being viewed active? Do they have any Service Territory Memberships at all? If so, are those set to start before the dates shown?
0/9000

Hello. I'll be using UTAM for our Automation Framework.     For the setup, I did install the following:      1. Install UTAM  npm i utam      2/ INSTALL WDIO  npm init wdio    3. INSTALL UTAM WDIO SERVICE  npm i wdio-utam-service --save-dev    4. INSTALL DOTENV  npm install dotenv    4. INSTALL SALESFORCE PAGE OBJECTS  npm i salesforce-pageobjects    5. ADD UTAM AS DEV-DEPENDENCY  npm add --dev utam    6. ADD BUILD to package.json      "test:ui:compile": "utam -c utam.config.js",      "test:ui:generate:login": "node scripts/generate-login-url.js",      8. Add UTAM in wdio.config.js  require('dotenv').config();  const { UtamWdioService } = require('wdio-utam-service');    services: [          [              UtamWdioService,              {                  implicitTimeout: 0,                  injectionConfigs: ['salesforce-pageobjects/ui-global-components.config.json'],              },          ],      ]    -----------  However, whenever I run the test, it's still giving me either a reference error of "utam is not defined" or the import modules (e.g. import {DesktopLayoutContainer} from '/salesforce-pageobjects/dist/navex/pageObjects/desktopLayoutContainer' cannot be found'    I tried uninstalling and installing the node_modules and tried everything in https://www.geeksforgeeks.org/node-js/how-to-resolve-a-cannot-find-module-error-using-node-js/ and     What am I missing?   

1 个回答
  1. 1月21日 11:40

    Hi @Aira Gutierrez

     

    The "UTAM not defined" and module import errors in 2026 typically stem from missing compiler generation steps or an incomplete link between your testing environment and the generated code.

    1. Resolve "UTAM is not defined"

    In 2026, the global utam object is not provided by default in standard Node.js scripts; it must be imported or generated via the compiler.

    • Ensure Compilation: Your wdio.config.js and tests depend on JavaScript files that are compiled from .utam.json files. Run the compiler command you added to your package.json:

    npm run test:ui:compile

     

    • Manual npx check: If the script fails, try running it directly to see specific error messages:

    npx utam -c utam.config.js

     

    • WDIO Global Hooks: Ensure your wdio.config.js properly exports the UtamWdioService. If you are trying to use utam in a test script, you must use the utam object injected by the service. In your test file, you typically don't import a global "utam"; you use the browser object or the injected loader: 

      javascript-

    // Instead of calling a global utam 

    const loader = browser.utam; // The service adds this to the browser object 

     

    2. Fix "Module not found" for Salesforce Page Objects

    The salesforce-pageobjects package contains JSON definitions that must be compiled into JavaScript before they can be imported. 

    • Correct Import Paths: In 2026, the standard package structure for salesforce-pageobjects does not always require the /dist/ path in the import string. Try importing from the package root: 

      javascript-

    // Use this 

    import { DesktopLayoutContainer } from 'salesforce-pageobjects/pageObjects/desktopLayoutContainer'; 

    // Instead of 

    import { DesktopLayoutContainer } from '/salesforce-pageobjects/dist/navex/...';

     

    • Update Package Version: Ensure you are using a version compatible with the current Salesforce release (Winter '26). Check for updates:

    npm install salesforce-pageobjects@latest --save-dev

     

    • Check utam.config.js: Ensure your configuration file explicitly lists salesforce-pageobjects in the injectionConfigs. An empty or missing configuration will prevent the generator from finding the Salesforce definitions. 

    3. Verify WebDriverIO Configuration

    If you recently upgraded to WebDriverIO v8 or v9 (standard in 2026), ensure your wdio.conf.js is using the newer object-based service definition. 

    • Service Configuration: Ensure the UtamWdioService is properly imported and added: 

      javascript-

    const { UtamWdioService } = require('wdio-utam-service'); 

    exports.config = { 

        // ... 

        services: [ 

            [UtamWdioService, { 

                implicitTimeout: 0, 

                injectionConfigs: ['salesforce-pageobjects/ui-global-components.config.json'] 

            }] 

        ], 

    };

     

    Final Troubleshooting Step: If imports still fail, check your node_modules folder manually to confirm the file path salesforce-pageobjects/pageObjects/desktopLayoutContainer.js exists. If only .json files exist there, the package was not compiled correctly.

0/9000

Environment:

Tableau Desktop, data source built from a self-joined extract (cloud data warehouse connection). 

Goal: Build a 5x5 risk matrix (Likelihood x Impact, both discrete integers 1-5) that always renders all 25 cells, even when a given filter selection (e.g. a category/group dimension) has records that don't cover all 25 combinations. (Like below)Scaffold table for dense 5x5 matrix collapses when filtering on a dimension not present in the scaffold

Setup:

  • Main data source: a single table, self-joined on a parent/child key relationship to attach parent-record fields to child rows.
  • To try to always render all 25 combinations, we added (and later removed, see below) a Custom SQL scaffold table generating all 25 combinations of two numeric fields (1-5 x 1-5), joined/related to the main table on those two fields.
  • Columns: Impact (numeric, discrete), Rows: Likelihood (numeric, discrete), Shape/Label driven by record-level fields (ID, a derived score).

Problem: When no filters are applied, all 25 cells render correctly (scaffold rows with no matching record show as empty cells, which is the desired behavior).

As soon as a filter is applied on any dimension NOT present in the scaffold table (e.g. a group/category field), the filter also removes the scaffold rows (since they have NULL for that dimension), collapsing the matrix back down to only the combinations that have actual records for that filter selection. 

 

What we tried:

  1. Blending instead of joining - not usable. The main data source contains a self-join (logical tables), and Tableau blocks logical-table sources from being used as a secondary blend source ("Data sources that contain logical tables cannot be used as secondary data sources for data blending").
  2. Fixed axis range on the two numeric fields - not usable since both fields are discrete, not continuous. Converting them to continuous was tested but rejected: with continuous axes, the shape marks overlap/stack instead of sitting centered per cell, which is unacceptable for this visual.
  3. Show Missing Values - not available. This option only appears on discrete date fields/bins, not on a plain discrete numeric/integer dimension pulled from a join.
  4. Bins with Show Missing Values - not attempted in full, flagged as a partial solution: bins only densify between the min and max value actually present after filtering, so a filtered selection with max value 4 would still be missing the "5" column. Would need to be paired with a way to force-anchor the endpoints.
  5. Null-tolerant filters - partially worked, then broke on a data quality issue. Rewrote each filter as ISNULL([ID]) OR <original condition>, and included Null in the relevant quick filter, so scaffold rows (no ID) always pass regardless of filter selection. This worked correctly for that filter in isolation. However, it broke down because a subset of real records in the source data have a genuinely NULL value on that same filter field (a data quality gap, not scaffold rows), so including "Null" in the filter also pulled in those orphan records on every filter selection - contaminating the matrix with records that don't belong to the selected group. Distinguishing scaffold rows from genuine null-value records would require either a dedicated is_scaffold flag column in the Custom SQL, or a calculated dimension like IF ISNULL([ID]) THEN "(Scaffold)" ELSEIF ISNULL([Group]) THEN "Unassigned" ELSE [Group] END used as the filter field instead of the raw dimension - not implemented yet.

Current state: Removed the Custom SQL scaffold table entirely, since none of the above approaches held up once real filters were applied. The matrix currently just shows fewer than 25 cells when filtered to selections with limited record coverage.

 

Question for the community: Is there a native Tableau way to force a discrete dimension pulled from a joined/related table to always show its full domain (1-5 on both axes) regardless of filters applied on unrelated dimensions, without a pipeline-level fix and without hitting the logical-table blending restriction? Specifically interested in:

  • Whether a table calculation or a different LOD structure can force-render the missing combinations
  • Whether there's a supported way to flag scaffold rows distinctly from genuine NULLs in a self-joined source, so null-tolerant filters don't accidentally include unrelated orphan data

Happy to share the exact Custom SQL and calculated field text (genericized) if useful. 

 

#Tableau Desktop & Web Authoring

2 个回答
  1. 10月2日 22:19

    If you relate the scaffold on matching fields then the filtering will carry over.  I would reinstate the 5x5 scaffold and relate it using a relationship of 1=1 - that way the grid is never filtered by anything from the main data - then perform the “join” for each cell in a calculation instead of the relationship, something like:

    SUM(IF [Likelihood] = [Likelihood scaffold]

    AND [Impact] = [Impact Scaffold] Then [Measure] END)

0/9000
2 个回答
  1. Eric Burté (DEVOTEAM) Forum Ambassador
    10月2日 22:06

    Hello @Priyanka Kote, +1, and in your trailblazer profile page (trailblazer.me) you can also filter your badges view by badges/supebadges/modules, but not per trailmixes. That can be explained because anyone can create a trailmix, and they can be modified after you take it.Hello , +1, and in your trailblazer profile page () you can also filter your badges view by badges/supebadges/modules, but not per trailmixes.Eric

0/9000

Hi Tableau Community! I am looking to create a License Matrix for my org. We are currently going through a merger and acquisition, and we want to do an inventory of both environments.  

I have data prepped through Tableau Prep. Attached Excel file is the dummy data of the Output. 

I have also attached the Tableau .twbx of a WIP file.

 

Below is the License Matrix we want to create (numbers are not accurate. This is just a mock of what we want to recreate).

How to Create a Matrix?

 

Much appreciate the help! Any tips would be great. Please note I can use Tableau Prep to massage the data if required. 

 

#Tableau Desktop & Web Authoring  #Flow  #Reports & Dashboards

4 个回答
  1. 10月2日 21:35

    I'm glad you're figuring this out. Your data and/or LOD calc needs to be cleaned up as it is not returning a single value per user (see image below). But to fix your user counts you need to change the CNT(User) on the License Matrix sheet to CNTD(User) to count distinct users.I'm glad you're figuring this out. Your data and/or LOD calc needs to be cleaned up as it is not returning a single value per user (see image below).

     

    image.png

     

     

0/9000

I complete all the steps, and my end result is working as expected (screenshot below), but it still doesn't pass me: "The 'Translate Survey Input' action is either missing, named incorrectly, or not positioned after the existing Get elements in the 'Translate Fitness Survey Input' flow. Review the 'Work with the Prompt Template in a Flow' scenario and related Help article for element configuration."

 

Agentblazer Innovator | Superbadge: Translate Text with a Prompt Template and Record-Triggered Flow

 

I've started from scratch a few times and used a new org, but no luck. Can anyone help? Am I missing something? 

 

Screenshots from my setup: 

 

Screenshot 2026-10-02 at 4.02.40 PM.png

 

 

Screenshot 2026-10-02 at 4.02.57 PM.png

 

 

Screenshot 2026-10-02 at 4.03.50 PM.png

 

 

 

 

 

 

#Trailhead Challenges  #AgentblazerInnovator  #Trailhead Superbadges  #Prompt Builder  #Flow

1 个回答
  1. Eric Burté (DEVOTEAM) Forum Ambassador
    10月2日 22:02

    Hello @Caroline Fearey concerning the action, check your API name; it is written " Label the action Translate Survey Input with API name Translate_Survey_Input using any description you’d like". Yours has an extra "Fitness" in it.Hello concerning the action, check your API name; it is writtenEric

0/9000