How to create a scratch org with "Non Profit Starter Pack (NPSP)"

Salesforce scratch orgs makes it very easy to track metadata changes. But if you are developing an app that involves non profit starter pack, it is usually tricky to setup a scratch org with NPSP packages. In this blog, we will go through different steps needed to setup a scratch org with NPSP packages.
NPSP is basically a combination of multiple appexchange packages. But to install these your sandbox/scratch org needs to meet certain conditions. These prerequisites are adding certain recordtypes to Account and Opprotunity and adding an Opprotunity sales process. Metdata needed for these can be found in the link - https://github.com/SalesforceFoundation/NPSP/tree/master/unpackaged/pre. If you wish to run below bash script directly, you need to copy individual metadata files from above NPSP github repo into a single npsp-dependencies folder in deployable format with a combinted package.xml file.

Use cases

  • Easy development of enhancements to NPSP in scratch orgs
  • Other approaches like using Cumulus CI are usually more time consuming and difficult to setup


Explanation

Above shell script will work for Mac and Linux users only. If you are a windows user, you might need to copy-paste and run individual commands separately from windows command line. As part of this script we are first creating a scratch org. Then we open the scratch org in browser. After that at line 14 we install all the prerequisites for NPSP package. Then we install 6 NPSP appexchange packages one after another. Please note that in future Salesforce might upgrade these packages and the package IDs will change. In that case find package ID corresponding to the upgraded version and change in the script.

How to use

Make sure that you are inside an sfdx project folder. If not, create a SFDX project using vscode or SFDX cli sfdx force:project:create -n projectName. As first step, make sure that you have copied all dependencies from https://github.com/SalesforceFoundation/NPSP/tree/master/unpackaged/pre to a folder with name npsp-dependencies inside your repository. Make sure you have set a devhub environment as default that you can use for spinning off scratch orgs( sfdx force:config:set defaultdevhubusername=productionUsernameHere ). Copy above code into a shell script file. *Example createScratchOrg.sh) Make sure that your shell script file has proper permissions by running chmod u+x createScratchOrg.sh. Finally run the shell script from terminal using ./createScratchOrg.sh.
Since it is installing 6 different appexchange packages as part of NPSP, the whole process might take some time. You can see the progress.

4 comments:

  1. Thanks, admin, for sharing such incredible content on this topic. Now I have got everything I need about it. Here’s another informative piece of content Salesforce for Nonprofits , you may find here more information.

    ReplyDelete
  2. This is a really helpful breakdown of setting up a Scratch Org with the Nonprofit Success Pack (NPSP). The step-by-step shell script approach makes the process much more practical, especially for developers who struggle with the multiple dependency and package installation challenges in NPSP-based development.

    Handling prerequisites through metadata deployment and then installing the modular NPSP packages in sequence is a clean approach. It’s also useful to highlight how Scratch Orgs in Salesforce make metadata-driven development and testing much more efficient in real-world implementations. One thing to keep in mind is that since NPSP packages evolve frequently, maintaining package version IDs in scripts will require ongoing updates. This makes automation and CI/CD integration even more important, especially for teams working on long-term nonprofit implementations.Overall, this is a very practical guide for anyone working with the Nonprofit Success Pack (NPSP) in a Scratch Org environment.

    ReplyDelete