NEC Website Documentation


CiviCRM is the "constituent relationship management system" that handles databases for

  • Contacts
  • Contributions
  • Events
  • Membership
  • Importing Data

Read the CiviCRM manual here.


Drupal is the content-management system that runs this site.  See the Drupal documentation here.


Site backups involve several processes:

  1. The site database is backed up daily, compressed in an archive, and sent via email to <[email protected]>.  The daily compressed archive is between 10 and 11 MB.  The scripts that do this live in the /home/yournec/scripts directory.  The script is invoked each day as a cron job. It creates the backup file then runs the script to send it via email.  (Cron jobs are managed via the Dreamhost control panel.)
  2. Files on the site are backed up occasionally.  We need to be more regular about this.  Andy keeps an entire site backup, except for new images and files stored in the /home/yournec/ directory.  That directory should be put on an automated backup script.
  3. A complete site backup, including mailboxes and all settings, can be done from the control panel at -- but only once every 30 days, and the process cannot be automated.  This is a potential weak spot in information security, and should be addressed.
  4. Email backup is up to individual users, thus much of the NEC's "corporate" email is at risk of loss unless some sort of archival routine is set up and followed.


In this section is documentation for using CiviCRM at the NEC in ways that are not well covered in the CiviCRM manual. 

EcoNews mailing list

The EcoNews mailing list is a smart group made up of several groups:

  • NEC current members (smart group)
  • NEC life members (smart group)
  • Audubon members (smart group)
  • CNPS members (smart group)
  • FDN members (smart group)

Then from the combination of these groups, any marked "do not mail" in the contact preferences are excluded.

Importing Data

Records from the NEC Complete Members database and the NEC Income Files database were imported to CiviCRM during June, 2010 by Andy Alm (me).

I hit a limit the number of records that can be imported at one time, about 500 or fewer, due to CiviCRM or Dreamhost (or both, in combination).  So all the data that was exported from filemaker to comma-separated values (CSV) had to be broken up into chunks.

Importing contacts

Importing contacts was difficult.  Individuals and organizations had to be imported separately, so first I had to identify which was which.  When both an individual and an organization were in the same record, I needed to import once for the person and once for the organization. These still need work to join the individuals with their organizations.

City and state were all stored in one field in Filemaker, so I had to figure out how to separate them. Some of this could be automated, some was grisly handwork, but it got done.

International and first-class mailings still need atttention.
I didn't even deal with bulk bundles; those will need their own database.

Errors on importing contacts were saved to an Excel file, attached:


Importing contributions

Donations were a simple and fast import, since all that was required was the date, MemberID, amount, and donation type.

Errors on import were saved to an Excel file:


I think there is another database containing rebuild-it fund donations that I do not have, so these are not imported yet.

Importing memberships

Memberships had to be imported first as membership records, then separately as contribution records (the payment associated with the membership).  This is due to the way CiviCRM treats memberships separately from contributions (money transactions).

The CSV data was broken up into 10 files with roughly 500 records apiece for importing. each file was imported twice (once to CiviMember and once to CiviContribute).

Errors on import were saved to Excel files:


Most of the errors on importing member records fell in two categories:

Memberships/membership contributions for which there was no matching contact in the CiviCRM database (matched based on NEC MemberID field).

Memberships/membership contributions for in which the matching contact is an organization, not an individual.

The 517 LIFE members did not necessarily have contributions associated with their memberships, nor is there necessarily any record of when they became life members.  So I imported these separately.  This may result in some folks having -two- life memberships, and being counted twice, so they should be checked. Where there was a date in the First Entered field, I used it.  Otherwise, I used 1/1/2010.

Mail Merge

CiviCRM will produce a list of contacts, with associated data, to use in a custom form letter.

First, use your favorite search method to generate the list of contacts (people) you want to send letters to.  Contributions: Find Contributions is a good example. 

With the results, from the "actions" drop-down menu, you can select "Export Contributions" or "Print or Email Contribution Receipts."  The ""option lets you produce PDF receipts directly from CiviCRM.  Use "Export Contributions" if you want the greater control you'll get using mail-merge in Microsoft Word.

" or "" depending on whether the primary fields give you all the data you want to include in your letter.

Here is a good tutorial for creating a form letter in Microsoft Word, and merging your exported data:

Managing Member Groups

NEC member group members are identified in two ways:

  1. via Drupal's "groups"
  2. as yes/no fields with radio button widgets

You'll see a radio buttons in the "NEC member info" section for Sierra Club, but selecting "Yes" does not automatically put the contact in the Sierra Club group.

Groups are separate from fields.  Eventally, we should convert all the field information in the "NEC member info" section to groups, then eliminate those fields.  CiviCRM will perform faster with fewer custom fields.

You can search now in the member organization fields using radio buttons for "yes" or "no".  The data is actually stored as 1 and 0.  Use the "Find Contacts - Advanced Search" option.

The results of any search can be added to a group.

Current groups are
  • Audubon
  • CNPS
  • FDN
  • Sierra Club
  • Sierra Club ECONEWS

Smart Groups

"Smart groups" in CiviCRM do not permanently assign contacts to groups. Instead they define criteria (all the major donors living in Trinidad  tagged "vegan" and "interested in salmon"). The members of a smart group automatically change if any of the criteria are changed.

Directions for creating a smart group are at <>.

Updating Membership Status

The CiviMember UpdateMembershipRecord.php script updates membership statuses and optionally sends renewal reminders.  Emailed renewal reminders are currently disabled.  To enable them, edit /home/ and uncomment the lines starting at about 226.  Also CiviCRM needs to be configured to know where the Drupal users table is, via civicrm >> administer >> configure >> global settings >> cms integration.

The script can be run manually via the following URL, but it's also set as a cron job to run once a day. (Manage cron jobs via

Notice that this URL includes a login ID, password and a site key.  The 'memberadmin' ID belongs to the 'memberadmin' group that has very limited permissions... only enough to run this script.  So that's all that this ID is used for.


Other CiviCRM command-line scripts are listed here:


Drupal is the "content management system" (CMS) used to maintain all content and appearance in the NEC website.  Drupal provides various functionality to the site (adding and editing pages or stories, managing images and other media, forums linked to mailing lists, user identity and permissions, etc).  Functions are provided, as needed, by adding modules to Drupal.  CiviCRM is added to Drupal as a module.

To-Do List


This is a list of outstanding tasks for the NEC web site.  Mark them done when they are completed, and move them to the bottom. Add new items at the top.