Table of Contents

Technical Discovery

Establishing Default Behavior

Test to see who receives a Membership Scheduled Reminder out-of-the-box on Org memberships that have "by relationship" memberships that are conferred to individuals

  • Doing a Search > Find Members for all three Chorus membership types returns a list with both Org and Individual contact types
  • Inspecting an individual contact type record shows the membership is "by relationship"
  • Set the expiry date of the Valley Chamber Chorale's membership to today's date, observe that the conferred memberships also update.
  • Adding "End date == today" to my initial search shows me 9 results, and since this org's membership has 8 conferred memberships showing on it this makes sense.
  • Set up a Chorus Member (on expiry date) scheduled reminder for day-of expiration with a bunch of tokens in it (detailed below) and no recipient limitations
  • Checked config on mail sending, ensured it's redirecting to the Db (it is, and viewable by the Stored Email Viewer) -- deleted all the entries so we can just see our new stuff
  • Fired the Scheduled Reminders sender scheduled job.
  • Reminders were sent to 8/9 contacts in this list. A "Membership Renewal Reminder" activity was recorded on each of those 9 contacts. The contact who did not recieve an email also did not get an activity recorded on their contact record. Not sure why his didn't send?
  • Fired the Scheduled Reminders sender scheduled job again to see if it would send duplicate emails: it does not.

Conclusion: Scheduled Reminders supports sending to multiple contacts for an organization for Chorus America's use case, since organizational memberships conferred "by relationship" are recorded on the Individual's contact record. The next test will see if we can limit the contacts who receive the reminder based on relationship. The theory is that limiting the send to a group of contacts who have a "Primary contact for" relationship will do the trick.

To-do: Ensure that limiting the email send to a Smart Group comprised of contacts with a particular relationship ("Primary Contact for" in this case) effectively does what we want it to.

Establish we can target contacts by Relationship

Test to limit who receives a Membership Scheduled Reminder on Org memberships that have "by relationship" memberships that are conferred to individuals

  • It appears the group "Primary contact for active member choruses" is a Smart group that includes all of the Primary contact for individual contact records
  • The Choral Arts Society of Washington has a chorus membership which is expiring today (2/18/2019) and has relationships with 110 other contacts. But only one (1) of those is Primary Contact: Mr. Tad Czyzewski
  • Doing a Search > Find Members for all three Chorus membership types and expiry date == today (2/18/2019) returns 36 results, and a quick spot-check indicates they are all for the Choral Arts Society of Washington.
  • Reconfigured the Chorus Member (on expiry date) scheduled reminder to limit to the group "Primary contact for active member choruses". Expectation is that only the single Primary Contact for this chorus will recieve an email reminder.
  • Rechecked mail sending config, deleted entries in the Stored Email Viewer.
  • Fired the Scheduled Reminders sender scheduled job.
  • A reminder email was only sent to Tad, who is the Primary contact for the Choral Arts Society of Washington.

Conclusion: Scheduled Reminders supports targeting an organization membership reminder email to specific contacts who A. have a "by relationship" membership conferred from the Primary membership holder and B. have a specific CiviCRM Relationship with that organization.

Tokens used in our test Scheduled Reminder

  • Activity | Activity Date: {activity.activity_date_time}
  • Activity | Details: {activity.details}
  • Activity | Activity ID: {activity.activity_id}
  • Activity | Subject: {activity.subject}
  • Contact | Address Name: {contact.address_name}
  • Contact | City: {contact.city}
  • Contact | Country: {contact.country}
  • Contact | Street Adress: {contact.street_address}
  • Contact | Contact Type: {contact.contact_type}
  • Contact |Display Name: {contact.display_name}
  • Membership | End Date: {membership.end_date}
  • Membership | Fee: {membership.fee}
  • Membership | Membership ID: {membership.id}
  • Membership | Join Date: {membership.join_date}
  • Membership | Start Date: {membership.start_date}
  • Membership | Status: {membership.status}
  • Membership | Type: {membership.type}
  • Summary Fields | Amount of Last Membership Payment: {contact.custom_227}
  • Summary Fields | Date of Last Membership Payment: {contact.custom_226}
  • Member Appeal Code: {contribution.custom_82}
  • Prospect Mail Code: {contact.custom_58}
  • Contact | Current Employer: {contact.current_employer}

Observations: Any information in a Contact token is populated based on the contact the reminder is sent to. Summary fields aren't populated for the individuals, only the org itself i.e. they're blank on emails sent to individuals. Nothing shows in Activity tokens for anyone. The Membership tokens are also populated based on the contact the mail is being sent to, but all the info populated is "correct" (i.e. the same as the org's info) except for the Membership ID. I didn't think of trying the {contact.current_employer} token.

Using Fuzion Tokens

  • Installed the nz.co.fuzion.civitoken extension
  • On the config page of the extension enabled the following tokens:
    • Relationship: Has a Primary Contact : Name of first contact found
    • Relationship: Has a Primary Contact : First Name of first contact found
    • Relationship: Has a Primary Contact : Last Name of first contact found
    • Relationship: Has a Primary Contact : Phone of first contact found
    • Relationship: Has a Primary Contact : Email of first contact found
    • Relationship: Has a Primary Contact : ID of first contact found
  • Changed the expiry date of the Woodstock Community Choir membership from 2/20/2019 to 2/19/2019 (today)
  • Set up the reminder with the following text:
Hello {contact.display_name},

The {membership.type} membership for {relationships.display_name_32_a_b} expired on {membership.end_date}. Please visit your Organizational Dashboard using the link below to update your chorus's information and renew the membership.

https://www.chorusamerica.org/civicrm/orgdash/#/{relationships.id_32_a_b}

Last fee paid: {membership.fee}

Cheers,
The Chorus America Membership Staff

Relationship: Has a Primary Contact : Name of first contact found : {relationships.display_name_32_a_b}
Relationship: Has a Primary Contact : First Name of first contact found : {relationships.first_name_32_a_b}
Relationship: Has a Primary Contact : Last Name of first contact found : {relationships.last_name_32_a_b}
Relationship: Has a Primary Contact : Phone of first contact found : {relationships.phone_32_a_b}
Relationship: Has a Primary Contact : Email of first contact found : {relationships.email_32_a_b}
Relationship: Has a Primary Contact : ID of first contact found : {relationships.id_32_a_b}
Hello Mrs. Cassandra Vohs-Demann, 

The Chorus Member (budgets up to $87,499) membership for Woodstock
Community Choir expired on February 19th, 2019. Please visit your
Organizational Dashboard using the link below to update your chorus's
information and renew the membership. 

https://www.chorusamerica.org/civicrm/orgdash/#/50230 [1] 

Last fee paid: 150.000000000 

Cheers,
The Chorus America Membership Staff 

RELATIONSHIP: HAS A PRIMARY CONTACT : NAME OF FIRST CONTACT FOUND :
Woodstock Community Choir 
RELATIONSHIP: HAS A PRIMARY CONTACT : FIRST NAME OF FIRST CONTACT FOUND : 
RELATIONSHIP: HAS A PRIMARY CONTACT : LAST NAME OF FIRST CONTACT FOUND :  
RELATIONSHIP: HAS A PRIMARY CONTACT : PHONE OF FIRST CONTACT FOUND
: 8157012941 
RELATIONSHIP: HAS A PRIMARY CONTACT : EMAIL OF FIRST CONTACT FOUND
: woodstockcommunitychoir@gmail.com 
RELATIONSHIP: HAS A PRIMARY CONTACT : ID OF FIRST CONTACT FOUND : 50230

Links:
------
[1] https://www.chorusamerica.org/civicrm/orgdash/#/50230

Conclusion: The Fuzion relationship token works for the purpose of displaying the org’s name in a reminder email to the Primary Contact for that org. We'll need to see if the price format can be adjusted with an output filter to not display so many zeros, otherwise this is a pretty good low cost option for org reminder emails.

Concern: the token gets the first related contact info for that relationship. So what happens if the contact receiving the email is Primary Contact for more than one org? A token that traverses to the Primary Membership would be more stable/reliable.

Hello {contact.display_name},

The {membership.type} membership for {primarymembership.contact_display_name} expired on {membership.end_date}. Please visit your Organizational Dashboard using the link below to update your chorus's information and renew the membership.

https://www.chorusamerica.org/civicrm/orgdash/#/{relationships.id_32_a_b}

Last fee paid: {membership.fee}

Cheers,
The Chorus America Membership Staff

Primary Membership ID: {primarymembership.id}
Primary Membership Contact ID: {primarymembership.contact_id}
Primary Membership Contact Display name: {primarymembership.contact_display_name}
Primary Membership Contact Address Block: {primarymembership.contact_address_block}
Primary Membership Contact Phone: {primarymembership.contact_phone}
Primary Membership Contact Email: {primarymembership.contact_email}
  • Rechecked mail sending config, deleted entries in the Stored Email Viewer.
  • Fired the Scheduled Reminders sender scheduled job.
  • A reminder email was sent to the appropriate contacts with the content:
Hello Lauren Fahey, 

The Chorus Member (budget of $87,500 - $999,999) membership for Dedham
Choral Society, Inc. expired on March 12th, 2019. Please visit your
Organizational Dashboard using the link below to update your chorus's
information and renew the membership. 

https://www.chorusamerica.org/civicrm/orgdash/#/20226 [1] 

Last fee paid: 

Cheers,
The Chorus America Membership Staff 

PRIMARY MEMBERSHIP ID: 24862
PRIMARY MEMBERSHIP CONTACT ID: 20226
PRIMARY MEMBERSHIP CONTACT DISPLAY NAME: Dedham Choral Society, Inc.
PRIMARY MEMBERSHIP CONTACT ADDRESS BLOCK: P.O. Box 1338 Dedham, MA 02027
PRIMARY MEMBERSHIP CONTACT PHONE: 617-253-4669
PRIMARY MEMBERSHIP CONTACT EMAIL: info@dedhamchoral.org

Links:
------
[1] https://www.chorusamerica.org/civicrm/orgdash/#/20226

Conclusion: Works like a champ. Note that I forgot to update the link to the Org Dashboard to use the new primarymembership.contact_id token, but the correct population of that token evidenced below the signature indicates it'll work to create links to the Org Dash. Ready for prime time!


Updated: 3-12-2019