Skip to main content
Groupe à la une

Nonprofit Success Pack

The Nonprofit Success Pack (NPSP) is a series of managed packages, installed on top of Salesforce Enterprise Edition. The 6 packages of the NPSP make it easier for you to use Salesforce to manage the core relationships between individual donors, their households, and the companies they work for. Use this group for questions and discussion about the Nonprofit Success Pack.
3 réponses
  1. Aujourd’hui, à 02:42

    Hi Tory, 

     

    This is a well-documented NPSP behavior, not a bug — it happens whenever the user who originally scheduled the NPSP nightly batch jobs (rollups, recurring donations, etc.) gets deactivated (left the org, license removed, etc.). Once that user is inactive, NPSP's scheduled jobs stop running correctly and this exact error fires. 

     

    Fix: 

    1. Setup → Quick Find → Scheduled Jobs 

    2. Find any job(s) where the "Submitted By" column shows the inactive user, and click Del next to each one 

    3. Go to the NPSP Settings tab (App Launcher if it's not in your nav) 

    4. Click Bulk Data Processes → Batch Process Settings — just opening/saving this page automatically recreates the default NPSP jobs under your (currently active) user 

    5. Confirm Don't Auto Schedule Default NPSP Jobs is unchecked — if it's checked, step 4 won't auto-recreate the jobs and you'll need to reschedule manually via Setup → Apex Classes → Schedule Apex 

    6. Go back to Scheduled Jobs and confirm the jobs now show as Submitted By your active user 

     

    One job to leave alone: NPSP 00 - Error Processing runs hourly by design — don't delete/reschedule it unless it's also showing the inactive user issue. 

     

    Since this will happen again any time whoever's listed as "Submitted By" gets deactivated, it's worth having a step in your offboarding checklist to have another active admin rerun this process whenever that person leaves. 

     

    Reference:

    https://powerofus.force.com/s/article/NPSP-Edit-or-Reschedule-NPSP-Scheduled-Jobs

0/9000

We currently create our donor research profiles in Word and attach them as Files to Account records. The profile contains Contact info (name, email, phone, mailing address), some giving history, and data from external sources. We would like to transition this to Salesforce. My preliminary idea is a custom object with fields for data that doesn't already live somewhere else, then some sort of mail merge tool (we have Apsona) that merges it all together in one document. Has anyone built anything like this,or used a third party tool they recommend?  

 

We are on NPSP with no immediate plans to move to NPC.

@Nonprofit Success Pack #Nonprofit Success Pack

13 réponses
  1. Hier, à 06:01

    A custom object sounds like a solid approach, especially if you want the research data to stay structured and reportable in NPSP. You could relate it to the Account/Contact and use Apsona to generate the final profile document, while keeping the source data searchable and easier to maintain in Salesforce.

0/9000

For the past 6 weeks or so I've been getting nightly head size errors for the NPSP rollup above. I have reduced the batch size several times with no effect. 

Searching this site and elsewhere on the internet has not yielded a solution. Maybe this problem will go away in Winter '27 when heap sizes are increased, but I want to know why it is happening and if there  is anything I can do to address it

3 réponses
  1. 20 sept., 17:22

    Hi Laurel! One of the things I've seen cause this are contacts that should

    be moved to the skew processing but are not. This means that they have a LOT of child opportunities. NPSP has a special mode to account for this, but if I remember correctly it's only based on the number of closed opps.  

     

    This can happen for a number of reasons. What I've seen most often is if you have some contacts with a lot of OPEN opportunities, or if you use placeholder contacts that have a lot of related opps and they didn't get updated automatically to go into skew processing mode, you can get these errors.  

     

    Adjusting batch sizes can temporarily resolve the issue sometimes, but you have to adjust them WAY down.  

     

    This is the query that I run in client orgs first to see if there are any standouts. If so I adjust the UseSkewMode field from the query to 'True' for these contacts and then see if the heap issues disappear.  

     

    SELECT ContactId, COUNT(Id) ActualOppsCount

    FROM OpportunityContactRole WHERE Contact.npsp__CustomizableRollups_UseSkewMode__c = false

    GROUP BY ContactId

    HAVING COUNT(Id) > 250

    ORDER BY COUNT(Id) DESC

    LIMIT 2000

     

    There are certainly other reasons you might get this. Having a large number of, or overly complex, npsp rollups defined and active can do it.  

     

    Theoretically you could run into this issue if you have competing scheduled jobs (non-npsp jobs) scheduled at the same time, in which case both are competing for resources. If you run the job manually and it works without issue, this might be a place to look. 

     

    If the above doesn't square things away, look at follow-up automation that triggers on the contact record update. Make sure your flows / apex have clear entrance criteria and leverage asynchronous paths where possible, so that you don't have a lot of automations triggering at the same time (in the same transaction, which is what the heap size limit is based on). 

     

    You can also likely help this run smoothly by verifying that your Setup - Custom Settings - Customizable Rollup Settings have 'Incremental Contact Hard Credit Non-Skew' set to TRUE - which tells salesforce to only update the contacts that had records change since the last run.  

     

    Hopefully one of these gets you squared away.  

     

0/9000

Our Philanthropy team are seeking a solution for capturing and recording engagements with donors (meetings, events, etc) to be viewed alongside Opportunities and households.  

 

The team have found that tasks and activities are not achieving this, and speaking with Salesforce they recommend building a custom object to mimic an object only available in Non Profit Cloud.  

 

Before we proceed with investigation into this, it would be great to connect with other NPSP users who have a similar business requirement who may have implemented something like this. Do you have any recommendations for how to achieve this?  

 

Thank you

3 réponses
  1. 23 sept., 15:07

    This is a type of program enegaement (development program, unit is hours or meetings). As such, PMM data structure can handle the job but it might be overkill if that's the only reason you need it. And PMM data structure is identical to V4SF data structure, so you can also model it as a volutneer hour. That's what we do, but I accepted long ago that a volutneer hour represented lots of different things in our database (all of which measure hours of engagement by someone (contact) for a purpose (job) on a specific date.) Thus if you also do group meetings, public speaking, etc for purposes of awareness raising and development, it can work. And you can actually sub-divide the meetings by job or program service (equivalent) for things like planned giving meeting, major gift meeting, donor nurturing meeting, donor cultivation meeting, capital campaign meeting, etc. 

     

    V4SF hours are associated with a contact only and now an account. PMM Service Deliveries can be associated with a contact or an account. 

     

    Activities (and events) don't work for historial recordkeeping of any sort becuase they are autoarhived by Salesforce and you cann't turn that off. 

0/9000

We have contacts that are grant writers in SF that have multiple affiliations with NPO's. The issue is that the contact has created a portal account for each org to submit a grant application using emails associated with each NPO. We are unable to merge the contacts without disabling the portal access. What are other NPO's that have grant programs doing to manage these duplicate records?  

 

I've seen posts that recommend making the duplicated records members of the household, is this the best way to handle this issue without losing the grant writer's history for portal access?

3 réponses
  1. 23 sept., 12:06

    Hi @Karen Hartt

     

     

    Why Household doesn't actually solve this 

    Household groups people as family units under an Account. It doesn't touch the real problem, which is that Contact → Portal User is a 1:1 relationship. Putting the duplicates in a Household just organizes them visually in the same place; it doesn't merge their application history, doesn't stop the third duplicate next month, and it's honestly a slightly odd use of the object (these people aren't a family, they're one person with multiple professional hats).  

     

    What's actually causing this 

    Two structural facts collide: 

    1. A Contact can only be tied to one active Experience Cloud/Community User at a time.
    2. Your dedupe rules are matching on email, and each NPO email is genuinely unique, so Salesforce will never flag these as duplicates on its own.

    So merging will always cost you the portal identity on whichever Contact loses. That's not a config bug, it's how portal licensing works. 

      

    What I'd actually do, in order of preference:

     

     

    1. Fix it at the front door. Add a step to the grant application intake: "Do you already have an account with us (under any organization)?" If yes, capture their existing login/email and attach the new NPO affiliation to their existing Contact instead of spinning up Contact #2. This is the only option that stops the bleeding rather than managing it after the fact.
    2. NPSP Affiliations, not Household. If a grant writer works with 3 NPOs, that's exactly what the Affiliation object was built for one primary Contact, multiple Affiliation records to other Accounts. If your portal/application process can key off "which Affiliation is this application for" rather than "which separate login," you eliminate the need for duplicate Contacts entirely.
    3. If your portal genuinely requires one Contact per org (some grant portal setups are built that way and you can't change it short-term), don't force a merge. Instead, link the duplicate Contacts to each other a custom lookup, an NPSP Relationship record, or even a shared external ID. So staff and reporting can treat them as one human without triggering the portal user conflict. You lose nothing, you just stop pretending merge is the tool for this.
    4. True merge should be reserved for cases where you're willing to deactivate all but one portal user and manually reassign the historical applications afterward (Task/Case/custom object records generally reparent fine on merge, it's specifically the User/login that doesn't survive).

    I hope you find the above information helpful. If it does, please mark it as Best Answer to help others too.

0/9000
When updating the default address on a Household account, the Mailing Address for the related Contacts is update as well. This works for most accounts...but I have identified a few that aren't working and I can't figure out why or how they are different from the accounts which work as expected.
10 réponses
  1. 23 sept., 11:13

    Check the Household Account model settings. Some contacts may be marked as excluded. Run the address update batch manually. Also, look for validation rules blocking the change. The outcome is usually a simple checkbox. Fix that first.

0/9000
1 réponse
  1. 17 sept., 19:03

    You posted this in the NPSP group so first question... are you a System Administrator? If so, when you go to Setup > Object Manager > Leads > Buttons, Links and Actions and click the drop down to the right and "Edit" what do you see under "Salesforce Classic Override"? 

     

    In terms of NPSP "coaching clients" isn't something out of the box, so you will need to provide more information on your lead conversion process. Does this error only happen with certain leads? If so, what makes these different?

0/9000
Katherine West a posé une question dans Design Trailblazers

We'd like to turn on the setting to use SLDS 2 for pages that include <apex:slds> when an SLDS 2 theme is active in User Interface in order to take advantage of dark mode and SLDS 2 for our custom Visualforce pages. 

 

However, when we do so, some of our managed package Visualforce pages have significantly degraded appearance. This includes Salesforce's Nonprofit Success Pack Contact Merge page in particular.  

 

Is there a way to enable SLDS 2 on particular Visualforce pages (the ones we have control over) and leave SLDS 1 for the managed package ones that we can't update (and may not be able to get Salesforce to update)? It looks like there is a way to force <apex:slds> to use SLDS 1, but that doesn't really help us as we can't edit the managed packaged pages where that would be necessary. 

 

I can try opening a Salesforce support case, but since they started replacing everything with AI, it's been much more difficult to get a decent response. I suspect the answer will be to create an Idea, which will then languish for years or just be closed (which doesn't really help solve our problem).  

 

@Nonprofit Success Pack @Design Trailblazers

1 réponse
  1. 16 sept., 21:21

    Hi , 

     

     

    Unfortunately, I don't believe Salesforce currently provides a way to selectively enable SLDS 2 for some Visualforce pages while forcing managed-package Visualforce pages to remain on SLDS 1. If a managed package page such as NPSP Contact Merge is broken by SLDS 2, this is likely an issue that must be addressed by the package provider or Salesforce itself.

0/9000

Hi all,

Wondering if anyone uses Formstack to/from Salesforce. We have a weird issue arising. We have a Youth consent form for parents to sign for youth taking classes. They need to sign this at least twice a year if they are taking additional classes in a different month. We have it set up to pull the data from the record into the form if they have completed it before - totally fine.

We did not have it set up previously to update the submitted date on the contact record. Now I have that box checked on JUST that field. The checkbox is "Update existing Salesforce record matching this field value:"

I haven't hit this button on any other field so that we don't have blanks erasing previously provided information.

We now have an issue popping up where the birthdate is then changed to blank when the new form is submitted. It is not a required field and I do not have the box checked to update the field upon resubmission. The weird thing is that when I see a record where the birthdate was removed, I go to the form submission and the birthdate is there pre-filled in the form.

Any thoughts? I'm hoping the checkbox update for just the date field isn't causing the issue here. I'm going to reach out to formstack support to, but wanted to check in and see if anyone has run into this issue before.

4 réponses
  1. 13 sept., 13:17

    We kept the form side separate and used Skyvia for the Salesforce update, with only the fields we actually wanted mapped for update. That gave us a lot more control than letting the form integration write back to the whole record.

0/9000

How to delete NPSP Data Import records before the final Import?

Ran NPSP Data Import and found some blank data was imported. The next day, deleted the records and checked from "All" that the records were deleted. Ran NPSP Data Import ensure the correct number of records were import. When trying to take the next step of Data Import, no records were found. 

Ran NPSP Data Import records and all the records were found but not available for Importing.

Can all the 2 days of records be completely deleted and start a new import?

 

@Fundraising

@Nonprofit Success Pack

@Salesforce.org System Administrators

4 réponses
  1. 9 sept., 09:37

    This was the solution that worked for me.  I had two thousand records needed to delete after I discovered a mistake in the data I was going to import.  I created a report on the NPSP Date Import object to include the records I wanted to delete.  Make sure you include the Salesforce Record ID, the Import ID will not work.  With Salesforce Record ID  in hand I used Dataloader to delete the import records,

0/9000