Technical and Functional Limitations

There are a few limitations which apply to all versions of FormulaShare.

Those related to Salesforce platform governor limits are outlined in the Technical Limitations below, and those which relate to design of the app itself are covered in Functionality Limitations.

Technical Limitations
  • 10 rules per custom object
    Since each rule must have a unique apex sharing reason, and only 10 sharing reasons per object are supported by Salesforce, a maximum of 10 rules per custom object are possible currently. Note that this isn't relevant to standard objects which don't use sharing reasons.
  • 50 million records per shared object
    FormulaShare uses a query locator in a batch job to select every record in each object with rules configured. Due to the current Salesforce limit of 50 million rows in a batch query locator, if rules are set up on an object with more this number of records, the batch will fail.
  • Large data volumes in related objects
    Rules to set up which share based on the value of a field on a related object should only be set up for objects where the number of related records per parent in the shared object is relatively low. To explain a bit more - as part of batch processing, a query will be created for each batch of 200 (by default) records to select details of all related objects. If there are a more than 50,000 related records in total for these 200 records, an exception will be thrown and this batch will fail. In orgs where these kinds of numbers could cause a problem, reducing the batch size could be sufficient to ensure this processing can take place without risk of hitting the limit.
  • 10,000 DML rows per transaction
    This Salesforce limit prevents synchronous transactions from creating, deleting or updating more than 10,000 records in a single transaction. If data changes cause trigger code to attempt to insert or delete large numbers of share records, this could result in sharing not being applied. This is only likely to occur if automation triggers updates to very large numbers of records in a single transaction, and FormulaShare rules and a trigger are set up on the updated object. In the event this happens, the batch job should apply sharing updates in the next run.

Feature Limitations
  • Sharing based on fields in Users Tasks and Events
    The standard objects UserTask and Event can't be selected as related objects when setting up related object sharing. This is due to limitations of the underlying Custom Metadata Entity Definition relationship fields, which are used to store FormulaShare rule relationship details and don't support these object types (see documented limitations).
  • Cross-object rule limitations
    Cross-object rules allow sharing of records based on records which are related by a series of lookups or master-detail relationships in either direction (parent or child). This type of rule allows selecting up to 5 levels of consecutive parent or child relationships, and these can be followed by up to 5 relationships in the opposite direction, meaning the controlling record can be up to 10 relationships away in total. It's not possible however to configure rules where the direction of consecutive lookups changes more than once, so selecting a parent of a child of a shared object's parent object for example isn't supported.
  • Removing of sharing for standard objects
    As Salesforce Sharing Reasons aren't available on standard objects, FormulaShare handles the removal of existing sharing on these objects in a different way to custom objects. The Removal Strategy section in Object Settings outlines related considerations and configuration options to control rule assessment.