We are a group of users of Blackbaud products and are not affiliated with Blackbaud. We'd love to have you join our community to help and be helped in getting the most from your Blackbaud software.
Register now to join us to get independant advice on your system, connect with 3rd party consultants to help you maximize your database and have a real alternative to the official Blackbaud website.
using the raiser's edge api for integration w/ a web app
ok so forgive me if this is ground that's already been covered. i'm getting in to a project with an organization that's using raiser's edge. i've been told that raiser's edge has an api, but i'm having a lot of difficulty finding the documentation and/or sample code to use.
the app that i'm working on is basically a php/mySQL eCommerce app. ideally we'd love to have it be able to talk to the raiser's edge database to query if someone is a member, what is their member status, etc.
my understanding thus far is that while raiser's edge's api has full support for microsoft languages (.NET/COM/VB), support for opensource languages (ruby/php/python) is limited at best and the most i can hope for is the ability to connect to the organization's raiser's edge database via xml and make a query ...in other words, read, not write.
which is fine with me, but
a) i can't find the raiser's edge api documentation anywhere (not in the manuals for raiser's edge or on their site... am i looking in the wrong place?)
b) does anyone have any code examples for raiser's edge api integration using php? i'd love to be able to see what's possible, what's not possible, how other folks have integrated raiser's edge with opensource languages, or used it to extend shopping cart apps, or other web-based apps.
i belong to a skilled and experienced web dev. team. we're not not knowledgeable about raiser's edge and would LOVE some guidance. thanks!
Try these two to start out The Raiser's Edge Object MetaViewer - Sweet little utility file that comes with RE that can help you de-code the API. It's typically located here "C:\Program Files\Blackbaud\The Raisers Edge 7\Help\REMetaView.exe"
The Raiser's Edge API Help Files - There are two pretty good API CHM files that cover the API in some detail. They are located here;
"C:\Program Files\Blackbaud\The Raisers Edge 7\Help\RESolutions.chm"
"C:\Program Files\Blackbaud\The Raisers Edge 7\Help\reapi.chm"
I don't know of anyone doing RE w/ PHP but that doesn't mean there aren't any. hopefully someone chimes in on that point.
I have been doing work with Raiser's Edge and PHP for the last year. If you've got a good grasp of PHP so I can offer some advice here.
If all you want to do is read information from the database, you don't technically need the API. The terms of service for Raiser's Edge and the API seem to say that as long as you are not changing the information in the database you can work directly with the database. It should be noted that none of this is supported or even recommended by Blackbaud and you won't be able to get any help from them in the development of your web app, but there are plenty of resources, like this forum and the API documentation, that can help you work things out.
There are two ways to connect to the database using PHP, one is through a direct ODBC connection. This requires more knowledge on your part, but I if you are very tech savvy I would recommend it for reading information. I have setup a SQL Server login for my programs that is read-only, so even if I wanted to write information I couldn't.
The other way is to connect to the API using PHP's COM class. The biggest issue here is that it only works on Windows boxes but it will work with either Apache or IIS. You will need to translate some of the commands and keywords to make them work with PHP. I am including a code sample below for how to connect to the API in PHP and pull a basic field from a constit record. It should give you an idea of how the API translates to PHP. There are many others here with a significantly better grasp of the API than I so they can guide in any other problems you run into.
If you just need to read from the DB, why bother with the API at all? Seems like a lot of extra trouble (and expense) to me... including the use of an extra RE user license. If it's at all possible to get the info you need by just reading the DB, I would definitely recommend that route.
If you just need to read from the DB, why bother with the API at all? Seems like a lot of extra trouble (and expense) to me... including the use of an extra RE user license. If it's at all possible to get the info you need by just reading the DB, I would definitely recommend that route.
Normally you are ok reading right from the DB with SQL. I have done this and I have had problems when the schema of the DB changes which does happen on occasion.
If you are a hosted client u don't have the option of direct access to the DB
Though very rare (big ups to BB folks for that), breaking changes can occur in the API as well as the DB schema, though I'll grant it's much less frequent for the API than the DB schema. Still... creating an API app just to read some membership values? I don't know that that alone would justify the purchase of the API (though maybe they are using it for different things and this is just a bonus, who knows?). From a cost perspective (not even counting the API license cost), I still think the direct DB read approach would win. Either way, they'll need to be dilligent on testing their upgrades. Anyway, that's just my take based on the OP's description of the situation.
If they are a hosted client, how will their ecommerce PHP webapp access their API?
Another place to access the API documentation is in RE under Help --> RE:VBA/API Help. If you don't see that option, that may mean that your organization has not unlocked the API module.
Good luck, I look forward to hearing more about your project!
but we cannot seem to figure out why my webservice will work just fine on the local machine, and php consumes it just fine if I point it to my local published service,
but as soon as I send it to the version published on our webserver it crashes and dies....
If you have any questions about how I wrote the webservice feel free to send me an email