Project

General

Profile

Exporting Salsa for CiviCRM » History » Version 54

Jon Goldberg, 02/12/2016 05:40 PM

1 24 Jon Goldberg
{{lastupdated_at}} by {{lastupdated_by}}
2
3 1 Jon Goldberg
h1. Exporting Salsa for CiviCRM
4
5 54 Jon Goldberg
h2.  Do you use Pentaho Kettle?
6
7
If so, you can use my Salsa to CiviCRM transforms, available here: https://github.com/PalanteJon/civicrm_kettle_transforms
8
9 50 Jon Goldberg
h2. Before you begin
10 1 Jon Goldberg
11 50 Jon Goldberg
* When exporting from Salsa, exporting to screen and exporting to a file yield different formats!  Be sure to be consistent, or you'll find that your field names change, your date formats change, etc.  *If you're exporting to give data to Palante, please use the scheduled export*.
12
* Salsa data is VERY messy compared to Civi data.  Expect to find a lot of records that don't have a first name, last name OR e-mail address.  Expect to find donations, participant records, etc. not attached to a supporter (most likely from a legacy import).  Expect to find records with NULL for their "Date Created" values.  Plan your transformations accordingly.
13 1 Jon Goldberg
14 50 Jon Goldberg
h2. Exporting Supporter Data
15
16
When logged in as a Manager, go to "Supporter Management" tab, and "Query/Export" will give you a full export of contact data.  There's a "Select My Entire List" button.  There's also an "include my deleted supporters" checkbox, which you may want to check (but probably not).  This will NOT get you groups/tags, but WILL get you the equivalent of @civicrm_contact@ plus all custom fields attached to the contact.
17
18 25 Jon Goldberg
h2. Exporting Data not on the Contact Entity
19 1 Jon Goldberg
20 8 Jon Goldberg
You need to get to custom reports.  If you have the Reports tab, great; if not, you can get there by clicking "Supporter Management" tab, then "Built-in Reports", then "Clone and Edit" a report, then select "List Your Custom Reports".  Or go straight here: https://hq-org.salsalabs.com/dia/hq/reports/list.jsp?table=report
21
22 11 Jon Goldberg
h3. Groups
23 12 Jon Goldberg
24 3 Jon Goldberg
* Create a new report.
25
* Select the type of report you would like to create: Standard report
26
* Use "Advanced Object Chooser".
27 9 Jon Goldberg
* Report "Supporter Groups", then "Groups".  Press "Save".
28 1 Jon Goldberg
* Select the "Columns" tab and select your columns.  I like just "Supporter Key" and "Group Name".
29 7 Jon Goldberg
* In Conditions, "Group Name" should be "Not Empty".
30 4 Jon Goldberg
* Save, Run the report.
31
* Click the "Export" link.
32 1 Jon Goldberg
33 11 Jon Goldberg
h3. Tags
34 12 Jon Goldberg
35 5 Jon Goldberg
* Create a new report.
36
* Select the type of report you would like to create: Standard report
37
* Use "Advanced Object Chooser".
38
* Report on "Tags", then "Tags Data", then "Database Table".  Press "Save".
39
* Select the "Columns" tab and select your columns.  I like just "Tag" and "Table Key".
40 1 Jon Goldberg
** "Table Key" is the Supporter Key.  It's similar to "entity_id" in CiviCRM.
41 7 Jon Goldberg
* In "Conditions", "Table Name" should equal "supporter".
42 10 Jon Goldberg
* Add another condition: "Tag.Tag" is "Not Empty".
43 1 Jon Goldberg
* Save, Run the report.
44
* Click the "Export" link.
45
46 11 Jon Goldberg
h3. Events
47 1 Jon Goldberg
48 15 Jon Goldberg
As above, but no conditions, and report on the "Event" table.  If you're only importing legacy events, this is a good list of easy fields to import:
49
Event KEY
50
Reference Name
51
Event Name
52
Description
53
Start
54
End
55
Deadline
56
Maximum Attendees
57 46 Jon Goldberg
Date Created (is a useful proxy when "Start" isn't defined)
58 15 Jon Goldberg
59 1 Jon Goldberg
h3. Participants
60 16 Jon Goldberg
61
As above.  Report on tables "Supporter Event", then "Event".  Note that there are a lot of tables that _look_ like "Supporter Event", like "Supporterevent" and "Supporter Events"!
62
63
Note that if you're matching on a unique field from "Events", you can just export "Supporter Event" and not the "Event" table.
64
Here are the fields I exported and what I matched them to:
65
Supporter KEY	external_identifier
66
Event KEY	event_key
67
Status	status
68
Type	role
69
Date Created	register_date
70 51 Jon Goldberg
Last Modified	register_date
71
72
(I didn't actually map both the date fields to register_date.  I use "Date Created" unless it's NULL.
73 16 Jon Goldberg
74 28 Jon Goldberg
h3. Recurring Donations
75
76
Export on table "Recurring Donation".  Here's the field mapping:
77
78
Recurring Donation Key -> trxn_id
79
Supporter Key -> external_identifier
80
Transaction date -> create_date
81
Start Date -> start_date
82
RPREF -> invoice_id
83
RESULT (exclude 37, they're tests)
84
Amount -> amount
85
Pay Period -> use to remap to frequency_unit and frequency_interval
86
TERM -> installments
87
Status(?)
88
89
Note that in Salsa, there's no clear-cut way to tell whether a contact's recurring donation is still working or not - "Status" isn't a complete indicator, and thus doesn't cleanly map into Civi.
90
91 27 Jon Goldberg
h3. Donations
92
93
It's important to link the recurring donations to the donations when exporting if you need to identify the first recurring donation (e.g. to generate thank-you letters if it's a first donation and recurring).
94
95 30 Jon Goldberg
Under "Conditions", filter by "Supporter KEY is not empty" - when Salsa imports legacy data into their system, sometimes they don't do such a hot job.
96
97 29 Jon Goldberg
Export on table "Donation" linked to table "Donate Page".  You'll want these fields (more or less):
98 27 Jon Goldberg
99
Donation.donation KEY(donation)	
100 1 Jon Goldberg
Donation.supporter KEY(donation)
101 42 Jon Goldberg
donate_page.Reference_Name  (contribution_page_id)
102
Donation.Date_Entered  
103 27 Jon Goldberg
Donation.Transaction Date(donation)
104 1 Jon Goldberg
Donation.amount(donation)
105 43 Jon Goldberg
Donation.Transaction Type(donation) (financial_type)
106
Donation.RESULT(donation) (only 0 and -1 should be accepted, others are tests)
107 42 Jon Goldberg
Donation.Tracking Code(donation)  (source)
108
Donation.Designation Code(donation)  (source - not sure what the differentiation between designation and tracking codes is)
109 1 Jon Goldberg
Donation.In Honor Name(donation)
110
Donation.In Honor Email(donation)
111 27 Jon Goldberg
Donation.In Honor Address(donation)
112
Recurring donation.Transaction Date(recurring_donation)
113 1 Jon Goldberg
Donation.Order_Info
114 42 Jon Goldberg
Donation.Form of Payment (payment_instrument)
115 27 Jon Goldberg
116 44 Jon Goldberg
*Special Note:* Salsa seems to keep donations that are tied to supporters that don't exist (that is, the supporter_key on the donation doesn't match anyone in Salsa).  I've seen this multiple times; I don't know why this is, but this is normal.
117
118 19 Jon Goldberg
h3. Actions
119 17 Jon Goldberg
120 19 Jon Goldberg
Salsa has a separate table for actions, making them structurally comparable to Civi Events.  A good match in Civi is the Survey entity, which is used for petitions.
121 1 Jon Goldberg
122 19 Jon Goldberg
Export as above. Report on table "Action".
123 1 Jon Goldberg
Condition: "Reference Name" is not empty.
124 47 Jon Goldberg
125
Fields:
126
Action.action KEY
127
Action.Reference Name
128
Action.Date Created
129
Action.Signatures
130
Action.Last Modified
131
Action.Title
132
Action.Description
133
134 19 Jon Goldberg
135
*Note*: "Description" is likely to contain HTML that breaks the export.  I find it helpful to export it as the last column.
136
137
h3. Supporter_Actions
138 11 Jon Goldberg
139 22 Jon Goldberg
Export "action" and "supporter_action" and "supporter_action_comment" in that order.
140 23 Jon Goldberg
Condition: supporter_key IS NOT NULL
141 20 Jon Goldberg
142
Here's the fields I grabbed with their mapping:
143 22 Jon Goldberg
supporter_action.supporter_key	
144 21 Jon Goldberg
action.Reference Name
145 22 Jon Goldberg
supporter_action.Date_Created
146 48 Jon Goldberg
supporter_action_comment.Comment
147 52 Jon Goldberg
supporter_action.Last_Modified 
148
149
(I didn't actually map both the date fields to activity_date_time. I use "Date Created" unless it's NULL.
150 20 Jon Goldberg
151 31 Jon Goldberg
h3. Letter to the Editor
152
153
This isn't a feature CiviCRM has, but it maps reasonably well to an activity when migrating.
154
* Create a new report.
155
* Select the type of report you would like to create: Standard report
156
* Use "Advanced Object Chooser".
157 49 Jon Goldberg
* Report "Supporter Letter", then "Letter".  Press "Save".
158 31 Jon Goldberg
* Select the "Columns" tab and select your columns:
159
> Date_Created -> activity_date_time
160
> supporter_KEY -> external_identifier
161
> person_media_ID? -> seems important - but I can't find a matching table, and this data doesn't seem to be accessible from Salsa.
162
> Letter_Subject -> details (concatenated)
163
> Letter_Content -> details
164
> Reference_Name -> subject
165
* Save, Run the report.
166
* Click the "Export" link.
167
168 11 Jon Goldberg
h3. Chapters
169 12 Jon Goldberg
170 7 Jon Goldberg
* Create a new report.
171 1 Jon Goldberg
* Select the type of report you would like to create: Standard report
172 7 Jon Goldberg
* Use "Advanced Object Chooser".
173 8 Jon Goldberg
* Report "Supporter Chapter", then "Chapter".  Press "Save".
174
* Select the "Columns" tab and select your columns.  I like just "Supporter KEY" and "Chapter.Name".
175
* In Conditions, "Chapter.Name" should be "Not Empty".
176 5 Jon Goldberg
* Save, Run the report.
177 1 Jon Goldberg
* Click the "Export" link.
178
179 32 Jon Goldberg
h2. Programmatically creating custom fields in CiviCRM
180
181
To do this, you'll need to create a custom group, custom fields, option groups, and option values.
182
183
h3. Custom Field Group
184
185
Don't export anything from Salsa - just create this manually, or using my Kettle transform.
186
187
h3. Custom Fields, Option Groups, Option Values
188
189 33 Jon Goldberg
_Custom Columns_
190
* Create a new report.
191
* Select the type of report you would like to create: Standard report
192
* Use "Advanced Object Chooser".
193
* Report "Custom Columns".  Press "Save".
194
* Select the "Columns" tab and select your columns:
195 36 Jon Goldberg
> custom_column_key -> needed to relate to custom_column_options.  Store in filter temporarily.
196 34 Jon Goldberg
> data_table (should = supporter_custom.  In theory, we can probably export non-contact custom fields in this same process)
197 33 Jon Goldberg
> Date_Created -> created_date
198
> label -> label
199
> type -> data_type, html_type (can be bool, enum, text, varchar)
200
> Description -> help_pre
201
> Order -> weight
202 53 Jon Goldberg
> Name -> value*
203
> custom_column_option_key -> value*
204
> is_a_zero_index_enum -> (if this is true, use the "Name" as value.  Else use custom_column_option_key as value).
205
206 33 Jon Goldberg
* Save, Run the report.
207 1 Jon Goldberg
* Click the "Export" link.
208 37 Jon Goldberg
* Do NOT import the Salsa name, it'll screw up Civi.
209 1 Jon Goldberg
210 35 Jon Goldberg
_Option Groups_
211 36 Jon Goldberg
These will be created automatically when you create custom fields.
212 35 Jon Goldberg
213 1 Jon Goldberg
_Custom Column Options_
214 33 Jon Goldberg
* Create a new report.
215
* Select the type of report you would like to create: Standard report
216
* Use "Advanced Object Chooser".
217
* Report "Custom Column Options".  Press "Save".
218
* Select the "Columns" tab and select your columns:
219 1 Jon Goldberg
> custom_column_KEY -> a lookup field (against civicrm_custom_field.filter to get option_group_id)
220 37 Jon Goldberg
> custom_column_option_KEY -> value
221
> value -> name
222 33 Jon Goldberg
> label -> label
223
> isDefault -> is_default
224
> isDisplayed -> is_active
225
> _Order -> weight
226
* Save, Run the report.
227
* Click the "Export" link.
228 7 Jon Goldberg
229 1 Jon Goldberg
h3. Receive_Email field
230
231 26 Jon Goldberg
Here's a TSV of how to interpret the "Receive_Email" field.
232
|*code*|*meaning*|
233
|-24|INACTIVE: (5.1.1 User Unknown)|
234
|-26|INACTIVE: Address contains RFC spec. invalid characters / is improperly formatted|
235
|-3|INACTIVE: UNSUBSCRIBED (actively unsubscribed by user)|
236
|-30|INACTIVE (Reported as Spam): Other Blacklist (BLACKLIST)|
237
|-32|(Unknown Status)|
238
|-35|INACTIVE (Reported as Spam): Outblaze|
239
|-4|(Unknown Status)|
240
|-42|INACTIVE (Recipient Initiated Spam Report): MSN/Hotmail/WebTV|
241
|-44|INACTIVE (Recipient Initiated Spam Report): UNTI (Juno/NetZero/FreeServers)|
242
|-45|INACTIVE (Recipient Initiated Spam Report): Yahoo|
243
|-46|INACTIVE (Recipient Initiated Spam Report): Comcast.net|
244
|-47|INACTIVE (Recipient Initiated Spam Report): AOL|
245
|-48|INACTIVE (Recipient Initiated Spam Report): RoadRunner|
246
|-50|ISP Specific Bounces: AIM.com Unactivated account|
247
|-51|INACTIVE (Recipient Initiated Spam Report): Excite|
248
|-52|INACTIVE (Reported as Spam): Earthlink|
249
|-53|(Unknown Status)|
250
|-54|(Unknown Status)|
251
|-60|Bad Address/Expired address, etc (n.b.: These addresses are all @democracyinaction.org)|
252
|-9|INACTIVE: DEATH (supporter has died)|
253
|0|0 - Inactive or Unknown(not subscribed)|
254
|1|1 - Imported or unknown (subscribed)|
255
|10|ACTIVE: CONFIRMED (Double opt-in)|
256 1 Jon Goldberg
|3|ACTIVE: CLIENT (Client has directly signed up)|
Go to top