Save the Children Australia
Raiser’s Edge
Examples using the VBA Module
John Bertsias
Marketing Database Manager
Why Save the Children Australia (SCA) decided
to purchase the VBA Module.
Two main factors
• Data quality (Garbage in – Garbage out)
• Having greater flexibility to custom Raiser‟s Edge to meet our ever growing
organisational needs.
VBA code at the Constituent Bio level
What we require…
IF (donor has a Title1=“Mr”) AND (donor Gender is set to “Female” OR
“Unknown”) THEN
Alert and Change(?) to “Male”
ENDIF
IF (donor has a Title1={“Miss”, ”Ms”, ”Mrs”) AND (donor Gender is set to
“Male” OR “Unknown”) THEN
Alert and Change(?) to “Female”
ENDIF
Issue: Raiser‟s Edge does not check Title1 against Gender to make sure its
logical.
If a user tried to SAVE this donor record, the following message would
appear…
If a user selects the “OK” button, the VBA code would change the gender to
MALE.
If the user selects the “Cancel” button the VBA code will CANCEL the SAVE
& CLOSE request.
VBA code at the Constituent Address level
Issue: Raiser‟s Edge does not check the address before SAVE & CLOSE.
What we require is…
Check the donors address against QAS (Auspost).
IF (QAS check < 97% confidence) THEN
Have the user verify suggestions from QAS
IF user chooses to bypass QAS suggestions THEN
Ask for reason – save this as an address attribute to follow-up
ENDIF
ENDIF
IF (QAS check >=97%) OR (user verified address) THEN
CHECK for Has no valid address tickbox and inquire.
Add MOSIAC Address Attribute (create new Attr is required)
Add GPS longitude Address Attribute (create new Attr is required)
…
ENDIF
If a user tries to bypass the QAS suggestion box, the following form will be
displayed - asking for reason why…
If a good match is made the following data is added/ edited into the Address
Attribute tab of the preferred address.
One important final check is made…
VBA code at the Constituent Address Phone level
Issue: Raiser‟s Edge does not check whether the phone number matches
the phone type.
What we require is…
Check the donors Home and Mobile number against telephone numbering
format, the email address against a typical email format…
IF (Phone type is “Home” <> {“02”, “03”, “07”…}) OR
((Phone number < 10 digits) AND (Phone number >0 digits)) THEN
User to verify with the donor.
ENDIF
IF (Phone type is “Mobile” <> {“04}) OR
((Phone number < 10 digits) AND (Phone number >0 digits)) THEN
User to verify with the donor.
ENDIF
IF (Phone type is “E-mail” <> CONTAIN {“@”, ”.”}) THEN
User to verify with the donor.
ENDIF
We can see the home number entered is not correct (as a Home type)…
If the user tries to SAVE & CLOSE the donor record the following is displayed…
We can see the mobile number entered is not correct…
If the user tries to SAVE & CLOSE the donor record the following is displayed…
We can see the email address entered is not correct…
If the user tries to SAVE & CLOSE the donor record the following is displayed…
One final note on Phone types, the following is displayed when a constituent
record is opened (if required).
VBA code at the Constituent Gift (&Attribute) level
Issue: Raiser‟s Edge cannot check process requirements of an organisation.
What we require (not an exhaustive list)…
If a recurring gift has a „Pending Transaction‟ – CANCEL the save request.
If a recurring gift has a “Completed” status – CANCEL the save request.
If an ACTIVE recurring gift has a next transaction date in the past – CANCEL the
save request.
If an ACTIVE recurring gift has a Direct Debit pay method and the Reference
number field is BLANK – CANCEL the save request.
If an ACTIVE recurring gift does not have the EFT tick-box ticked – CANCEL the
save request.
If any particular Gift Attribute of interest is missing either a Description or the Date
– CANCEL the save request.
If the user tries to SAVE & CLOSE the gift record the following are displayed…
One final note on (Gift) Attributes, you can also add the user who entered the
attribute for record auditing in the Comment column.
Practical example: Outbound calls (using Actions)
The requirement:
1. Outbound Team to be able to identify donors requiring a call, the number of
attempts already made, data time of last call attempt, and who made the last
attempt.
2. Record all call attempts - date time, outcome, and solicitor.
3. Based on the last call outcome, check if the Action should be set to “Completed”
or “Not Completed”.
4. If some sufficient time has elapsed- “Complete” the Action, unless it‟s a “Call back”
outcome – normally 2 weeks from Action date but may vary (self-completing).
5. All the correct Action Attributes have been set for each call type.
6. If more than 3 uncontactable outcomes in a row, “Complete” the Action, unless the
donor has previously requested a call back.
7. If not enough time has elapsed between each call, do not treat as a new call
attempts.
Solution…
Write lots of VBA code or ask for help.
Possible error/ information messages…
Fun Example: Queries
The Data Analyst in your team hands over a list of 10,000 (random) donors IDs (from
Raiser‟s Edge) which they would like to use as the universe for the next segment
mail run using Mail->Quick Letters.
Question: How do you create a
query for all those donors
WITHOUT using a flag?
Answer: Use the a Static Query
Uploader using VBA.
Last Example: Cost centres
Issue: Save the Children uses a 10 segment General Ledger code to track its
income and expenditure.
It is not immediately obvious from a gift record what the cost centre is.
Information is stored within the Campaign, Fund, Appeal, Constituent and Gift levels
Solution: Use VBA coding to collate all this information for the user.
Questions?