Salesforce Toolkit – A Salesforce Professional’s Swiss Army Knife

Salesforce Toolkit - A Salesforce Professional's Swiss Army KnifeEvery Salesforce Administrator and Consultant looks for tools to make tasks easier. While Salesforce is easy to learn, there are some actions which require a multitude of clicks. Field creation, for example, is easy but takes a long time when creating a whole host of new fields. Exporting org metadata can be complex and cumbersome, and turning multiple workflows and validation rules off and on can be a pain.

Just like Salesforce Workbench, Salesforce Toolkit is a tool that every Salesforce Professional should have in their toolbox.I found the site several months ago when searching for a way to export an orgs metadata. This tool not only pulled it off, but it was quick. The other tools provided have been a big help as well.

I’ve asked it’s creator, Ben Edwards, to provide some details about how Salesforce Toolkit came to be and provide a quick overview of each of the tools provided.

Behind Salesforce Toolkit

The Salesforce Toolkit is a collection of Heroku hosted applications that support various Salesforce processes and tasks. It provides tools for automating and simplifying common consulting, implementation and/or admin related functions.

The Toolkit itself came about after I started to build apps to ultimately make my job easier, as well as the consultants working around me. I happened to be starting to become more familiar with the Salesforce APIs at the time, as well as learning Django (a Python web framework) and Heroku. So it worked out to be a great opportunity to get some hands-on experience.

Once I had set up a few basic apps, each app following became a bit easier and faster to build, as I had got over the initial hump of learning new programming languages and APIs.

Once I had built a few pretty independent apps, I created the “Toolkit” page to bring everything into one place. 

All the applications themselves are open-sourced on GitHub (http://github.com/benedwards44/), meaning the code can be fully downloaded and used internally or within other apps if people wish. I also wanted to encourage people to contribute to the apps and potentially submit their own apps to the Toolkit.

Let me briefly run through each app and what it does, and how consultants and apps might use them.

The Tools

package-builder-3Package Builder was actually the first app I built. This one is quite simple and was relatively easy to get up and running. It simply outputs a package.XML file of your entire Org, without using any wildcards for the metadata lists (*). It uses the Metadata API 

This is useful for people who want to list all components and then chop and change the XML for use with source control or IDEs. This fits a gap with IDEs that tend to auto-wildcard selections when trying to extract all components from an Org.

schema-lister

Schema Lister was the second app I built. Again, quite a simple application. It lists all objects and fields within an Org, including their data types. It then provides the ability to export this to an Excel file.

This is useful for documentation purposes, or if needed to provide schema details to an external party.

field-creator

Field Creator provides a nice interface for creating many fields on a single page for a Salesforce Org. Very useful when starting new projects or implementations and having a list of fields you already know you need to create.

Creating fields directly in Salesforce can be a bit tedious if having to do many, as each field is 3 or so pages of clicks. This allows you to create a lot of fields quickly and then deploy to an Org.

switch

Switch was an idea given to me a colleague. Switch provides a nice and simple interface for mass disabling and enabling Salesforce automations – Workflows, Validation Rules, Flows, and Triggers.

The main use case for this is data migrations – when it’s useful to have these things easily turned off and then turned back on again.  

org-compare_2

Org Compare is the most used app in the Toolkit, and I think the most powerful. It actually took me a while to get the logic all set up and working as desired.

It compares the metadata of two different Orgs and presents the differences. It’s really useful for pre-deployment change-set and package setup, as well as post-deployment validation.

data-compare

Data Compare is an extension to the Org Compare tool. Rather than comparing metadata, it compares data.

This is useful for validating data migrations, or ensuring that data that was setup in a sandbox has been migrated correctly to the next environment.

org-doctor

Org Doctor wasn’t actually built by me – but rather by an ex-colleague Sebastian Wagner. As such, I haven’t actually open-sourced the code for this as it’s not mine.

It is available for free use, however. The app analyses a Salesforce Org and presents a report based on best-practices and any trouble areas that may need addressing. Really useful for high-level health-checks and analysis of how to improve performance and general maintenance overheads for your Org.

Your Turn

Thank you so much to Ben for providing an overview of Salesforce Toolkit. I have found it provides great value to me as a Consultant, and I hope that you’ll find it valuable as well!

Is there a tool that stuck out to you? What are you going to try first? Leave a comment below!

Load More Related Articles
Load More In AppExchange & Reviews

19 Comments


  1. Cory Hinrichs

    May 16, 2016 at 10:28 am

    Great share, Brent!

    Reply

  2. Erik

    May 16, 2016 at 10:49 am

    Wow! What a great set of tools. The Switch App alone is major win. I can’t wait to dig into these more.

    Reply

    • Brent Downey

      June 4, 2016 at 3:31 pm

      Absolutely! I would be happy with that tool alone!

      Reply

  3. Missy Lowery

    May 16, 2016 at 12:50 pm

    Really great work Ben and great share, Brent!

    Reply

  4. Dustin

    May 17, 2016 at 8:01 am

    This is fantastic and perfect timing. Just used it this morning for a migration project we’re working on. Thanks for sharing.

    Reply

    • Brent Downey

      June 4, 2016 at 3:31 pm

      Absolutely! This is super helpful for that type of project!

      Reply

  5. Alesia Dvorkina

    May 18, 2016 at 8:24 am

    This is so great! Already started using some of the tools from Salesforce Tools set 🙂 Especially, in love with Org Doctor and Org Compare for some big projects that are going on right now. Thank you so much for another super valuable post!

    Reply

  6. Parker Edelmann

    May 19, 2016 at 12:12 pm

    Crud, I just created about 150 custom fields it seems; wish I knew about this sooner. At least I was getting paid by the hour.

    Reply

  7. Thomas George

    June 2, 2016 at 12:25 pm

    Can anyone use these tools to diagnose the org? How does any of these tools know if a system admin is using this. I have an instance where one of the users have tried to use these tools. Is there a way to stop regular users from running diagnostic reports on the org using these tools?

    regards,
    Thomas

    Reply

    • Brent Downey

      June 4, 2016 at 3:34 pm

      To use any of the tools, you need to login to your Salesforce org which will tell these tools the level of access you have. In most cases, the minimum permission needed to sign in with a tool like this is API Enabled (I believe). Additional permissions above and beyond that would be required to actually do anything with these tools. I would check user permissions and ensure users only have the system level permissions they absolutely need.

      Reply

  8. Mitchell spano

    June 10, 2016 at 3:15 pm

    Brent, this is a great tool!

    I do have a suggestion for any developer who wants to use this tool to turn on and off triggers.

    Since this reruns Apex test coverage, you must make sure that you do the following steps:

    1) Write your trigger logic into a handler class.
    2) Explicitly create an instance of that handler class in your test class for that particular trigger function.
    3) Call the method in the handler which corresponds to your context.

    So for example, let’s say we have a class called AccountTriggerHandler with methods such as OnAfterInsert(List ListNew).

    Typically in the test class you would just create some test data, and insert it, then call your assert statements.

    List NewAccounts = new List();
    NewAccounts.add(new(Account(name=’Account1′));
    Insert(NewAccounts);
    System.assertEquals(/*Whatever you want to be true*/);

    In this scenario we would do something like this:

    List NewAccounts = new List();
    NewAccounts.add(new(Account(name=’Account1′));
    AccountTriggerHandler ATH = new AccountTriggerHandler();
    Insert(NewAccounts);
    ATH.OnAfterInsert(NewAccounts);
    System.assertEquals(/*Whatever you want to be true*/);

    This will help to ensure that your trigger handling classes have proper code coverage when using this tool to turn triggers on and off.

    Reply

    • Mitchell spano

      June 10, 2016 at 3:17 pm

      Sorry I forgot the list was of type Account, but I believe the message is clear.

      Reply

      • Mitchell spano

        June 10, 2016 at 3:20 pm

        No never mind, the brackets that define type also make your html not render the word in these comment sections on this page. Maybe you should talk to your webmaster about in case a comment ever contains pseudo code again.

        Reply

  9. Jerry

    January 23, 2017 at 6:07 pm

    Hi Brent, I just stumbled on this today. Great list of tools. I tried the package builder and getting this error:

    There was an error processing your request: Traceback (most recent call last): File “/app/buildpackage/tasks.py”, line 100, in query_components_from_org for component in metadata_client.service.listMetadata(child_component_list,api_version): File “/app/.heroku/python/lib/python2.7/site-packages/suds/client.py”, line 542, in __call__ return client.invoke(args, kwargs) File “/app/.heroku/python/lib/python2.7/site-packages/suds/client.py”, line 602, in invoke result = self.send(soapenv) File “/app/.heroku/python/lib/python2.7/site-packages/suds/client.py”, line 649, in send result = self.failed(binding, e) File “/app/.heroku/python/lib/python2.7/site-packages/suds/client.py”, line 702, in failed r, p = binding.get_fault(reply) File “/app/.heroku/python/lib/python2.7/site-packages/suds/bindings/binding.py”, line 265, in get_fault raise WebFault(p, faultroot) WebFault: Server raised fault: ‘UNKNOWN_EXCEPTION: invalid parameter value’

    Reply

    • Brent Downey

      January 26, 2017 at 3:55 pm

      Hey Jerry! I’m afraid that I won’t be much help as I haven’t used package builder yet. Try reaching out to the developer directly. His twitter handle is on the SF Toolkit website and he’s pretty responsive.

      Reply

  10. Nathan

    May 16, 2017 at 5:35 pm

    Thank you!!! Great article. I recently needed the org compare tool but didn’t have the budget for licensed versions. Very glad to have to have found this article. I wish I would have known about the Field Creator tool when I added 250 custom fields to a object last week 🙂

    Reply

    • Brent Downey

      May 16, 2017 at 8:35 pm

      Seems to always be my luck too! Glad you found this helpful!

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

Sponsors

 photo Storage Helper Advertisement_zpsirkx7odb.gif

 photo Need Top Salesforce Consultant Now- 1_zpssntu5iqt.png