I'm working with a non-profit to migrating data into the npsp and we're about to load contact data in. Each records includes a custom field which is a relational key to a separate relationship table exported from the old system, eTap.

I guess, how they have things setup, this will create a household for each contact. So I was thinking in order to get the households related properly in SF that after the import I'd export the contacts with the SF ID and then either generate some sort of custom import file to consolidate households, or write apex do it.

My question is... is will this work and is it the correct approach or is there a better way?



2 Answers 2


See this question - How to automate the loading and updating of reference data from command line/ant? and mainly this http://wiki.developerforce.com/page/Data_Loader_and_relationships. In my mind it stinks, this temporary external field is hokey, but that is all I could find for now.


Caveat: I haven't used the NPSP so this is based off the documentation I found at http://salesforcefoundation.screenstepslive.com/s/npsp/m/households

I think your plan is sound, especially having the External Id set on Contacts. The documentation I read didn't say how Contacts are assigned to Households, so I have to assume each Contact will have a unique Household. This leaves you with two options:

  1. Import every Contact and then export their Contact.Id, eTapId, and HouseholdId. Update HouseholdId as necessary and then load the data back into Salesforce. The documentation states that empty Households are automatically deleted, so that's a plus. I like this approach because I think cleaning up data is easier with local databases.

  2. Create an Apex trigger that works before insert to search for a matching Household and assign it, if found. This approach could help prevent extraneous Households from being created, but I suspect it would not work well for an initial bulk load when no Households exist. This may be a good idea to implement after the initial loading to help keep your data clean, though.

Overall, I would choose the import/export option. It seems like the easiest and most straight-forward way to get going.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .