About Joseph Styons

I work for Wake Forest University, where I build customizations to Blackbaud CRM, Data Warehouse, and our online alumni portal.

Prior to that, I worked for 4.5 years as a consultant with Blackbaud Professional Services, and even before that I worked for Nucor Steel, where I used Delphi to write client-server Win32 apps that ran on an Oracle back-end.

I enjoy coding, camping, hiking, and climbing.

Post navigation

Posted on: June 1, 2015

BBCRM has the concept of Export Definitions and Exports. As their name implies, Exports allow you to drop data from CRM into an external file (often Excel or CSV). The source of that data is typically an ad-hoc query. Exports are useful. This post discusses how they can be leveraged programmatically. You can find this project here: https://bbcrmautoexporter.codeplex.com/ Note: if you are on 4.0 SP6 or higher, you will need to change the 'target framework' to 4.5 or higher in order to compile this project. No other change should be necessary. Since the Export process is a business process, the... Read More

Posted on: August 22, 2014

Blackbaud offers a Secure Payment service, creatively named “Blackbaud Secure Payments”. This service provides a secure way to accept credit card payments from constituents, without having to deal with the security concerns of handling that data yourself. When you think of the BBSP user experience, you can compare it to PayPal. Your form does it’s thing (buy a membership! sign up for an event! donate now!), then the user clicks “Pay now” and they are redirected to another page. That page collects their payment information, they click “submit”, and then they come back to your site... Read More

Posted on: May 16, 2013

BBIS parts can be cut and pasted between pages on your site. This is easily accomplished with the “Cut” link on the part menu. The Cut link is implemented behind the scenes by clicking an invisible button. That means that if you have any enabled field validators in your custom part, the action will silently fail, and the part will remain on the page. There is a workaround for this issue – you can just go to Site Explorer –> Pages and Templates –> Select your page –> Cut the part from there. That works because the validators aren’t part of the outer “Pages and Templates”... Read More

Posted on: April 16, 2013

Today’s post is a simple problem/solution. If you see this error in your BBIS Test Page: Then the solution is to add (or modify) the keys in this script as shown below. EXEC dbo.Usp_get_key_access; insert into setting(id,name,value) values (55,'BBAppFXUser',EncryptByKey(Key_GUID('sym_BBInfinity'),convert(nvarchar(1000),''))); insert into setting(id,name,value) values (56,'BBAppFXPassword',EncryptByKey(Key_GUID('sym_BBInfinity'),convert(nvarchar(1000),''))); insert into setting(id,name,value) values (57,'BBAppFXDatabaseToUse','BBInfinity'); CLOSE SYMMETRIC KEY sym_bb... Read More

Posted on: February 18, 2013

Today’s BBIS error and solution is both common and easy to fix. It looks like this: When BBIS says “the back office”, it’s just trying to make you think it has connections to people in high places. The truth is, it’s just talking about our old friend, CRM. BBIS has an interesting heritage – maybe that should be the topic of another post. Long long ago, in a galaxy far away, the ‘back office’ was Blackbaud’s Raiser’s Edge product. So the configuration we need to check here is the “RE7ServiceURL”. That needs to point to the “masterservice.asmx” of your CRM installation. That... Read More

Posted on: February 8, 2013

Have you ever had a very large SQL script in a .SQL file, and you wanted to run it against your favorite database? You may have naively thought (as I did) that you could just crack that baby open in SQL Server Management Studio, and hit F5. If you did that, you may have found that SSMS doesn’t take well to those. It will sometimes give you an “out of memory” error. That can be overcome by running the script from inside SQLCMD. This is an example script for doing that 1: set sqlcmdexe=C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe 2: set domain=BLACKBAUDHOST 3: set user... Read More

Posted on: February 4, 2013

Ok, today’s error is an easy one. When clicking on “Sites & Settings” within BBIS, you may get this error: The user 'NT AUTHORITY\NETWORK SERVICE' is not an application user in the BBInfinity database If you get that, the solution is pretty easy. Just add that user in CRM under Administration->Security->Application Users, as shown here: The corresponding script would be this: 1: declare @SID varbinary(85) = (select SUSER_SID('NT AUTHORITY\NETWORK SERVICE')); 2: declare @changeagentid uniqueidentifier = null; 3: exec USP_CHANGEAGENT_GETORCREATECHANGEAGENT @chang... Read More

Posted on: February 1, 2013

This is my first post in a series of simple “How to fix your BBIS” installation. Our first error is the dreaded “Error loading attributes: Access denied to RE7Service - invalid username or password: 'ShelbyPortal'”. You can see this error in your TestConfig page – it will show up as a failed “REAPI Connection”. You may also see it inside your site, when you browse to the “Administration->Sites & Settings” area. In a nutshell, the RE7Service is the link between BBIS and the CRM backend. The name itself is a legacy from the old days when BBIS was called “Blackbaud NetCommunity”, an... Read More

Posted on: December 18, 2012

CRM comes with a user-defined type called “UDT_FUZZYDATE”. If you look at that datatype, you’ll notice that it’s just a CHAR(8) field. Converting from a standard datetime to a UDT_FUZZYDATE can be done pretty easily using native SQL. Anybody reading this blog could figure this out on their own, but here it is just to save you the typing. if exists(select * from information_schema.routines where routine_name = 'usr_ufn_datetime_to_fuzzydate') begin drop function usr_ufn_datetime_to_fuzzydate; end; GO create function usr_ufn_datetime_to_fuzzydate ( @dt as datetime ) returns udt_fuzzydate as begi... Read More