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 User, Task 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.
Compatibililty with Core Features
- Debug mode in Flows
 Due to the way Salesforce's native flow debug mechanism works differently to actual behaviour during runtime, the output of calls to FormulaShare's Apex Action will not the the debugger will not always reflect the expected behaviour when transactions are running on the platform. Further information is provided in the Assess from Record Triggered Flow section.
- Changing ownership of related records with Account owner change
 When Account ownership is updated, Salesforce also cascades change of ownership to related records such as Contacts, Cases, Opportunities, Contracts and Orders. When these related records are updated, triggers and record-triggered flows on these related objects are not executed, so FormulaShare will not automatically reassess any FormulaShare rules defined for the related in real time. In addition, existing sharing applied by FormulaShare (as well as any other manual or apex sharing on the records) will not be retained or reapplied by FormulaShare. There are options to work around this by explicitly calling FormulaShare each time the Account owner is updated - further information on this approach is outlined in the section Retaining Related Object Sharing After Account Owner Changes.
