Introducing IceTea!
- Michael Kolodner

- Jul 30
- 3 min read

Today I'm writing to introduce a cool and useful tool that my son, Arden, developed. I'm actually rather late in writing about this—Arden made this for me over a year ago.
(In case the IP Police are listening, IceTea was developed long before Arden even applied for his current job. So don't click on his LinkedIn and assume it has anything to do with where he's working now that he's graduated college.)
Despite too much delay, I hereby present: IceTea.
What Is IceTea?
IceTea is a little utility that does two things:
Open a database (stored as a .sql text file in your CumulusCI repo) in Excel.
Convert that Excel file back to .sql after you've made changes to the rows.
What is so delicious about it?
When you store a dataset using CumulusCI it takes the form of a SQL database in a text file.

Though it's theoretically possible to hand-edit if you need to change a value in that table, it's rather inconvenient. And if you want to add values for blank fields (represented by ". '', " in the table), good luck getting the right place!
Using IceTea, though, you can look at that same table in Excel:

Now it's easy to see who needs a Title and to add Descriptions to the right people.
Where can I get some?
IceTea needs to be installed on your computer, not into Salesforce. Just go to IceTea's GitHub repository and follow the instructions.
** Disclaimer: Only install the IceTea software package to your computer. Do not bring iced tea or any other liquid into contact with your keyboard or any other part of your computer. Such actions usually result in undesired outcomes.
[Our lawyers insisted that we write this.]
What Else do I need?

IceTea was developed for use with CumulusCI (or CCI, for short). You pretty much have to be using CCI for IceTea to be helpful to you.
CCI is a development tool originally created by Salesforce.org to make it easier to develop NPSP and the other nonprofit packages. I'm gonna be honest and admit that I don't really know who is maintaining CCI at this point or how much love it's getting.
As I've said many times: I'm not a developer. I'm not using CCI for any of its features around managing GitHub repos, automating testing, or the like. I use CCI because it has one particular superpower that I haven't been able to get anywhere else: It can automate storing and inserting a dataset into a Salesforce org, keeping relationships between records intact.
That's super powerful (and probably deserves its own blog post)! By storing a dataset for a client in CCI, I can create a sandbox and then put in a set of representative data, including contacts, their accounts, opportunities (donations), and any other custom objects I need. The biggest frustration I hear from admins talking about not building in Production is that when you create a sandbox it has no data in it. It's hard to test a new flow if you don't have a record for it to fire on. And if your org is at all mature, getting data that looks like reality means filling a lot of fields and creating an interlinked set of records to represent, say, a class, the enrolled students, the dates on which the class meets, etc.
Using CCI you generate a mapping of your org's custom objects and fields, download the data that's in your org (please do this from a sandbox, not production!), store it, and push it into another sandbox with all the relationships intact. For free! Working with a command line tool has been a learning curve for me, but it's incredibly helpful.
How do I use IceTea?
Once you have the prerequisites out of the way (a CCI repo, with a dataset file), there are just three steps (two commands):
icetea in - Running this command will take your dataset.sql file (like the dark screenshot, above) and open it in an Excel worksheet. Each object will be in its own tab.
Make the modifications you need. Do not mess with the header cells of the sheets, as Arden has done some special work there to store information he needs in the conversion. It's safe to reorder columns and tabs for human convenience. And the real point is to update the data. So, for example, you could take a downloaded dataset where no contacts have a Birthdate and add dates for everyone. Or take a bunch of emails and replace them with ".invalid" or the like.
icetea out - This command will convert your sheet back to dataset.sql and delete the temporary Excel file.
Simple and satisfying, just like a nice glass of iced tea!



![Things You [usually] Don’t Need: A Full Sandbox](https://static.wixstatic.com/media/77ee92_04bbb022fea0413aa27563bf1f3c3cfb~mv2.png/v1/fill/w_980,h_988,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/77ee92_04bbb022fea0413aa27563bf1f3c3cfb~mv2.png)
