Tableau CRM Packaging for ISVs

Three women sit at a table working on laptops and laughing.

Tableau CRM (TCRM) is Salesforce Analytics, however, it is much more than just dashboards and charts. TCRM (formerly Einstein Analytics) equips and empowers Salesforce CRM users with actionable insights and AI-driven analytics right in the process.

We’re going to walk through how AppExchange partners can build, package, and distribute TCRM apps and solutions via a specific packaging scenario with best practices for embedded and regular users. To get the most out of this content, having a basic understanding of the following will help tremendously:

  • How to create an AppExchange package
  • Git or some other source control
  • VSCode
  • SalesforceDX
  • How to create TCRM apps and dashboards

While we won’t cover building the app using the product, you can find training and resources covering those details listed at the end of this blog post.

Getting Started

You’re a big fan of Analytics and have built a stellar app you know customers will love. You already have a package on AppExchange or are a new partner. You‘ve created this dashboard, got your data from all the right sources, and are excited about it. But when you consider packaging the solution, you’re not sure the best way to go about it.

Before we start getting deep into distribution and packaging, it’s important to understand the licenses that are available to you. This understanding will help you formulate your deployment and packaging strategy.

ISVForce partners

Subscribers need to have Growth or plus licenses. They typically purchase these from direct account executives. AppExchange packages can be deployed in those organizations.

OEM partners

Three TCRM SKUs are available:

  • Tableau CRM Embedded for ISVs — A no-additional-cost license that comes with 25M data rows org-wide, no analytics studio access, and connectors. Users can view the dashboards but cannot create new dashboards. This gives read-only access to the users.
  • Tableau CRM Growth for ISVs -Platform License that comes with 100M data rows org-wide and two external connectors. Users have access to Analytics Studio.
  • Tableau CRM Plus for ISVs — Platform license that Comes with 1B data rows org-wide and five external connectors. Users have access to Analytics Studio.

An embedded user has the following permissions assigned:

  • Permission Set License Assignment: Analytics View Only Embedded App
  • Permission Set Assignment: Analytics View Only User

A growth or plus user has the following permissions assigned:

  • Permission Set License Assignment: Analytics Platform
  • Permission Set Assignment : Tableau CRM Platform User/Tableau CRM Admin User/ Tableau CRM Plus User

Packaging Fundamentals to Always Keep in Mind

The following four packaging fundamentals are critical to know and employ in your efforts.

  1. When you build a package, you’ll find a lot of analytics components that are packageable such as Analytics apps, Lenses, Dataset, Dashboards etc. However, the best and the only recommended way to distribute a package is by choosing the “Analytics Template” component.
  2. Any TCRM App can be converted into an “Analytics Template” by clicking on the Create template action button.
  3. If there are component dependencies across multiple apps, take advantage of Template Dependencies.
  4. Never package “Shared App” with your package. It might lead to multiple issues.

Packaging a TCRM Solution

Now we will begin our scenario walkthrough.

Template Creation

  1. Click Analytics Studio.

2. On the Analytics home screen, scroll down, click Templates on the menu bar. In this screen you would see the list of templates if it exists in the org.

3. Select your app from the Apps menu. In our example, App “BlogApp” contains a dashboard “OpptyLeadSource” and a dataset called “Opportunity”

4. Click on the create button on the upper right corner and select “Template”

5. A Template gets created. Check under the template tab

Create the AppExchange Package

  1. Once the template is created, you can go to packaging and select the Analytics template component. You will find your template in the list. Just select the AnalyticsTemplate.

2. Create the package and upload it.

Install the Package in the Subscriber Org

  1. Get the package URL from the dev org and install in the subscriber’s org.
  2. Package installs successfully.
  3. Subscriber will see the template under the Analytics Template section.
  4. Subscriber selects the “BlogApp” template that you packaged and installed.
  5. Create an app named “SubscriberApp” from it.

6. Once the app is created, subscriber admin can drag the dashboard on the lightning page and see the dashboard. In this example, in the subscriber’s org, dashboard OpptyLeadSource is placed on the Sales home page.

7. Login as a user with Analytics permission set. User can see the dashboard on the home page.

8. Login as an embedded user with read only permissions. Embedded user will not be able to see the dashboard.

AppExchange Package for Embedded User

As mentioned above, an embedded user has the following permissions:

  • Permission set license Assignment: Analytics View Only Embedded App
  • Permission Set Assignment: Analytics View Only User

An embedded user cannot see the regular dashboard without making the template available to them.

  1. Setup VisualStudio Code for Salesforce as described in this blog : ​​ https://www.apexhours.com/how-to-setup-visual-studio-code-for-salesforce/
  2. Make sure that in Step 6 in the blog on Step 1, you retrieve “WaveTemplateBundle” in the package.xml as shown below.

3. Once you have downloaded the code, open the template folder.

4. Under the waveTemplates folder, find your template. In this example, under “BlogDemo” folder, create a file “auto-install.json” manually.

5. Put the following code in auto-install.json

{
“hooks”: [
{
“type”: “PackageInstall”,
“requestName”: “Installing/Upgrading BlogDemo”
}
],
“configuration”: {
“appConfiguration”: {
“autoShareWithLicensedUsers”: true,
“autoShareWithOriginator”: true,
“deleteAppOnConstructionFailure”: true,
“values”: {}
}
}
}

6. Find template-info.json file

7. Update templateType to “embeddedapp”

8. Update autoInstallDefinition to “auto-install.json” as shown here

Save the file

  1. Deploy source to org via sfdx SFDX: Deploy Source to Org
  2. Create the AppExchange Package with the updated template
  3. Login to the dev org and select Setup-> Package Manager

Test the Embedded Package in the Subscriber’s Org

  1. Install the AppExchange package in the subscriber’s org
  2. Go to setup- auto-installed apps
  1. You will see your updated App “BlogApp” in the auto-installed app list.
  2. Make sure that the app is installed successfully.
  3. Launch Sales app from the App Launcher.
  4. Edit Page.
  5. Drag the Tableau CRM Component on the page. Select the OpptyLeadSource dashboard.
  1. Save the page.
  2. Login as a regular user with the correct permissions assigned. See the dashboard on the home page.
  3. Login as the embedded only user. See the dashboard on the home page.

Notes

  • Regular users can see both regular and embedded apps. Embedded users can only see the embedded apps.
  • Embedded users do not have access to Analytics Studio. In a subscriber’s org where you do not have growth and/or plus license, an app cannot be created from the template in the installed package since there is no studio access. Auto-installed Apps from setup is a tool that creates the app from the template. Auto-install.json file runs automatically after the AppExchange package is installed.
  • You can make the template interactive by adding scripts to app-to-template-rules.json and other template files.
  • You can create a 2GP package instead of the classic package as shown here.

Additional Resources to Continue Your Learning

  1. Tableau CRM Training
  2. External: TCRM Innovation Day Recording
  3. External: Einstein Discovery Innovation Day Recording
  4. TCRM Advanced Innovation Days Recording
  5. Tableau CRM Template Development Guide
  6. 1GP AppExchange Packaging
  7. Second Generation Managed Package

I want to thank my colleague Jeremy Hay Draude for his constant support, review, and invaluable feedback. What did you think of this walkthrough? Feel free to reach out to us on Twitter with feedback, and stay tuned for more blog posts on ISV Packaging in the future. Happy Coding!

--

--