AMA: Community Questions & Answers ๐ฃ๏ธ September 17th
Thank you to everyone who joined our AMA with the Nonprofit Community! We had a fantastic session with insightful questions and helpful discussions. Below is a recap of the topics covered, with expanded answers for clarity and future reference. Shoutout to our Monthly host @Rob OBrien, and our panelists for the month @Judy Otto and @Sara Chieco
NPSP Documentation and Data Dictionary ๐
Q: Where can I find the most up-to-date NPSP data dictionary and object documentation? I've noticed some older links are no longer active. My sandbox also seems to be missing General Accounting Units (GAUs).
A: The definitive and most current source for Nonprofit Success Pack (NPSP) object and field documentation is the official Salesforce Help site, specifically the NPSP Data Dictionary. If your sandbox is missing core features like General Accounting Units (GAUs), it's a strong indicator that the sandbox is outdated or was created before the feature was enabled in your production environment. This can be a common issue when a sandbox is not refreshed regularly. GAUs are crucial for tracking funds by purpose, program, or campaign.
Steps to Fix Missing GAUs in a Sandbox:
- Identify the Problem:
- Navigate to Setup in your sandbox.
- In the Quick Find box, type and select Custom Settings.
- Find the Allocation custom setting and click Manage.
- Check if the Default General Accounting Unit field is blank.
- Edit the Allocation Custom Setting:
- Click the Edit link.
- Clear any existing value from the Default General Accounting Unit field.
- If you don't have an appropriate GAU yet, you'll need to create one.
- Select the newly created or an existing GAU from the lookup field.
- Save Your Changes:
- Click Save. This action will link the GAU and ensure it's used as the default for new Opportunities, resolving the immediate issue.
Additional Considerations: If your sandbox is very old, the best solution is often to refresh the sandbox from your production org. This will ensure it's up-to-date with all the latest features, licenses, and configurations, including any new releases or managed package updates. Regularly refreshing sandboxes is a best practice for development and testing.
โญ๏ธ For more:
Nonprofit Success Pack (NPSP) Documentation
Migrating Profiles to Permission Sets ๐ก๏ธ
Q: As we migrate from Profiles to Permission Sets, how should we handle Apex Classes and Test Classes, especially for installed apps like NPSP?
A: This is a key part of the modern Salesforce security model. When you're migrating from a legacy Profile-based security model to the recommended Permission Set-based model, it's essential to understand the distinction between Apex Classes and Test Classes.
- Apex Classes: End-users only need access to Apex classes that are part of a user-facing process, such as a custom Visualforce page controller, a screen flow that runs in user context, or a web service. This access should be granted via permission sets to ensure a granular security model.
- Apex Test Classes: End-users do not need access to Apex test classes. Test classes are designed for developers to validate code functionality and are only used during development, deployment, and testing. They should never be assigned to end-user permission sets. Permissions to run test classes are typically granted through developer-specific profiles or permission sets assigned to admins and developers who work directly in sandbox environments.
By separating these permissions, you ensure that user access is limited to the functionality they need, while maintaining a secure and manageable environment for developers.
Deleting Old Files to Manage Storage ๐๏ธ
Q: We upload many files a year, and our storage is getting full. Is there an efficient way to find and delete older files that are no longer needed?
A: File storage is a common challenge for many organizations. While you can delete files one-by-one, a more scalable approach is to use a data management tool. The Salesforce Data Loader is a powerful, free tool for this.
Using Data Loader for File Deletion:
- Export the File Data: Use the Data Loader to export a report of the ContentDocument or ContentVersion objects. This will give you a list of all files and their metadata, including the creation date and who uploaded them.
- Filter and Identify: Use a spreadsheet to filter the exported data. Look for files created before a certain date or uploaded by a specific user (e.g., the previous admin).
- Prepare for Deletion: Once you have the list of IDs for the files you want to delete, create a new CSV file with a single column titled Id and paste the file IDs into it.
- Mass Delete: Use the Data Loader's Delete function, select the ContentDocument object, and upload your prepared CSV file. This will permanently delete the files. โ ๏ธ Always be cautious and back up your data before performing a mass deletion.
Alternatively, for a more automated solution, you can use a Salesforce Flow. A scheduled flow can query ContentDocument records that meet specific criteria (e.g., CreatedDate < 2 years ago) and then automatically delete them. This can be a great way to maintain storage space proactively. XL- Connector is also an excellent tool, in the dataloader vein.
โญ๏ธ For more:
Can I use Flows to delete files from a custom object?, How I Solved It: File Deletion Flow, Flow Element: Delete Records (help article), How to Delete Related Records using FLOW
(YT Video)
MORE Q & A IN COMMENTS BELOW!
Hello, just an FYI to the Deleting Old Files to Manage Storage instructions which is helpful but I have been doing more research here. Even as a system admin, you have to have query all files permissions in the app permissions or your query will only display the files you own. I created a permission set for this and added it to my user permission sets.