I am searching for a way to automate a time-consuming task for an administrator on my team: subscribing numerous users to reports ("Schedule Future Runs", Salesforce Classic). The need to for each user to receive the report with him or herself as the running user.

I understand that the Classic Schedule Future Runs functionality is represented under the hood as CronTrigger and CronJobDetail records, which cannot be created programmatically. Is there any way to create these subscriptions in another fashion? The Reports Apex namespace does not appear to offer this functionality.

I've also looked into creating Lightning report subscriptions using the Analytics API. However, that API appears to only create subscriptions for the logged-in user, and the API returns an error if a subscription already exists for the logged-in user. This makes it impossible to subscribe other users individually using the API.

up vote 0 down vote accepted

After some time, another question by Martin Borthiry inspired me to return to this problem.

As elaborated in this answer, a scripted, off-platform solution using a Python script to call the Analytics API is able to achieve this objective by using JWT as the authentication solution.

This permits the script to log in as arbitrary users within having access to their individual credentials. By establishing that running user context, we can create subscriptions on the users' behalf to reports that run as themselves. This is suitable for one-off needs such as the situation mentioned above, as the setup needs are minimal (Connected App) and the workflow could in theory be executed with only standard tools like Salesforce DX and curl.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.