Pages

Saturday, July 17, 2021

Tableau CRM: Using Multi Value (2)

In the previous blog, the solution using dataflow (by adding isMultiValue and multiValueSeparator) only works if the multivalue field is originated from Salesforce as picklist (multi-select), but not for a field created by augment from parent to child object.

If you need to do the same in the scenario of augmenting from parent to child object, you need to use the mv_to_string() function, and please note this feature is still in beta (as of Summer 21 release), and there is a statement "Indexing multivalue fields can slow down dataflows", make sure you test your dataflow properly in a sandbox before turning on this feature.

ComputeExpression node does not support multi-value field, so this also means that we cannot use this feature in dataflow, but only in the dashboard.




Opportunity Text is the result of the mv_to_string('Opportunity.Name') added in the Table widget, while we maintain to use 'Opportunity.Name' field in the list or filter widget.

"query": "q = load \"Acct_Opty\";\nq = foreach q generate
mv_to_string('Opportunity.Name') as 'Opportunity Text',
'Opportunity.Name' as 'Opportunity.Name','Branch_Multi' as 'Branch_Multi',
'Branch__c' as 'Branch__c';\n\nq = order q by 'Name' asc;\nq = limit q 1000;",



Reference:


Friday, July 16, 2021

Tableau CRM: Using Multi Value (1)

We discussed Multi-Select Value to Text two years ago. To get a field with multi-value:

  • source field in SFDC is picklist (multi select)
  • use augment node in dataflow, where child object as the right source

In this blog, we have another use scenario of using multi-select values related to the Filter/List and Table widget. This blog is only applicable for multivalue fields originated from Salesforce as picklist (multi-select).

Using multi-value field in a Filter or List widget
It is great to use a multi-value field as a filter or list widget, it will show you unique values of each, instead of combined the values with a delimiter.

multivalue in Filter

multivalue in List

Using multi-value field in Table widget
However, it does not looks good when you add that field in a table, it will only show you the 1st values, instead of all values for that field.

select Singapore, but show Indonesia, because Indonesia is the 1st value


The need, to show all values in the table, however, the filter only shows one unique value. 


Multi-value field limitation
We cannot use the multivalue field in the computeExpression node, so we cannot "clone" the field.


Solution use Dataflow
1. In sfdcDigest node, convert the field not as multivalue by adding "isMultiValue": false

2. In the computeExpression node, clone the text field (as per 1), so now we have a cloned multivalue field in the non-multivalue format.

3. Convert the clone field back as a multivalue field. Download the JSON file, edit the file and add with below parameters in the computeExpression node
"isMultiValue": true,
"multiValueSeparator": ";"

4. Upload back the JSON file updated

  • Branch_Multi is the new field created from computeExpression which now is a multivalue field.
  • Branch__c is the original field from sfdcDigest, where we "force" this as a non-multivalue field in sfdcDigest node.


Here is the result

select Singapore from List/Filter, but the table shows all values


Reference:



Thursday, July 15, 2021

Tableau CRM: Broadcast and Facet across dataset

Tableau CRM offers dashboard creators to use more than 1 dataset in a dashboard, such as the Parent and Child dataset. Then we can link the dataset with a key using Connect Data Source. Selecting a chart or list view value will filter the other dataset too.

Let's see how this works. For this blog, I will just simply use the Account and Opportunity objects.

Account dataset
- Id
- Name

Opportunity dataset
- Id
- Account Id
- Name

Then, we connect Account.Id with Opportunity.AccountId in the dashboard using Connected Data Source.

1. Simply add Account Name and Opportunity Name only in the chart and list view

Clicking Account value does not filter Opportunity - FAIL

Clicking Opportunity value does not filter Account  - FAIL


2. Add (Account Name) and (Opportunity Name, Account ID) in the chart

Clicking Account value does not filter Opportunity - FAIL

Clicking Opportunity value filter Account - SUCCESS


3. Add (Account Name, Id) and (Opportunity Name, Account ID) in the chart

Clicking Account value filter Opportunity - SUCCESS

Clicking Opportunity value filter Account - SUCCESS


Lesson learned
We need the key use to link added to the chart of broadcast, otherwise, it will not facet the selected value as a filter to the other connected dataset.


Using the setup from scenario (3), let us test further by selecting Account Name and Opportunity Name from the List widget.

Selecting Account list does not filter Opportunity - FAIL

Selecting Opportunity list does not filter Account - FAIL


4. Keep all set up as (3), then add Account ID to List widget for Opportunity Name

Selecting Account list does not filter Opportunity - FAIL

Selecting Opportunity list does not filter Account - SUCCESS

Lesson learned
Same as the previous lesson learned, we need to have the key in the widget that broadcast value for filtering. 


5. Adding Id in Account list view 

This will succeed as we have the key in the broadcaster widget.



For aesthetic reasons, we do not want to show ID in the list widget, we can remove it from the display, but not remove it from the widget, with this way, selecting a Name will still broadcast the key (in this case ID), select the widget, select "Customize display and format" then remove the[ ID].



Now, we don't have the "ugly" ID anymore appear as the list of values 😊







Wednesday, July 7, 2021

Salesforce: Default Opportunity Team

In the previous post, we discussed Default Account Team, this post would be on Default Opportunity Team. Opportunity Team defines additional users that are involved when working in an Opportunity, with or without giving extra access to the team members to that Opportunity.

Opportunity Team is pretty similar to Account Team, but there is a difference in some areas, let's see as below.


What the same?

1. Both are defined in the user detail

2. Both can add or not add extra access to users added with a team role as team members

3. Both have a list of Team Roles and share the same values

4. Both have a Default team for a user

5. Both can be set up automatically add the default team to accounts or open opportunities when the user own Account or Opportunity

6. Both can add users as the default team on existing accounts or open opportunities

7. Both can manually Add Default Team from the Account Team or Opportunity Team related list

8. One user can be added only once to the Account team and to the Opportunity team


What difference?

1. In the Account team, the user can give access to Account, Contact, Opportunity, and Case, while in the Opportunity team, only can give access to the Opportunity.

Default Account Team


Default Opportunity Team


2. You can add account team members as opportunity teams from Opportunity Team related list.

Manual add user to Account Team


Manual add user to Opportunity Team



Tuesday, July 6, 2021

Salesforce: Default Account Team

We have discussed Account Team and Opportunity Team quite a lot in this blog simplysfdc.com, here is the summary: 

  • Account Team Report: multiple report results by selecting different options in Show Me using Account with Account Teams report type, also the difference with Account report type.

So what is Account Team in short? Account Team defines additional users that are involved in an Account, in addition to the Account Owner. The additional users added as the Account Team can have extra access permission or without extra permission on the related Account, Contact, Opportunity, and Case

In this blog, we will discuss using Default Account Team, the keyword here is Default. One user can only have one default account team (and one default opportunity team). The default account team is defined at the user detail, which should be the Account Owner. This setting can be performed by the Account owner or users above the owner in the role hierarchy and having Read access on the account object.



Automatically add my default account team to accounts that I create or accounts that are transferred to me
Default Account Team can be set up to be automated, which means when the user owns an Account or Opportunity, the default team will be added automatically. To automate this, make sure "Automatically add my default account team to accounts that I create or accounts that are transferred to me" is selected. This setting applies to ALL users added as Account Team.

Similar to Account Team, you need to set access of Contact, Opportunity, Case access, and Team Role when adding each user into for Default Account Team.

Default Account Team


If the checkbox "Automatically add..." is not selected, the Account Team will only be added when the user clicks the "Add Default Team" button from the Account Team related list.

Manually add Account Team


Update account teams with these members
To add the new members added to the default team for all existing accounts owned by the user, select Update account teams with these members when adding the users. You also can add an existing user who has been added as Account Team by edit the user in the Account team and select Update the account teams of my existing accounts.



Automatically add my default account team to accounts that I create or accounts that are transferred to me -- apply to all users for an account owner.

Update account teams with these members -- apply only to selected users in the account team, this will only add users to the Account team. 

However, a user can be added to the Account Team only once, even with a different Team Role, so adding the same user to the Account Team will overwrite the existing user in the Account Team. The overwritten behavior applies to manually add the default Account Team from the "Add Default Team" button.



Reference:





Friday, June 25, 2021

Increase your Salesforce users Productivity with Quick Text

Say goodbye to copy and paste! Use quick text for common notes, phrases, and messages. Quick text is supported in email, chat, notes, Knowledge, and more!

Quick Text is something simple but pretty useful if your users, such as agents, support, or inside sales frequently send or reply to emails using a standard message. You can also enable folders for quick text, so the quick text created can be shared within a team to use the same template. If folders are not enabled, the quick text will be just for personal usage.

Enable Quick Text

Go to the Setup menu, and search for Quick Text Settings, then enable it. Optionally, you can enable "Share and organize quick text in folders" to grant users access to the folder based on Users, Roles, and Public Groups (similar to the report folder). 



Once you enable group in quick text, you need to add the folder field into the Quick Text page layout.

Where can use Quick Text?


Quick Text in sending Email

Quick Text in New/Edit Task


Inbox
If you have the Inbox license, you can use Quick Text when composing a new email from Outlook, it called Text Shortcuts.




Reference:

Monday, June 14, 2021

3 Ways to Integrate NetSuite with Salesforce

3 Ways to Integrate NetSuite with Salesforce by Brian Newbold.

In our digital world, we can’t afford to spend time re-entering our Salesforce sales into a billable form in NetSuite. A swivel seat is excruciating both in time spent and accuracy errors. And when it’s time to automate, it seems like all suggestions start with “it’s an easy-to-use template” yet ultimately end up being custom-built solutions.

My company, like yours, is certainly a special snowflake – unique in how we process orders and report our sales and financial data. But aren’t snowflakes also nearly identical in their structure, form, and function? Surely when you look very closely you will see the many fine and unique details, but at the macro level, they’re pretty much just the same. Similarly, aren’t our business processes nearly alike at macro with a modicum of uniqueness? 

In the sense of integrating NetSuite with Salesforce, it seems our business needs across most companies fall into separate categories in about 3 different ways: 
  • First and most basic, where your processes fit the sample templates and have low volume. Everything pretty much just works out-of-the-box with the lowest-cost tier middleware
  • Second, where most of us fit, having a healthy volume of orders and reasonable depth of customizations. We’ve outgrown the templates and pushed the boundaries a bit 
  • Third and most complex, the large-enterprise ERP with a few thousand products and hundreds of thousands if not millions of customers. High volume and highly customized, where you’ve hired a team of purpose-driven integration engineers.

So now with a general idea to which category you belong, which tier of software should you choose? Well, that can be a bit confusing depending on whose advice you take. A wise man once told me that if you ask a plumber to fix your house, you’ll get a plumbing solution. Ask a roofer to fix the same house and he’ll fix it with… well, you get the point. 

When you reach out to an SI consultant, you will certainly get a systems integrator solution; but is it a fresh solution or the same old templated rollout? Plumbing and roofing haven’t changed much since 2006, but what about software solutions? Keep in mind the iterative progress your proposed solution will make in the coming years and strive to find a balance of features and longevity, as any solution is likely to be your solution for some time to come.

Enough with the cautionary tales and down to the suggestions.

Tier 1: Basic functionality, no customization
In this tier, my preferred go-to solutions are Zapier, Celigo, or Mulesoft and making use of built-in templates. This approach will perform the wire-up of NetSuite and Salesforce but will be nothing but the basics. The cost will be minimized but functionality will remain far from ideal. Growth is a little tough too and is sure to look closely at the transaction-based pricing structure and make sure it will continue to fit your growth plans.

Tier 2: Robust functionality, good customization.
In this tier, I would consider Celigo or Boomi with initial SI stand up, or Breadwinner with SI optional. Celigo and Boomi being many-to-many iPaaS solutions are phenomenal when you need to wire up an entire BizApps ecosystem. However, they come with hidden costs associated with the necessity to use a great systems integrator (SI) and a longer timeline than most expect. The NetSuite and Salesforce orchestration is generally the most complex wire-up of anything you’re connecting and will require diligence.

A bit of a hidden gem in the Tier 2 space is actually not an iPaaS, but rather a purpose-built NetSuite and Salesforce orchestration suite called Breadwinner. My favorite part of Breadwinner is that they’re constantly adding features and enhancing their product. Since it’s hosted on the AppExchange, it’s hosted from Salesforce itself. 

The clear advantage with Breadwinner comes in when you realize you’ve got all the NetSuite data stored and reportable alongside Salesforce. It’s a product you deploy, rather than a project you embark on. Definitely worth a nod as they’ve saved me a ton of time and have given a far more complete integration in their free trial, rather than the many-to-many packages deliver in their end product.


Tier 3: Custom functionality, all customization.
In this tier, expect the best fits to be Boomi, Talend, and the like with dedicated staff and definitely an initial SI standup. This is where the heavy hitters come in that can handle millions of transactions and complex transforms. By far the costliest solutions but sometimes the only ones that can get the job done. These are full-fledged ETL tools and if you’ve got the resources, these are for you. 

Boomi in my experience has been the easiest to set up initially, but I’ve pushed it and hit the upper limits of transactions. Talend’s strengths are in delivering great integrations in distributed node environments. A bit more programmatic than drag-and-drop, but well worth it when you’ve got those unique environments. 


Where does your business fit in?



Wednesday, June 2, 2021

Salesforce Lightning Performance

Salesforce Lightning promises a lightning experience, however, some users experience a much slower performance in Lightning compare to Classic. Let's discuss how Lightning different from Classic and what we can do to improve the performance.

In Salesforce Classic, web pages are generated by the server, and then they’re rendered on the client (your user’s desktop or mobile device). In Lightning Experience, pages are loaded on your user’s device progressively, component by component.


1. IdeaExchange
Vote for this idea Lightning Experience LEX - lightning speed please! - as of now 55,490 points, feel free to vote that idea, but as performance is a long journey, let us dig further what we can do to increase the performance


2. Geographical
Yes, Salesforce is on the cloud, meaning you can access Salesforce from anywhere with an internet connection. However, your Salesforce org. still located in an instance with physical hardware in the data centers.

You may see instance APxx, EUxx, NAxx, which represents the data center's physical location that hosts your Salesforce org. (Asia Pacific, Europe, and North America). You should choose the instance that near to you. However, if your users are scattered around the world, select the instance where most of your users are located. When the user is located nearer to the Salesforce data center, latency will be lower and have better performance.

Using the speed test provided by salesforce, we can check the latency between our computer to salesforce org. that we are accessing. Make sure you already log in to Salesforce before running the speed test, you just need to add speedtest.jsp after salesforce.com/, here is the syntax https://[domain].my.salesforce.com/speedtest.jsp


The latency is 107 ms for my computer in Singapore to access the AP4 instance

The latency is 276 ms for my computer in Singapore to access the NA89 instance


From the above screenshots accessing the AP4 instance is much faster for me compare to the org located in NA89.

For the fastest and most stable experience, Salesforce recommends:
  • An Octane score of 30,000 or greater
  • Network latency of 150 ms or less
  • Download speed of 3 Mbps or greater
  • At least 8 GB of RAM, with 3 GB available for Salesforce browser tabs

Minimum requirements are:
  • An Octane score of 20,000 or greater
  • Network latency of 200 ms or less
  • Download speed of 1 Mbps or greater
  • At least 5 GB of RAM, with 2 GB available for Salesforce browser tabs

3. Hardware
In the above screenshots, at the top left, the speed test measures the Octane score. An Octane score is a benchmark that measures a JavaScript engine's performance by running a series of automated tests. The higher the Octane score, the better your Lightning Experience performance will be. Make sure your device has enough RAM. 


4. Web Browser
Lightning Experience supports most browsers, but you may find that it runs faster in some browsers than others. For instance, Lightning Experience runs faster in Google Chrome than Safari. 

You can check the best performance by browser from Lightning Usage App and select the Browser menu under Usage.



5. Experienced Page Time (EPT) 
Experienced Page Time (EPT) is a performance metric Salesforce uses in Lightning to measure page load time. EPT measures how long it takes for a page to load into a state that a user can meaningfully interact with.

To see the page load time/EPT counter from a page, you just need to add ?eptVisible=1 at the end of the URL, for example, https://domain.lightning.force.com/lightning/page/home?eptVisible=1


Each page will have a different EPT depending on the components added to the page. 


6. Lightning Component Debug Mode
Follow this document to enable debug mode for certain users. Salesforce is slower for any user who has debug mode enabled. Don’t leave debug mode on permanently. Users who have debug mode enabled see a banner notification once a week while it’s enabled.

Once the debug mode is enabled for you, you will also see the page load time (similar to eptVisible=1) and network bandwidth. You can click on the network bandwidth numbers to clear the storage, otherwise, it will be kept adding.



7. Lightning Page Analysis 
You can analyze lightning a page performance by editing the page and click Analyze button, you will get the predicted page load time (in seconds) and performance breakdown by component.



Reference

Saturday, May 22, 2021

Salesforce Inbox

Almost 2 years ago, we shared how to check the Salesforce Inbox License, but we have not discussed the Salesforce Inbox itself.

Salesforce Inbox is a productivity tool to integrate Salesforce with emails, such as Outlook and Gmail. It is available with additional cost, except your company already purchased additional products that include Inbox. Inbox work in Core Salesforce platform which is Sales Cloud, Service Cloud, and Lightning Platform.

You can get Inbox license through the following products:

  • Sales Cloud Einstein
  • High Velocity Sales
  • Inbox

Additional productivity features offered by Inbox:

  • Calendar availability
  • Email tracking and Links tracking
  • Text shortcuts
  • Scheduling email delivery
  • Inbox mobile app

Here screenshots of the Salesforce panel in Outlook for users with and without Inbox

View/Open Email

Related tab is the default tab for both users with and without Inbox, from here, users able to log email open to Salesforce. Also will display information related to People, Accounts, Opportunities, and Case, based on the email address of sender and recipients.

Tasks tab is also available for both users with and without Inbox. This tab will show your Tasks in Salesforce.

Feed tab will show you tracked emails that have been opened and links have been clicked, this is only available for Inbox users.

Schedule tab will show all email has been scheduled for delivery, you can edit the send time and delete the email scheduled, the email itself is stored in the Draft folder. This only available for Inbox users.


Compose Email


Related tab, this is similar for users with and without Inbox, with the exception of "Log Email on Send" move to Compose tab for users who have Inbox permission, the default tab for Inbox users is Compose, instead of Related.

Tasks tab, this is similar to the tab when user view/open email.

Feed and Scheduled tab, both these tab are similar to the tabs when view email and only available for Inbox users.

Compose tab, this is the default tab for users with Inbox. There are a lot of productivity features from:

  • Manually add your availability slots with visibility of your Outlook calendar
  • Enable email for tracking and tracking links
  • Add text shortcut, this is useful when your user always send the same wording
  • Send Later, to make sure the email sent to appear on the recipients business hour


Inbox mobile app

Inbox also provides an additional mobile app that offers the same features as in the Outlook plugin, you can download it from App Store or Google Play Store.


Reference:






Saturday, April 24, 2021

Einstein Analytics: "Fix" data with Update transformation

Scenario: there are changes in the business, based on the revision given, we need to update data stored in an existing dataset or create a new dataset.




Solution: use dataflow, in this scenario, we are going to use the update node, which is not so commonly used in the dataflow.






JSON behind update node

 "updateMaster": {
    "action": "update",
    "parameters": {
      "left": "getMaster",
      "update_columns": {
        "ID": "ID",
        "Desc": "Note"
      },
      "right": "getRevision",
      "left_key": [
        "ID"
      ],
      "right_key": [
        "Old_ID"
      ]
    }
  }



For the register node:

  • Put the same Alias/Name to the master dataset if you want to overwrite it, the existing dashboard will work as per normal
  • Use different Alias/Name from the source master dataset if you want to create a new dataset, you need to edit the existing dashboard to use the new dataset created. 


Reference:



Page-level ad