Skip to main content

#CRM Analytics7 debatiendo

Hi,  

Does anyone know how to get around this error message, to complete the challenge 

Quick Start: CRM Analytics > Apply Conditional Formatting and Annotate a Saved Dashboard View

I did anotate but I cannot share it and I get this error message by  

Step not yet complete in Explore with CRM Analytics

"We can't find an annotated Chatter post on the dashboard. Be sure to follow the instructions for creating an annotated post on Chatter."

Thanks in advance for your help !

Error parsing CSS component value, unexpected EOF

 

 

 

#Trailhead Challenges  #CRM Analytics

2 respuestas
  1. 5 sept, 17:28

    @Murielle Majesté

    Good news - that 'unexpected EOF' message is not a problem with your dashboard. It is a known html2canvas CSS-parsing error, thrown when CRM Analytics tries to snapshot your annotated chart into the image it posts to Chatter. It usually fires because a browser extension (ad blocker, dark mode, Grammarly, etc.) injects CSS the snapshot cannot parse, so the annotated post is never created - which is exactly why the grader says it cannot find the annotated Chatter post. 

     

    Fix: 

    1. Open your Trailhead Playground in a clean Chrome window - Incognito, or with every extension disabled. 

    2. Re-open the dashboard, annotate the chart, and use Post to Feed to share it to Chatter. With nothing injecting CSS the snapshot renders and the post lands on the dashboard Chatter feed. 

    3. Re-run Check Challenge. 

     

    if this helps, please mark it as the Best Answer so it helps the next person - thanks 🙂

0/9000

Hi everyone,

I have a requirement to implement Row-Level Security (RLS) in a CRM Analytics (CRMA) dashboard for three different types of users: Branch Users, Corporate Users, and Legal Users.

The expected access is:

  1. Branch Users – should only be able to see data belonging to their respective branch. 
  2. Corporate Users – should be able to see data across all branches. 
  3. Legal Users – should only be able to see the records/data relevant to Legal. 

The same CRMA dashboard will be used by all three types of users, but the data displayed should be restricted based on the logged-in user's access. 

I'm considering using

Security Predicates for this requirement, potentially using Salesforce User attributes such as User Type and Branch.

My questions are:

  •  What would be the recommended approach for implementing this type of RLS in CRMA? 
  •  Should this be handled using Security Predicates, Sharing Inheritance, or a combination of both? 
  •  What is the recommended way to map the Salesforce User attributes (User Type, Branch, etc.) to the CRMA dataset? 
  •  Can a single Security Predicate handle all three scenarios? 
  •  Are there any best practices or considerations when implementing this for a production dashboard? 

If anyone has implemented a similar Branch / Corporate / Legal user access model in CRMA, I would really appreciate an example or guidance on the architecture and Security Predicate approach.

Thanks! 

 

#CRM Analytics

2 respuestas
  1. 31 ago, 19:45

    Hi @SIVA Kishore

     

     

    There's no native "blocking modal" widget in CRMA dashboards

    nothing in the standard widget palette (chart, list, toggle, date, range, number, text) creates a popup that intercepts interaction on load. What CRMA does give you natively are selection based filter widgets date, list, range, and toggle that let users filter results, and these can trigger selection bindings that dynamically change other query parameters, plus the ability to set initial filter selections that are applied when the dashboard first opens. 

      

    None of that adds up to a true gate, though it pre selects or lets users filter, but users can still interact with every widget before making a choice, which breaks your requirement #6.  

     

    What actually gets you the behavior you described: a custom LWC wrapper, not a dashboard internal component. 

    The key distinction is where the LWC lives. Don't embed it as a widget inside the dashboard canvas embed the dashboard inside

    an LWC on the Lightning App Page instead:  

     

    1. Build an LWC for the App Page that, on connectedCallback, shows a modal (SLDS modal or the native lightning-modal overlay) with a Customer Name picklist/combobox.
    2. Don't render the <lightning-analytics-dashboard> component at all until the user submits a selection - conditionally render it with if:true. This is what actually satisfies "no interaction before selection," since the dashboard genuinely isn't mounted yet, not just visually hidden.
    3. On submit, close the modal and mount the dashboard, passing the chosen customer in as a filter - either via the dashboard component's filter/selection input, or via the query-string filter/selection syntax CRMA supports for embedded dashboards.
    4. This pattern (custom LWC talking to a CRMA dashboard, Apex backed data lookups feeding the picklist) is a standard, well documented approach embedding LWCs into or alongside CRMA dashboards is explicitly supported.

    If you want to avoid a custom component entirely, the closest declarative approximation is: a required Global Filter Panel widget with no default selection, paired with faceting so every other widget shows an empty/prompt state until a Customer is chosen. It's a real CRMA pattern and much less build effort, but it only discourages

    interaction with unfiltered widgets it doesn't block it, so it won't fully satisfy your requirement #6 as written. Worth confirming with whoever owns this requirement whether that softer UX is actually acceptable before committing to the LWC build, since it's a meaningfully smaller lift. 

      

    One thing to flag before you build either way: confirm whether this dashboard is embedded (Lightning App Page / Experience Cloud) or accessed directly in the Analytics Studio tab the LWC wrapper approach only works for the embedded case, since you need a page to host the wrapper component around the dashboard.

0/9000

Hi everyone,

I have a requirement in a CRM Analytics (CRMA) dashboard where, when the dashboard is opened, I want to display a pop-up/modal asking the user to select a Customer Name.

The expected behavior is:

  1.  User opens the CRMA dashboard. 
  2.  A pop-up/modal appears automatically on the initial load. 
  3.  The user selects a Customer Name from a slicer/filter within the pop-up. 
  4.  Once the customer is selected, the pop-up should close automatically. 
  5.  The dashboard widgets should then display only the information related to the selected customer. 
  6.  Ideally, the user should not be able to interact with the dashboard widgets before selecting a customer. 

Is this possible using the standard CRMA dashboard functionality?

If yes, what would be the recommended approach to implement this? For example, can this be achieved using dashboard interactions, bindings, faceting, a custom Lightning Web Component, or another CRMA feature?

If anyone has implemented a similar initial-load customer selection pop-up/modal in CRMA, I would really appreciate it if you could share the approach or any examples/resources.

Thanks! 

 

#CRM Analytics

1 respuesta
  1. 31 ago, 19:40

    Hi Siva, one thing up front: standard CRMA has no true modal pop-up that fires automatically on dashboard load. So you achieve this by gating the dashboard behind a selection rather than an actual modal. Two clean ways: 

     

    1. Selection page (closest to a pop-up). Make page 1 a simple Select a Customer page with just a list or dropdown widget and a heading, and put all your charts on page 2. Add a link or button widget that navigates to page 2. The user lands on the picker first, chooses a customer, then moves to the data. This gives the choose-first, cannot-touch-the-widgets-yet behavior you want. 

     

    2. Gate on a single page. Keep everything on one page but bind every data widget to the customer list selection, and build the steps so they return no rows until a customer is chosen. Add a text widget saying Please select a customer so the empty state is clear. 

     

    Gotcha to avoid: do not rely on Require Selection to leave it blank. If a query requires a selection and you set no initial selection, CRMA auto-selects the first value on open, so it will not sit empty waiting for the user. That is why the selection-page or bound-widget approach is more reliable for a true choose-first experience. 

     

    if this helps, please mark it as the Best Answer so it helps the next person, thanks 🙂

0/9000

I have several dashboards based on region. I would like to combine them to be one dashboard with the ability to filter by region, object, etc. 

 

I haven't found a way to do this as of yet. I'm in analtyics studio and I'm not sure how to connect the dashboards. 

 

Help please. 

 

#CRM Analytics  #Tableau  #Dataset Recipe

1 respuesta
  1. 19 ago, 14:49

    In CRM Analytics you do not actually 'connect' separate dashboards, the pattern is to build ONE dashboard and use Global Filters to slice it by region/object/etc. How you get there depends on whether your regional dashboards sit on the same dataset or different ones: 

     

    If they are all on the same dataset (the easy case): 

    Create a single new dashboard on that dataset, add the charts/widgets you want, then add Global Filters (the filter panel in the dashboard editor) on Region, Object, and any other fields. Widgets built on the same dataset facet together automatically, so one Region selection filters everything at once. That gives you the 'one global dashboard, filter by region' behaviour you are describing. 

     

    If each region is a separate dataset: 

    You first need them in one dataset, otherwise a single Region filter has nothing common to filter on. Use a Recipe (Data Prep) to UNION the regional datasets into one combined dataset, and if a 'Region' column is not already on each, add it in the recipe so every row is tagged with its region. Then build your single dashboard on that combined dataset and add the Global Filters as above. Since you tagged Dataset Recipe, this is likely your path. 

     

    A couple of pointers: 

    - Global Filters live in the dashboard's filter panel and apply to every widget bound to that dataset, pin them so they persist. 

    - If you keep widgets from more than one dataset in the same dashboard they will not auto-facet, you connect them with bindings, or cleaner, unify into one dataset via the recipe so faceting just works. 

     

    Net: do not try to link the existing dashboards, rebuild as one dashboard on a single (recipe-combined, if needed) dataset, then Global Filters give you the region/object slicing. 

     

    If this helps, please mark it as the Best Answer so it helps the next person. Thanks :)

0/9000

It does not seem to be possible to take the minimum or maximum of a date using the aggregation feature of a recipe.

 

Second question. Filtered aggregates are also not possible it would appear. If I want to know the count of all activities, the count of all emails, and the count of all calls (with email and call being the two options for activity type), it doesn't appear that a recipe can do all three together. It can either do the total, or separate emails and calls by adding a column group, but not all three. (I have found a workaround by creating a transform to add the two together but that isn't the point here)

 

Am I missing something or are these really not possible? Basic features of SQL.

3 respuestas
0/9000

No native way to export the Columns tab from a Recipe Dataset Output node and you WANT THE SOURCE? Here's a console script that does it.

 

 

This downlaods a csv with the node name as the file name, all the columns (Name,API Name, Type,

and Source!!!) and all field rows.  

 

I'm a Business/Data Systems Analyst,

not

a developer. I hit a wall building a field-level data dictionary across too many CRMA recipes: there's no export button on the Recipe Output node's Columns tab, and the old trick of highlighting the table, finding the sweet spot to drag it into Excel doesn't seem to work anymore (and was frustrating and time consuming anyway even if it does). 

 

Querying the dataset via Workbench or the API gets you Name, API Name, and Type easily. It does not get you Source

(which Salesforce object a column originated from), at least not without manually tracing the recipe's own JSON node graph, join by join. If you actually need that Source column the way it displays on screen, querying alone won't get you there quickly. This makes it difficult to audit for duplicate fields in more complex recipes with loops. I mean, going to the output node and searching by field name and working backwards one by one .... UGH.  

 

So I used Claude AI to build a browser console script instead, worked through screenshot by screenshot, since I don't code. A few things that helped it actually go somewhere if anyone else wants to use AI to solve similar problems: 

 

  • Describing what I used to be able to do, not what I thought the tool should be called: "You could drag and drop it all into Excel if all highlighted and you you found the exact “sweet spot” on the screen to do so, but that must have been prevented or I can’t find the sweet spot anymore."
  • Sending screenshots of DevTools and error messages instead of typing out what I thought they meant
  • Saying flatly when something didn't work or I didn't understand a step, no guessing
  • Giving real scale before automating anything further: "We are at about XXX datasets across XX recipes and that is likely to grow", that's what got me steered away from clicking through the UI programmatically and toward a safer read-only approach
  • Asking directly: "Are there any security risks to doing this?" before trusting it enough to run, test, refine, and share

End result:

paste into DevTools Console while on a Recipe Output node's Columns tab, no coding needed. It reads the visible table and downloads a CSV named after the output node. Read-only, doesn't touch the org, doesn't call any API, just reads what's already rendered on your screen. Still manual, but much quicker.  

 

You do need to be on the Output Node with the Columns Preview selected (and preview loaded). 

 

No native way to export the Columns tab from a Recipe Dataset Output node and you WANT THE SOURCE? Here's a console script that does it.

 

 

 

#CRMAnalytics #Data Management #IdeaExchange

2 comentarios
  1. 11 jul, 9:03

    @Melissa Loudon Please follow the below steps:

     

    •  Open your CRM Analytics Recipe.
    •  Navigate to the Dataset Output node. 
    •  Open the Columns tab. 
    •  Wait until the preview has fully loaded. 
    •  Press F12 (Developer Tools). 
    •  Open the Console tab. 
    •  Paste the script below. 
    •  Press Enter
    •  A CSV file will automatically download.

    Below is the script: 

     

    (() => { 

        // Get output node name 

        let nodeName = "Recipe_Output"; 

     

        const title = 

            document.querySelector('[data-testid="recipe-node-title"]') || 

            document.querySelector('.recipe-node-title') || 

            document.querySelector('h1,h2,h3'); 

     

        if (title) { 

            nodeName = title.textContent.trim().replace(/[\\/:*?"<>|]/g, "_"); 

        } 

     

        // Find table 

        const table = document.querySelector("table"); 

     

        if (!table) { 

            alert("Columns table not found. Make sure the Output Node > Columns tab is open and fully loaded."); 

            return; 

        } 

     

        const rows = [...table.querySelectorAll("tr")]; 

     

        const csv = rows.map(row => { 

            return [...row.querySelectorAll("th,td")] 

                .map(cell => 

                    `"${cell.innerText.replace(/"/g, '""').trim()}"` 

                ) 

                .join(","); 

        }).join("\n"); 

     

        const blob = new Blob([csv], { 

            type: "text/csv;charset=utf-8;" 

        }); 

     

        const link = document.createElement("a"); 

        link.href = URL.createObjectURL(blob); 

        link.download = `${nodeName}.csv`; 

        document.body.appendChild(link); 

        link.click(); 

        document.body.removeChild(link); 

     

        console.log(`Downloaded ${nodeName}.csv`); 

    })();

0/9000

Are there tools available to help create a data dictionary from CRM Analytics. I am able to find plenty of resources on data dictionary tools for Salesforce proper objects, but nothing for CRM Analytics specifically. Any guidance would be greatly appreciated!

4 respuestas
  1. 25 oct 2023, 11:42

    Dear @Melissa Loudon

     

    I haven't hear about a dictionary.

    I did do a project where we used the Mohans Plugin to extract a lot data from the CRMA solution.

    It does require some installing etc. and then pulling out CRMA data. 

    I cannot recall if it can be automated to have a representative up2date dictionary.

    Nonetheless, it could get you a long way.

     

    Here is how to come about it.

    https://www.salesforceblogger.com/2020/11/17/mohans-sfdx-plugin-for-analytics/

     

    (and following for interst)

0/9000

@Bharadwaj Kopparthi

 

I need to convert the text boxes in my dashboards to French.  I found only 1 training video by Bharadwaj on this topic. Are there any additional help on this topic?

#CRM Analytics

2 respuestas
  1. 18 jun, 14:47

    Hi @krishna vankayala,

     

    If you're specifically using CRM Analytics, I don't think text boxes automatically respect the user's Salesforce language setting. 

     

    One approach is to store the translated labels in a dataset and display them dynamically based on a language value, instead of using static text boxes.  

    It takes a bit more setup, but it's easier to maintain than creating separate dashboards for each language. 

     

    I'd also be interested if anyone has implemented this using the user's locale automatically rather than a manual language selection.

0/9000

With the rollout of SLDS 2 and Salesforce Cosmos theme, the SFDC UI has received a nice visual refresh. We would like to keep the CRM Analytics experience very close to the SFDC experience with some branding customization and want to know specifically if there are any enhancements in the pipeline for visual features seen in the Cosmos theme and other capabilities such as:

  • Font changes
  • Support for circular (not squarcle) buttons
  • Animated buttons/toggles upon hover
  • Custom theme set support (custom color presets similar the current Color Safe, Bluegrass, Watermelon, etc.)
3 respuestas
  1. 13 abr, 13:27

    Hi @Bond Tran

    ,  

    There’s no official Salesforce commitment  that CRM Analytics will get extra theming controls like custom fonts, circular buttons, hover animations, or custom preset theme packs. What is confirmed is that Salesforce Cosmos/SLDS 2 brings broader Lightning Experience branding options, but availability varies by product, and Salesforce says some products built on other platforms may continue using their existing UI.

0/9000

🔔【重要】Trailhead Academy クラスの提供終了と最終日程のお知らせ

 

Salesforce認定講師による以下の2コースにつきまして、記載の日程をもちまして提供を終了させていただくことになりました。

長きにわたりご愛顧いただき、心より感謝申し上げます。

ご受講を検討中のお客様は、ぜひこの最終期限までのご受講をお願いいたします。

 

 

@* カスタマーサクセス日本 *

 

#CRM Analytics

0/9000