Automatically Assigning Groove Licenses to Your Users

Groove contains an Apex class that can be called to automatically assigning Groove licenses to your users.

Example: Automatically assign a license to all active users that have the profile "Standard User" and the department is "Sales".

  1. Create a process using process builder that is started "when a record is created or edited" (as opposed to "only when a record is created")

2. Create a process using process builder with these entry criteria in the first step

  • Profile Name equals "Standard User"
  • Department equals "Sales"
  • Active equals true

3. If these criteria are met, configure the process to "Call Apex".

  • Configure it to run the class "Assign Groove Licenses"
  • Set one apex variable "userIDs" - Field Reference - [User].Id

4. Activate the process and test it

Once activated, this process will run each time a user record is updated (e.g. if you click Edit/Save). It will then test whether the three conditions are met and assign a Groove license respectively. In case there are users that are inactive (e.g. for employees that left the company) it will unassign such "stale" licenses so it can be assigned to active users.

Batch Assigning Groove Licenses

The same apex class can also be used to batch assign Groove licenses from the developer console on a one-off basis. With a basic understanding of SOQL you can run code like this:

Map<Id, User> users = new Map<Id, User>([
    WHERE = 'Standard User'
    AND isActive = true
    AND department = 'sales'
DaScoopComposer.GrooveAssignLicense.assignLicenses(new List<Id>(users.keySet()));

The SOQL query can be adjusted to whatever group of users you want to assign licenses to.

Mass-Assigning Groove Licenses using Data Loader

You can mass-assign Groove licenses to your users using Apex Data loader (or any other tool that can batch insert Salesforce records).

  1. Create a list of all users that you want to assign licenses to. You can use a report or a SOQL tool (like data loader). All you need is the value of the ID field of the user records.
  2. Save the list as CSV or Excel file. The file should at least have one column called "id" which is the user ID (all staring with 005...). Make sure you don't have more rows than available Groove licenses.
  3. Rename the column header from id to UserId 
  4. Add a new column and with the column header PackageLicenseId
  5. Find out what the Package License ID of Groove in your org is:Click Setup | Installed PackagesIn the list find the row Groove and click Manage LicensesCheck the URL of the browser tab and find the URL parameter packageLicenseId=050...Copy the value of the URL parameter which should be a 15 digits ID starting with 050..
  6. Paste the ID into every cell in the column PackageLicenseId your Excel file.
  7. Save and export your Excel file into a CSV file (if that's not already the case
  8. Use Apex Dataloader (or any similar tool) to insert you CSV file to into the object UserPackageLicense. Auto-mapping will map the columns to the right fields.Note: the object UserPackageLicense will only be visible in Apex Data Loader (or Lexiloader) if you are using a version higher than 30.0. You can download the latest version of this tool from your Salesforce setup console.

Data loader has now created UserPackageLicense records that assign the respective Groove licenses to your users.

Automatically Assigning a Groove Team

You can structure your users in Groove in "teams". This is useful for reporting and sharing permissions in Groove Flow.

You can have Groove automatically assign users to a team, based on signals in Salesforce. For example you might want to assign users to a specific Groove team, based on their Salesforce profile or Salesforce role.

All you have to do is populate the field "Default Groove Team" on the user object in Salesforce with the name of a Groove team you want the user to belong to (details on how to create Groove teams can be found here). You could do so using a Workflow/Field Update or a Trigger or a Process Builder Flow - implementing any assignment logic respectively. 

The API name of that field is User.DaScoopComposer__Default_Groove_Team__c.

Groove checks this fields every 24 hours. If your Groove org contains a team with the same name as what it finds in that field for a specific user, it assigns that user to that Groove team. 

Note: You should also ensure that your users profile(s) have Visible access to the DaScoopComposer__Default_Groove_Team__c field in 'Field Level Security': 

Pre-Installing the Chrome Extension Groove for Gmail to Your Users

Google Apps admins can automatically deploy Chrome extensions to their users. Note: this only works if user "Log in to Chrome". Follow the instructions in the Google help center.

In a Windows environment, Chrome can also be enforce the installation of the Groove Chrome extension. Follow these instructions.

Extracting a List of All Users with a Groove License

Even though Salesforce currently doesn't support reports on license assignments to managed packages, you can query such data using SOQL. This query will return a list of all users in your org that have a Groove license assigned to:

SELECT Name, Email
    SELECT UserId FROM UserPackageLicense
    WHERE (PackageLicense.NamespacePrefix = 'DaScoopComposer')

Predicting a User's Meeting Scheduler Link

When a user first signs up to Groove, a distinct meeting scheduler link is assigned to the user.

E.g. https: // where sean-829 is an automatically assigned meeting scheduler user id.

There are use cases, where you would want to know a user's meeting scheduler link in advance. So instead of using the meeting scheduler user id you can also use the user's Salesforce ID.

E.g. https: // where 0050V000006iYER is the user's 15 digit Salesforce user ID.

You could create a formula field "meeting_scheduler__c" on the user object containing this formula

"" & Id

That way you can later create a template that contains a signature like this

Book a meeting with me: {!user.meeting_scheduler__c}

Groove will merge these fields with the user's full name and the meeting scheduler link.

Did this answer your question?