Category Archives: Advanced

Creating a Donation Form through SKY API into Raiser’s Edge NXT – Part 3 (Server back end)

This follows on from the second part of my guide to creating a donation from through SKY API…

The source code for this and the other parts of this series is available on Github.

In this part we are going to actually doing something with the donor details and their credit card.

We are using .NET on our server. You could use any language to do this but I am mostly familiar with working with .NET. I am going to assume here that you are either familiar with .NET or you are able to translate the concepts into your own language.

I created a new project in Visual Studio 2017. I chose an ASP.NET Web Application and selected the WebAPI option without authentication.  I added a new controller to my project – “Web API 2 Controller – Empty” called DonationController.

Continue reading Creating a Donation Form through SKY API into Raiser’s Edge NXT – Part 3 (Server back end)

Creating a Donation Form through SKY API into Raiser’s Edge NXT – Part 2 (Web front end)

This follows on from the first part of my guide to creating a donation from through SKY API…

The source code for this and the other parts of this series is available on Github.

Now we are going to focus on the web page that captures the donation.

We are going to show the minimum here. You will want to include data validation to ensure that the incoming data is valid. You will also want some form of security to ensure that you don’t end up sending a lot of spam into your Raiser’s Edge.

On this page we are making use of some simple html, some javascript and the Stripe Checkout API which makes an easy and PCI compliant way of capturing a credit card.

OK, Let’s begin!

Continue reading Creating a Donation Form through SKY API into Raiser’s Edge NXT – Part 2 (Web front end)

Creating a Donation Form through SKY API into Raiser’s Edge NXT – Part 1 (Overview)

This post is in response to a thread on the Raiser’s Edge User Group Support Forum on Facebook. If you are not already a member then I can highly recommend it. There are some very talented individuals there who have been using Raiser’s Edge for a long time and have a wealth of experience!

The question asked was whether anybody had created a donation form on a website which would capture information and send it through to RE NXT.

There are a number of different possibilities here. You could create a complex web application that captures donations like ones that are already commercially available e.g. Classy, Crowdrise, OneCause, FunRaise, 4AGoodCause, WeDidIt, MobileCause, FundRazr, etc to name a few to name the ones that Importacular currently integrates with. From an end user perspective these have a lot of functionality that makes donating an easier experience.

Continue reading Creating a Donation Form through SKY API into Raiser’s Edge NXT – Part 1 (Overview)

Just When You Thought Validatrix Could Not Get More Complicated…

One of the problems of offering a tool that can create custom business rules for almost any scenario is that it has to have a lot of functionality. As we developed Validatrix we realised that some of that functionality was missing so we added it on. The problem with that of course is that the more you add on the more complicated the application becomes.

We have attempted to remedy this by offering the Validatrix Query Converter which does a good job of converting queries into rules and is often a good starting point for expanding a rule further.

We realised that we had missed out on a piece of functionality that was preventing us from creating a rule with a specific scenario. It is possible to all sorts of logic within one rule. We can check if a field value is exactly the same as another, if it is not the same as if it is greater than or less than etc. Continue reading Just When You Thought Validatrix Could Not Get More Complicated…

Overcoming the password update policy for custom Raiser’s Edge applications

A recent question on the Blackbaud forums got me thinking about this problem. The issue is this. If an organisation has a password policy in RE in place that ensures that users have to update their password every X days, what happens to a custom application that runs every day in order to perform some maintenance / export / import etc.? It is also required to update its password. This is somewhat problematic because most scheduled tasks are just meant to be run and more or less forgotten about.

The obvious solution is to turn off this functionality. However you are only able to do this for the whole organisation which is problematic.  Another solution is to use Windows authentication to log into RE. That way it is Windows that decides the password policy. This is also not always possible.

Here is a third, programmatic way of doing this. You need to make use of the “other” API. I have mentioned this previously in Checking Security. You need to make use of the  Blackbaud.PIA.RE7.SecData7 assembly. This gives you access to the security objects that are not present in BBREAPI.

You set up a database table with three columns; a primary key id, a password and an expiration date. You then fill the password column with a list of passwords that could be used.

On starting the application you select from the table the password with the most recent expiration date (which may be in the future). You use this to log into RE using the usual code. Once that is done you determine whether or not you need to change the password. If the expiration date is in the past then you should change the password using the code below. The new password should be the next password in the table that has a blank expiration date and lowest id.

Dim user As New CUser
user.Init(SessionContext)
user.Load(SessionContext.CurrentUserID)
user.Fields(Blackbaud.PIA.RE7.BBInterfaces.EUSERFields.USER_fld_PASSWORD)

You then set a new expiration date on this password. This expiration date should be a good few days before the actual date you are required to change the password that way the existing password will still be good.

If there are no passwords left in the table you can remove all the expiration dates and start from the first value in the table i.e the password with the lowest id. I assume that RE allows you to use the same password as at some point in the past if not the most recent values.

One variation to this is to just create a random passwords and not have a list of passwords. That way you would only have a table with one row and an expiration date.

Any improvements? let me know in the comments.

Attach Visual Studio to Raiser’s Edge

One of the benefits of using VBA or VB6 (probably one of the very few benefits) is the ability to easily debug code. Not that it is too difficult to debug using .NET but there are a couple of tricks that you need to know. When using VBA from within RE7 you need to do very little other than set a break point where it is needed. Using VB6 plug-ins you used to be able to just run the project and start the document (until, that is Internet Explorer stopped supporting the running of these component directly).

In .NET it is not as straight forward. Either you have to create a little application that starts the form that you are using for plug-ins or for “VBA” style macros and event based customisations you need to ensure all your files are in the RE7 plugin or custom directory and attach Visual Studio to the RE7.exe process. This is done using the Tools menu item “Attach to Process”. In the list you find RE7.exe and as long as you are loading the same version of the file in RE7 as you have open in Visual Studio you are able to debug.

One of the problems with this is that it becomes slightly difficult to debug events that happen on opening of RE7 i.e. in the application start events. It is possible that you can be quick and start the Attach to Process item and select RE7 before the application has reached the custom code but it is a pain.

What is more it seemed to me that there must be a way of automating this process so that it would be much quicker. Well I got out my automation handbook and started to program (I don’t actually have an automation handbook). I put together the following macro which does the trick. I then assigned the shortcut CTRL-ALT P (you could assign whatever you like but this is one that I assigned previously to open up the attach to process window).

 

    Sub AttachToRE7()
        Try

            Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger
            Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default")
            Dim dbgeng(2) As EnvDTE80.Engine

            dbgeng(0) = trans.Engines.Item("T-SQL")
            dbgeng(1) = trans.Engines.Item("Managed (v2.0, v1.1, v1.0)")

            Dim proc2 As EnvDTE80.Process2 = dbg2.GetProcesses(trans, My.Computer.Name).Item("RE7.exe")
            proc2.Attach2(dbgeng)

        Catch ex As System.Exception
            MsgBox(ex.Message)
        End Try

    End Sub

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

A Raiser’s Edge C# Plugin

A few days ago I put a question on both Blackbus and the official Blackbaud forums asking if anybody had written a plug-in in C#. I have written a number of customisations in C# (VB.NET is my most common programming language – although I do enjoy using C#) but I had never written a plug-in before. It has always been a web service of application of some kind. I managed to work out how to do it and thought that I would share my solution here. Continue reading A Raiser’s Edge C# Plugin

Visual Studio Setup and Deployment issue on Windows 7 and Vista Solved

Most people who regularly read this blog will hopefully (for their sake) never have to encounter this issue that has plagued me ever since I upgraded to Visual Studio 2005 (and then later Visual Studio 2008) and Vista (and then later Windows 7). Working with setup and deployment project is supposed to make life easier but I have had nothing but trouble with them.

Continue reading Visual Studio Setup and Deployment issue on Windows 7 and Vista Solved