Tag Archives: Constituent

The challenges of developing generic solutions for The Raiser’s Edge

We develop a number of different types of solutions that connect The Raiser’s Edge with third party applications. When this is done for one organisation the hardest challenge is getting the requirements to match the end user’s as closely as possible. However we also develop a lot for third party applications directly. Most recently we released Chimpegration but there have been many others that integrate many different areas of the application. With these clients the important point is not so much as to match one set of requirements exactly but to match as many requirements exactly!

I have yet to come across two organisations that have set up RE the same way. Sometimes the differences are small but sometimes they are very large. One recurring theme is that of phone/email types. The Raiser’s Edge seems to be relatively unique in its setup of these values. Not only are phones and emails stored in the same location but you can store them according to address type too. How does this match up with a third party web application that uses email address as a primary key? They may have one field for home phone, one for mobile and possibly one other. How do you get that tie in with the possibility of any combination of phone and email types? I have seen a whole plethora of regular phone types e.g.

Home
Business
Preferred
Home 1
Home 2
(etc)
Primary
Work
Company

Those are just the ones I can think of as I write this. And of course each of these could have a number after them.

Then of course there is the proliferation of email (or is it e-mail, etc) addresses.

What techniques do we use to overcome these issues? When we are working with a third party developer directly it is often in their interest to develop the configuration piece. This saves them a lot of development cost. This means that we simply say to them if you want us to update a phone number you need to tell us which type it is. This is then supplied in the file/webservice. Likewise when we supply that piece of data, we also send the phone type too.

Another solution is to build a configuration part to the application. This is what we did with Chimpegration. We allow the end user to map the fields that they want to synchronise so that they specify which fields on MailChimp map to the fields on The Raiser’s Edge.

The last solution is the least desirable. It is possible to simply say that the home phone number should be called “Home” and email address should be called “Email” – end of story. This is clearly the simplest and cheapest but unless you have a lot of sway over the organisations that you are selling to it is unlikely that you are going to get many buyers.

Phone and email types are perhaps the most obvious but what other issues can arise?

Where you are collecting business details, should these be added to an organisation or to a business address on the constituent record? Should you create a new constituent for the organisation? How can you be sure that it does not already exist in the system but under a slightly different name. One solution is to allow the end user to review the matches that have been made but this again adds to the development cost. It could also be prohibitive if the volume of data you are bringing in is large.

What about fields that do not have an obvious place in The Raiser’s Edge. One application that we worked with had an anniversary date. There is no such field in RE. We gave the end user the option to ignore the field, store it has the spouse relationship from date or store it as an attribute.

What happens if one organisation makes a field mandatory? When I work with an organisation directly I will ask them what mandatory fields they have set up on their system. If, as part of the process, I have to create a new constituent then I will ask them to give me a default value for that field. For a generic solution this has to be worked into the application configuration.

You can see much of this in action in Chimpegration where we account for mandatory fields and different combinations of phone types and emails. Check out the synchronisation screencast for a glimpse of this in action.

So all said and done is this type of solution to be avoided? Absolutely not! It is not cheap because of the extra work involved in making the application work for all types of organisations. When people complain about NetCommunity or Patron Edge integrating badly with The Raiser’s Edge hopefully this article will have given you some insight as to the skills required by Blackbaud in getting the integration to work well. (Update 15th Dec 2011: I should clarify that given the difficulty in developing generic solutions I actually believe that Blackbaud have done a good job with these integrations)

If you are a third party application wondering how to integrate with The Raiser’s Edge then speak so us. We are skilled at doing this and have done it a lot. We can either do it for your or we can share the development. When done well it is a great asset to your company and will bring Raiser’s Edge users to your application.

Checking Constituents for a NetCommunity Login

I have been developing some updates for The Mergician. There are some nice additions coming soon including clean up of duplicate attributes and appeals following the merge. However one item that has been added is the request to select a record as the primary constituent if it has a NetCommunity Login associated with it. Continue reading Checking Constituents for a NetCommunity Login

Globally Merge Constituents using The Mergician

If you did not get Zeidman Development’s newsletter (you can sign up here) then you would not have heard about our latest plug-in – The Mergician.  The Mergician allows you to merge constituent records en masse. Currently The Raiser’s Edge allows you to merge two records together. Built off of the same functionality, The Mergician allows you to merge all your duplicates in one process. Continue reading Globally Merge Constituents using The Mergician

Looking up a constituent

Whenever I write a bespoke customisation for a client that needs to look up a constituent based on some biographical information I normally use the functionality available behind the scenes in IDLookup. If you are unfamiliar with IDLookup, it allows users to feed in an Excel or CSV file of names, addresses, aliases, attributes and all sorts of biographical information. Then based on criteria that you define, it will look to see if one or more constituents already exist in The Raiser’s Edge. I use much of the look-up functionality in other projects simply because Blackbaud chose not to make this functionality easily available. There is no back-end interface to their regular constituent look-up screen which is a real shame. The nearest feature is the IBBRecordFinder interface.

Continue reading Looking up a constituent

How many unique IDs should a Raiser’s Edge Consituent have?

Normally when we look up at a Raiser’s Edge constituent we use a variety of identifiers to find the specific record we are looking for. It may be that we are using biographical data such as surname, first name and parts of their address. To find a one unique record we need to search by unique identifier. The most obvious that we think of is the constituent Id. This is the most common unique Id available to us on the constituent search screen. Of course there is the national insurance number (also known as social security number in the US), and the membership Id (for those with the optional Membership module).

Continue reading How many unique IDs should a Raiser’s Edge Consituent have?

Custom where clause with Relationships

Custom where clauses are  a great way of filtering the results of all the top object collections (where the method exists). However there are some pitfalls. One such pitfall can be found when you try to write sub selects to link to other tables. For example, say you want to find all the individual relation records that have the surname “Zeidman” and are spouses. You would write a sub select in the custom where clause as shown below:

 Continue reading Custom where clause with Relationships 

Small improvements that I like about Blackbaud Enterprise CRM

Blackbaud Enterprise CRM (eCRM or BBEC as it seems to be called interchangeably) is enormous. It is a big change to The Raiser’s Edge but then that is not surprising as it is not actually the replacement for The Raiser’s Edge 7. It is an application way beyond RE 7. Nevertheless you cannot help comparing the two as long as there is no RE8 to compare to. As a software developer it is a whole new paradigm. Of course even if you know how to develop software customisations for BBEC you still need to know how the program works from a user perspective. That is why I am not only learning a new development environment but I am learning a whole new program. Some of the concepts are very similar, some are different. As I learn I have come across some quite small changes that, for whatever reason, fill me with a “wow that’s great” feeling. These are not earth shattering improvements but just things that I am sure people will appreciate. So this post is dedicated to the small differences. Continue reading Small improvements that I like about Blackbaud Enterprise CRM

Download The Raiser’s Edge for Free…

Well that is what many visitors to this site and Zeidman.info (especially the downloads area) seem to think. When I look at my stats and see the various visitors to my site almost every day I get somebody who is looking for The Raiser’s Edge and looking to download it for free. What is surprising is that these requests, mainly via Google, come not only from US and UK but from all over the world. I really never knew that there was such interest in The Raiser’s Edge in such far away places as Latvia, Turkey, Australia, Iran, India, Bolivia, Pakistan and Thailand to name just a few. Of some of the more obscure searches that lead people to my sites include:

  • comparison convio netcommunity
  • force uninstall of Raiser’s Edge
  • where are the queries stored Raiser’s Edge
  • what is constituent in raisers edge
  • raisers edge more:for_techies
  • cannot open blackbaud management console SQL
  • and my favourite:

  • raiser’s window cleaner
  • And some more common ones…

  • cost of raiser’s Edge – alternatively:
  • cost of razors edge
  • learn raiser’s edge
  • Despite all this there are very many serious requests for information about The Raiser’s Edge API and it I am genuinely glad to have been of help.
    If you do want to some Blackbaud software for free why not try BlackbaudNow or ETapestry?

    Crash when Filtering on Missing Constituent Codes

    I wrote some code for a client a while back and tested it thoroughly and everything worked fine. There was somewhat of a delay before the client was due to implement it and when they ran the application it crashed at the beginning. After some investigation we worked out what was going on. The code gathered together a collection of constituents that had two constituent codes. Only now one of them was no longer in The Raiser’s Edge. Continue reading Crash when Filtering on Missing Constituent Codes

    When Loading All Does not Load a Constituent

    I wrote a recent customisation where I needed to start with an empty database with no constituents and put in a subset of records from my client’s database. I took the sample database and globally deleted all records. So far so good.

    Some code that I had written ages ago was going to be a part of this customisation and I ran it as part of a larger piece. The code would load all constituents (OK I forgot that I did not have any) and select the first one. This is a really simple task but I got some strange results.

    Continue reading When Loading All Does not Load a Constituent