Architecture
TODO: Topics to work out
Invocable (https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_annotation_InvocableMethod.htm )
Queueables (https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_queueing_jobs.htm )
Logging
Flow
Filenize’s implementation
Considerations
Adding Filenize actions to your flow does not make it final. At the end of the flow, you need to run the Filenize commit action. This is to build a queueable chain of actions. Ensuring that the next action only runs if the previous has finished. This needs to be done explicitly due to the asynchronous design of the actions.
The chain also skips all consecutive actions if an error has been found. To prevent certain scenarios, i.e. where a subfolder needs to be created if the parent folder does not exist due to an error
Pro
Easy to setup for admins and developers
Includes in-depth diagnose tooling for spotting incorrect behavior
Also includes rerunning certain actions for trial-and-error testing
Provides out-of-the-box user feedback about its progress in the Filenize component
Con
By design each Filenize action is a Queueable, this is slower than running the APIs directly in Apex. This is to prevent hitting DML/Callout limitations.
Executing a Queueable does not start the process directly, the process waits until Salesforce has the resources needed for execution.
Queueables are slower on sandboxes than on production orgs. This is Salesforce’s way to limit the resources used.
Since each action initiates an asynchronous process. The result of that process is not usable in the next consecutive process. For folder creation actions we do provide a direct output. As the new relative URL is already known before the execution.
Enter Flows
With Flows it’s now possible to automatically create and pin folders in Salesforce, and more. i.e. creating an account folder on each new account or creating a contact, under the account folder. The tools provided also makes it possible to pin the folders automatically, meaning that when the specific account record is opened, the correct folder opens with it. The SharePoint instance name is needed to use any automation that comes with Filenize.
Pinning is the Filenize term for pinning a SharePoint folder to a Salesforce record. Every time you open the Filenize component it will automatically find the right folder for you based on the current record
Create/open an existing new Flow. Select a new Action element within the flow then search for SharePoint to find all the actions that came with Filenize. Select Create and Pin a SharePoint folder. A couple of properties allow you to customize the action to your business needs. In our example, we’re going to create a folder on every new account in Salesforce. The following values apply (for example, may differ for your solution):
Folder Name: Field Reference => {!$Record.Name}
Record Id: Field Reference => {!$Record.Id}
SharePoint Instance Id: String => Your SharePoint Instance Name
Reset Sharing on Folder (Optionally): Usually this is set to true for root folders with custom sharing
Server Relative URL: String => A fixed path or a reference to a previous folder action
Save and activate the Flow. The above ensures that a new account folder is created and automatically pinned to the account record.
Next Steps
Above was just a short introduction of the “Create and Pin a SharePoint Folder” action. There are many more that allows you to customize your folder hierarchy for your business needs. Check out the Actions page and the Examples page to learn more.
Add Comment