Salesforce Customization Guidelines for PatronManager Clients
We’ve seen many clients extend Salesforce to serve their business needs beyond the bounds of PatronManager, for example to track and schedule volunteers or to manage a library of orchestral scores. There are vast possibilities for customization on the Salesforce platform, and a large ecosystem of AppExchange products. Please be aware, however, that customizing Salesforce has the potential to interfere with PatronManager features, including breaking core functionality. Rest assured our support team will always support core PatronManager features, but if your customizations do not work as expected, disrupt PatronManager functionality, or cause data corruption, we will not be able to provide assistance.
PatronManager consists of multiple managed packages built on Salesforce. Much of the underlying functionality and structure is not visible to end users, so building customizations that interact with PatronManager objects means flying blind into a very complicated piece of software - and one that changes with each new release.
PatronManager also uses standard Salesforce objects (primarily Account, Contact, Opportunity and Campaign) in specific ways alongside many custom objects. PatronManager functionality is deeply interconnected; adjusting one element of the system can have wide-ranging and unpredictable consequences system-wide.
Support Services
PatronManager support services are outlined in Support Terms and Conditions. Please note:
- Installing, maintaining, and navigating customizations and Salesforce AppExchange products is the client's responsibility.
- Customization and third-party apps can interrupt PatronManager functionality, including preventing transaction processing. PatronManager is unable to provide support for issues caused by other products or customizations, and reserves the right to pause support services until such products or customizations are disabled or uninstalled.
- All users communicating with PatronManager support must have PatronManager login credentials. To ensure transparency, PatronManager Support is unable to communicate directly with third parties unless a staff member of the client organization is included on all correspondence.
- PatronManager is unable to answer developer-specific product questions or provide such documentation (referred to as developer support).
- The PatronManager Client Community is a great resource for questions outside the scope of PatronManager support services.
Customization Guidelines
Evaluate:
- Thoroughly review documentation in the PatronManager Help Tab to ensure that the functionality you intend to build does not already exist
- Review Product Ideas (https://bit.ly/2PlaA7X) in the Client Community to see if the functionality you intend to build might already be planned or in development
- Regarding Salesforce AppExchange products:
- The Salesforce “Nonprofit Success Pack” App (NPSP) is not compatible with PatronManager and must not be installed
- AppExchange Apps may not be compatible with PatronManager and should always be carefully tested in a sandbox environment
- Our recommended apps (https://bit.ly/2R1SXHf) are approved for compatibility with PatronManager, but should still be tested in a sandbox first. Note that some recommended apps require specific configuration for use with PatronManager
- PatronManager clients have access only to certain standard Salesforce objects (Account, Contact, Opportunity and Campaign). Other Salesforce objects (including but not limited to Leads, Products, etc) are not included with PatronManager, may incur additional Salesforce costs, and are likely to conflict with PatronManager functionality
Plan:
- Regarding automation (e.g. Flow, Apex Triggers):
- Do not trigger real-time automation from PatronManager objects or Campaigns
- Limit real-time automation triggered from Accounts, Contacts, and Donations (Opportunities)
- Do not add validation rules
- Regarding Contact handling:
- PatronManager uses a custom Contact and Account model for managing incoming Contacts and deduplication. Apps and custom features that handle incoming Contacts and Accounts may not be compatible
- Be wary of apps that install or recommend additional Record Types on Account and Contact, or that bring new Contact/Account records into the system. This can interfere with PatronManager Account/Contact relationship functionality
- Regarding Donation (Opportunity) handling:
- PatronManager uses a custom Contact lookup field and Contact Role on Opportunity, and many aspects of PatronManager rely on specific Record Types and Opportunity configuration for accurate transaction handling
- Be wary of apps or customizations that interact with Opportunities. These may duplicate PatronManager functionality or cause system conflicts
- Do not create Salesforce objects tied to PatronManager objects via Master-Detail relationship. Only use Lookup relationships between custom and PatronManager objects
- Do not adjust picklist values in namespaced PatronManager fields or create custom fields on PatronManager objects unless specified in PatronManager documentation
- Do not attempt to change venues or seat maps outside the PatronManager UI
- Do not use your PatronManager payment gateway for transactions created outside native PatronManager functionality
- Regarding permissions and access:
- Do not attempt to bypass PatronManager limitations that prevent viewing/creating/editing/deleting PatronManager records or fields - if a standard user cannot make a change to a field or record in the PatronManager UI, consider that change disallowed
- Do not replace/override PatronManager Visualforce page layouts
- Do not edit PatronManager records via List View or Report unless those same edits are permitted on PatronManager page layouts
- Do not attempt to regulate users’ ability to access PatronManager functionality via Permission Sets/Profiles, except as documented in this article (https://bit.ly/2H5B4CT)
- Do not attempt to bypass PatronManager limitations that prevent viewing/creating/editing/deleting PatronManager records or fields - if a standard user cannot make a change to a field or record in the PatronManager UI, consider that change disallowed
Test:
- Build and test all customizations in a sandbox (http://bit.ly/2E0YGZb)
- Look for impact - not just “is it possible to sell a ticket” but “does it seem slower” - that’s often an indication of future problems
- Any real-time automation (eg. Flow or Apex Triggers) can impact Salesforce Limits usage. We recommend tracing limits usage before and after implementing the solution. If this process is unclear, we recommend working with a consultant
Document:
- Always use help text and descriptions to clearly state purpose and use
- Document all customizations and maintain that documentation (http://bit.ly/2KtRA3i)
Maintain:
- Keep in mind that customization will need maintenance over time to remain compatible as Salesforce and PatronManager release product updates. 80% of the cost of a custom software solution is spent on maintenance
- For additional annual cost, your organization may opt in to PatronManager’s User Acceptance Testing (UAT) program to access upcoming PatronManager releases during a limited pre-release testing period in your designated sandbox. This allows you to test your customizations against new PatronManager functionality