Questions: API Development for connecting with Raiser's Edge NXT

To whom it may concern,

My company is actively developing out a sync between Blackbaud and our MMS platform to support an API integration with one of your fraternal clients. We have run into a few roadblocks/questions that we can't seem to find the answers for through SKY api or support documentation we have been provided. I've summarized the team’s questions below. Any assistance or direction on these questions would be greatly appreciated.

1.            In our mapping documents, there are fields for InitiatedDate, InitiatedGroupName, TimeZone, and Deceased. We were unable to locate associated fields for these in the Blackbaud system. Does anyone know these Blackbaud Field Names or where to point us to find these values?
Mapping Document - https://www.screencast.com/t/gxVMuHdmjmD

2.            In Blackbaud we have a column named "Type", it can have a value either "Individual" or "Organization". I assume we will consider only records of type "Individual" if we are looking at only syncing member records. Is this correct?

3.            We have identified fields for date_added and date_modified in Blackbaud, which can be utilized for Polling, a method of our two systems communicating changes back and forth. We wanted to be sure we can use this method or if Blackbaud has a preference on Polling vs Webhook for identifying and communicating these changes.  Are we good to proceed on using date_added and date_modified for Polling?

4.            As per the mapping document, AccountID and MemberType are mapped to membership api (membership.id and membership.category). When we try those fields it gives a forbidden error - https://drive.google.com/file/d/1R-WUgiO-tFuYIYLqlpw4F8LJlRCHrklm/view.
Should we be looking at different fields or perhaps an additional permission may need to be enabled?
Mapping Document - https://www.screencast.com/t/gxVMuHdmjmD

5.            There seems to be no delete Constituent api in Blackbaud. There is a column named “Inactive” in constituents api. This field indicates whether the constituent is inactive. Can we use this field to identify records that are deleted from our system? Or is there perhaps a delete Consituent api available that we have missed?

6.            As per the documentation https://developer.blackbaud.com/skyapi/docs/authorization, in order to access SKY api’s thru Cloud Elements, we need to pass client_id and redirect_uri as query string. To get these values we must create and register an application with Blackbaud. Is there another way or is this the only option we have?

Truly appreciate any assistance on these. Please let me know if anyone would like me to expand on any of the items above.

Regards,

Greg

Comments

  • Paul Gibson
    Paul Gibson Blackbaud Employee
    Tenth Anniversary Kudos 2 Participant Facilitator 1
    Hi Greg.  We recently created a new "headless data sync" sample application to serve as a reference for scenarios looking to do data syncs.  The sample has some information in the readme about the approach as well as links to further documentation on the topic of syncing via modification dates.  You can get to the sample from following the links in this post https://community.blackbaud.com/blogs/69/6782

     
    While that sample does not address the details of the field mappings it should at least show how to handle the polling for date modified and how you can use a token you obtain from the OAuth code flow.


     

    I can also give you a quick answer on the constituent delete.  There is not a way do delete a Constituent via the API, however you can mark a constituent as Inactive. In RE a Delete has always been a hard delete whereas Inactive is more of a soft delete that can be undone, with many features in RE excluding inactive records by default.  
  • Paul Gibson:

    Hi Greg.  We recently created a new "headless data sync" sample application to serve as a reference for scenarios looking to do data syncs.  The sample has some information in the readme about the approach as well as links to further documentation on the topic of syncing via modification dates.  You can get to the sample from following the links in this post https://community.blackbaud.com/blogs/69/6782

     

    While that sample does not address the details of the field mappings it should at least show how to handle the polling for date modified and how you can use a token you obtain from the OAuth code flow.


     

    I can also give you a quick answer on the constituent delete.  There is not a way do delete a Constituent via the API, however you can mark a constituent as Inactive. In RE a Delete has always been a hard delete whereas Inactive is more of a soft delete that can be undone, with many features in RE excluding inactive records by default.  

     

    Hey Paul,


    Really appreciate the quick answer! I must have missed the email that this received a reply and was circling back around. Let me share this information with the team.


    Again, really appreciate it!

  • Hey Paul,


    The team was able to gain some insight from your provided blog, thanks a ton!


    Everyone,


    It looks like we are still seeing the following error:


    As per the mapping document, AccountID and MemberType are mapped to membership api (membership.id and membership.category). When we try those fields it gives a forbidden error - https://drive.google.com/file/d/1R-WUgiO-tFuYIYLqlpw4F8LJlRCHrklm/view.

    Should we be looking at different fields or perhaps an additional permission may need to be enabled?

    Mapping Document - https://www.screencast.com/t/gxVMuHdmjmD


    Bit lost on where to go from here if you have any sort of additional direction?
  • Paul Gibson
    Paul Gibson Blackbaud Employee
    Tenth Anniversary Kudos 2 Participant Facilitator 1
    There are 2 reasons you could be getting a 403 on that endpoint:


    1. The user who was prompted and granted the OAuth prompt for the token you are using does not have permission to view membership data.

    2. The environment that you are accessing does not have the optional RE:Membership module enabled.


    The Membership fields are available only if an optional Membership module is enabled for a customer. 


    If you can see the Membership tile on a Constituent record page in the RENXT webview ux then that api endpoint should be working for you.  If you cannot see the Membership tile on a Constituent record page in the webview ux then that would indicate that either 1 or 2 above are preventing you from seeing that tile in the ux and also from using that api endpoint.
  • Hey Paul,


    Truly appreciate the help. I'm going to pass this onto the team and circle back once they've had a chance to check.


    Thanks again!!