If you recognise the title of this post then I was inspired by a BlackbaudKnowHow article of a similar name. In that article the author describes the differences between the three terms and how they relate to Blackbaud Enterprise CRM. This is a good overview and works well for Blackbaud Enterprise CRM. However it breaks down when talking about The Raiser’s Edge 7.
In The Raiser’s Edge 7 there are customisations, there is an API but there is never any talk about an SDK. For RE7 the API and SDK have merged to form one kind of confusion that is “The API”. When you combine this with using “VBA” things can get even more confused. In my opinion Blackbaud made a big mistake in not distinguishing between these terms.
VBA or Visual Basic for Applications could be classed as part of the SDK. It is an environment that contains a wizard which helps you set up the implementation needed to hook into various events such as on saving or deleting a record. The VBA environment requires little setup as it can be accessed from within The Raiser’s Edge application or as a separate standalone application outside (RE7VBA.exe). When you work in an environment for creating other customisations such as plug-ins or standalone applications, you would typically use Visual Studio (VB6, VB.NET or C# flavours). By adding references you have access to the API but also to other tools such as some of the controls that RE7 itself uses (albeit only for a non-.net environment). RE7 ships with a help file outlining the API object model and gives some examples of how it is used. These tools do constitute an SDK but Blackbaud have never described them or packaged them as such.
Rounding off all this confusion is the way in which Blackbaud sells these modules. You can purchase RE:VBA and you can purchase RE:API. In both cases you use the API but equally you need not purchase either to use the API.
Blackbaud seem to have got it right for their Infinity platform, distinguishing between customisations, SDK and API. For the rest of us RE7 users, we will just muddle on through.