top of page

Blackbaud CRM™ Performance Testing How-To

How To Create Blackbaud CRM™ Performance Tests Using the Application’s SOAP Web Services API

In this post, we will explore some of the practical “How To” details of creating Performance Tests for Blackbaud CRM™ using the application’s SOAP Web Services API.

Please note that the examples referenced in this post utilize software tools that are NOT included with Blackbaud CRM™. BrightVine offers a full suite of performance tests for Blackbaud CRM™ and uses several of the tools listed here. To reproduce these examples, you will need:

  • A SOAP Web Services Testing Tool (NeoLoad, WAPT Pro, or similar tool) BrightVine uses NeoLoad in our performance testing offering.

  • A running instance of Blackbaud CRM™

  • Ability to dive into some technical details of SOAP Web Services. (If you don't have these resources on your team, BrightVine can provide them to you.)

Blackbaud has posted an article about how to work with the Blackbaud CRM™ Web Services API: Crafting HTTP Requests for the AppFxWebService.asmx which can be used as a resource.

Some things I did before building the examples:

  • Create an Ad Hoc Query in Blackbaud CRM™ (or alternatively, choose an existing one to use for this example).

  • Locate the AppFxWebService.asmx Endpoint Description page. This is an indispensable resource that describes the many Blackbaud CRM™ operations supported by the API. One way to access the page is to browse to the home page, delete everything in the address bar after ‘/crm/’, paste ‘appfxwebservice.asmx’, and hit Enter (If your instance uses https, then adjust the URL accordingly).

I will refer to the Endpoint Description page while looking at these examples. Now we’re ready to build an example performance test in the Load Testing tool.

  • Build a new Virtual User Profile in NeoLoad. The Virtual User Profile serves as a container to hold certain application testing tasks which can be used as part of a Performance test. I named the Virtual User Profile ‘VU BB CRM SOAP Client.’

NeoLoad will prompt the user to provide a Virtual User name.

  • After the Virtual User Profile has been created, add a ‘SOAP Request’ action by right-clicking on the Actions node. It is generally cleaner to generate the SOAP Request manually, so select that option in the SOAP Request Wizard and hit Next.

  • Name the new SOAP Request ‘SOAP Ping’ and hit Next.

  • The last step of the Wizard is to provide the URL of the Web Service to which a SOAP Request will be sent. Enter the Web Service URL (for example, https://localhost/crm/appfxwebservice.asmx) and hit Finish to exit the Wizard.

  • For the ‘SOAP Ping’ SOAP Request Action, click on the ‘Edit XML Content’ button

  • Paste in the following XML:

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:soap="" xmlns:xsd="" xmlns:xsi="">


<PingRequest xmlns="Blackbaud.AppFx.WebService.API.1">

<MessageToEcho>Testing AppFxWebService Ping</MessageToEcho>


<ClientAppInfo ClientAppName="Load Testing App" REDatabaseToUse="BBInfinity" TimeOutSeconds="360"/>







Note: NeoLoad’s XML editor has Syntax Highlighting and some other features that can help when reading and editing XML

At this point, you might ask yourself: “Why are we doing that? That seems like we’re pasting a lot of XML gibberish. What does this have to do with application performance testing?” Yes, it’s true - SOAP is very verbose and it is often difficult to read. However, using the SOAP API can give a performance testing tool the ability to send Web Services Requests in an automated fashion, and that is very important for performance testing.

Let's look at some of the things that must be automated: if you look closely within the <PingRequest> XML node, you will notice two other child nodes: <MessageToEcho> and <ConnectToDatabase>. These two nodes are simple Web Request parameters for which the SOAP Request must provide parameter values. In this case, I gave the value of “Testing AppFxWebService Ping” for parameter MessageToEcho and gave the value of false for parameter.

How did I know the SOAP XML that needed to be pasted in? I looked up the PingRequest method from the EndPoint Documentation, and it provided me with a sample SOAP Request message. In NeoLoad, you can test the SOAP Request actions that you create.

I can follow a similar process to create and test a CRM SOAP API Request that will run an Ad Hoc Query and return the query results and so on.

The test action I created, and then checked, requested the execution of Ad Hoc Query ‘TEST-NonDonor.’ The Web Service request processed successfully and returned the query’s data output from the database. NeoLoad shows the total amount of data returned by the Web Service operation and also a very important measurement: the amount of time it took for the Web Service to complete the response.

As part of a comprehensive Performance Testing Project, the following should be included (and are included in BrightVine's offering):

  • Creation of a performance testing plan

  • Application configuration analysis

  • Identification of performance requirements including user load and response times

  • Development of performance tests

  • Execution of performance testing and retesting as required

  • Analysis of the results and identification of potential causes of issues

  • Generation of performance testing results/reports

  • Assistance with resolving performance issues found in testing

BrightVine's Implementation Framework is made up of five clearly defined and distinct phases which are used by our teams to plan for, script, execute, analyze and tune/tix, and debrief at the end of a project.

Some of the testing metrics BrightVine uses include the following performance indicators:

  • Latency

  • Server Utilization (cpu, memory)

  • Network Traffic/Statistics

  • Average Pages

  • Average Hits

  • Average Page Response Time

  • Average Request Response Time

  • Average Throughput

  • Min/Max Execution Time

  • Error Rate

When we conduct performance testing it occurs in multiple phases allowing the team to create baselines and providing them with the ability to more accurately troubleshoot any areas of concern. The team will execute the performance testing in four different phases:

  1. Baseline

  2. Load Testing

  3. Schedule Job Testing

  4. Load Testing with Scheduled Jobs

  5. Peak load testing

  6. Endurance (Soak) tests (average peak load over a predefined duration)

Once tests are completed, the results and metrics are shared with your team and the software vendor where we work to prioritize results, determine next steps and resolve issues found.

If you'd like more information about measuring Blackbaud CRM™ performance, or BrightVine's Performance Testing Offering, please contact us at or complete our online contact form.

bottom of page