Cloud Apps, Development
Agile Development Process

Agile user training in Salesforce (Permission Sets, Google Form & YouTube)

The introduction of Agile development has made an interesting change in the way users are trained. No longer are you training users once every couple of months, it’s now every couple of weeks! I’ve found in a couple of companies recently that due to this training lags a bit behind the new functionality and users are getting training overloaded.

The output of the Agile Scrum development cycle (called a sprint) is usually updated documentation and training, and of course some companies also create video training. I’ve found that this usually comprises of un-targeted regular, sometimes weekly emails communication to users with more training to do. This regular training communication sometimes means that users start to disengage with the training for whole host of reasons and just don’t do it.

I’m working for an SME who use Salesforce and they have this issue. So wanted to come up with something that gave a bit more structure to the learning, better evaluation of the training (Kirkpatrick learning evaluation model), was on demand based on the functionality they want to use and of course that it is quick and easy to carry out at little or no cost.

The solution

So this is my first attempt at “Agile Training”, the idea being that the user only gets trained when they need to use the functionality.

The following video demo shows the clicking on a JavaScript button that calls an Apex method to see if the current user has permission to a particular permission set. If they don’t they are forwarded to a Google Form so they can view a training video and then answer questions to test their knowledge.

This isn’t great in all scenarios (you are embedding training into the solution, you could end up with a lot of “empty” permission sets etc, there is manual intervention etc etc). But its a nice mashup using Google Forms, YouTube, Salesforce Permission Sets and a little  bit of JavaScript & Apex. When I started I did hope that I could do everything in the JavaScript button but unfortunately Salesforce doesn’t allow querying of the permission sets via JavaScript as a user. Also I’m doing this 1am which probably isn’t the best time to be writing and recording videos 🙂

The following is the Apex class mentioned in the video, this checks to see if the user has permission to the particular permission set and if so returns true, otherwise false (I’ve removed the tests to save space).


global with sharing class PermissionSetHelper {

   webservice static Boolean hasPermission(String permissionName){

      Boolean foundPermission = False;
      List perms = new List([
         SELECT
            Id,
            PermissionSet.Name
         FROM
            PermissionSetAssignment
         WHERE
            PermissionSet.Name = :permissionName AND
            AssigneeId = :Userinfo.getUserId()]);

      if (perms.size() > 0){
         foundPermission = true;
      }

      return foundPermission;
   }
}

This this the code for the JavaScript button, just rename the My_Wizard_Permission with the API name of your created permission set and change the link to your training form:


{!REQUIRESCRIPT("/soap/ajax/24.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/24.0/apex.js")}

var result = sforce.apex.execute(
   "PermissionSetHelper",
   "hasPermission",
   {permissionName:"My_Wizard_Permission"});
if(result == 'true'){
 location.href = "/home/home.jsp";

}else{
 window.open('https://docs.google.com/a/netstronghold.com/spreadsheet/viewform?formkey=dEhCMDRwYS1JYkNZTFdmQ09kNV9mOFE6MQ','mywindow');

}

If you want to learn more about Agile check out Mike Cohn’s classroom or online courses. He has a wealth of experience and does classroom courses all over the world. If you want to self-study the following are great books by both Mike and Roman Pichler (who helped me do my ScrumMaster certification).

[amazon_image id=”0321579364″ link=”true” target=”_blank” size=”medium” ]Succeeding with Agile: Software Development Using Scrum (Addison-Wesley Signature)[/amazon_image] [amazon_image id=”0321605780″ link=”true” target=”_blank” size=”medium” ]Agile Product Management with Scrum: Creating Products That Customers Love (Addison-Wesley Signature)[/amazon_image] [amazon_image id=”0131479415″ link=”true” target=”_blank” size=”medium” ]Agile Estimating and Planning (Robert C. Martin)[/amazon_image] [amazon_image id=”073561993X” link=”true” target=”_blank” size=”medium” ]Agile Project Management with Scrum (Microsoft Professional)[/amazon_image]

UPDATE 18th June:

@sfdcdoug noticed I was using an old API and that Permission Sets were not supported by API 18 and that was the issue. Yes my fault I edited an old button for the demo (now changed above, thanks!) and yes Permission Sets are supported by the latest API BUT they are only viewable if you have the administrator permission of “View Setup Menu” on the users profile/Permission Set. So “standard users” don’t have access to the objects, so you still have to create the Apex etc.

Personally I think all users should be able to query the Permission Sets but only return their own permissions if they don’t hav the “View Setup Menu” permission. I’ve added an idea on IdeaExchange for it.

Load More Related Articles
Load More By Francis Pindar
Load More In Cloud Apps

Check Also

Time for a tech implant?

A couple of weeks ago I was at ...

Subscribe via Email

Enter your email address to subscribe and receive notifications of new posts by email.

Upcoming Events

Follow me on Twitter

Currently reading

From Goodreads

  • Book cover

    The Hitch Hiker's Guide to the Galaxy: A Trilogy in Five Parts

    Douglas Adams

  • Book cover

    The Warren Buffett Way: Investment Strategies of the World's Greatest Investor

    Robert G. Hagstrom