I have created a Skuid Model with ProcessInstance object (Native Salesforce object where Approval data is stored) and have placed Model conditions to filter it by Approval Name i.e., (ProcessInstance.ProcessDefinition.Name).
For a Salesforce License User, system displays the data on Skuid, however for a Salesforce Platform User, system throws an Error message that “Illegal Filter” and Skuid Page is not displayed at all. Instead the Home Page fo Salesforce is displayed.
Is there any way to allow Salesforce Platform User to view the Skuid Page given the above Scenario?
P.S- I tried even creating UI only fields on the Model and placing it as Model Condition hoping that it would filter and display the data which i am expecting. Unfortunately, it doesn’t work.
This sounds like there Salesforce may have a limitation in place that limits which fields the Salesforce Platform User can use to filter on this object, but I wasn’t able to find any documented limitations yet. We’ve reached out directly and will continue working with you there.
To close the loop, the problem here was that the Salesforce Platform user license does not have any access to default objects like Accounts, Contacts, etc. This seems to mean they cannot query across reference fields on the ProcessInstance & related objects for things like ProcessDefinition.Name.
To solve this in Skuid, we can add a helper model that queries the referenced object directly (ProcessDefinition in this case), and filter that model to provide only a list of records that match our needs. Then, we can use those rows in a model condition on the dependent model (the ProcessInstance model in this case). The ProcessInstance object can be filtered by the ProcessDefinitionId (but not ProcessDefinition.Name), so we’re able to pull in the desired Id #s on the ProcessDefinition model, and filter for ProcessInstances whose ProcessDefinitionId value = one of the Ids in the ProcessDefinition model.