Music Nova Scotia - how we turned one spreadsheet into a relational membership database

Published
2014-10-21 08:17
Written by
(adapted from “Jumping to Civi Under The Gun”, CiviCon 2014 presentation)
 
Music Nova Scotia is a non-profit organization that has worked since 1989 with a mandate to encourage the creation, development, growth and promotion of Nova Scotia’s music industry. Music Nova Scotia exists to grow and nurture the Nova Scotia music industry, to retain our own natural resource and promote investment, by:
 
Providing education, information and resources to our membership
Acting as the advocate for the industry to all levels of government and private enterprise
Supporting membership in the promotion of the export of Nova Scotia music regionally, nationally and internationally. 
 
Membership is mainly made up of Nova Scotians but some join us from other regions of the East Coast as well as across Canada. We are songwriters, musicians, agents, managers, promoters, distributors, photographers, associations, lawyers, accountants and other industry professionals.
 
The organization has roughly 1200 individual members, each of which belongs to 650 or so projects, be it a solo artist, band, publicist, booking agent, what have you. Memberships are attached to projects; individual members inherit membership privileges by belonging to a group. 
 
Music Nova Scotia’s website was a proprietary, clunky mess when I first came on board with them in January 2012. The site development had run well over-budget and taken over two years to deliver, and the end result was dated and difficult to work with, and was based on the development contractor’s own, custom ASP-driven CMS. 
 
Even basic content management tasks were difficult, and we regularly needed to call the contractor to fix bugs they’d introduced. Server costs were high as we were married to the custom CMS and its creators, and hence to their servers as well. 
 
I had been hired to maintain and perhaps re-skin the existing site, but it quickly became clear to me that it needed to be replaced entirely. Over the next 12 months I researched CMS and CRM systems until I settled on CiviCRM as the right CRM for our use-case and budget. I did a quick test build in Joomla in December of 2012 but didn’t like the CMS (clarify CMS and CRM), so in January of 2013 we rented space on a server with CiviHosting and started development work on a Drupal platform instead at CiviHosting’s urging. 
 
Once I settled on Drupal/CiviCRM, the primary challenges were getting the site complete quickly, and migrating our members into the new site without having access to the data from the old one. Lucky for us, our membership coordinator had been maintaining a separate, parallel membership spreadsheet in addition to the website membership database. It was never intended as the core membership database and was rife with data entry errors and duplication, but it was better than nothing. 
 
The data in the spreadsheet had flaws, but the info we needed was mostly there. The shortcoming was that each group or project that held a membership with MNS had an online profile with music, a bio, a photo, events, news, and social media links, none of which were represented in the spreadsheet. Member projects would need to rebuild their profiles nearly from scratch, which of course was not ideal, but it would have to suffice, as we had no other option. 
 
After considerable massaging, I was able to produce spreadsheets based on the original one that represented our memberships, organizations, and individual contacts. CiviCRM’s data import strengths were critical at this point, allowing me to take our very basic, single-page membership spreadsheet and adapt it to CiviCRM’s relational database structure. 
 
In terms of the data model, our members’ projects became Organization Contacts in Civi, and the individual members of those projects became Individual Contacts. I derived spreadsheets from the original one that represent both of those data types, and was able to upload them and create relationships between organizations and individuals, and give the organizations their memberships 
 
Certain parts of the site needed to be members-only; CiviMember Roles Sync would become critical in accomplishing this. I set up rules to give everyone with a valid membership a “member” Drupal ACL Role, and made access to some parts of the site conditional on that role, partially with the Drupal API and PHP Views, and partially with various access-control modules. 
 
The next major challenge was that each Individual can be an “Employee Of ” multiple Organizations (projects), each of which has a profile, new, events etc. This was a step forward for us; the old site had one login per project, not per individual, so if one person was in 8 bands, the had 8 username/password combinations to keep track of. The new system allowed each individual member to have one account with which to access all the Projects to which they belong, but this introduced more complexity that had to be coded for. 
 
We certainly have no regrets about deploying CiviCRM as our membership management system; it has delivered on everything that we knew we needed in a website and membership system, and some things that we didn’t. The support from the Civi community has been outstanding and has helped us through some difficult challenges in the development and maintenance of the site. It was a pleasure to meet and interact with the core Civi team at this year’s CiviCon, and I look forward to participating further in this awesome community.