Showing posts with label Admin Journal. Show all posts
Showing posts with label Admin Journal. Show all posts

Thursday, January 8, 2015

Salesforce Admin Journal: Simple Sidebar Feedback Form Using JotForm

Hello my fellow Salesforce admins!

I'm working on rolling out a few changes to our Salesforce org and want to make sure that users can offer feedback as painlessly and conveniently as possible. They shouldn't have to switch tabs or compose a new email, or input any other information aside from their comment.

Ideally, a 'Comment' box and 'Submit' button could dwell right there in the sidebar itself. But, after some googling and brainstorming, I wasn't quite sure how to implement a solution that simplistic.

Instead, I found a workaround for the next best thing: a link to a popup form (created with Jotform, one of my favorite tools) that pulls in the user's email address from the url.

Here's how it turned out:


Designing my super simple form in Jotform. 

I customized the thank you page.

I created my url - passing the current user's email into a field on my form, per this tutorial.

The finished link

The form pops up.
The email notification that I receive when a user submits a comment with the form.

All things considered, I'm content with this simple solution. It might not be the most elegant, but it's easy for users to use and easy for me to maintain/customize.

Win win.


Thursday, December 4, 2014

Salesforce Admin Journal: Guide & Gather Feedback Using a Google Form Before Deploying Changes

Hello fellow Salesforce admins!

In this post, I'm going to share a challenge I faced as an admin and the solution I came up with.

Imagine that you've made some changes to your Salesforce org that you'd like users to test - a new visualforce page with a few new fields, for example. You want to easily gather their feedback but the idea of assembling everyone's responses via a bunch of separate email conversations makes you antsy. Plus, you'd like a way to guide them through the testing step by step. 

You want to make it as simple as possible for them to share their comments... because you know that will encourage your testers to actually provide feedback... which will improve the quality of your changes when you roll them out to your entire org.

Now that you've got a good idea of the challenge, here's my solution: Google Forms

I created a form that outlined the process for testing and provided a text area for comments at each step. 

It looked similar to this (but with quite a few more screen captures and long text fields):



Now, after my group of testers are done, I can easily review all their feedback in a Google Spreadsheet.

If you'd like to make a copy of this sample Google Form to customize for your feedback-gathering needs, click below:



Note: Clicking on this button will run a custom Google Script that will copy the file to your Google Drive. You'll have to give it permission to run first.


PS - I followed these instructions from the answer from Arun Nagarajan to create the Google Script that allows you to copy the Google Form to your own Drive. Handy dandy!

PPS - I wrote this post on my own without prompting or compensation from any of the software companies involved.

Friday, May 16, 2014

Salesforce Admin Journal: Teaching a Man to Fish.... or at Least to Create a Report

I regularly receive requests from users to create a specific report. Often these are reports that no one else needs access to.

We are trying to cut down on the number of reports in the 'Unfiled Public Reports' folder. So, I'm encouraging users to save reports that they may need in the future to their 'My Personal Reports' folder.

I'm also working on teaching them how to create reports on their own. As I mentioned in this post from last year, I think it's important to educate people whenever possible rather than just doing something for them automatically because 'it will take me less time.'

This method doesn't just benefit me by reducing the number of request I will receive in the future. It also helps my users become more self sufficient and capable.

Today, a user chatted me a report request. In response, I recorded a one minute long tutorial that will help him learn the basic skills needed to prepare the report himself.

Here's the response I received:



That was totally worth the few extra minutes it took me to record the tutorial using Jing.

Thursday, May 15, 2014

Use LexiLoader to Export a Subset of Salesforce Records Based on Id

I want to extract specific fields for a subset of records. I have the ids of the records that I want to extract, either from a previous export or from an exported report. But, there's really no way to extract specific fields based on just those ids.

With the Excel Connector (for Windows), this is easily done by running a query based on the ids. It's also super handy for updating those fields either individually or in groups.

But, as a Mac user, my options are limited. In fact, I don't know of another way to easily query a subset of records based on their id.

Now, this situation can probably be avoided most of the time. But, here's where I run into it: Sometimes, a user will send me an exported report or copied/pasted data and want updates to be done on the records. In that case, I might have to extract the ids from hyperlinked records first. (Here's how I do that.)

Another scenario I run into is extracting records with lookups, eg: opportunities. When I run the export with LexiLoader, any lookups (such as Account) pull in just the record ids. If I want to display the Name, I'm kind of stuck. (Although, as I'm typing this now, I realize that I can probably get around this by including the related field in my SOQL query. Doh. Oh well, I'll share my previous method just in case anyone else can benefit.)

Anyway, here's the method I used:


1. Grab your record ids that you'd like to query and update.
1. Grab your record ids that you

2. Use the record ids to build your SOQL query.

I demonstrated this technique - using a concatenated formula to build query criteria - in a short video here.
2. Use the record ids to build your SOQL query.
836ce77d-d531-4e06-9f70-831093b5b61e.png
Drag the formula in your second row of data down. You'll get the combined concatenated criteria for your query.
2caaa8ca-97b3-4080-bfd0-1f692cc20ab5.png
The last row will have all the ids ready to be copied and pasted into your query.
Mine looked like this:
'0017000000b1bFCAAY' OR ID= '0017000000b2Ca8AAE' OR ID= '0017000000cEUwnAAG' OR ID= '0017000000colvrAAA' OR ID= '0017000000eiRbPAAU' OR ID= '0017000000iewgvAAA' OR ID= '0017000000iVUjZAAW' OR ID= '0017000000mJWy1AAG' OR ID= '0017000000nXFZRAA4' OR ID= '0017000000pG0BdAAK' OR ID= '0017000000RAUMiAAP' OR ID= '0017000000SGWm9AAH' OR ID= '0017000000T1GmbAAF' OR ID= '0017000000T1O36AAF' OR ID= '0017000000T3mPxAAJ' OR ID= '0017000000T3TM4AAN' OR ID= '0017000000TEq8dAAD' OR ID= '0017000000TFRUmAAP' OR ID= '0017000000TpUqCAAV' OR ID= '0017000000TpVQGAA3' OR ID= '0017000000TVkxkAAD' OR ID= '0017000000TYg9tAAD' OR ID= '0017000000UeKKZAA3' OR ID= '0017000000UfnOFAAZ' OR ID= '0017000000UfXxrAAF' OR ID= '0017000000uMigaAAC' OR ID= '0017000000uMWgbAAG' OR ID= '0017000000uMWhQAAW' OR ID= '0017000000uMWhUAAW' OR ID= '0017000000uMWiDAAW' OR ID= '0017000000UuVBmAAN'

3. In LexiLoader, navigate to the Export wizard.

3. In LexiLoader, navigate to the Export wizard.

4. Choose your object, then click on 'Browse' to create your export file.

I have a list of Account ids, so I chose 'Account,'
4. Choose your object, then click on

5. Give the export file a name. Click 'Save.'

I usually try to be fairly descriptive so that I can easily identify the purpose of my export.
5. Give the export file a name. Click

6. Click 'Next.'

6. Click

7. Choose the fields to include.

7. Choose the fields to include.

8. Update the query formatting as necessary.

I needed to add 'WHERE id = ' so that I can proceed with the next step.
8. Update the query formatting as necessary.

9. Paste the concatenated query criteria that you copied from your last row of formulas in step 2.

9. Paste the concatenated query criteria that you copied from your last row of formulas in step 2.

10. Click 'Finish.'

10. Click

11. Choose 'Yes.'

11. Choose

12. After your export is complete, open the file that you named in step 5.

You'll see all of the records that you specified in your query criteria.
12. After your export is complete, open the file that you named in step 5.

13. Update or use your data.

When I've used this method in the past, there have been two reasons - to update a segment of records or to use them in a vlookup based on id in my original spreadsheet.

If you want to update...

There are a few different ways to do your update, depending on your circumstances.


  1. In your original spreadsheet of just ids, create a new column for each field that you want to update. Pull each column that you need in with a vlookup. This is helpful if you've already done some editing on your original spreadsheet and don't want to lose it.
  2. Use your export spreadsheet to update data as needed. This is the best option if you haven't already made changes on your original spreadsheet.

Upload your changes using LexiLoader.

Thursday, October 31, 2013

Salesforce Admin Journal: Creating Groups based on Criteria with Workbench

I have so many posts in draft that I just haven't gotten around to finishing. So, instead of waiting and stressing and feeling ridiculous about it, here's something short that I stumbled upon today.

Scenario:

I wanted to create several public groups based on some criteria (in my case, I was using email domain). I discovered that was pretty much impossible in Setup. I was only seeing an option for creating a group and then adding users manually or by role/profile.



Solution:

  1. I created my groups in Setup. I don't think you can create a group without a single member, so I added someone I knew would be included anyway based on my criteria.
  2. I exported a query of all my active users as a csv (I used LexiLoader but Workbench would work great too).

    Select Id, LastName, FirstName, Email FROM User WHERE IsActive = True 
  3. I opened my csv in Excel and sorted it by the field I wanted to use to segment my groups and added a column for Group ID.
  4. I copied the id from the url for each newly created group.
  5. I pasted the group id into my sorted csv for each user as I wanted to segment them in my groups.


  6. I did a 'save as' on my csv.
  7. I used workbench to upload the file in the GroupMembers object.




Ta da! Done! Perfect!

This process was much easier for me than trying to manually add the users to these new groups.

I haven't used Workbench that much in the past but I'm realizing that it is pretty stinkin' handy. I've been a bit frustrated with LexiLoader lately (which is the Mac version of DataLoader) and I often miss the Excel Connector (which is only for Windows OS) but even that had its flaws. 

And that's all for today... until I finish those almost done blog posts that are glaring at me.


Friday, March 8, 2013

Video Tutorial: How To Use a List of Record IDs as a Report Filter in Salesforce

I sometimes have to generate reports based on specific record ids.

I've found a little trick to format these ids (if they are in a list) so that I can pop them in as either a report or list view filter.

View the tutorial by clicking on the screencapture below.




Jenna Weiner is a rather geeky girl with average social skills and an affinity for: Google Apps, Salesforce.com, Pinterest, Firefly, dresses, indoor plants and life-hacking. Have a suggestion for a post or a question? Feel free to get in touch.
Email: rathergeeky@gmail.com
Twitter: @RatherGeeky
LinkedIn: View My Profile

Wednesday, December 26, 2012

Combining, Segmenting and Managing Salesforce Campaigns with AppExchange Apps

Recently, I faced a rather daunting task to launch a 2-part multi-segment marketing campaign of around 14,000 members.
It is possible to use out-of-the-box tools plus a few free apps to create segmented campaigns and get your sales team involved in campaign planning.

In our org, we've been managing our campaigns for 5+ years using the standard Campaign object, but we're definitely feeling the need for a marketing automation tool that would make this process a whole lot easier.

But for now, we've got Campaigns.

I thought I'd share my process if you too are not in a position to invest in a marketing automation tool.

Step 1: Define criteria to add contacts to campaign. 

We wanted to pull in active contacts (custom picklist field) based on the most recently won Opportunity for the Account that they belong to (custom rollup field on account). So, I created a report with those criteria. Then, I added them all to one big "For Review" campaign using the 'Add to Campaign' button. You'll find out why in Step 3.



Monday, February 27, 2012

Admin Journal: Crafting a Unique Id for Updating when Record Id is Missing (@salesforce)

Dear Admin Journal:

Sometimes, users do something silly... like exporting a report to Excel, making changes that they'd like me to import and forgetting something pretty important: the record id.

It's not impossible to update records without the record id. It's just not handy... and it can be error-prone.

Over the years, I've figured out various ways to get around the missing record id, usually involving several queries and some rather complex vlookups.

But, here's a pretty simple method that I used today when the csv I received from a user had only 7 columns + one column for reassigning record owner.

  1. I queried Salesforce to pull out the same 7 columns + record id with LexiLoader.
  2. In my user's spreadsheet, I created a new column. I concatenated 3 fields that I knew would have at least 2 unique values, so it looked kind of like this:

    AccountName&LEFT(BillingAddresss,5)&BillingCity
    .

    Side note: I used the LEFT() function because my user had copied the data from a report in their browser and pasted it into Excel. The Billing Address had split into two rows in the spreadsheet. So, it wouldn't match my query.
  3. In my query spreadsheet, I created 2 new columns. In one of them, I concatenated the same 3 fields to use as a unique id. In the other column, I created a vlookup to match my manually created unique id and return the column that had been updated in my user's spreadsheet.
  4. Before updating using LexiLoader, I could remove the columns that I'm not using (Owner Name, Forged Unique ID, etc), or I could just leave them out of the field mapping.
It sounds kind of complex. But trust me, it's simple. 

Here's a rather lame screenshot (Skitch doesn't support blurring? What!?):



So, when I'm stuck with a spreadsheet without the record id and the user is waiting for me to update their data, I calmly remind myself of this.

In other news, I switched to a MacBook Pro last week. While I really like my Mac (I hesitate to say 'love'... but I'm sure someday I will), I've found that quite a few of the tools that I relied on are not available. I'm missing the Excel Connector, but I'm making it work with LexiLoader (a version of the Apex DataLoader for OSX) and Excel (although OpenOffice or Google Docs would work fine too).

Now, I'm off to finish updating.

Love,

Jenna, The Admin

Jenna Baze is a rather geeky girl with average social skills and an affinity for: Google Apps, Salesforce.com, Pinterest, natural light photography and finding creative ways to avoid doing dishes (which includes updating a handful of blogs).
Email: rathergeeky@gmail.com | Twitter: @RatherGeeky | Facebook: Rather Geeky Tips

Monday, February 28, 2011

Admin Journal: Preventing My @Salesforce Users from Including Time-Specific Information in Description Fields with a #Simple Validation Rule

dear_admin_journal

I’ve noticed while doing data cleaning that some users add date-specific information to Description fields on Accounts, Leads or Contacts.

Why This is Bad

No one may notice ‘must follow up by 12/11/2007 or earth will explode’ in the Description of a record such as an Account. That could be bad news.

An Easy Fix (Sorta)

To encourage users to log this information in the most efficient way, I an create a validation rule that looks for keywords in the Description field of a specific object, such as Account.

I can customize the rule based on the typical phrases that I know my users enter, such as ‘follow up on’.

image

I like to include a detailed error message so that the user will have a good idea of what their next step should be.

Error: You have included a 'Follow up' task in the Description field, where it may be overlooked. Please remove that reference from the Description field and add it instead as a related task.

I gave it a quick test and it worked.

image

I’m sure there are plenty of other ways to accomplish the same thing, but this simple rule is one way to gently herd my users in the right direction.

dear_admin_journal_end

 

Additional Resources

  • Haven’t heard of Salesforce? Find out about it here.

 

Jenna Baze is a rather geeky girl with average social skills and an affinity for: all things Google, Remember the Milk, Salesforce.com, Inbox Zero, Etsy, natural light photography and finding creative ways to avoid doing dishes (which includes updating a handful of blogs).
Email:
rathergeeky@gmail.com
Twitter: @RatherGeeky
Facebook: Rather Geeky Tips

Friday, December 17, 2010

The New User (without) Experience – Jumping Into Salesforce - Admin Journal

Introducing a new feature: Admin Journal, where I share my thoughts and experiences as a Salesforce Administrator of an org with around 45 users. As always, the opinions that I express are my own, not that of my employer.

--

dear_admin_journal

As you might know, I’m the Administrator for a Salesforce org. And I just experienced something that knocked my socks off.

Last week, I was notified to add a new user for a recent hire. We attempted to set up a time for me to train him but hadn’t yet decided on a date.

He emailed me this morning to let me know that he had created his first opportunity.

I was nervous. He hadn’t received any training with Salesforce. All my explanations of lookups and naming conventions and related lists ran through my head.

Then I viewed the opportunity he created.

I paused.

I decided to write a blog post when I realized 140 characters wasn’t enough to express my thoughts.

It was one of the most beautiful records I’ve seen. Complete. Related information added. No glaring spelling errors.

<sigh>

Perhaps it’s the enthusiasm that comes along with starting a new job. I’m hoping it’s more… perhaps an inherent love of data quality. Ah, an admin’s dream: users that love data too.

This also speaks to the ease of use of the Salesforce platform. Even someone with no prior experience can get started using it right away.

So, thanks Salesforce for being awesome.

And thanks new user for totally making my day.

dear_admin_journal_end

Jenna Baze is a rather geeky girl with average social skills and an affinity for: all things Google, Remember the Milk, Salesforce.com, Inbox Zero, Etsy, natural light photography and finding creative ways to avoid doing dishes (which includes updating a handful of blogs).
Email:
rathergeeky@gmail.com
Twitter: @Rather_Geeky
Facebook: Rather Geeky Tips