09 April 2018

Getting Badgy at a Trailhead Badge-a-thon

I had an incredible conversation at TrailheaDX ‘18 with Mark Korf. During that conversation, we discussed a really interesting problem - how do you report on badges at a Trailhead badge-a-thon?

At this point, you’re probably asking yourself, ‘I’ve heard of a hack-a-thon, but what’s a badge-a-thon?!’

A badge-a-thon is an event where you bring together trailblazers who compete to earn badges. Those people who win the badge-a-thon earn prizes like cool swag.

But the best part of the badge-a-thon is that it brings Trailblazers together using Trailhead, the fun way to learn Salesforce. Badge-a-thons introduce trailblazers to career opportunities by learning about Salesforce while keeping it fun and engaging.

We had one badge-a-thon last month where over ten thousand badges were earned!

What Mark wanted to do was host badge-a-thons at user groups and with schools to open career opportunities and enable trailblazers to do their jobs more effectively, all while they were having fun and winning swag.

In order to award the swag, Mark needed to track who earned the most badges. Enter Trail Tracker from the AppExchange.



Integrating the Trailhead Profile into an org for tracking badge activity

Trail Tracker is a free app on the AppExchange that enables you to guide your trailblazers through their Salesforce learning adventure on Trailhead. Assign, track, and report on badges earned by your team via pre-built reports and dashboards to take your Salesforce game to the next level.


Free AppExchange App

Trail Tracker was originally intended to enable the tracking of employees badges. Mark didn’t have employees, he had user groups and student trailblazers. This presented a different problem. How do you bring individuals together, many of whom were already in their own production orgs, for the purpose of tracking their badges during the event?

How to set up Trail Tracker for a Trailhead Badge-a-thon

1. Sign up for a Developer Edition org: https://developer.salesforce.com/signup

You need someplace to track the results. Developer Edition is a free org you can use to try out things. And while you can use an existing org like production, you’re going to be adding non-production users so it’s better to keep it separate.


Sign up page

2. Install Trail Tracker into the new org: https://sfdc.co/trailtracker

Just head to the AppExchange and install Trail Tracker in your newly provisioned Developer Edition Org. It’s a good idea to have the installation directions and the FAQ standing by in case you need it.


Trail Tracker installed in Developer Edition Org


3. Add badge-a-thon participants as new Chatter Free Users

Besides being free, Developer Edition also provides 5000 Chatter Free licenses which enables you to host a badge-a-thon up to that number easily.

5000 Chatter Free Licenses

Keep in mind, Chatter Free licenses don’t have any access to object data in an org in case you're concerned about those users accessing data that they shouldn't.


Create a new Chatter Free user for each badge-a-thon participant

4. Configure Trail Tracker

Configuring Trail Tracker may be a little challenging as many integrations tend to be. I highly recommend having the installation directions handy for this part.

When you configure Trail Tracker, make sure to select at least the Chatter Free license type as well as Standard.


Trailhead Setup


Configure the sync to run at the end of your event so you can do the final tally. The sync currently runs once per day.


Sync Settings

5. Have your new badge-a-thon users login for the first time

You want your newly minted Chatter Free users to login and change their password. They’ll need the password for the next part.

If the user has never logged into Trailhead before, they can just go directly to sign up and start earning badges. Since they’re logging in using the Chatter Free user you provisioned for them, their badges will automatically start flowing into your Developer Edition org every time Trail Tracker syncs. However, if your users already have Trailhead users established, you'll need to follow a slightly different path.

6. Link/merge Trailhead User Accounts for Existing Trailhead Users

This is conceptually the most interesting part of the entire solution.

The way Trailhead works, each user earns badges. But each user may use multiple identities to login to view their badges.

Some users already have a Trailhead login and don’t want to give up their badges. The good news is that they don’t have to. They can link or merge their accounts.

You can read more about linking and merging from the knowledge base article: https://force.desk.com/customer/en/portal/articles/2896953-trailhead-self-service-account-merge?b_id=13477.

The decision to link or merge comes down to one thing - is there already an existing Trailhead user with badges or is this a new identity that you’re going to use to login to your existing Trailhead user?

If it’s the latter, you’ll just need to link the two.

Have your users login to Trailhead using their normal login and go to settings.


Trailhead Settings


Under settings, have them go to the Salesforce Login section and click the ‘Connect or Merge’ button.


Connect or Merge


Login using your newly provisioned Chatter Free user from the badge-a-thon org. You’ll be prompted to login and allow access.


Allow access


Then you’ll be prompted to link accounts.

Link Account


Once linked, you can go back to Trailhead where you’ll see your newly linked login under the settings page for your existing Trailhead user and you're user is ready to go. Any badges they earn, regardless of whether they login using their existing identity or the newly created Chatter Free identity, will be added to the single Trailhead user that you can report on.


Salesforce Linked Accounts


However, if you have overachievers who have already signed up for Trailhead using their badge-a-thon Chatter Free users and started to earn badges, you’ll need to have them merge accounts with their existing user. Don’t worry, no badges will get lost in the process and they never lose access to their Trailhead user.

Have those users login to their existing Trailhead user account and go to settings. They should click the ‘Connect or Merge’ button and login using the badge-a-thon Chatter Free user that also has badges. They’ll be prompted to merge their accounts an provided with all the information about what badges and points will go once the merge is complete.


It’s merging time!


Then comes the scary screen - ‘the merge is irreversible’ - Are you sure? Of course you are!


Are you sure?!


After the merge, you’ll see the results.


Merge Results


And now you can login using either your existing Trailhead user’s identity or the newly provisioned badge-a-thon Chatter Free user that was provisioned for you. Once again, our single Trailhead user may have multiple identities that they use to login in order to earn badges.




Salesforce Login


And when those users earn badges against their single Trailhead user, they’ll be sharing them with the badge-a-thon org based on the affinity to the Chatter Free user identity that they've linked to.

After the badge-a-thon, or at any point, your users can remove the Chatter Free identity from settings by clicking the big ‘X’ under the Actions menu next to the identity that shouldn’t be used any longer. That will opt them out of sharing the badge data with the badge-a-thon org and will prevent that Chatter Free identity from being used to login to their Trailhead user. That way, your users can choose whether to opt-in or opt-out from sharing badge data, all without ever losing any badges in the process.

6. Track badges in Trail Tracker

Finally, you’re ready for the big day. Your trailblazers can now start earning badges. And when you login to your badge-a-thon org with Trail Tracker, you can navigate to the app to track the activity.


App Menu


Just go to Dashboards and click on the Trailhead Overview.


Dashboards Tab


Trailhead Overview Dashboard


You can customize the dashboard as you need and run reports that help you understand what badges are being earned by which badge-a-thon users.

8. Award prizes

The day of the badge-a-thon is finally here! Time for your users to start learning and winning some cool prizes.


My kingdom for a hoodie!

Don't worry about copying down all of these steps, they're all available on the following trailmix if you want to track them: https://trailhead.salesforce.com/en/users/005500000060MZlAAM/trailmixes/getting-badgy.

Thanks Mark for the great use case!!

15 January 2018

What's new in Spring'18 with Event Monitoring

Summary of Event Monitoring Spring'18 Release Features

1. Hourly Event Log Files Beta - enhanced interval to obtain event log data for customers and partners

Currently EventLogFile object has your Salesforce event data from the previous 24 hrs. With hourly event logs you are able to track events that have been generated 2-4 hrs ago alongside daily event log files. See the interval field from the picture below where Interval = 'hourly' from workbench API tool. 

This allows you to make decisions whether you pull your event log files several times a day to your analytics environment for security or performance monitoring use cases or stay in the daily batch for adoption monitoring. The hourly event log files does not automatically work with event monitoring analytics app, Splunk, New Relic, FairWarning or Cloudlock. Please work with your analytics team to start using the hourly files. 


Screen Shot 2017-07-28 at 10.35.39 AM.png


2. Insecure External Assets Event Log - track insecure external assets hosted in Salesforce and fix URLs from HTTP to HTTPS. This event log file will be generated when your users are accessing external assets like images in Salesforce over insecure HTTP protocol. The insecure external assets event log file will be provided free of charge and out of box to all customers similar to Login and Logout event log files. 



3. Delete Event Log Files - to help comply with existing and upcoming data regulations like GDPR, event log data can now be deleted with a specific Delete Event Monitoring Records permissions. 



Before this permission can be assigned to a user or permission set, there is also a Org wide preference that needs to be turned on. 



4. Track User Actions with time based workflows - correlate multiple events together with Login Key and Session Key

To get more visibility into Time Based Workflow, we've added the Login and Session Key to help track all transaction changes in the specific Time Based Workflow.


5. Salesforce Connect Event Log enhancements - track external objects comprehensively

For Salesforce Connect customers, several log files enhancements have been added to provide more fine grain visibility for external objects, be it query or write operation, when the call occurred and which user accessed the data.
  • External Cross-Org Callout events
    • EXECUTE_MS—How long it took in milliseconds for Salesforce to prepare and execute the query. Previously, this field was reserved for future use.
    • FETCH_MS—How long it took in milliseconds to retrieve the query results from the external system. Previously, this field was reserved for future use.
    • ROWS_FETCHED—(New) Reserved for future use.
  • External Custom Apex Callout events
    • EXECUTE_MS—How long it took in milliseconds for Salesforce to prepare and execute the query. Previously, this field was reserved for future use.
    • FETCH_MS—How long it took in milliseconds to retrieve the query results from the external system. Previously, this field was reserved for future use.
    • ROWS_FETCHED—(New) Number of rows fetched by the callout.
    • THROUGPUT—Number of records retrieved in 1 second. Previously, this field was reserved for future use.
  • External OData Callout events
    • EXECUTE_MS—How long it took in milliseconds for Salesforce to prepare and execute the query. Previously, this field was reserved for future use.
    • FETCH_MS—How long it took in milliseconds to retrieve the query results from the external system. Previously, this field was reserved for future use.
    • NEXT_LINK—OData next link that the callout used to request a subsequent batch or page of rows. Previously, this field was reserved for future use. This field isn’t supported for the OData 2.0 adapter on orgs created before Spring ’18.
    • PARENT_CALLOUT—If the callout requested a subsequent page of rows, this field identifies the initial callout whose request resulted in the multi-page result set. Previously, this field was reserved for future use. This field isn’t supported for the OData 2.0 adapter on orgs created before Spring ’18.
    • ROWS—Total number of records in the result set. Previously, this field was reserved for future use.
    • ROWS_FETCHED—Number of rows fetched by the callout. Previously, this field was reserved for future use. This field isn’t supported for the OData 2.0 adapter on orgs created before Spring ’18.
    • THROUGHPUT—Number of records retrieved in 1 second. Previously, this field was reserved for future use. This field isn’t supported for the OData 2.0 adapter on orgs created before Spring ’18.

Example

Suppose your Salesforce org connects to an external system via an OData adapter. When you defined the external data source in Salesforce, you selected Named Principal for Identity Type. With the named principal, the same set of credentials is always used to access the external system from your org.
To identify the users who accessed an external object’s records during a specific time period, use the log data for the External OData Callout event type. Sort by ENTITY and USER_ID to see which users accessed the external object.
In this event log file, we see that three users accessed the Product external object over 12 callouts.Log data for the External OData Callout event type, with highlighted USER_ID values for callouts that access the Products external object


6. Event Monitoring Analytics App Trailhead, in case you're using the Event Monitoring Analytics App or a new customer getting started the Event Monitoring Analytics App Trailhead is a great way to spend 1h 15 mins to understand how to get started for adoption, performance or security monitoring for your Salesforce application.

7. Changes to Event Log File schema due to regulatory consistency

Document Attachment Downloads event log file
We retired the FILE_NAME field. If you’ve created custom fields and need to retrieve data from the FILE_NAME field, query the Document standard object. For example, SELECT Name FROM Document WHERE Id=[ENTITY_ID value from Document Attachment Downloads log data].
Knowledge Article View event log file
We retired the USERNAME field.
Logout event log file
We retired the USER_NAME field.